From 7964b32e5da6b5ec965a4c09fdf042328f2e3045 Mon Sep 17 00:00:00 2001 From: Brian Floersch Date: Tue, 5 Mar 2024 09:53:57 -0500 Subject: [PATCH 001/155] Prevent panic on stop of rotated tailer during agent shutdown (#23342) * Prevent panic on stop of rotated tailer * Clean up already stopped tailers at shutdown * Cleanup on launcher runloop. --- pkg/logs/launchers/file/launcher.go | 45 ++++++++++++++++++++---- pkg/logs/launchers/file/launcher_test.go | 6 ++++ 2 files changed, 44 insertions(+), 7 deletions(-) diff --git a/pkg/logs/launchers/file/launcher.go b/pkg/logs/launchers/file/launcher.go index a07a72eb5a3c3a..2d90b366eea4bd 100644 --- a/pkg/logs/launchers/file/launcher.go +++ b/pkg/logs/launchers/file/launcher.go @@ -41,9 +41,11 @@ type Launcher struct { tailingLimit int fileProvider *fileprovider.FileProvider tailers *tailers.TailerContainer[*tailer.Tailer] + rotatedTailers []*tailer.Tailer registry auditor.Registry tailerSleepDuration time.Duration stop chan struct{} + done chan struct{} // set to true if we want to use `ContainersLogsDir` to validate that a new // pod log file is being attached to the correct containerID. // Feature flag defaulting to false, use `logs_config.validate_pod_container_id`. @@ -70,8 +72,10 @@ func NewLauncher(tailingLimit int, tailerSleepDuration time.Duration, validatePo tailingLimit: tailingLimit, fileProvider: fileprovider.NewFileProvider(tailingLimit, wildcardStrategy), tailers: tailers.NewTailerContainer[*tailer.Tailer](), + rotatedTailers: []*tailer.Tailer{}, tailerSleepDuration: tailerSleepDuration, stop: make(chan struct{}), + done: make(chan struct{}), validatePodContainerID: validatePodContainerID, scanPeriod: scanPeriod, flarecontroller: flarecontroller, @@ -91,13 +95,16 @@ func (s *Launcher) Start(sourceProvider launchers.SourceProvider, pipelineProvid // this call returns only when all the tailers are stopped func (s *Launcher) Stop() { s.stop <- struct{}{} - s.cleanup() + <-s.done } // run checks periodically if there are new files to tail and the state of its tailers until stop func (s *Launcher) run() { scanTicker := time.NewTicker(s.scanPeriod) - defer scanTicker.Stop() + defer func() { + scanTicker.Stop() + close(s.done) + }() for { select { @@ -106,10 +113,12 @@ func (s *Launcher) run() { case source := <-s.removedSources: s.removeSource(source) case <-scanTicker.C: + s.cleanUpRotatedTailers() // check if there are new files to tail, tailers to stop and tailer to restart because of file rotation s.scan() case <-s.stop: // no more file should be tailed + s.cleanup() return } } @@ -118,6 +127,12 @@ func (s *Launcher) run() { // cleanup all tailers func (s *Launcher) cleanup() { stopper := startstop.NewParallelStopper() + s.cleanUpRotatedTailers() + for _, tailer := range s.rotatedTailers { + stopper.Add(tailer) + } + s.rotatedTailers = []*tailer.Tailer{} + for _, tailer := range s.tailers.All() { stopper.Add(tailer) s.tailers.Remove(tailer) @@ -218,6 +233,17 @@ func (s *Launcher) scan() { } } +// cleanUpRotatedTailers removes any rotated tailers that have stopped from the list +func (s *Launcher) cleanUpRotatedTailers() { + pendingTailers := []*tailer.Tailer{} + for _, tailer := range s.rotatedTailers { + if !tailer.IsFinished() { + pendingTailers = append(pendingTailers, tailer) + } + } + s.rotatedTailers = pendingTailers +} + // addSource keeps track of the new source and launch new tailers for this source. func (s *Launcher) addSource(source *sources.LogSource) { s.activeSources = append(s.activeSources, source) @@ -331,17 +357,22 @@ func (s *Launcher) stopTailer(tailer *tailer.Tailer) { // restartTailer safely stops tailer and starts a new one // returns true if the new tailer is up and running, false if an error occurred -func (s *Launcher) restartTailerAfterFileRotation(tailer *tailer.Tailer, file *tailer.File) bool { +func (s *Launcher) restartTailerAfterFileRotation(oldTailer *tailer.Tailer, file *tailer.File) bool { log.Info("Log rotation happened to ", file.Path) - tailer.StopAfterFileRotation() - tailer = s.createRotatedTailer(tailer, file, tailer.GetDetectedPattern()) + oldTailer.StopAfterFileRotation() + + newTailer := s.createRotatedTailer(oldTailer, file, oldTailer.GetDetectedPattern()) // force reading file from beginning since it has been log-rotated - err := tailer.StartFromBeginning() + err := newTailer.StartFromBeginning() if err != nil { log.Warn(err) return false } - s.tailers.Add(tailer) + + // Since newTailer and oldTailer share the same ID, tailers.Add will replace the old tailer. + // We will keep track of the rotated tailer until it is finished. + s.rotatedTailers = append(s.rotatedTailers, oldTailer) + s.tailers.Add(newTailer) return true } diff --git a/pkg/logs/launchers/file/launcher_test.go b/pkg/logs/launchers/file/launcher_test.go index 9182ce94e13752..136c2e74abcf3e 100644 --- a/pkg/logs/launchers/file/launcher_test.go +++ b/pkg/logs/launchers/file/launcher_test.go @@ -607,6 +607,7 @@ func TestLauncherFileRotation(t *testing.T) { launcher.scan() assert.Equal(t, 2, launcher.tailers.Count()) + assert.Equal(t, 0, len(launcher.rotatedTailers)) assert.True(t, launcher.tailers.Contains(path("c.log"))) assert.True(t, launcher.tailers.Contains(path("d.log"))) @@ -624,8 +625,13 @@ func TestLauncherFileRotation(t *testing.T) { launcher.scan() assert.Equal(t, launcher.tailers.Count(), 2) + assert.Equal(t, 1, len(launcher.rotatedTailers)) assert.True(t, launcher.tailers.Contains(path("c.log"))) assert.True(t, launcher.tailers.Contains(path("d.log"))) + + launcher.cleanup() // Stop all the tailers + assert.Equal(t, launcher.tailers.Count(), 0) + assert.Equal(t, len(launcher.rotatedTailers), 0) } func TestLauncherFileDetectionSingleScan(t *testing.T) { From 1ac622fb97c4c36de739101b18eb62ecc0d8ea9f Mon Sep 17 00:00:00 2001 From: Nicolas Schweitzer Date: Tue, 5 Mar 2024 16:14:47 +0100 Subject: [PATCH 002/155] Prevent job failures (#23377) * fix(ci): stop failing junit_upload in case of no fast tests * fix(ci): Extend retry duration from ~1mn to ~30mn --- tasks/libs/junit_upload_core.py | 8 ++++---- tools/ci/aws_ssm_get_wrapper.ps1 | 2 +- tools/ci/aws_ssm_get_wrapper.sh | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tasks/libs/junit_upload_core.py b/tasks/libs/junit_upload_core.py index 50757a95b48565..6b2e9e1161939c 100644 --- a/tasks/libs/junit_upload_core.py +++ b/tasks/libs/junit_upload_core.py @@ -89,13 +89,13 @@ def junit_upload_from_tgz(junit_tgz, codeowners_path=".github/CODEOWNERS"): empty_tgzs = [] for tgz, count in xmlcounts.items(): print(f"Submitted results for {count} JUnit XML files from {tgz}") - if count == 0 and not tgz.endswith( - "-fast.tgz" - ): # *-fast.tgz contains only tests related to the modified code, they can be empty + if ( + count == 0 and "-fast" not in tgz + ): # *-fast(-v2).tgz contains only tests related to the modified code, they can be empty empty_tgzs.append(tgz) if empty_tgzs: - raise Exit(f"No JUnit XML files for upload found in: {', '.join(empty_tgzs)}") + raise Exit(f"[ERROR] No JUnit XML files for upload found in: {', '.join(empty_tgzs)}") def get_flaky_from_test_output(): diff --git a/tools/ci/aws_ssm_get_wrapper.ps1 b/tools/ci/aws_ssm_get_wrapper.ps1 index 95994d7235adc4..b201dba5c8c86a 100644 --- a/tools/ci/aws_ssm_get_wrapper.ps1 +++ b/tools/ci/aws_ssm_get_wrapper.ps1 @@ -3,7 +3,7 @@ param ( ) $retryCount = 0 -$maxRetries = 5 +$maxRetries = 10 while ($retryCount -lt $maxRetries) { $result = (aws ssm get-parameter --region us-east-1 --name $parameterName --with-decryption --query "Parameter.Value" --output text) diff --git a/tools/ci/aws_ssm_get_wrapper.sh b/tools/ci/aws_ssm_get_wrapper.sh index 5d0c5f563a122d..05dc5367a85b42 100755 --- a/tools/ci/aws_ssm_get_wrapper.sh +++ b/tools/ci/aws_ssm_get_wrapper.sh @@ -1,7 +1,7 @@ #!/bin/bash retry_count=0 -max_retries=5 +max_retries=10 parameter_name="$1" source /root/.bashrc > /dev/null 2>&1 From c5b8ed9a0ee7c869c0fdf5b0bd7bb3781d865914 Mon Sep 17 00:00:00 2001 From: Maxime David Date: Tue, 5 Mar 2024 10:35:38 -0500 Subject: [PATCH 003/155] [Serverless] remove h2non dependency (#22246) * remove h2non * disable trace and log integration test --- .github/workflows/serverless-integration.yml | 2 +- comp/dogstatsd/replay/file.go | 17 +----- comp/dogstatsd/replay/file_common.go | 26 ++++++++ comp/dogstatsd/replay/file_serverless.go | 21 +++++++ comp/dogstatsd/replay/reader.go | 47 -------------- comp/dogstatsd/replay/reader_creator.go | 61 +++++++++++++++++++ .../replay/reader_creator_serverless.go | 13 ++++ pkg/serverless/binarysize/binary_size_test.go | 53 ++++++++++++++++ 8 files changed, 177 insertions(+), 63 deletions(-) create mode 100644 comp/dogstatsd/replay/file_common.go create mode 100644 comp/dogstatsd/replay/file_serverless.go create mode 100644 comp/dogstatsd/replay/reader_creator.go create mode 100644 comp/dogstatsd/replay/reader_creator_serverless.go create mode 100644 pkg/serverless/binarysize/binary_size_test.go diff --git a/.github/workflows/serverless-integration.yml b/.github/workflows/serverless-integration.yml index 6afbfaae181049..ed648d9bb7e5ea 100644 --- a/.github/workflows/serverless-integration.yml +++ b/.github/workflows/serverless-integration.yml @@ -19,7 +19,7 @@ jobs: fail-fast: false matrix: architecture: [amd64, arm64] - suite: [metric, log, trace, appsec, proxy] + suite: [metric, appsec, proxy] name: ${{ matrix.suite }} on ${{ matrix.architecture }} steps: - name: Checkout datadog-agent repository diff --git a/comp/dogstatsd/replay/file.go b/comp/dogstatsd/replay/file.go index 76e723b934cae9..19ff28f34393fe 100644 --- a/comp/dogstatsd/replay/file.go +++ b/comp/dogstatsd/replay/file.go @@ -3,6 +3,8 @@ // This product includes software developed at Datadog (https://www.datadoghq.com/). // Copyright 2016-2021 Datadog, Inc. +//go:build !serverless + package replay import ( @@ -15,21 +17,6 @@ import ( var ( datadogType = filetype.NewType("dog", "datadog/capture") - // DATADOG0F1FF0000 in HEX (D474D060F1FF0000); (F0 | datadogFileVersion) for different file versions support - // 00 to terminate header - datadogHeader = []byte{0xD4, 0x74, 0xD0, 0x60, 0xF0, 0xFF, 0x00, 0x00} - //nolint:revive // TODO(AML) Fix revive linter - ErrHeaderWrite = fmt.Errorf("capture file header could not be fully written to buffer") -) - -const ( - // Version 3+ adds support for nanosecond cadence. - // Version 2+ adds support for storing state. - datadogFileVersion uint8 = 3 - - versionIndex = 4 - minStateVersion = 2 - minNanoVersion = 3 ) func init() { diff --git a/comp/dogstatsd/replay/file_common.go b/comp/dogstatsd/replay/file_common.go new file mode 100644 index 00000000000000..33c7505a5dc8f2 --- /dev/null +++ b/comp/dogstatsd/replay/file_common.go @@ -0,0 +1,26 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-2021 Datadog, Inc. + +package replay + +import "fmt" + +var ( + // DATADOG0F1FF0000 in HEX (D474D060F1FF0000); (F0 | datadogFileVersion) for different file versions support + // 00 to terminate header + datadogHeader = []byte{0xD4, 0x74, 0xD0, 0x60, 0xF0, 0xFF, 0x00, 0x00} + //nolint:revive // TODO(AML) Fix revive linter + ErrHeaderWrite = fmt.Errorf("capture file header could not be fully written to buffer") +) + +const ( + // Version 3+ adds support for nanosecond cadence. + // Version 2+ adds support for storing state. + datadogFileVersion uint8 = 3 + + versionIndex = 4 + minStateVersion = 2 + minNanoVersion = 3 +) diff --git a/comp/dogstatsd/replay/file_serverless.go b/comp/dogstatsd/replay/file_serverless.go new file mode 100644 index 00000000000000..bcc267094f2000 --- /dev/null +++ b/comp/dogstatsd/replay/file_serverless.go @@ -0,0 +1,21 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-2021 Datadog, Inc. + +//go:build serverless + +package replay + +import ( + "io" +) + +// WriteHeader writes the datadog header to the Writer argument to conform to the .dog file format. +func WriteHeader(w io.Writer) error { + return nil +} + +func fileVersion(buf []byte) (int, error) { + return 0, nil +} diff --git a/comp/dogstatsd/replay/reader.go b/comp/dogstatsd/replay/reader.go index 417b2b95b01ac2..e22c7d7c659b59 100644 --- a/comp/dogstatsd/replay/reader.go +++ b/comp/dogstatsd/replay/reader.go @@ -12,13 +12,10 @@ import ( "sync" // might be unnecessary "time" - "github.com/DataDog/zstd" - pb "github.com/DataDog/datadog-agent/pkg/proto/pbgo/core" "github.com/DataDog/datadog-agent/pkg/util/log" proto "github.com/golang/protobuf/proto" - "github.com/h2non/filetype" ) // TrafficCaptureReader allows reading back a traffic capture and its contents @@ -35,50 +32,6 @@ type TrafficCaptureReader struct { sync.Mutex } -// NewTrafficCaptureReader creates a TrafficCaptureReader instance -func NewTrafficCaptureReader(path string, depth int, mmap bool) (*TrafficCaptureReader, error) { - - c, err := getFileContent(path, mmap) - if err != nil { - fmt.Printf("Unable to map file: %v\n", err) - return nil, err - } - - // datadog capture file should be already registered with filetype via the init hooks - kind, _ := filetype.Match(c) - if kind == filetype.Unknown { - return nil, fmt.Errorf("unknown capture file provided: %v", kind.MIME) - } - - decompress := false - if kind.MIME.Subtype == "zstd" { - decompress = true - log.Debug("capture file compressed with zstd") - } - - var contents []byte - if decompress { - if contents, err = zstd.Decompress(nil, c); err != nil { - return nil, err - } - } else { - contents = c - } - - ver, err := fileVersion(contents) - if err != nil { - return nil, err - } - - return &TrafficCaptureReader{ - rawContents: c, - Contents: contents, - Version: ver, - Traffic: make(chan *pb.UnixDogstatsdMsg, depth), - mmap: mmap, - }, nil -} - // Read reads the contents of the traffic capture and writes each packet to a channel func (tc *TrafficCaptureReader) Read(ready chan struct{}) { tc.Lock() diff --git a/comp/dogstatsd/replay/reader_creator.go b/comp/dogstatsd/replay/reader_creator.go new file mode 100644 index 00000000000000..5a5f34cf3932ca --- /dev/null +++ b/comp/dogstatsd/replay/reader_creator.go @@ -0,0 +1,61 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-2020 Datadog, Inc. + +//go:build !serverless + +package replay + +import ( + "fmt" + + pb "github.com/DataDog/datadog-agent/pkg/proto/pbgo/core" + "github.com/DataDog/datadog-agent/pkg/util/log" + "github.com/DataDog/zstd" + "github.com/h2non/filetype" +) + +// NewTrafficCaptureReader creates a TrafficCaptureReader instance +func NewTrafficCaptureReader(path string, depth int, mmap bool) (*TrafficCaptureReader, error) { + + c, err := getFileContent(path, mmap) + if err != nil { + fmt.Printf("Unable to map file: %v\n", err) + return nil, err + } + + // datadog capture file should be already registered with filetype via the init hooks + kind, _ := filetype.Match(c) + if kind == filetype.Unknown { + return nil, fmt.Errorf("unknown capture file provided: %v", kind.MIME) + } + + decompress := false + if kind.MIME.Subtype == "zstd" { + decompress = true + log.Debug("capture file compressed with zstd") + } + + var contents []byte + if decompress { + if contents, err = zstd.Decompress(nil, c); err != nil { + return nil, err + } + } else { + contents = c + } + + ver, err := fileVersion(contents) + if err != nil { + return nil, err + } + + return &TrafficCaptureReader{ + rawContents: c, + Contents: contents, + Version: ver, + Traffic: make(chan *pb.UnixDogstatsdMsg, depth), + mmap: mmap, + }, nil +} diff --git a/comp/dogstatsd/replay/reader_creator_serverless.go b/comp/dogstatsd/replay/reader_creator_serverless.go new file mode 100644 index 00000000000000..dc08acd6e61e12 --- /dev/null +++ b/comp/dogstatsd/replay/reader_creator_serverless.go @@ -0,0 +1,13 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-2020 Datadog, Inc. + +//go:build serverless + +package replay + +// NewTrafficCaptureReader creates a TrafficCaptureReader instance +func NewTrafficCaptureReader(path string, depth int, mmap bool) (*TrafficCaptureReader, error) { + panic("not implemented") +} diff --git a/pkg/serverless/binarysize/binary_size_test.go b/pkg/serverless/binarysize/binary_size_test.go new file mode 100644 index 00000000000000..1e121eaa7f389d --- /dev/null +++ b/pkg/serverless/binarysize/binary_size_test.go @@ -0,0 +1,53 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +package binarysize + +import ( + "os/exec" + "strings" + "testing" + + "github.com/stretchr/testify/assert" +) + +func packageBlockList() []string { + return []string{ + "github.com/h2non/filetype", + // more to come + } +} + +func buildImportList() []string { + run := "go" + arg0 := "list" + arg1 := "-json" + arg2 := "-tags" + arg3 := "serverless" + arg4 := "github.com/DataDog/datadog-agent/cmd/serverless" + cmd := exec.Command(run, arg0, arg1, arg2, arg3, arg4) + stdout, err := cmd.Output() + if err != nil { + panic("could not build the import list") + } + return strings.Split(string(stdout), "\n") +} + +func isPackageIncluded(packageName string, packageList []string) bool { + for _, p := range packageList { + if strings.Contains(p, packageName) { + return true + } + } + return false +} + +func TestImportPackage(t *testing.T) { + packageList := buildImportList() + packageBlockList := packageBlockList() + for _, blockedPackage := range packageBlockList { + assert.False(t, isPackageIncluded(blockedPackage, packageList), "package %s is included in the serverless build", blockedPackage) + } +} From 4cf3d40f91beaef3767f96afbd4d274e00a0664f Mon Sep 17 00:00:00 2001 From: Branden Clark Date: Tue, 5 Mar 2024 10:56:07 -0500 Subject: [PATCH 004/155] check windows installer user group membership (#23421) * check via user membership * check with group members * add to domain test --- test/new-e2e/tests/windows/common/user.go | 69 +++++++++++++++++++ .../tests/windows/domain-test/domain_test.go | 9 ++- .../tests/windows/install-test/assert.go | 50 ++++++++++++++ .../windows/install-test/installtester.go | 6 ++ 4 files changed, 133 insertions(+), 1 deletion(-) diff --git a/test/new-e2e/tests/windows/common/user.go b/test/new-e2e/tests/windows/common/user.go index d451b91a6a28ef..b709fc58cddf84 100644 --- a/test/new-e2e/tests/windows/common/user.go +++ b/test/new-e2e/tests/windows/common/user.go @@ -6,12 +6,35 @@ package common import ( + "encoding/json" "fmt" "strings" "github.com/DataDog/datadog-agent/test/new-e2e/pkg/components" ) +// Identity contains the name and SID of an identity (user or group) +type Identity struct { + Name string + SID string +} + +// GetName returns the name of the identity +func (i Identity) GetName() string { + return i.Name +} + +// GetSID returns the SID of the identity +func (i Identity) GetSID() string { + return i.SID +} + +// SecurityIdentifier is an interface for objects that have a name and SID +type SecurityIdentifier interface { + GetName() string + GetSID() string +} + // MakeDownLevelLogonName joins a user and domain into a single string, e.g. DOMAIN\user // // domain is converted to NetBIOS format per the MSDN definition. @@ -63,3 +86,49 @@ func DotSlashNameToLogonName(host *components.RemoteHost, user string) (string, user = strings.TrimPrefix(user, ".\\") return MakeDownLevelLogonName(hostname, user), nil } + +// GetADGroupMembers returns the list of members of the given AD group +func GetADGroupMembers(host *components.RemoteHost, group string) ([]Identity, error) { + cmd := fmt.Sprintf(`ConvertTo-JSON -InputObject @(Get-ADGroupMember -Identity "%s" | Foreach-Object { + @{ + Name = $_.Name + SID = $_.SID.Value + }})`, group) + out, err := host.Execute(cmd) + if err != nil { + return nil, err + } + out = strings.TrimSpace(out) + if out == "" { + return nil, nil + } + var members []Identity + err = json.Unmarshal([]byte(out), &members) + if err != nil { + return nil, err + } + return members, nil +} + +// GetLocalGroupMembers returns the list of members of the given local group +func GetLocalGroupMembers(host *components.RemoteHost, group string) ([]Identity, error) { + cmd := fmt.Sprintf(`ConvertTo-JSON -InputObject @(Get-LocalGroupMember -Name "%s" | Foreach-Object { + @{ + Name = $_.Name + SID = $_.SID.Value + }})`, group) + out, err := host.Execute(cmd) + if err != nil { + return nil, err + } + out = strings.TrimSpace(out) + if out == "" { + return nil, nil + } + var members []Identity + err = json.Unmarshal([]byte(out), &members) + if err != nil { + return nil, err + } + return members, nil +} diff --git a/test/new-e2e/tests/windows/domain-test/domain_test.go b/test/new-e2e/tests/windows/domain-test/domain_test.go index 44b435e54fdba8..c82967e1548acc 100644 --- a/test/new-e2e/tests/windows/domain-test/domain_test.go +++ b/test/new-e2e/tests/windows/domain-test/domain_test.go @@ -11,7 +11,9 @@ import ( "github.com/DataDog/datadog-agent/test/new-e2e/pkg/environments/activedirectory" platformCommon "github.com/DataDog/datadog-agent/test/new-e2e/tests/agent-platform/common" "github.com/DataDog/datadog-agent/test/new-e2e/tests/windows" + windowsCommon "github.com/DataDog/datadog-agent/test/new-e2e/tests/windows/common" windowsAgent "github.com/DataDog/datadog-agent/test/new-e2e/tests/windows/common/agent" + "github.com/DataDog/datadog-agent/test/new-e2e/tests/windows/install-test" "github.com/stretchr/testify/assert" "reflect" "testing" @@ -32,7 +34,7 @@ func TestInstallsOnDomainController(t *testing.T) { for _, suite := range suites { suite := suite - t.Run(reflect.TypeOf(suite).Name(), func(t *testing.T) { + t.Run(reflect.TypeOf(suite).Elem().Name(), func(t *testing.T) { t.Parallel() e2e.Run(t, suite, e2e.WithProvisioner(activedirectory.Provisioner( activedirectory.WithActiveDirectoryOptions( @@ -61,6 +63,11 @@ func (suite *testInstallSuite) TestGivenDomainUserCanInstallAgent() { suite.Require().NoError(err, "should succeed to install Agent on a Domain Controller with a valid domain account & password") + suite.Run("user is a member of expected groups", func() { + installtest.AssertAgentUserGroupMembership(suite.T(), host, + windowsCommon.MakeDownLevelLogonName(TestDomain, TestUser), + ) + }) tc := suite.NewTestClientForHost(suite.Env().DomainControllerHost) tc.CheckAgentVersion(suite.T(), suite.AgentPackage.AgentVersion()) platformCommon.CheckAgentBehaviour(suite.T(), tc) diff --git a/test/new-e2e/tests/windows/install-test/assert.go b/test/new-e2e/tests/windows/install-test/assert.go index 641aa00e5feb01..0ffd1ee0eaf447 100644 --- a/test/new-e2e/tests/windows/install-test/assert.go +++ b/test/new-e2e/tests/windows/install-test/assert.go @@ -6,6 +6,7 @@ package installtest import ( + "slices" "strings" "github.com/DataDog/datadog-agent/test/new-e2e/pkg/components" @@ -42,3 +43,52 @@ func AssertInstalledUserInRegistry(t *testing.T, host *components.RemoteHost, ex return true } + +// AssertAgentUserGroupMembership checks the agent user is a member of the expected groups +func AssertAgentUserGroupMembership(t *testing.T, host *components.RemoteHost, username string) bool { + expectedGroups := []string{ + "Performance Log Users", + "Event Log Readers", + "Performance Monitor Users", + } + return AssertGroupMembership(t, host, username, expectedGroups) +} + +// AssertGroupMembership asserts that the user is a member of the expected groups +func AssertGroupMembership(t *testing.T, host *components.RemoteHost, user string, expectedGroups []string) bool { + hostInfo, err := windows.GetHostInfo(host) + if !assert.NoError(t, err) { + return false + } + userSid, err := windows.GetSIDForUser(host, user) + if !assert.NoError(t, err) { + return false + } + for _, g := range expectedGroups { + // get members of group g + var members []windows.SecurityIdentifier + if hostInfo.IsDomainController() { + // Domain controllers don't have local groups + adMembers, err := windows.GetADGroupMembers(host, g) + if !assert.NoError(t, err) { + return false + } + for _, m := range adMembers { + members = append(members, m) + } + } else { + localMembers, err := windows.GetLocalGroupMembers(host, g) + if !assert.NoError(t, err) { + return false + } + for _, m := range localMembers { + members = append(members, m) + } + } + // check if user is in group + assert.True(t, slices.ContainsFunc(members, func(s windows.SecurityIdentifier) bool { + return strings.EqualFold(s.GetSID(), userSid) + }), "user should be member of group %s", g) + } + return true +} diff --git a/test/new-e2e/tests/windows/install-test/installtester.go b/test/new-e2e/tests/windows/install-test/installtester.go index 9bf9e22c73c922..6ffb10bced0eb7 100644 --- a/test/new-e2e/tests/windows/install-test/installtester.go +++ b/test/new-e2e/tests/windows/install-test/installtester.go @@ -368,6 +368,12 @@ func (t *Tester) testCurrentVersionExpectations(tt *testing.T) { require.NoError(tt, err) serviceTester.TestInstall(tt) + tt.Run("user is a member of expected groups", func(tt *testing.T) { + AssertAgentUserGroupMembership(tt, t.host, + windows.MakeDownLevelLogonName(t.expectedUserDomain, t.expectedUserName), + ) + }) + t.testAgentCodeSignature(tt) t.TestRuntimeExpectations(tt) } From 387b4f6702b060c272ce3d43f3561530444acc02 Mon Sep 17 00:00:00 2001 From: Nicolas Schweitzer Date: Tue, 5 Mar 2024 17:04:44 +0100 Subject: [PATCH 005/155] fix(ci): Revert recent modification on gitlab-ci configuration (#23442) * Revert "fix(ci): RUN_E2E_TESTS is not false, but on, auto or true (#23362)" This reverts commit 1b8fdf4d44c2b7d374536c931db481ed2720bfdd. * Revert "Merge RUN_E2E_TESTS and RUN_KITCHEN_TESTS variables (#23139)" This reverts commit 1448b138005eb577f56d4767bb840edb79195d40. --- .gitlab-ci.yml | 96 ++++++++++++----------- .gitlab/kitchen_deploy/kitchen_deploy.yml | 4 +- 2 files changed, 51 insertions(+), 49 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 0b362d8e699e62..af9e553b514685 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -207,7 +207,7 @@ variables: CLANG_LLVM_VER: 12.0.1 KERNEL_MATRIX_TESTING_X86_AMI_ID: "ami-0c54d42f8f4180b0c" KERNEL_MATRIX_TESTING_ARM_AMI_ID: "ami-021f04c00ecfa8590" - RUN_E2E_TESTS: "auto" # Should be "off", "auto" or "on" it will change the trigger condition for new-e2e tests on branch != main + RUN_E2E_TESTS: "manual" # Should be "auto", "manual", "off" it will change the trigger condition for new-e2e tests on branch != main # skip known flaky tests by default GO_TEST_SKIP_FLAKE: "true" @@ -280,28 +280,31 @@ variables: .if_not_run_all_builds: &if_not_run_all_builds if: $CI_COMMIT_BRANCH != "main" && $DEPLOY_AGENT != "true" && $RUN_ALL_BUILDS != "true" -# Rule to trigger installer tests +# Rule to trigger test kitchen setup, run, and cleanup. # By default: -# - on main and deploy pipelines, installer tests are run -# - on branch pipelines, installer tests are run on a subset of the OSes we test -# RUN_E2E_TESTS can be set to on to force all the installer tests to be run on a branch pipeline. -# RUN_E2E_TESTS can be set to false to force installer tests to not run on main/deploy pipelines. -.if_installer_tests: &if_installer_tests - if: ($CI_COMMIT_BRANCH == "main" || $DEPLOY_AGENT == "true" || $RUN_E2E_TESTS != "off") && $RUN_E2E_TESTS != "off" +# - on main and deploy pipelines, kitchen tests are run +# - on branch pipelines, kitchen tests are not run +# RUN_KITCHEN_TESTS can be set to true to force kitchen tests to be run on a branch pipeline. +# RUN_KITCHEN_TESTS can be set to false to force kitchen tests to not run on main/deploy pipelines. +.if_kitchen: &if_kitchen + if: ($CI_COMMIT_BRANCH == "main" || $DEPLOY_AGENT == "true" || $RUN_KITCHEN_TESTS == "true") && $RUN_KITCHEN_TESTS != "false" + +# Rules to trigger default kitchen tests. +# Some of the kitchen tests are run on all pipelines by default. They can only be disabled +# by setting RUN_KITCHEN_TESTS to false. +.if_default_kitchen: &if_default_kitchen + if: $RUN_KITCHEN_TESTS != "false" .if_testing_cleanup: &if_testing_cleanup if: $TESTING_CLEANUP == "true" -.if_run_e2e_tests: &if_run_e2e_tests - if: $RUN_E2E_TESTS == "on" +.if_not_e2e: &if_not_e2e + if: $RUN_KITCHEN_TESTS == "false" -# When RUN_E2E_TESTS is set to "auto", we run: -# - a subset of installer tests on branch pipelines. -# - agent-related e2e tests based on files changed in the PR. -.if_auto_e2e_tests: &if_auto_e2e_tests +.if_auto_e2e: &if_auto_e2e if: $RUN_E2E_TESTS == "auto" -.if_disable_e2e_tests: &if_disable_e2e_tests +.if_disable_e2e: &if_disable_e2e if: $RUN_E2E_TESTS == "off" .if_deploy_on_beta_repo_branch: &if_deploy_on_beta_repo_branch @@ -792,7 +795,7 @@ workflow: - when: on_success .except_no_tests_no_deploy: - - if: $DEPLOY_AGENT == "false" && $RUN_E2E_TESTS == "off" + - if: $RUN_KITCHEN_TESTS == "false" && $DEPLOY_AGENT == "false" && $RUN_E2E_TESTS == "off" when: never .on_a6_except_deploy: @@ -857,53 +860,47 @@ workflow: allow_failure: true .on_kitchen_tests_a6: - - <<: *if_mergequeue - when: never - <<: *if_not_version_6 when: never - - <<: *if_installer_tests + - <<: *if_kitchen .on_kitchen_tests_a6_always: - - <<: *if_mergequeue - when: never - <<: *if_not_version_6 when: never - - <<: *if_installer_tests + - <<: *if_kitchen when: always .on_all_kitchen_builds_a6: - - <<: *if_mergequeue - when: never - <<: *if_not_version_6 when: never - <<: *if_not_run_all_builds when: never - - <<: *if_installer_tests + - <<: *if_kitchen .on_kitchen_tests_a7: - - <<: *if_mergequeue + - <<: *if_not_version_7 when: never + - <<: *if_kitchen + +.on_kitchen_tests_a7_always: - <<: *if_not_version_7 when: never - - <<: *if_installer_tests + - <<: *if_kitchen + when: always .on_all_kitchen_builds_a7: - - <<: *if_mergequeue - when: never - <<: *if_not_version_7 when: never - <<: *if_not_run_all_builds when: never - - <<: *if_installer_tests + - <<: *if_kitchen .on_all_new-e2e_tests_a7: - - <<: *if_mergequeue - when: never - <<: *if_not_version_7 when: never - <<: *if_not_run_all_builds when: never - - <<: *if_installer_tests + - <<: *if_kitchen # Default kitchen tests are also run on dev branches # In that case, the target OS versions is a subset of the @@ -913,8 +910,8 @@ workflow: when: never - <<: *if_not_version_7 when: never - - <<: *if_installer_tests - - <<: *if_auto_e2e_tests + - <<: *if_kitchen + - <<: *if_default_kitchen variables: KITCHEN_OSVERS: $DEFAULT_KITCHEN_OSVERS @@ -923,8 +920,8 @@ workflow: when: never - <<: *if_not_version_7 when: never - - <<: *if_installer_tests - - <<: *if_auto_e2e_tests + - <<: *if_kitchen + - <<: *if_default_kitchen variables: E2E_OSVERS: $E2E_BRANCH_OSVERS @@ -933,9 +930,9 @@ workflow: when: never - <<: *if_not_version_7 when: never - - <<: *if_installer_tests + - <<: *if_kitchen when: always - - <<: *if_auto_e2e_tests + - <<: *if_default_kitchen when: always variables: KITCHEN_OSVERS: $DEFAULT_KITCHEN_OSVERS @@ -987,7 +984,7 @@ workflow: compare_to: main # TODO: use a variable, when this is supported https://gitlab.com/gitlab-org/gitlab/-/issues/369916 .on_windows_installer_changes_or_manual: - - <<: *if_disable_e2e_tests + - <<: *if_not_e2e when: never - <<: *if_main_branch - <<: *if_mergequeue @@ -1050,11 +1047,11 @@ workflow: .on_e2e_main_release_or_rc: # This rule is used as a base for all new-e2e rules - - <<: *if_disable_e2e_tests + - <<: *if_disable_e2e when: never - <<: *if_mergequeue when: never - - <<: *if_run_e2e_tests + - <<: *if_auto_e2e when: on_success - <<: *if_main_branch when: on_success @@ -1069,11 +1066,11 @@ workflow: compare_to: main # TODO: use a variable, when this is supported https://gitlab.com/gitlab-org/gitlab/-/issues/369916 .always_on_container_or_e2e_changes_or_manual: - - <<: *if_disable_e2e_tests + - <<: *if_disable_e2e when: never - <<: *if_mergequeue when: never - - <<: *if_run_e2e_tests + - <<: *if_auto_e2e when: always - <<: *if_main_branch when: always @@ -1244,7 +1241,7 @@ workflow: when: never - <<: *if_not_main_branch when: never - - <<: *if_installer_tests + - <<: *if_kitchen when: manual allow_failure: true @@ -1263,7 +1260,7 @@ workflow: allow_failure: true .on_updater_or_e2e_changes_or_manual: - - <<: *if_disable_e2e_tests + - <<: *if_disable_e2e when: never - <<: *if_mergequeue when: never @@ -1302,7 +1299,7 @@ workflow: allow_failure: true .on_main_or_rc_and_no_skip_e2e: - - <<: *if_disable_e2e_tests + - <<: *if_not_e2e when: never - <<: *if_release_branch when: on_success @@ -1315,6 +1312,11 @@ workflow: - <<: *if_mergequeue when: never +.if_run_e2e_tests: + - <<: *if_disable_e2e + when: never + - <<: *if_auto_e2e + .on_packaging_change: - !reference [.except_mergequeue] # The prerequisites are not run in the mergequeue pipeline so we need to skip this rule - changes: diff --git a/.gitlab/kitchen_deploy/kitchen_deploy.yml b/.gitlab/kitchen_deploy/kitchen_deploy.yml index 8b50bb07e3439c..c5051eb0c60d63 100644 --- a/.gitlab/kitchen_deploy/kitchen_deploy.yml +++ b/.gitlab/kitchen_deploy/kitchen_deploy.yml @@ -87,7 +87,7 @@ deploy_deb_testing-a6_x64: - echo "$APT_SIGNING_KEY_PASSPHRASE" | deb-s3 upload -c "pipeline-$DD_PIPELINE_ID-x86_64" -m 6 -b $DEB_TESTING_S3_BUCKET -a x86_64 --sign=$DEB_GPG_KEY_ID --gpg_options="--passphrase-fd 0 --batch --digest-algo SHA512" --preserve_versions --visibility public $OMNIBUS_PACKAGE_DIR/datadog-signing-keys_${DD_PIPELINE_ID}.deb deploy_deb_testing-a6_arm64: - rules: !reference [.on_kitchen_tests_a6] + rules: !reference [.on_all_kitchen_builds_a6] extends: - .deploy_deb_testing-a6 needs: ["agent_deb-arm64-a6"] @@ -191,7 +191,7 @@ deploy_rpm_testing-a6_x64: - echo "$RPM_SIGNING_PASSPHRASE" | rpm-s3 --verbose --visibility public-read -c "https://s3.amazonaws.com" -b $RPM_TESTING_S3_BUCKET -p "testing/pipeline-$DD_PIPELINE_ID/6/x86_64/" -a "x86_64" --sign --metadata-signing-key $RPM_GPG_KEY_ID $OMNIBUS_PACKAGE_DIR/datadog-*-6.*x86_64.rpm deploy_rpm_testing-a6_arm64: - rules: !reference [.on_kitchen_tests_a6] + rules: !reference [.on_all_kitchen_builds_a6] extends: - .deploy_rpm_testing-a6 needs: From 1f628f8b6473c99a1da000d0b7511d8e20deca6e Mon Sep 17 00:00:00 2001 From: Olivier G <52180542+ogaca-dd@users.noreply.github.com> Date: Tue, 5 Mar 2024 17:10:06 +0100 Subject: [PATCH 006/155] Remove optional.IsSet (#23278) * Remove optional.IsSet * Fix windows code * Remove optional.Iset From resources_test.go --- .../client/clientimpl/client_test.go | 3 +- .../internal/util/inventory_payload_test.go | 6 ++-- .../resources/resourcesimpl/resources_test.go | 3 +- .../agent/agentimpl/agent_linux_test.go | 4 +-- comp/process/agent/agentimpl/agent_test.go | 4 +-- .../corechecks/windows_event_log/check.go | 2 +- .../corechecks/windows_event_log/config.go | 29 +++++------------- .../windows_event_log/config_test.go | 15 ++++++---- pkg/config/setup/config.go | 3 +- pkg/util/optional/optional.go | 21 +++++++++---- pkg/util/optional/optional_test.go | 30 +++++++++++++++++++ 11 files changed, 77 insertions(+), 43 deletions(-) diff --git a/comp/languagedetection/client/clientimpl/client_test.go b/comp/languagedetection/client/clientimpl/client_test.go index 4d5f677d46e4ef..91ad5054b5b6f2 100644 --- a/comp/languagedetection/client/clientimpl/client_test.go +++ b/comp/languagedetection/client/clientimpl/client_test.go @@ -98,7 +98,8 @@ func TestClientEnabled(t *testing.T) { )) optionalCl := newClient(deps).(optional.Option[clientComp.Component]) - assert.Equal(t, testCase.isSet, optionalCl.IsSet()) + _, ok := optionalCl.Get() + assert.Equal(t, testCase.isSet, ok) }) } } diff --git a/comp/metadata/internal/util/inventory_payload_test.go b/comp/metadata/internal/util/inventory_payload_test.go index 05be3fb581c1ef..0e264e24779173 100644 --- a/comp/metadata/internal/util/inventory_payload_test.go +++ b/comp/metadata/internal/util/inventory_payload_test.go @@ -84,11 +84,13 @@ func TestMetadataProvider(t *testing.T) { i.Enabled = true cb := i.MetadataProvider().Callback - assert.True(t, cb.IsSet()) + _, ok := cb.Get() + assert.True(t, ok) i.Enabled = false cb = i.MetadataProvider().Callback - assert.False(t, cb.IsSet()) + _, ok = cb.Get() + assert.False(t, ok) } func TestFlareProvider(t *testing.T) { diff --git a/comp/metadata/resources/resourcesimpl/resources_test.go b/comp/metadata/resources/resourcesimpl/resources_test.go index c3d5dcdff619e7..75e60cbe7ac3f0 100644 --- a/comp/metadata/resources/resourcesimpl/resources_test.go +++ b/comp/metadata/resources/resourcesimpl/resources_test.go @@ -48,7 +48,8 @@ func TestConfDisabled(t *testing.T) { ) // When interval is 0 the resource Provider should be an empty Optional[T] - assert.False(t, ret.Provider.Callback.IsSet()) + _, isSet := ret.Provider.Callback.Get() + assert.False(t, isSet) } func TestConfInterval(t *testing.T) { diff --git a/comp/process/agent/agentimpl/agent_linux_test.go b/comp/process/agent/agentimpl/agent_linux_test.go index 325b2e1f886a4a..fab85f51bc0d0c 100644 --- a/comp/process/agent/agentimpl/agent_linux_test.go +++ b/comp/process/agent/agentimpl/agent_linux_test.go @@ -134,8 +134,8 @@ func TestProcessAgentComponentOnLinux(t *testing.T) { } agt := fxutil.Test[optional.Option[agent.Component]](t, fx.Options(opts...)) - - assert.Equal(t, tc.expected, agt.IsSet()) + _, ok := agt.Get() + assert.Equal(t, tc.expected, ok) }) } } diff --git a/comp/process/agent/agentimpl/agent_test.go b/comp/process/agent/agentimpl/agent_test.go index f0cba5534c13fc..27f124cc358e2f 100644 --- a/comp/process/agent/agentimpl/agent_test.go +++ b/comp/process/agent/agentimpl/agent_test.go @@ -68,8 +68,8 @@ func TestProcessAgentComponent(t *testing.T) { } agt := fxutil.Test[optional.Option[agent.Component]](t, fx.Options(opts...)) - - assert.Equal(t, tc.expected, agt.IsSet()) + _, ok := agt.Get() + assert.Equal(t, tc.expected, ok) }) } } diff --git a/pkg/collector/corechecks/windows_event_log/check.go b/pkg/collector/corechecks/windows_event_log/check.go index c88eac3d729d82..0cfa3a5fbd9c88 100644 --- a/pkg/collector/corechecks/windows_event_log/check.go +++ b/pkg/collector/corechecks/windows_event_log/check.go @@ -234,7 +234,7 @@ func (c *Check) validateConfig() error { // wrap ErrSkipCheckInstance for graceful skipping return fmt.Errorf("%w: unsupported configuration: legacy_mode_v2: true", check.ErrSkipCheckInstance) } - if c.config.instance.Timeout.IsSet() { + if _, isSet := c.config.instance.Timeout.Get(); isSet { // timeout option is deprecated. Now that the subscription runs in the background in a select // style, a timeout on the "wait for events" operation is no longer applicable. c.Warn("instance config `timeout` is deprecated. It is no longer used by the check and can be removed.") diff --git a/pkg/collector/corechecks/windows_event_log/config.go b/pkg/collector/corechecks/windows_event_log/config.go index 81c4cec740988d..7367f54f5d9c3f 100644 --- a/pkg/collector/corechecks/windows_event_log/config.go +++ b/pkg/collector/corechecks/windows_event_log/config.go @@ -116,7 +116,7 @@ func (c *Config) unmarshal(instance integration.Data, initConfig integration.Dat } func (c *Config) genQuery() error { - if c.instance.Query.IsSet() { + if _, isSet := c.instance.Query.Get(); isSet { return nil } filters, isSet := c.instance.Filters.Get() @@ -133,19 +133,12 @@ func (c *Config) genQuery() error { } func setOptionalDefault[T any](optional *optional.Option[T], def T) { - if !optional.IsSet() { - optional.Set(def) - } + optional.SetIfNone(def) } func setOptionalDefaultWithInitConfig[T any](instance *optional.Option[T], shared optional.Option[T], def T) { - if !instance.IsSet() { - if val, isSet := shared.Get(); isSet { - instance.Set(val) - } else { - instance.Set(def) - } - } + instance.SetOptionIfNone(shared) + instance.SetIfNone(def) } // Sets default values for the instance configuration. @@ -176,19 +169,11 @@ func (c *Config) setDefaults() { func (c *Config) processLegacyModeOptions() { // use initConfig option if instance value is unset - if !c.instance.LegacyMode.IsSet() { - if val, isSet := c.init.LegacyMode.Get(); isSet { - c.instance.LegacyMode.Set(val) - } - } - if !c.instance.LegacyModeV2.IsSet() { - if val, isSet := c.init.LegacyModeV2.Get(); isSet { - c.instance.LegacyModeV2.Set(val) - } - } + c.instance.LegacyMode.SetOptionIfNone(c.init.LegacyMode) + c.instance.LegacyModeV2.SetOptionIfNone(c.init.LegacyModeV2) // If legacy_mode and legacy_mode_v2 are unset, default to legacy mode for configuration backwards compatibility - if !c.instance.LegacyMode.IsSet() && !isaffirmative(c.instance.LegacyModeV2) { + if _, isSet := c.instance.LegacyMode.Get(); !isSet && !isaffirmative(c.instance.LegacyModeV2) { c.instance.LegacyMode.Set(true) } diff --git a/pkg/collector/corechecks/windows_event_log/config_test.go b/pkg/collector/corechecks/windows_event_log/config_test.go index b6c3410ab6219b..cafbce692979e4 100644 --- a/pkg/collector/corechecks/windows_event_log/config_test.go +++ b/pkg/collector/corechecks/windows_event_log/config_test.go @@ -50,17 +50,22 @@ func TestConfigPrecedence(t *testing.T) { if assert.NoError(t, err) { assertOptionalValue(t, assert.Equal, config.instance.Query, defaultConfigQuery) assertOptionalValue(t, assert.Equal, config.instance.Start, defaultConfigStart) - assert.False(t, config.instance.Timeout.IsSet()) + _, isSet := config.instance.Timeout.Get() + assert.False(t, isSet) assertOptionalValue(t, assert.Equal, config.instance.PayloadSize, defaultConfigPayloadSize) assertOptionalValue(t, assert.Equal, config.instance.BookmarkFrequency, defaultConfigPayloadSize) assertOptionalValue(t, assert.Equal, config.instance.TagEventID, defaultConfigTagEventID) assertOptionalValue(t, assert.Equal, config.instance.TagSID, defaultConfigTagSID) assertOptionalValue(t, assert.Equal, config.instance.EventPriority, defaultConfigEventPriority) assertOptionalValue(t, assert.Equal, config.instance.AuthType, defaultConfigAuthType) - assert.False(t, config.instance.Server.IsSet()) - assert.False(t, config.instance.User.IsSet()) - assert.False(t, config.instance.Domain.IsSet()) - assert.False(t, config.instance.Password.IsSet()) + _, isSet = config.instance.Server.Get() + assert.False(t, isSet) + _, isSet = config.instance.User.Get() + assert.False(t, isSet) + _, isSet = config.instance.Domain.Get() + assert.False(t, isSet) + _, isSet = config.instance.Password.Get() + assert.False(t, isSet) assertOptionalValue(t, assert.Equal, config.instance.InterpretMessages, defaultConfigInterpretMessages) } diff --git a/pkg/config/setup/config.go b/pkg/config/setup/config.go index e0294ac16af0fb..7e02bcf85b856e 100644 --- a/pkg/config/setup/config.go +++ b/pkg/config/setup/config.go @@ -1646,8 +1646,7 @@ func LoadCustom(config pkgconfigmodel.Config, origin string, secretResolver opti // We resolve proxy setting before secrets. This allows setting secrets through DD_PROXY_* env variables LoadProxyFromEnv(config) - if secretResolver.IsSet() { - resolver, _ := secretResolver.Get() + if resolver, ok := secretResolver.Get(); ok { if err := ResolveSecrets(config, resolver, origin); err != nil { return &warnings, err } diff --git a/pkg/util/optional/optional.go b/pkg/util/optional/optional.go index f3851146317a92..aa0437139dd1a2 100644 --- a/pkg/util/optional/optional.go +++ b/pkg/util/optional/optional.go @@ -38,11 +38,6 @@ func NewNoneOptionPtr[T any]() *Option[T] { return &option } -// IsSet returns true if a value is set. -func (o *Option[T]) IsSet() bool { - return o.set -} - // Get returns the value and true if a value is set, otherwise it returns (undefined, false). func (o *Option[T]) Get() (T, bool) { return o.value, o.set @@ -79,3 +74,19 @@ func (o *Option[T]) UnmarshalYAML(unmarshal func(interface{}) error) error { *o = NewOption[T](v) return nil } + +// SetIfNone sets the value if it is not already set. +// Does nothing if the current instance is already set. +func (o *Option[T]) SetIfNone(value T) { + if !o.set { + o.Set(value) + } +} + +// SetOptionIfNone sets the option if it is not already set. +// Does nothing if the current instance is already set. +func (o *Option[T]) SetOptionIfNone(option Option[T]) { + if !o.set { + *o = option + } +} diff --git a/pkg/util/optional/optional_test.go b/pkg/util/optional/optional_test.go index b585a6474e916b..86cafca52f7f15 100644 --- a/pkg/util/optional/optional_test.go +++ b/pkg/util/optional/optional_test.go @@ -51,3 +51,33 @@ func TestMapOption(t *testing.T) { _, ok = optionalInt.Get() require.False(t, ok) } + +func TestSetIfNone(t *testing.T) { + optional := NewOption(42) + + optional.SetIfNone(10) + v, ok := optional.Get() + require.Equal(t, 42, v) + require.True(t, ok) + + optional.Reset() + optional.SetIfNone(10) + v, ok = optional.Get() + require.Equal(t, 10, v) + require.True(t, ok) +} + +func TestSetOptionIfNone(t *testing.T) { + optional := NewOption(42) + + optional.SetOptionIfNone(NewOption(10)) + v, ok := optional.Get() + require.Equal(t, 42, v) + require.True(t, ok) + + optional.Reset() + optional.SetOptionIfNone(NewOption(10)) + v, ok = optional.Get() + require.Equal(t, 10, v) + require.True(t, ok) +} From 6964da53aae4a788c540294470fa574c6539710c Mon Sep 17 00:00:00 2001 From: Guy Arbitman Date: Tue, 5 Mar 2024 18:15:37 +0200 Subject: [PATCH 007/155] usm: tls: java: Move java dir config (#23435) The java_dir config was misplaced under system-probe general configuration instead of usm specific. The change fixes the gap --- pkg/config/setup/system_probe.go | 2 +- pkg/ebpf/config.go | 4 ---- pkg/network/config/config.go | 4 ++++ test/new-e2e/system-probe/test-runner/main.go | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/pkg/config/setup/system_probe.go b/pkg/config/setup/system_probe.go index 9925141b2deecc..70ed41bd022e67 100644 --- a/pkg/config/setup/system_probe.go +++ b/pkg/config/setup/system_probe.go @@ -138,7 +138,6 @@ func InitSystemProbeConfig(cfg pkgconfigmodel.Config) { // ebpf general settings cfg.BindEnvAndSetDefault(join(spNS, "bpf_debug"), false, "DD_SYSTEM_PROBE_CONFIG_BPF_DEBUG", "BPF_DEBUG") cfg.BindEnvAndSetDefault(join(spNS, "bpf_dir"), defaultSystemProbeBPFDir, "DD_SYSTEM_PROBE_BPF_DIR") - cfg.BindEnvAndSetDefault(join(spNS, "java_dir"), defaultSystemProbeJavaDir, "DD_SYSTEM_PROBE_JAVA_DIR") cfg.BindEnvAndSetDefault(join(spNS, "excluded_linux_versions"), []string{}) cfg.BindEnvAndSetDefault(join(spNS, "enable_tracepoints"), false) cfg.BindEnvAndSetDefault(join(spNS, "enable_co_re"), true, "DD_ENABLE_CO_RE") @@ -231,6 +230,7 @@ func InitSystemProbeConfig(cfg pkgconfigmodel.Config) { cfg.BindEnvAndSetDefault(join(smjtNS, "args"), defaultServiceMonitoringJavaAgentArgs) cfg.BindEnvAndSetDefault(join(smjtNS, "allow_regex"), "") cfg.BindEnvAndSetDefault(join(smjtNS, "block_regex"), "") + cfg.BindEnvAndSetDefault(join(smjtNS, "dir"), defaultSystemProbeJavaDir) cfg.BindEnvAndSetDefault(join(smNS, "enable_http_stats_by_status_code"), true) cfg.BindEnvAndSetDefault(join(netNS, "enable_gateway_lookup"), true, "DD_SYSTEM_PROBE_NETWORK_ENABLE_GATEWAY_LOOKUP") diff --git a/pkg/ebpf/config.go b/pkg/ebpf/config.go index 7c8dd8ba4800ff..e3733b94f1f8a4 100644 --- a/pkg/ebpf/config.go +++ b/pkg/ebpf/config.go @@ -25,9 +25,6 @@ type Config struct { // BPFDir is the directory to load the eBPF program from BPFDir string - // JavaDir is the directory to load the java agent program from - JavaDir string - // ExcludedBPFLinuxVersions lists Linux kernel versions that should not use BPF features ExcludedBPFLinuxVersions []string @@ -95,7 +92,6 @@ func NewConfig() *Config { c := &Config{ BPFDebug: cfg.GetBool(key(spNS, "bpf_debug")), BPFDir: cfg.GetString(key(spNS, "bpf_dir")), - JavaDir: cfg.GetString(key(spNS, "java_dir")), ExcludedBPFLinuxVersions: cfg.GetStringSlice(key(spNS, "excluded_linux_versions")), EnableTracepoints: cfg.GetBool(key(spNS, "enable_tracepoints")), ProcRoot: kernel.ProcFSRoot(), diff --git a/pkg/network/config/config.go b/pkg/network/config/config.go index d31c1172d3da22..4f18d2a0152555 100644 --- a/pkg/network/config/config.go +++ b/pkg/network/config/config.go @@ -123,6 +123,9 @@ type Config struct { // JavaAgentBlockRegex define a regex, if matching /proc/pid/cmdline the java agent will not be injected JavaAgentBlockRegex string + // JavaDir is the directory to load the java agent program from + JavaDir string + // UDPConnTimeout determines the length of traffic inactivity between two // (IP, port)-pairs before declaring a UDP connection as inactive. This is // set to /proc/sys/net/netfilter/nf_conntrack_udp_timeout on Linux by @@ -357,6 +360,7 @@ func New() *Config { JavaAgentArgs: cfg.GetString(join(smjtNS, "args")), JavaAgentAllowRegex: cfg.GetString(join(smjtNS, "allow_regex")), JavaAgentBlockRegex: cfg.GetString(join(smjtNS, "block_regex")), + JavaDir: cfg.GetString(join(smjtNS, "dir")), EnableGoTLSSupport: cfg.GetBool(join(smNS, "tls", "go", "enabled")), GoTLSExcludeSelf: cfg.GetBool(join(smNS, "tls", "go", "exclude_self")), EnableHTTPStatsByStatusCode: cfg.GetBool(join(smNS, "enable_http_stats_by_status_code")), diff --git a/test/new-e2e/system-probe/test-runner/main.go b/test/new-e2e/system-probe/test-runner/main.go index 5bf093d2d8598d..535ee020f2d100 100644 --- a/test/new-e2e/system-probe/test-runner/main.go +++ b/test/new-e2e/system-probe/test-runner/main.go @@ -54,7 +54,7 @@ var baseEnv = []string{ "GITLAB_CI=true", // force color output support to be detected "GOVERSION=" + runtime.Version(), "DD_SYSTEM_PROBE_BPF_DIR=" + filepath.Join(testDirRoot, "pkg/ebpf/bytecode/build"), - "DD_SYSTEM_PROBE_JAVA_DIR=" + filepath.Join(testDirRoot, "pkg/network/protocols/tls/java"), + "DD_SERVICE_MONITORING_CONFIG_TLS_JAVA_DIR=" + filepath.Join(testDirRoot, "pkg/network/protocols/tls/java"), } var timeouts = map[*regexp.Regexp]time.Duration{ From d809f4ddd33c51cd2d704b8cd7bfebdf9509a710 Mon Sep 17 00:00:00 2001 From: Guy Arbitman Date: Tue, 5 Mar 2024 20:24:20 +0200 Subject: [PATCH 008/155] reverting #18913 (#23433) We never used gRPC server as a connection option for system-probe, thus, to remove redundant logic and methods, we revert the original change --- .github/CODEOWNERS | 1 - LICENSE-3rdparty.csv | 1 - cmd/process-agent/subcommands/check/check.go | 1 - cmd/system-probe/api/module/common.go | 3 - cmd/system-probe/api/module/loader.go | 43 +------------ cmd/system-probe/api/module/loader_test.go | 18 ------ cmd/system-probe/api/server.go | 60 +------------------ cmd/system-probe/config/config.go | 1 - cmd/system-probe/config/types/config.go | 2 - cmd/system-probe/modules/compliance.go | 6 -- .../modules/crashdetect_windows.go | 6 -- cmd/system-probe/modules/ebpf.go | 6 -- .../modules/language_detection.go | 6 -- cmd/system-probe/modules/network_tracer.go | 6 -- cmd/system-probe/modules/oom_kill_probe.go | 6 -- cmd/system-probe/modules/ping.go | 5 -- cmd/system-probe/modules/process.go | 6 -- cmd/system-probe/modules/tcp_queue_tracer.go | 6 -- pkg/config/setup/system_probe.go | 1 - pkg/dynamicinstrumentation/module_linux.go | 7 --- pkg/eventmonitor/eventmonitor.go | 5 -- pkg/process/checks/checks.go | 2 - pkg/process/runner/runner.go | 1 - pkg/util/grpc/go.mod | 2 +- pkg/util/grpc/server.go | 13 +--- 25 files changed, 7 insertions(+), 207 deletions(-) delete mode 100644 cmd/system-probe/api/module/loader_test.go diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 6ef3da22273d78..a2d5cc157fd7e5 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -354,7 +354,6 @@ /pkg/pidfile/ @DataDog/agent-shared-components /pkg/persistentcache/ @DataDog/agent-metrics-logs /pkg/proto/ @DataDog/agent-shared-components -/pkg/proto/connectionserver/ @DataDog/universal-service-monitoring @DataDog/Networks /pkg/proto/datadog/languagedetection @DataDog/processes /pkg/proto/datadog/process @DataDog/processes /pkg/proto/datadog/trace @DataDog/agent-apm diff --git a/LICENSE-3rdparty.csv b/LICENSE-3rdparty.csv index 2bf9791c690323..332dd49a624fc3 100644 --- a/LICENSE-3rdparty.csv +++ b/LICENSE-3rdparty.csv @@ -1838,7 +1838,6 @@ core,golang.org/x/net/html/charset,BSD-3-Clause,Copyright (c) 2009 The Go Author core,golang.org/x/net/http/httpguts,BSD-3-Clause,Copyright (c) 2009 The Go Authors. All rights reserved core,golang.org/x/net/http/httpproxy,BSD-3-Clause,Copyright (c) 2009 The Go Authors. All rights reserved core,golang.org/x/net/http2,BSD-3-Clause,Copyright (c) 2009 The Go Authors. All rights reserved -core,golang.org/x/net/http2/h2c,BSD-3-Clause,Copyright (c) 2009 The Go Authors. All rights reserved core,golang.org/x/net/http2/hpack,BSD-3-Clause,Copyright (c) 2009 The Go Authors. All rights reserved core,golang.org/x/net/icmp,BSD-3-Clause,Copyright (c) 2009 The Go Authors. All rights reserved core,golang.org/x/net/idna,BSD-3-Clause,Copyright (c) 2009 The Go Authors. All rights reserved diff --git a/cmd/process-agent/subcommands/check/check.go b/cmd/process-agent/subcommands/check/check.go index 9da263ea5f1cd3..8ef50eb66a7563 100644 --- a/cmd/process-agent/subcommands/check/check.go +++ b/cmd/process-agent/subcommands/check/check.go @@ -158,7 +158,6 @@ func runCheckCmd(deps dependencies) error { MaxConnsPerMessage: deps.Syscfg.SysProbeObject().MaxConnsPerMessage, SystemProbeAddress: deps.Syscfg.SysProbeObject().SocketAddress, ProcessModuleEnabled: processModuleEnabled, - GRPCServerEnabled: deps.Syscfg.SysProbeObject().GRPCServerEnabled, } if !matchingCheck(deps.CliParams.checkName, ch) { diff --git a/cmd/system-probe/api/module/common.go b/cmd/system-probe/api/module/common.go index 7a303623cd95fa..951d9d63bd8f8d 100644 --- a/cmd/system-probe/api/module/common.go +++ b/cmd/system-probe/api/module/common.go @@ -8,8 +8,6 @@ package module import ( "errors" - - "google.golang.org/grpc" ) // ErrNotEnabled is a special error type that should be returned by a Factory @@ -20,6 +18,5 @@ var ErrNotEnabled = errors.New("module is not enabled") type Module interface { GetStats() map[string]interface{} Register(*Router) error - RegisterGRPC(grpc.ServiceRegistrar) error Close() } diff --git a/cmd/system-probe/api/module/loader.go b/cmd/system-probe/api/module/loader.go index 83b820510555ea..9e87c6a318a13d 100644 --- a/cmd/system-probe/api/module/loader.go +++ b/cmd/system-probe/api/module/loader.go @@ -10,15 +10,12 @@ import ( "errors" "fmt" "runtime/pprof" - "strings" "sync" "time" - "github.com/gorilla/mux" - "google.golang.org/grpc" - sysconfigtypes "github.com/DataDog/datadog-agent/cmd/system-probe/config/types" "github.com/DataDog/datadog-agent/pkg/util/log" + "github.com/gorilla/mux" ) var l *loader @@ -63,7 +60,7 @@ func withModule(name sysconfigtypes.ModuleName, fn func()) { // * Initialization using the provided Factory; // * Registering the HTTP endpoints of each module; // * Register the gRPC server; -func Register(cfg *sysconfigtypes.Config, httpMux *mux.Router, grpcServer *grpc.Server, factories []Factory) error { +func Register(cfg *sysconfigtypes.Config, httpMux *mux.Router, factories []Factory) error { var enabledModulesFactories []Factory for _, factory := range factories { if !cfg.ModuleIsEnabled(factory.Name) { @@ -105,14 +102,6 @@ func Register(cfg *sysconfigtypes.Config, httpMux *mux.Router, grpcServer *grpc. continue } - if grpcServer != nil { - if err = module.RegisterGRPC(&systemProbeGRPCServer{sr: grpcServer, ns: factory.Name}); err != nil { - l.errors[factory.Name] = err - log.Errorf("error registering grpc endpoints for module %s: %s", factory.Name, err) - continue - } - } - l.routers[factory.Name] = subRouter l.modules[factory.Name] = module @@ -232,31 +221,3 @@ func updateStats() { now = <-ticker.C } } - -type systemProbeGRPCServer struct { - sr grpc.ServiceRegistrar - ns sysconfigtypes.ModuleName -} - -func (s *systemProbeGRPCServer) RegisterService(desc *grpc.ServiceDesc, impl interface{}) { - modName := NameFromGRPCServiceName(desc.ServiceName) - if modName != string(s.ns) { - panic(fmt.Sprintf("module name `%s` from service name `%s` does not match `%s`", modName, desc.ServiceName, s.ns)) - } - s.sr.RegisterService(desc, impl) -} - -// NameFromGRPCServiceName extracts a system-probe module name from the gRPC service name. -// It expects a form of `datadog.agent.systemprobe..ServiceName`. -func NameFromGRPCServiceName(service string) string { - prefix := "datadog.agent.systemprobe." - if !strings.HasPrefix(service, prefix) { - return "" - } - s := strings.TrimPrefix(service, prefix) - mod, _, ok := strings.Cut(s, ".") - if !ok { - return "" - } - return mod -} diff --git a/cmd/system-probe/api/module/loader_test.go b/cmd/system-probe/api/module/loader_test.go deleted file mode 100644 index 163559576e5a8f..00000000000000 --- a/cmd/system-probe/api/module/loader_test.go +++ /dev/null @@ -1,18 +0,0 @@ -// Unless explicitly stated otherwise all files in this repository are licensed -// under the Apache License Version 2.0. -// This product includes software developed at Datadog (https://www.datadoghq.com/). -// Copyright 2016-present Datadog, Inc. - -package module - -import ( - "testing" - - "github.com/stretchr/testify/assert" -) - -func TestNameFromGRPCServiceName(t *testing.T) { - assert.Equal(t, "", NameFromGRPCServiceName("a.b.c")) - assert.Equal(t, "", NameFromGRPCServiceName("datadog.agent.systemprobe.asdf")) - assert.Equal(t, "network_tracer", NameFromGRPCServiceName("datadog.agent.systemprobe.network_tracer.Usm")) -} diff --git a/cmd/system-probe/api/server.go b/cmd/system-probe/api/server.go index 827a31b002e41e..f3942046554000 100644 --- a/cmd/system-probe/api/server.go +++ b/cmd/system-probe/api/server.go @@ -7,17 +7,12 @@ package api import ( - "context" "errors" "expvar" "fmt" "net/http" - "runtime/pprof" - "strings" gorilla "github.com/gorilla/mux" - "google.golang.org/grpc" - "google.golang.org/grpc/stats" "github.com/DataDog/datadog-agent/cmd/system-probe/api/module" sysconfigtypes "github.com/DataDog/datadog-agent/cmd/system-probe/config/types" @@ -25,12 +20,9 @@ import ( "github.com/DataDog/datadog-agent/cmd/system-probe/utils" "github.com/DataDog/datadog-agent/comp/core/telemetry" "github.com/DataDog/datadog-agent/pkg/process/net" - grpcutil "github.com/DataDog/datadog-agent/pkg/util/grpc" "github.com/DataDog/datadog-agent/pkg/util/log" ) -const maxGRPCServerMessage = 100 * 1024 * 1024 - // StartServer starts the HTTP and gRPC servers for the system-probe, which registers endpoints from all enabled modules. func StartServer(cfg *sysconfigtypes.Config, telemetry telemetry.Component) error { conn, err := net.NewListener(cfg.SocketAddress) @@ -38,19 +30,9 @@ func StartServer(cfg *sysconfigtypes.Config, telemetry telemetry.Component) erro return fmt.Errorf("error creating IPC socket: %s", err) } - var grpcServer *grpc.Server - var srv *http.Server - mux := gorilla.NewRouter() - if cfg.GRPCServerEnabled { - grpcServer = grpc.NewServer( - grpc.MaxRecvMsgSize(maxGRPCServerMessage), - grpc.MaxSendMsgSize(maxGRPCServerMessage), - grpc.StatsHandler(&pprofGRPCStatsHandler{}), - ) - } - err = module.Register(cfg, mux, grpcServer, modules.All) + err = module.Register(cfg, mux, modules.All) if err != nil { return fmt.Errorf("failed to create system probe: %s", err) } @@ -68,21 +50,8 @@ func StartServer(cfg *sysconfigtypes.Config, telemetry telemetry.Component) erro mux.Handle("/debug/vars", http.DefaultServeMux) mux.Handle("/telemetry", telemetry.Handler()) - if cfg.GRPCServerEnabled { - srv = grpcutil.NewMuxedGRPCServer( - cfg.SocketAddress, - nil, - grpcServer, - mux, - ) - } else { - srv = &http.Server{ - Handler: mux, - } - } - go func() { - err = srv.Serve(conn.GetListener()) + err = http.Serve(conn.GetListener(), mux) if err != nil && !errors.Is(err, http.ErrServerClosed) { log.Errorf("error creating HTTP server: %s", err) } @@ -96,28 +65,3 @@ func init() { return module.GetStats() })) } - -type pprofGRPCStatsHandler struct{} - -func (p *pprofGRPCStatsHandler) TagRPC(ctx context.Context, info *stats.RPCTagInfo) context.Context { - parts := strings.Split(info.FullMethodName, "/") - if len(parts) >= 1 { - moduleName := module.NameFromGRPCServiceName(parts[0]) - if moduleName != "" { - return pprof.WithLabels(ctx, pprof.Labels("module", moduleName)) - } - } - return ctx -} - -func (p *pprofGRPCStatsHandler) HandleRPC(_ context.Context, _ stats.RPCStats) { - // intentionally empty -} - -func (p *pprofGRPCStatsHandler) TagConn(ctx context.Context, _ *stats.ConnTagInfo) context.Context { - return ctx -} - -func (p *pprofGRPCStatsHandler) HandleConn(_ context.Context, _ stats.ConnStats) { - // intentionally empty -} diff --git a/cmd/system-probe/config/config.go b/cmd/system-probe/config/config.go index 83f32a35b9c6b1..bb375c99211bfa 100644 --- a/cmd/system-probe/config/config.go +++ b/cmd/system-probe/config/config.go @@ -91,7 +91,6 @@ func load() (*types.Config, error) { ExternalSystemProbe: cfg.GetBool(spNS("external")), SocketAddress: cfg.GetString(spNS("sysprobe_socket")), - GRPCServerEnabled: cfg.GetBool(spNS("grpc_enabled")), MaxConnsPerMessage: cfg.GetInt(spNS("max_conns_per_message")), LogFile: cfg.GetString("log_file"), diff --git a/cmd/system-probe/config/types/config.go b/cmd/system-probe/config/types/config.go index 208437f43fe8c3..a737d297f8c1b6 100644 --- a/cmd/system-probe/config/types/config.go +++ b/cmd/system-probe/config/types/config.go @@ -32,8 +32,6 @@ type Config struct { StatsdHost string StatsdPort int - - GRPCServerEnabled bool } // ModuleIsEnabled returns a bool indicating if the given module name is enabled. diff --git a/cmd/system-probe/modules/compliance.go b/cmd/system-probe/modules/compliance.go index 57fd370134c23d..10f2ea4756bfcc 100644 --- a/cmd/system-probe/modules/compliance.go +++ b/cmd/system-probe/modules/compliance.go @@ -23,7 +23,6 @@ import ( "github.com/DataDog/datadog-agent/pkg/util/log" "go.uber.org/atomic" - "google.golang.org/grpc" ) // ComplianceModule is a system-probe module that exposes an HTTP api to @@ -58,11 +57,6 @@ func (m *complianceModule) GetStats() map[string]interface{} { } } -// RegisterGRPC is a noop (implements module.Module) -func (*complianceModule) RegisterGRPC(grpc.ServiceRegistrar) error { - return nil -} - // Register implements module.Module. func (m *complianceModule) Register(router *module.Router) error { router.HandleFunc("/dbconfig", utils.WithConcurrencyLimit(utils.DefaultMaxConcurrentRequests, m.handleScanDBConfig)) diff --git a/cmd/system-probe/modules/crashdetect_windows.go b/cmd/system-probe/modules/crashdetect_windows.go index 791434acc83db6..56a26b32da701e 100644 --- a/cmd/system-probe/modules/crashdetect_windows.go +++ b/cmd/system-probe/modules/crashdetect_windows.go @@ -11,8 +11,6 @@ import ( "fmt" "net/http" - "google.golang.org/grpc" - "github.com/DataDog/datadog-agent/cmd/system-probe/api/module" "github.com/DataDog/datadog-agent/cmd/system-probe/config" sysconfigtypes "github.com/DataDog/datadog-agent/cmd/system-probe/config/types" @@ -54,10 +52,6 @@ func (wcdm *winCrashDetectModule) Register(httpMux *module.Router) error { return nil } -func (wcdm *winCrashDetectModule) RegisterGRPC(_ grpc.ServiceRegistrar) error { - return nil -} - func (wcdm *winCrashDetectModule) GetStats() map[string]interface{} { return map[string]interface{}{} } diff --git a/cmd/system-probe/modules/ebpf.go b/cmd/system-probe/modules/ebpf.go index 4b42f464fe8c5e..7326cc6eb9ac6d 100644 --- a/cmd/system-probe/modules/ebpf.go +++ b/cmd/system-probe/modules/ebpf.go @@ -13,7 +13,6 @@ import ( "time" "go.uber.org/atomic" - "google.golang.org/grpc" "github.com/DataDog/datadog-agent/cmd/system-probe/api/module" "github.com/DataDog/datadog-agent/cmd/system-probe/config" @@ -67,8 +66,3 @@ func (o *ebpfModule) GetStats() map[string]interface{} { "last_check": o.lastCheck.Load(), } } - -// RegisterGRPC register to system probe gRPC server -func (o *ebpfModule) RegisterGRPC(_ grpc.ServiceRegistrar) error { - return nil -} diff --git a/cmd/system-probe/modules/language_detection.go b/cmd/system-probe/modules/language_detection.go index 1265a45c653dc0..e7e6bf30ae0ead 100644 --- a/cmd/system-probe/modules/language_detection.go +++ b/cmd/system-probe/modules/language_detection.go @@ -12,7 +12,6 @@ import ( "io" "net/http" - "google.golang.org/grpc" "google.golang.org/protobuf/proto" "github.com/DataDog/datadog-agent/cmd/system-probe/api/module" @@ -51,11 +50,6 @@ func (l *languageDetectionModule) Register(router *module.Router) error { return nil } -// RegisterGRPC register to system probe gRPC server -func (l *languageDetectionModule) RegisterGRPC(_ grpc.ServiceRegistrar) error { - return nil -} - // Close closes resources associated with the language detection module. // The language detection module doesn't do anything except route to the privileged language detection api. // This API currently does not hold any resources over its lifetime, so there is no need to release any resources when the diff --git a/cmd/system-probe/modules/network_tracer.go b/cmd/system-probe/modules/network_tracer.go index a52b5a11dc0b7f..db24bed628838b 100644 --- a/cmd/system-probe/modules/network_tracer.go +++ b/cmd/system-probe/modules/network_tracer.go @@ -18,7 +18,6 @@ import ( "time" "go.uber.org/atomic" - "google.golang.org/grpc" "github.com/DataDog/datadog-agent/cmd/system-probe/api/module" sysconfigtypes "github.com/DataDog/datadog-agent/cmd/system-probe/config/types" @@ -81,11 +80,6 @@ func (nt *networkTracer) GetStats() map[string]interface{} { return stats } -// RegisterGRPC register system probe grpc server -func (nt *networkTracer) RegisterGRPC(_ grpc.ServiceRegistrar) error { - return nil -} - // Register all networkTracer endpoints func (nt *networkTracer) Register(httpMux *module.Router) error { var runCounter = atomic.NewUint64(0) diff --git a/cmd/system-probe/modules/oom_kill_probe.go b/cmd/system-probe/modules/oom_kill_probe.go index 1628d2e260f965..192a205a562273 100644 --- a/cmd/system-probe/modules/oom_kill_probe.go +++ b/cmd/system-probe/modules/oom_kill_probe.go @@ -13,7 +13,6 @@ import ( "time" "go.uber.org/atomic" - "google.golang.org/grpc" "github.com/DataDog/datadog-agent/cmd/system-probe/api/module" "github.com/DataDog/datadog-agent/cmd/system-probe/config" @@ -61,11 +60,6 @@ func (o *oomKillModule) Register(httpMux *module.Router) error { return nil } -// RegisterGRPC register to system probe gRPC server -func (o *oomKillModule) RegisterGRPC(_ grpc.ServiceRegistrar) error { - return nil -} - func (o *oomKillModule) GetStats() map[string]interface{} { return map[string]interface{}{ "last_check": o.lastCheck.Load(), diff --git a/cmd/system-probe/modules/ping.go b/cmd/system-probe/modules/ping.go index 302f3e15193f44..c27a8466b0e87e 100644 --- a/cmd/system-probe/modules/ping.go +++ b/cmd/system-probe/modules/ping.go @@ -20,7 +20,6 @@ import ( "github.com/DataDog/datadog-agent/pkg/util/log" "github.com/gorilla/mux" "go.uber.org/atomic" - "google.golang.org/grpc" ) const ( @@ -115,10 +114,6 @@ func (p *pinger) Register(httpMux *module.Router) error { return nil } -func (p *pinger) RegisterGRPC(_ grpc.ServiceRegistrar) error { - return nil -} - func (p *pinger) Close() {} func logPingRequests(host string, client string, count int, interval int, timeout int, runCount uint64, start time.Time) { diff --git a/cmd/system-probe/modules/process.go b/cmd/system-probe/modules/process.go index 3a4d906da64162..07b29822d96aa2 100644 --- a/cmd/system-probe/modules/process.go +++ b/cmd/system-probe/modules/process.go @@ -16,7 +16,6 @@ import ( "time" "go.uber.org/atomic" - "google.golang.org/grpc" "github.com/DataDog/datadog-agent/cmd/system-probe/api/module" "github.com/DataDog/datadog-agent/cmd/system-probe/config" @@ -96,11 +95,6 @@ func (t *process) Register(httpMux *module.Router) error { return nil } -// RegisterGRPC register to system probe gRPC server -func (t *process) RegisterGRPC(_ grpc.ServiceRegistrar) error { - return nil -} - // Close cleans up the underlying probe object func (t *process) Close() { if t.probe != nil { diff --git a/cmd/system-probe/modules/tcp_queue_tracer.go b/cmd/system-probe/modules/tcp_queue_tracer.go index c9e201764210e6..0a99033b0a2128 100644 --- a/cmd/system-probe/modules/tcp_queue_tracer.go +++ b/cmd/system-probe/modules/tcp_queue_tracer.go @@ -13,7 +13,6 @@ import ( "time" "go.uber.org/atomic" - "google.golang.org/grpc" "github.com/DataDog/datadog-agent/cmd/system-probe/api/module" "github.com/DataDog/datadog-agent/cmd/system-probe/config" @@ -60,11 +59,6 @@ func (t *tcpQueueLengthModule) Register(httpMux *module.Router) error { return nil } -// RegisterGRPC register to system probe gRPC server -func (t *tcpQueueLengthModule) RegisterGRPC(_ grpc.ServiceRegistrar) error { - return nil -} - func (t *tcpQueueLengthModule) GetStats() map[string]interface{} { return map[string]interface{}{ "last_check": t.lastCheck.Load(), diff --git a/pkg/config/setup/system_probe.go b/pkg/config/setup/system_probe.go index 70ed41bd022e67..ec608e1f6cbfb2 100644 --- a/pkg/config/setup/system_probe.go +++ b/pkg/config/setup/system_probe.go @@ -108,7 +108,6 @@ func InitSystemProbeConfig(cfg pkgconfigmodel.Config) { cfg.BindEnvAndSetDefault(join(spNS, "external"), false, "DD_SYSTEM_PROBE_EXTERNAL") cfg.BindEnvAndSetDefault(join(spNS, "sysprobe_socket"), defaultSystemProbeAddress, "DD_SYSPROBE_SOCKET") - cfg.BindEnvAndSetDefault(join(spNS, "grpc_enabled"), false, "DD_SYSPROBE_GRPC_ENABLED") cfg.BindEnvAndSetDefault(join(spNS, "max_conns_per_message"), defaultConnsMessageBatchSize) cfg.BindEnvAndSetDefault(join(spNS, "debug_port"), 0) diff --git a/pkg/dynamicinstrumentation/module_linux.go b/pkg/dynamicinstrumentation/module_linux.go index f5bb2d4d320173..193e8a90646ac4 100644 --- a/pkg/dynamicinstrumentation/module_linux.go +++ b/pkg/dynamicinstrumentation/module_linux.go @@ -6,8 +6,6 @@ package dynamicinstrumentation import ( - "google.golang.org/grpc" - "github.com/DataDog/datadog-agent/cmd/system-probe/api/module" "github.com/DataDog/datadog-agent/pkg/util/log" ) @@ -25,11 +23,6 @@ func (m *Module) Close() { log.Info("Closing user tracer module") } -// RegisterGRPC register to system probe gRPC server -func (m *Module) RegisterGRPC(_ grpc.ServiceRegistrar) error { - return nil -} - //nolint:revive // TODO(DEBUG) Fix revive linter func (m *Module) GetStats() map[string]interface{} { debug := map[string]interface{}{} diff --git a/pkg/eventmonitor/eventmonitor.go b/pkg/eventmonitor/eventmonitor.go index 880a856f7dd8f3..11a1db84317056 100644 --- a/pkg/eventmonitor/eventmonitor.go +++ b/pkg/eventmonitor/eventmonitor.go @@ -91,11 +91,6 @@ func (m *EventMonitor) Register(_ *module.Router) error { return m.Start() } -// RegisterGRPC register to system probe gRPC server -func (m *EventMonitor) RegisterGRPC(_ grpc.ServiceRegistrar) error { - return nil -} - // AddEventTypeHandler registers an event handler func (m *EventMonitor) AddEventTypeHandler(eventType model.EventType, handler EventTypeHandler) error { if !slices.Contains(allowedEventTypes, eventType) { diff --git a/pkg/process/checks/checks.go b/pkg/process/checks/checks.go index 77a83558593169..2fad369c3ad17f 100644 --- a/pkg/process/checks/checks.go +++ b/pkg/process/checks/checks.go @@ -32,8 +32,6 @@ type SysProbeConfig struct { SystemProbeAddress string // System probe process module on/off configuration ProcessModuleEnabled bool - // Using GRPC server for communication with system probe - GRPCServerEnabled bool } // Check is an interface for Agent checks that collect data. Each check returns diff --git a/pkg/process/runner/runner.go b/pkg/process/runner/runner.go index e47561d2f1be35..83a5feb998dc92 100644 --- a/pkg/process/runner/runner.go +++ b/pkg/process/runner/runner.go @@ -103,7 +103,6 @@ func NewRunner(config ddconfig.Reader, sysCfg *sysconfigtypes.Config, hostInfo * cfg.ProcessModuleEnabled = processModuleEnabled cfg.MaxConnsPerMessage = sysCfg.MaxConnsPerMessage cfg.SystemProbeAddress = sysCfg.SocketAddress - cfg.GRPCServerEnabled = sysCfg.GRPCServerEnabled } for _, c := range enabledChecks { diff --git a/pkg/util/grpc/go.mod b/pkg/util/grpc/go.mod index 926bc3fdd9aeab..5470b218254b46 100644 --- a/pkg/util/grpc/go.mod +++ b/pkg/util/grpc/go.mod @@ -14,7 +14,6 @@ require ( github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575 github.com/grpc-ecosystem/go-grpc-middleware v1.2.0 github.com/stretchr/testify v1.8.4 - golang.org/x/net v0.19.0 google.golang.org/grpc v1.59.0 ) @@ -28,6 +27,7 @@ require ( github.com/pmezard/go-difflib v1.0.0 // indirect github.com/tinylib/msgp v1.1.8 // indirect go.uber.org/atomic v1.11.0 // indirect + golang.org/x/net v0.19.0 // indirect golang.org/x/sys v0.15.0 // indirect golang.org/x/text v0.14.0 // indirect google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d // indirect diff --git a/pkg/util/grpc/server.go b/pkg/util/grpc/server.go index fa2ccbec460bc4..111694a7efb0ae 100644 --- a/pkg/util/grpc/server.go +++ b/pkg/util/grpc/server.go @@ -13,8 +13,6 @@ import ( "strings" "time" - "golang.org/x/net/http2" - "golang.org/x/net/http2/h2c" "google.golang.org/grpc" ) @@ -30,18 +28,11 @@ var ConnContextKey = &contextKey{"http-connection"} func NewMuxedGRPCServer(addr string, tlsConfig *tls.Config, grpcServer *grpc.Server, httpHandler http.Handler) *http.Server { // our gRPC clients do not handle protocol negotiation, so we need to force // HTTP/2 - var handler http.Handler - // when HTTP/2 traffic that is not TLS being sent we need to create a new handler which - // is able to handle the pre fix magic sent - handler = h2c.NewHandler(handlerWithFallback(grpcServer, httpHandler), &http2.Server{}) - if tlsConfig != nil { - tlsConfig.NextProtos = []string{"h2"} - handler = handlerWithFallback(grpcServer, httpHandler) - } + tlsConfig.NextProtos = []string{"h2"} return &http.Server{ Addr: addr, - Handler: handler, + Handler: handlerWithFallback(grpcServer, httpHandler), TLSConfig: tlsConfig, ConnContext: func(ctx context.Context, c net.Conn) context.Context { // Store the connection in the context so requests can reference it if needed From fb673d6434f89663c22c604b3bb14c859b365749 Mon Sep 17 00:00:00 2001 From: maxime mouial Date: Tue, 5 Mar 2024 19:32:15 +0100 Subject: [PATCH 009/155] Scrub invalid auth token (#23448) --- pkg/util/scrubber/default.go | 11 +++++++++++ pkg/util/scrubber/default_test.go | 7 +++++++ ...rub-bearer-token-of-any-size-4dc4b3856b3d6b18.yaml | 5 +++++ 3 files changed, 23 insertions(+) create mode 100644 releasenotes/notes/scrub-bearer-token-of-any-size-4dc4b3856b3d6b18.yaml diff --git a/pkg/util/scrubber/default.go b/pkg/util/scrubber/default.go index 4ba2b35883c208..c2037e8333d73f 100644 --- a/pkg/util/scrubber/default.go +++ b/pkg/util/scrubber/default.go @@ -52,11 +52,21 @@ func AddDefaultReplacers(scrubber *Scrubber) { Hints: []string{"app_key", "appkey", "application_key"}, Repl: []byte(`$1***********************************$2`), } + + // replacers are check one by one in order. We first try to scrub 64 bytes token, keeping the last 5 digit. If + // the token has a different size we scrub it entirely. hintedBearerReplacer := Replacer{ Regex: regexp.MustCompile(`\bBearer [a-fA-F0-9]{59}([a-fA-F0-9]{5})\b`), Hints: []string{"Bearer"}, Repl: []byte(`Bearer ***********************************************************$1`), } + // For this one we match any letters, not just a -> f + hintedBearerInvalidReplacer := Replacer{ + Regex: regexp.MustCompile(`\bBearer [a-zA-Z0-9]+\b`), + Hints: []string{"Bearer"}, + Repl: []byte("Bearer " + defaultReplacement), + } + apiKeyReplacerYAML := Replacer{ Regex: regexp.MustCompile(`(\-|\:|,|\[|\{)(\s+)?\b[a-fA-F0-9]{27}([a-fA-F0-9]{5})\b`), Repl: []byte(`$1$2"***************************$3"`), @@ -151,6 +161,7 @@ func AddDefaultReplacers(scrubber *Scrubber) { scrubber.AddReplacer(SingleLine, hintedAPIKeyReplacer) scrubber.AddReplacer(SingleLine, hintedAPPKeyReplacer) scrubber.AddReplacer(SingleLine, hintedBearerReplacer) + scrubber.AddReplacer(SingleLine, hintedBearerInvalidReplacer) scrubber.AddReplacer(SingleLine, apiKeyReplacerYAML) scrubber.AddReplacer(SingleLine, apiKeyReplacer) scrubber.AddReplacer(SingleLine, appKeyReplacerYAML) diff --git a/pkg/util/scrubber/default_test.go b/pkg/util/scrubber/default_test.go index d0b71d6ba581f2..f7674b579ca62e 100644 --- a/pkg/util/scrubber/default_test.go +++ b/pkg/util/scrubber/default_test.go @@ -611,6 +611,13 @@ func TestBearerToken(t *testing.T) { assertClean(t, `Error: Get "https://localhost:5001/agent/status": net/http: invalid header field value "Bearer 260a9c065b6426f81b7abae9e6bca9a16f7a842af65c940e89e3417c7aaec82d\n\n" for key Authorization`, `Error: Get "https://localhost:5001/agent/status": net/http: invalid header field value "Bearer ***********************************************************ec82d\n\n" for key Authorization`) + // entirely clean token with different length that 64 + assertClean(t, + `Bearer 2fe663014abcd18`, + `Bearer ********`) + assertClean(t, + `Bearer 2fe663014abcd1850076f6d68c0355666db98758262870811cace007cd4a62bdsldijfoiwjeoimdfolisdjoijfewoa`, + `Bearer ********`) assertClean(t, `AuthBearer 2fe663014abcd1850076f6d68c0355666db98758262870811cace007cd4a62ba`, `AuthBearer 2fe663014abcd1850076f6d68c0355666db98758262870811cace007cd4a62ba`) diff --git a/releasenotes/notes/scrub-bearer-token-of-any-size-4dc4b3856b3d6b18.yaml b/releasenotes/notes/scrub-bearer-token-of-any-size-4dc4b3856b3d6b18.yaml new file mode 100644 index 00000000000000..fffd1a2a925ef6 --- /dev/null +++ b/releasenotes/notes/scrub-bearer-token-of-any-size-4dc4b3856b3d6b18.yaml @@ -0,0 +1,5 @@ +--- +fixes: + - | + Scrub authentication bearer token of any size, even invalid, from integration configuration (when being printed + through the `checksconfig` CLI command or other). From 6d75eea1e47968585f4cad05b12d272695ca4f0f Mon Sep 17 00:00:00 2001 From: David du Colombier Date: Tue, 5 Mar 2024 19:45:53 +0100 Subject: [PATCH 010/155] Add datadog-agentless-scanner package (#23097) This change adds the datadog-agentless-scanner package. This package depends on the datadog-agent package and only contains the agentless-scanner software and init scripts. The agentless-scanner software itself will be added in another PR. This package installs files into the /opt/datadog/agentless-scanner directory. This package targets the following platforms: - Debian / Ubuntu amd64 - Debian / Ubuntu arm64 - RHEL / Fedora amd64 - RHEL / Fedora arm64 - SLES / openSUSE amd64 --- .github/CODEOWNERS | 1 + .gitlab-ci.yml | 1 + .gitlab/binary_build/linux.yml | 32 ++++ .gitlab/deploy_packages/nix.yml | 30 ++++ .gitlab/package_build/deb.yml | 55 ++++++ .gitlab/package_build/rpm.yml | 64 +++++++ .gitlab/package_build/suse_rpm.yml | 34 ++++ .gitlab/pkg_metrics/pkg_metrics.yml | 7 + cmd/agentless-scanner/main.go | 10 ++ omnibus/config/projects/agentless-scanner.rb | 146 +++++++++++++++ .../datadog-agentless-scanner-finalize.rb | 27 +++ .../software/datadog-agentless-scanner.rb | 66 +++++++ .../systemd.service.erb | 17 ++ .../sysvinit_debian.agentless-scanner.erb | 163 +++++++++++++++++ .../upstart_debian.conf.erb | 17 ++ .../upstart_redhat.conf.erb | 18 ++ .../agentless-scanner-deb/postinst | 64 +++++++ .../agentless-scanner-deb/postrm | 23 +++ .../agentless-scanner-deb/preinst | 24 +++ .../agentless-scanner-deb/prerm | 43 +++++ .../agentless-scanner-rpm/postinst | 17 ++ .../agentless-scanner-rpm/postrm | 22 +++ .../agentless-scanner-rpm/posttrans | 43 +++++ .../agentless-scanner-rpm/preinst | 23 +++ .../agentless-scanner-rpm/prerm | 39 ++++ tasks/__init__.py | 2 + tasks/agentless_scanner.py | 170 ++++++++++++++++++ tasks/build_tags.py | 9 + tasks/components.py | 4 + tasks/flavor.py | 1 + tasks/unit-tests/testdata/fake_gitlab-ci.yml | 1 + 31 files changed, 1173 insertions(+) create mode 100644 cmd/agentless-scanner/main.go create mode 100644 omnibus/config/projects/agentless-scanner.rb create mode 100644 omnibus/config/software/datadog-agentless-scanner-finalize.rb create mode 100644 omnibus/config/software/datadog-agentless-scanner.rb create mode 100644 omnibus/config/templates/datadog-agentless-scanner/systemd.service.erb create mode 100644 omnibus/config/templates/datadog-agentless-scanner/sysvinit_debian.agentless-scanner.erb create mode 100644 omnibus/config/templates/datadog-agentless-scanner/upstart_debian.conf.erb create mode 100644 omnibus/config/templates/datadog-agentless-scanner/upstart_redhat.conf.erb create mode 100755 omnibus/package-scripts/agentless-scanner-deb/postinst create mode 100755 omnibus/package-scripts/agentless-scanner-deb/postrm create mode 100755 omnibus/package-scripts/agentless-scanner-deb/preinst create mode 100755 omnibus/package-scripts/agentless-scanner-deb/prerm create mode 100755 omnibus/package-scripts/agentless-scanner-rpm/postinst create mode 100755 omnibus/package-scripts/agentless-scanner-rpm/postrm create mode 100755 omnibus/package-scripts/agentless-scanner-rpm/posttrans create mode 100755 omnibus/package-scripts/agentless-scanner-rpm/preinst create mode 100755 omnibus/package-scripts/agentless-scanner-rpm/prerm create mode 100644 tasks/agentless_scanner.py diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index a2d5cc157fd7e5..cc2cac322ff26c 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -155,6 +155,7 @@ /cmd/agent/dist/conf.d/snmp.d/ @DataDog/network-device-monitoring /cmd/agent/install*.sh @DataDog/agent-build-and-releases /cmd/agent/gui/views/private/js/apm.js @DataDog/agent-apm +/cmd/agentless-scanner/ @DataDog/agent-cspm /cmd/cluster-agent/ @DataDog/container-integrations /cmd/cluster-agent/commands/ @DataDog/container-integrations @DataDog/platform-integrations /cmd/cluster-agent-cloudfoundry/ @DataDog/platform-integrations diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index af9e553b514685..70c7084b685030 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -124,6 +124,7 @@ variables: DD_AGENT_TESTING_DIR: $CI_PROJECT_DIR/test/kitchen STATIC_BINARIES_DIR: bin/static DOGSTATSD_BINARIES_DIR: bin/dogstatsd + AGENTLESS_SCANNER_BINARIES_DIR: bin/agentless-scanner AGENT_BINARIES_DIR: bin/agent CLUSTER_AGENT_BINARIES_DIR: bin/datadog-cluster-agent CWS_INSTRUMENTATION_BINARIES_DIR: bin/cws-instrumentation diff --git a/.gitlab/binary_build/linux.yml b/.gitlab/binary_build/linux.yml index 010acc8faee5ad..0ffea6d21db081 100644 --- a/.gitlab/binary_build/linux.yml +++ b/.gitlab/binary_build/linux.yml @@ -93,3 +93,35 @@ build_iot_agent-binary_arm64: - source /root/.bashrc - inv check-go-version - inv -e agent.build --flavor iot --major-version 7 + +build_agentless_scanner-binary_x64: + stage: binary_build + rules: + !reference [.on_a7] + image: 486234852809.dkr.ecr.us-east-1.amazonaws.com/ci/datadog-agent-buildimages/deb_x64$DATADOG_AGENT_BUILDIMAGES_SUFFIX:$DATADOG_AGENT_BUILDIMAGES + tags: ["arch:amd64"] + needs: ["lint_linux-x64", "go_deps"] + before_script: + - source /root/.bashrc + - !reference [.retrieve_linux_go_deps] + script: + - inv check-go-version + - inv -e agentless-scanner.build --major-version 7 + - $S3_CP_CMD $CI_PROJECT_DIR/$AGENTLESS_SCANNER_BINARIES_DIR/agentless-scanner $S3_ARTIFACTS_URI/agentless-scanner/agentless-scanner + +build_agentless_scanner-binary_arm64: + stage: binary_build + rules: + !reference [.on_a7] + image: 486234852809.dkr.ecr.us-east-1.amazonaws.com/ci/datadog-agent-buildimages/deb_arm64$DATADOG_AGENT_ARMBUILDIMAGES_SUFFIX:$DATADOG_AGENT_ARMBUILDIMAGES + tags: ["arch:arm64"] + needs: ["lint_linux-arm64", "go_deps"] + variables: + ARCH: arm64 + before_script: + - source /root/.bashrc + - !reference [.retrieve_linux_go_deps] + script: + - inv check-go-version + - inv -e agentless-scanner.build --major-version 7 + - $S3_CP_CMD $CI_PROJECT_DIR/$AGENTLESS_SCANNER_BINARIES_DIR/agentless-scanner $S3_ARTIFACTS_URI/agentless-scanner/agentless-scanner.$ARCH diff --git a/.gitlab/deploy_packages/nix.yml b/.gitlab/deploy_packages/nix.yml index 092273711e4468..de19803c802cc8 100644 --- a/.gitlab/deploy_packages/nix.yml +++ b/.gitlab/deploy_packages/nix.yml @@ -90,6 +90,18 @@ deploy_packages_dogstatsd_deb-arm64-7: variables: PACKAGE_ARCH: arm64 +deploy_packages_agentless_scanner_deb-x64-7: + extends: .deploy_packages_deb-7 + needs: [ agentless_scanner_deb-x64 ] + variables: + PACKAGE_ARCH: amd64 + +deploy_packages_agentless_scanner_deb-arm64-7: + extends: .deploy_packages_deb-7 + needs: [ agentless_scanner_deb-arm64 ] + variables: + PACKAGE_ARCH: arm64 + deploy_packages_rpm-x64-7: extends: .deploy_packages_rpm-7 needs: [ agent_rpm-x64-a7 ] @@ -126,6 +138,18 @@ deploy_packages_dogstatsd_rpm-x64-7: variables: PACKAGE_ARCH: x86_64 +deploy_packages_agentless_scanner_rpm-x64-7: + extends: .deploy_packages_rpm-7 + needs: [ agentless_scanner_rpm-x64 ] + variables: + PACKAGE_ARCH: x86_64 + +deploy_packages_agentless_scanner_rpm-arm64-7: + extends: .deploy_packages_rpm-7 + needs: [ agentless_scanner_rpm-arm64 ] + variables: + PACKAGE_ARCH: arm64 + deploy_packages_suse_rpm-x64-7: extends: .deploy_packages_suse_rpm-7 needs: [ agent_suse-x64-a7 ] @@ -150,6 +174,12 @@ deploy_packages_dogstatsd_suse_rpm-x64-7: variables: PACKAGE_ARCH: x86_64 +deploy_packages_agentless_scanner_suse_rpm-x64-7: + extends: .deploy_packages_suse_rpm-7 + needs: [ agentless_scanner_suse-x64 ] + variables: + PACKAGE_ARCH: x86_64 + deploy_packages_dmg-x64-a7: rules: !reference [.on_deploy_a7] diff --git a/.gitlab/package_build/deb.yml b/.gitlab/package_build/deb.yml index d02e96eb3f6dea..4e2e6ff546a5e7 100644 --- a/.gitlab/package_build/deb.yml +++ b/.gitlab/package_build/deb.yml @@ -308,6 +308,61 @@ updater_deb-arm64: before_script: - export RELEASE_VERSION=$RELEASE_VERSION_7 +agentless_scanner_deb-x64: + rules: + !reference [.on_a7] + stage: package_build + image: 486234852809.dkr.ecr.us-east-1.amazonaws.com/ci/datadog-agent-buildimages/deb_x64$DATADOG_AGENT_BUILDIMAGES_SUFFIX:$DATADOG_AGENT_BUILDIMAGES + tags: ["arch:amd64"] + needs: ["go_mod_tidy_check", "build_agentless_scanner-binary_x64", "go_deps"] + variables: + before_script: + - source /root/.bashrc + - !reference [.retrieve_linux_go_deps] + script: + # remove artifacts from previous pipelines that may come from the cache + - rm -rf $OMNIBUS_PACKAGE_DIR/* + - !reference [.setup_ruby_mirror_linux] + # Artifacts and cache must live within project directory but we run omnibus in a neutral directory. + # Thus, we move the artifacts at the end in a gitlab-friendly dir. + - *setup_deb_signing_key + # Use --skip-deps since the deps are installed by `before_script`. + - inv -e agentless-scanner.omnibus-build --release-version "$RELEASE_VERSION_7" --major-version 7 --base-dir $OMNIBUS_BASE_DIR ${USE_S3_CACHING} --skip-deps --go-mod-cache="$GOPATH/pkg/mod" + - ls -la $OMNIBUS_PACKAGE_DIR + - $S3_CP_CMD $OMNIBUS_PACKAGE_DIR/datadog-agentless-scanner*_amd64.deb $S3_ARTIFACTS_URI/datadog-agentless-scanner_amd64.deb + - !reference [.upload_sbom_artifacts] + artifacts: + expire_in: 2 weeks + paths: + - $OMNIBUS_PACKAGE_DIR + +agentless_scanner_deb-arm64: + rules: + !reference [.on_all_builds_a7] + stage: package_build + image: 486234852809.dkr.ecr.us-east-1.amazonaws.com/ci/datadog-agent-buildimages/deb_arm64$DATADOG_AGENT_ARMBUILDIMAGES_SUFFIX:$DATADOG_AGENT_ARMBUILDIMAGES + tags: ["arch:arm64"] + needs: ["go_mod_tidy_check", "build_agentless_scanner-binary_arm64", "go_deps"] + before_script: + - source /root/.bashrc + - !reference [.retrieve_linux_go_deps] + script: + # remove artifacts from previous pipelines that may come from the cache + - rm -rf $OMNIBUS_PACKAGE_DIR/* + - !reference [.setup_ruby_mirror_linux] + # Artifacts and cache must live within project directory but we run omnibus in a neutral directory. + # Thus, we move the artifacts at the end in a gitlab-friendly dir. + - *setup_deb_signing_key + # Use --skip-deps since the deps are installed by `before_script`. + - inv -e agentless-scanner.omnibus-build --release-version "$RELEASE_VERSION_7" --major-version 7 --base-dir $OMNIBUS_BASE_DIR ${USE_S3_CACHING} --skip-deps --go-mod-cache="$GOPATH/pkg/mod" + - ls -la $OMNIBUS_PACKAGE_DIR + - $S3_CP_CMD $OMNIBUS_PACKAGE_DIR/datadog-agentless-scanner*_arm64.deb $S3_ARTIFACTS_URI/datadog-agentless-scanner_arm64.deb + - !reference [.upload_sbom_artifacts] + artifacts: + expire_in: 2 weeks + paths: + - $OMNIBUS_PACKAGE_DIR + agent_heroku_deb-x64-a6: extends: agent_deb-x64-a6 variables: diff --git a/.gitlab/package_build/rpm.yml b/.gitlab/package_build/rpm.yml index 61a97de9637d3b..f6e48b16d4d5dc 100644 --- a/.gitlab/package_build/rpm.yml +++ b/.gitlab/package_build/rpm.yml @@ -219,3 +219,67 @@ dogstatsd_rpm-x64: expire_in: 2 weeks paths: - $OMNIBUS_PACKAGE_DIR + +agentless_scanner_rpm-x64: + rules: + !reference [.on_a7] + stage: package_build + image: 486234852809.dkr.ecr.us-east-1.amazonaws.com/ci/datadog-agent-buildimages/rpm_x64$DATADOG_AGENT_BUILDIMAGES_SUFFIX:$DATADOG_AGENT_BUILDIMAGES + tags: ["arch:amd64"] + needs: ["go_mod_tidy_check", "build_agentless_scanner-binary_x64", "go_deps"] + variables: + before_script: + - source /root/.bashrc + - !reference [.retrieve_linux_go_deps] + script: + # remove artifacts from previous pipelines that may come from the cache + - rm -rf $OMNIBUS_PACKAGE_DIR/* + - !reference [.setup_ruby_mirror_linux] + # Artifacts and cache must live within project directory but we run omnibus + # from the GOPATH (see above). We then call `invoke` passing --base-dir, + # pointing to a gitlab-friendly location. + - set +x + - RPM_GPG_KEY=$(aws ssm get-parameter --region us-east-1 --name $RPM_GPG_KEY_SSM_NAME --with-decryption --query "Parameter.Value" --out text) + - printf -- "$RPM_GPG_KEY" | gpg --import --batch + - export RPM_SIGNING_PASSPHRASE=$(aws ssm get-parameter --region us-east-1 --name $RPM_SIGNING_PASSPHRASE_SSM_NAME --with-decryption --query "Parameter.Value" --out text) + - set -x + # Use --skip-deps since the deps are installed by `before_script`. + - inv -e agentless-scanner.omnibus-build --release-version "$RELEASE_VERSION_7" --major-version 7 --base-dir $OMNIBUS_BASE_DIR ${USE_S3_CACHING} --skip-deps --go-mod-cache="$GOPATH/pkg/mod" + - ls -la $OMNIBUS_PACKAGE_DIR + - !reference [.upload_sbom_artifacts] + artifacts: + expire_in: 2 weeks + paths: + - $OMNIBUS_PACKAGE_DIR + +agentless_scanner_rpm-arm64: + rules: + !reference [.on_a7] + stage: package_build + image: 486234852809.dkr.ecr.us-east-1.amazonaws.com/ci/datadog-agent-buildimages/rpm_arm64$DATADOG_AGENT_BUILDIMAGES_SUFFIX:$DATADOG_AGENT_BUILDIMAGES + tags: ["arch:arm64"] + needs: ["go_mod_tidy_check", "build_agentless_scanner-binary_arm64", "go_deps"] + variables: + before_script: + - source /root/.bashrc + - !reference [.retrieve_linux_go_deps] + script: + # remove artifacts from previous pipelines that may come from the cache + - rm -rf $OMNIBUS_PACKAGE_DIR/* + - !reference [.setup_ruby_mirror_linux] + # Artifacts and cache must live within project directory but we run omnibus + # from the GOPATH (see above). We then call `invoke` passing --base-dir, + # pointing to a gitlab-friendly location. + - set +x + - RPM_GPG_KEY=$(aws ssm get-parameter --region us-east-1 --name $RPM_GPG_KEY_SSM_NAME --with-decryption --query "Parameter.Value" --out text) + - printf -- "$RPM_GPG_KEY" | gpg --import --batch + - export RPM_SIGNING_PASSPHRASE=$(aws ssm get-parameter --region us-east-1 --name $RPM_SIGNING_PASSPHRASE_SSM_NAME --with-decryption --query "Parameter.Value" --out text) + - set -x + # Use --skip-deps since the deps are installed by `before_script`. + - inv -e agentless-scanner.omnibus-build --release-version "$RELEASE_VERSION_7" --major-version 7 --base-dir $OMNIBUS_BASE_DIR ${USE_S3_CACHING} --skip-deps --go-mod-cache="$GOPATH/pkg/mod" + - ls -la $OMNIBUS_PACKAGE_DIR + - !reference [.upload_sbom_artifacts] + artifacts: + expire_in: 2 weeks + paths: + - $OMNIBUS_PACKAGE_DIR diff --git a/.gitlab/package_build/suse_rpm.yml b/.gitlab/package_build/suse_rpm.yml index a8b0e8339395df..5e4d773e916c82 100644 --- a/.gitlab/package_build/suse_rpm.yml +++ b/.gitlab/package_build/suse_rpm.yml @@ -172,3 +172,37 @@ dogstatsd_suse-x64: expire_in: 2 weeks paths: - $OMNIBUS_PACKAGE_DIR_SUSE + +agentless_scanner_suse-x64: + rules: + !reference [.on_a7] + stage: package_build + image: 486234852809.dkr.ecr.us-east-1.amazonaws.com/ci/datadog-agent-buildimages/suse_x64$DATADOG_AGENT_BUILDIMAGES_SUFFIX:$DATADOG_AGENT_BUILDIMAGES + tags: ["arch:amd64"] + needs: ["go_mod_tidy_check", "build_agentless_scanner-binary_x64", "go_deps"] + variables: + before_script: + - source /root/.bashrc + - !reference [.retrieve_linux_go_deps] + script: + # remove artifacts from previous pipelines that may come from the cache + - rm -rf $OMNIBUS_PACKAGE_DIR_SUSE/* + - !reference [.setup_ruby_mirror_linux] + # Artifacts and cache must live within project directory but we run omnibus + # from the GOPATH (see above). We then call `invoke` passing --base-dir, + # pointing to a gitlab-friendly location. + - set +x + - RPM_GPG_KEY=$(aws ssm get-parameter --region us-east-1 --name $RPM_GPG_KEY_SSM_NAME --with-decryption --query "Parameter.Value" --out text) + - printf -- "$RPM_GPG_KEY" | gpg --import --batch + - export RPM_SIGNING_PASSPHRASE=$(aws ssm get-parameter --region us-east-1 --name $RPM_SIGNING_PASSPHRASE_SSM_NAME --with-decryption --query "Parameter.Value" --out text) + - set -x + # Use --skip-deps since the deps are installed by `before_script`. + - inv -e agentless-scanner.omnibus-build --release-version "$RELEASE_VERSION_7" --major-version 7 --base-dir $OMNIBUS_BASE_DIR ${USE_S3_CACHING} --skip-deps --go-mod-cache="$GOPATH/pkg/mod" + - ls -la $OMNIBUS_PACKAGE_DIR + # Copy to a different directory to avoid collisions if a job downloads both the RPM and SUSE RPM artifacts + - mkdir -p $OMNIBUS_PACKAGE_DIR_SUSE && cp $OMNIBUS_PACKAGE_DIR/* $OMNIBUS_PACKAGE_DIR_SUSE + - !reference [.upload_sbom_artifacts] + artifacts: + expire_in: 2 weeks + paths: + - $OMNIBUS_PACKAGE_DIR_SUSE diff --git a/.gitlab/pkg_metrics/pkg_metrics.yml b/.gitlab/pkg_metrics/pkg_metrics.yml index 7664dbeb04d870..ce76fb7af48b38 100644 --- a/.gitlab/pkg_metrics/pkg_metrics.yml +++ b/.gitlab/pkg_metrics/pkg_metrics.yml @@ -297,6 +297,9 @@ check_pkg_size-amd64-a7: - agent_suse-x64-a7 - dogstatsd_suse-x64 - iot_agent_suse-x64 + - agentless_scanner_deb-x64 + - agentless_scanner_rpm-x64 + - agentless_scanner_suse-x64 variables: MAJOR_VERSION: 7 FLAVORS: "datadog-agent datadog-iot-agent datadog-dogstatsd datadog-heroku-agent" @@ -311,6 +314,7 @@ check_pkg_size-amd64-a7: ["datadog-iot-agent"]="10000000" ["datadog-dogstatsd"]="10000000" ["datadog-heroku-agent"]="70000000" + ["datadog-agentless-scanner"]="10000000" ) check_pkg_size-arm64-a7: @@ -322,6 +326,8 @@ check_pkg_size-arm64-a7: - dogstatsd_deb-arm64 - agent_rpm-arm64-a7 - iot_agent_rpm-arm64 + - agentless_scanner_deb-arm64 + - agentless_scanner_rpm-arm64 variables: MAJOR_VERSION: 7 FLAVORS: "datadog-agent datadog-iot-agent datadog-dogstatsd" @@ -334,4 +340,5 @@ check_pkg_size-arm64-a7: ["datadog-agent"]="70000000" ["datadog-iot-agent"]="10000000" ["datadog-dogstatsd"]="10000000" + ["datadog-agentless-scanner"]="10000000" ) diff --git a/cmd/agentless-scanner/main.go b/cmd/agentless-scanner/main.go new file mode 100644 index 00000000000000..98a166ae6932d1 --- /dev/null +++ b/cmd/agentless-scanner/main.go @@ -0,0 +1,10 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2023-present Datadog, Inc. + +// Package main implements the agentless-scanner command. +package main + +func main() { +} diff --git a/omnibus/config/projects/agentless-scanner.rb b/omnibus/config/projects/agentless-scanner.rb new file mode 100644 index 00000000000000..59f6129cc02b9f --- /dev/null +++ b/omnibus/config/projects/agentless-scanner.rb @@ -0,0 +1,146 @@ +# Unless explicitly stated otherwise all files in this repository are licensed +# under the Apache License Version 2.0. +# This product includes software developed at Datadog (https:#www.datadoghq.com/). +# Copyright 2016-present Datadog, Inc. + +require "./lib/ostools.rb" + +name 'agentless-scanner' +package_name 'datadog-agentless-scanner' +homepage 'http://www.datadoghq.com' +license "Apache-2.0" +license_file "../LICENSE" + +if ENV.has_key?("OMNIBUS_WORKERS_OVERRIDE") + COMPRESSION_THREADS = ENV["OMNIBUS_WORKERS_OVERRIDE"].to_i +else + COMPRESSION_THREADS = 1 +end +if ENV.has_key?("DEPLOY_AGENT") && ENV["DEPLOY_AGENT"] == "true" + COMPRESSION_LEVEL = 9 +else + COMPRESSION_LEVEL = 5 +end + +install_dir '/opt/datadog/agentless-scanner' +if redhat_target? || suse_target? + maintainer 'Datadog, Inc ' + + # NOTE: with script dependencies, we only care about preinst/postinst/posttrans, + # because these would be used in a kickstart during package installation phase. + # All of the packages that we depend on in prerm/postrm scripts always have to be + # installed on all distros that we support, so we don't have to depend on them + # explicitly. + + # postinst and posttrans scripts use a subset of preinst script deps, so we don't + # have to list them, because they'll already be there because of preinst + runtime_script_dependency :pre, "coreutils" + runtime_script_dependency :pre, "grep" + if redhat_target? + runtime_script_dependency :pre, "glibc-common" + runtime_script_dependency :pre, "shadow-utils" + else + runtime_script_dependency :pre, "glibc" + runtime_script_dependency :pre, "shadow" + end +else + maintainer 'Datadog Packages ' +end + +if debian_target? + runtime_recommended_dependency 'datadog-signing-keys (>= 1:1.3.1)' +end + +# build_version is computed by an invoke command/function. +# We can't call it directly from there, we pass it through the environment instead. +build_version ENV['PACKAGE_VERSION'] + +build_iteration 1 + +description 'Datadog Agentless Scanner + The Datadog Agentless Scanner scans your cloud environment for vulnerabilities, compliance and security issues. + . + This package installs and runs the Agentless Scanner. + . + See http://www.datadoghq.com/ for more information +' + +# ------------------------------------ +# Generic package information +# ------------------------------------ + +# .deb specific flags +package :deb do + vendor 'Datadog ' + epoch 1 + license 'Apache License Version 2.0' + section 'utils' + priority 'extra' + compression_threads COMPRESSION_THREADS + compression_level COMPRESSION_LEVEL + compression_algo "xz" + if ENV.has_key?('DEB_SIGNING_PASSPHRASE') and not ENV['DEB_SIGNING_PASSPHRASE'].empty? + signing_passphrase "#{ENV['DEB_SIGNING_PASSPHRASE']}" + if ENV.has_key?('DEB_GPG_KEY_NAME') and not ENV['DEB_GPG_KEY_NAME'].empty? + gpg_key_name "#{ENV['DEB_GPG_KEY_NAME']}" + end + end +end + +# .rpm specific flags +package :rpm do + vendor 'Datadog ' + epoch 1 + dist_tag '' + license 'Apache License Version 2.0' + category 'System Environment/Daemons' + priority 'extra' + compression_threads COMPRESSION_THREADS + compression_level COMPRESSION_LEVEL + compression_algo "xz" + if ENV.has_key?('RPM_SIGNING_PASSPHRASE') and not ENV['RPM_SIGNING_PASSPHRASE'].empty? + signing_passphrase "#{ENV['RPM_SIGNING_PASSPHRASE']}" + if ENV.has_key?('RPM_GPG_KEY_NAME') and not ENV['RPM_GPG_KEY_NAME'].empty? + gpg_key_name "#{ENV['RPM_GPG_KEY_NAME']}" + end + end +end + +# ------------------------------------ +# Dependencies +# ------------------------------------ + +# creates required build directories +dependency 'datadog-agent-prepare' + +# version manifest file +dependency 'version-manifest' + +# Agentless-scanner +dependency 'datadog-agentless-scanner' + +# this dependency puts few files out of the omnibus install dir and move them +# in the final destination. This way such files will be listed in the packages +# manifest and owned by the package manager. This is the only point in the build +# process where we operate outside the omnibus install dir, thus the need of +# the `extra_package_file` directive. +# This must be the last dependency in the project. + +dependency 'datadog-agentless-scanner-finalize' + +# package scripts +if linux_target? + if debian_target? + package_scripts_path "#{Omnibus::Config.project_root}/package-scripts/agentless-scanner-deb" + else + package_scripts_path "#{Omnibus::Config.project_root}/package-scripts/agentless-scanner-rpm" + end +end + +if linux_target? + extra_package_file '/lib/systemd/system/datadog-agentless-scanner.service' + extra_package_file '/var/log/datadog/' +end + +exclude '\.git*' +exclude 'bundler\/git' diff --git a/omnibus/config/software/datadog-agentless-scanner-finalize.rb b/omnibus/config/software/datadog-agentless-scanner-finalize.rb new file mode 100644 index 00000000000000..fe6ca78e8e580e --- /dev/null +++ b/omnibus/config/software/datadog-agentless-scanner-finalize.rb @@ -0,0 +1,27 @@ +# Unless explicitly stated otherwise all files in this repository are licensed +# under the Apache License Version 2.0. +# This product includes software developed at Datadog (https:#www.datadoghq.com/). +# Copyright 2016-present Datadog, Inc. + +# This software definition doesn"t build anything, it"s the place where we create +# files outside the omnibus installation directory, so that we can add them to +# the package manifest using `extra_package_file` in the project definition. +require './lib/ostools.rb' + +name "datadog-agentless-scanner-finalize" +description "steps required to finalize the build" +default_version "1.0.0" + +skip_transitive_dependency_licensing true + +build do + license :project_license + + # Move system service files + mkdir "/lib/systemd/system" + move "#{install_dir}/scripts/datadog-agentless-scanner.service", "/lib/systemd/system" + mkdir "/var/log/datadog" + + # cleanup clutter + delete "#{install_dir}/etc" +end diff --git a/omnibus/config/software/datadog-agentless-scanner.rb b/omnibus/config/software/datadog-agentless-scanner.rb new file mode 100644 index 00000000000000..b002c7b6932d50 --- /dev/null +++ b/omnibus/config/software/datadog-agentless-scanner.rb @@ -0,0 +1,66 @@ +# Unless explicitly stated otherwise all files in this repository are licensed +# under the Apache License Version 2.0. +# This product includes software developed at Datadog (https:#www.datadoghq.com/). +# Copyright 2016-present Datadog, Inc. +require 'pathname' + +name 'datadog-agentless-scanner' + +skip_transitive_dependency_licensing true + +source path: '..' +relative_path 'src/github.com/DataDog/datadog-agent' + +build do + license :project_license + + # set GOPATH on the omnibus source dir for this software + gopath = Pathname.new(project_dir) + '../../../..' + etc_dir = "/etc/datadog-agent" + env = { + 'GOPATH' => gopath.to_path, + 'PATH' => "#{gopath.to_path}/bin:#{ENV['PATH']}", + } + + unless ENV["OMNIBUS_GOMODCACHE"].nil? || ENV["OMNIBUS_GOMODCACHE"].empty? + gomodcache = Pathname.new(ENV["OMNIBUS_GOMODCACHE"]) + env["GOMODCACHE"] = gomodcache.to_path + end + + # we assume the go deps are already installed before running omnibus + command "invoke agentless-scanner.build --rebuild --major-version $MAJOR_VERSION", env: env + + mkdir "#{install_dir}/etc/datadog-agent" + mkdir "#{install_dir}/run/" + mkdir "#{install_dir}/scripts/" + + # move around bin and config files + copy 'bin/agentless-scanner/agentless-scanner', "#{install_dir}/bin" + + if debian_target? + erb source: "upstart_debian.conf.erb", + dest: "#{install_dir}/scripts/datadog-agentless-scanner.conf", + mode: 0644, + vars: { install_dir: install_dir, etc_dir: etc_dir } + erb source: "sysvinit_debian.agentless-scanner.erb", + dest: "#{install_dir}/scripts/datadog-agentless-scanner", + mode: 0755, + vars: { install_dir: install_dir, etc_dir: etc_dir } + elsif redhat_target? || suse_target? + # Ship a different upstart job definition on RHEL to accommodate the old + # version of upstart (0.6.5) that RHEL 6 provides. + erb source: "upstart_redhat.conf.erb", + dest: "#{install_dir}/scripts/datadog-agentless-scanner.conf", + mode: 0644, + vars: { install_dir: install_dir, etc_dir: etc_dir } + end + erb source: "systemd.service.erb", + dest: "#{install_dir}/scripts/datadog-agentless-scanner.service", + mode: 0644, + vars: { install_dir: install_dir, etc_dir: etc_dir } + + # The file below is touched by software builds that don't put anything in the installation + # directory (libgcc right now) so that the git_cache gets updated let's remove it from the + # final package + delete "#{install_dir}/uselessfile" +end diff --git a/omnibus/config/templates/datadog-agentless-scanner/systemd.service.erb b/omnibus/config/templates/datadog-agentless-scanner/systemd.service.erb new file mode 100644 index 00000000000000..8be82b23923764 --- /dev/null +++ b/omnibus/config/templates/datadog-agentless-scanner/systemd.service.erb @@ -0,0 +1,17 @@ +[Unit] +Description=Datadog Agentless Scanner +After=network.target datadog-agent.service +BindsTo=datadog-agent.service +ConditionPathExists=<%= etc_dir %>/datadog.yaml +StartLimitInterval=10 +StartLimitBurst=5 + +[Service] +Type=simple +PIDFile=<%= install_dir %>/run/agentless-scanner.pid +Restart=on-failure +ExecStart=<%= install_dir %>/bin/agentless-scanner run -c <%= etc_dir %>/datadog.yaml -p <%= install_dir %>/run/agentless-scanner.pid +TimeoutStopSec=60 + +[Install] +WantedBy=multi-user.target diff --git a/omnibus/config/templates/datadog-agentless-scanner/sysvinit_debian.agentless-scanner.erb b/omnibus/config/templates/datadog-agentless-scanner/sysvinit_debian.agentless-scanner.erb new file mode 100644 index 00000000000000..be34ae76c1b65b --- /dev/null +++ b/omnibus/config/templates/datadog-agentless-scanner/sysvinit_debian.agentless-scanner.erb @@ -0,0 +1,163 @@ +#!/bin/sh + +### BEGIN INIT INFO +# Provides: datadog-agentless-scanner +# Short-Description: Start and stop datadog agentless scanner +# Description: Datadog Agentless Scanner +# Required-Start: $remote_fs +# Required-Stop: $remote_fs +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +### END INIT INFO + +. /lib/lsb/init-functions + +ETC_DIR="<%= etc_dir %>" +INSTALL_DIR="<%= install_dir %>" +AGENTPATH="$INSTALL_DIR/bin/agentless-scanner" +PIDFILE="$INSTALL_DIR/run/agentless-scanner.pid" +AGENT_ARGS="--config=$ETC_DIR/datadog.yaml --pidfile=$PIDFILE" +AGENT_USER="root" +NAME="datadog-agentless-scanner" +DESC="Datadog Agentless Scanner" + + + +if [ ! -x $AGENTPATH ]; then + echo "$AGENTPATH not found. Exiting $NAME" + exit 0 +fi + +if [ -r "/etc/default/${NAME}" ]; then + . "/etc/default/${NAME}" +fi + + +# +# Function that starts the daemon/service +# +do_start() +{ + # Return + # 0 if daemon has been started + # 1 if daemon was already running + # 2 if daemon could not be started + start-stop-daemon --start --test --quiet --pidfile $PIDFILE --user $AGENT_USER --startas $AGENTPATH > /dev/null \ + || return 1 + start-stop-daemon --start --background --chuid $AGENT_USER --quiet --pidfile $PIDFILE --user $AGENT_USER --startas $AGENTPATH -- \ + $AGENT_ARGS \ + || return 2 + # Add code here, if necessary, that waits for the process to be ready + # to handle requests from services started subsequently which depend + # on this one. As a last resort, sleep for some time. +} + + +# +# Start the agent and wait for it to be up +# +start_and_wait() +{ + log_daemon_msg "Starting $DESC" "$NAME" + do_start + case "$?" in + 1) log_end_msg 0 ;; + 2) log_end_msg 1 ;; + *) + # check if the agent is running once per second for 5 seconds + retries=5 + while [ $retries -gt 1 ]; do + start-stop-daemon --start --test --quiet --pidfile $PIDFILE --user $AGENT_USER --startas $AGENTPATH + if [ "$?" -eq "1" ]; then + # We've started up successfully. Exit cleanly + log_end_msg 0 + return 0 + else + retries=$(($retries - 1)) + sleep 1 + fi + done + # After 5 tries the agent didn't start. Report an error + log_end_msg 1 + + ;; + esac +} + +# +# Function that stops the daemon/service +# +do_stop() +{ + # Return + # 0 if daemon has been stopped + # 1 if daemon was already stopped + # 2 if daemon could not be stopped + # other if a failure occurred + start-stop-daemon --stop --quiet --retry=30 --pidfile $PIDFILE --user $AGENT_USER --startas $AGENTPATH + RETVAL="$?" + rm -f $PIDFILE + return $RETVAL +} + +# +# Stop the agent and wait for it to be down +# +stop_and_wait() +{ + log_daemon_msg "Stopping $DESC" "$NAME" + do_stop + case "$?" in + 0|1) log_end_msg 0 ;; + *) log_end_msg 1 ;; # Failed to stop + esac +} + +# Action to take +case "$1" in + start) + if init_is_upstart; then + exit 1 + fi + if [ "$DATADOG_ENABLED" = "no" ]; then + echo "Disabled via /etc/default/$NAME. Exiting." + exit 0 + fi + + start_and_wait + + ;; + + stop) + if init_is_upstart; then + exit 0 + fi + + stop_and_wait + + ;; + + status) + status_of_proc -p $PIDFILE $AGENTPATH $NAME && exit 0 || exit $? + ;; + + restart|force-reload) + if init_is_upstart; then + exit 1 + fi + + echo "Restarting $DESC" + + stop_and_wait + start_and_wait + + ;; + + *) + N=/etc/init.d/$NAME + echo "Usage: $N {start|stop|restart|status}" + exit 1 + ;; +esac + +exit $? diff --git a/omnibus/config/templates/datadog-agentless-scanner/upstart_debian.conf.erb b/omnibus/config/templates/datadog-agentless-scanner/upstart_debian.conf.erb new file mode 100644 index 00000000000000..489981aaf76923 --- /dev/null +++ b/omnibus/config/templates/datadog-agentless-scanner/upstart_debian.conf.erb @@ -0,0 +1,17 @@ +description "Datadog Agentless Scanner" + +start on started networking or started network +stop on runlevel [!2345] + +respawn +respawn limit 4 25 +normal exit 0 + +console log # redirect daemon's outputs to `/var/log/upstart/agentless-scanner.log` +env DD_LOG_TO_CONSOLE=false + +script + # setuid is not available in versions of upstart before 1.4. CentOS/RHEL6 use an earlier version of upstart. + # This is the best way to set the user in the absence of setuid. + exec su -s /bin/sh -c 'exec "$0" "$@"' dd-agent -- <%= install_dir %>/bin/agentless-scanner run -c <%= etc_dir %>/datadog.yaml -p <%= install_dir %>/run/agentless-scanner.pid +end script diff --git a/omnibus/config/templates/datadog-agentless-scanner/upstart_redhat.conf.erb b/omnibus/config/templates/datadog-agentless-scanner/upstart_redhat.conf.erb new file mode 100644 index 00000000000000..06c813d73f4655 --- /dev/null +++ b/omnibus/config/templates/datadog-agentless-scanner/upstart_redhat.conf.erb @@ -0,0 +1,18 @@ +description "Datadog Agentless Scanner" + +start on started networking or started network +stop on runlevel [!2345] + +respawn +respawn limit 4 25 +normal exit 0 + +# console log is not available before upstart 1.4. CentOS/RHEL6 use an earlier version of upstart. +console output +env DD_LOG_TO_CONSOLE=false + +script + # setuid is not available in versions of upstart before 1.4. CentOS/RHEL6 use an earlier version of upstart. + # This is the best way to set the user in the absence of setuid. + exec su -s /bin/sh -c 'exec "$0" "$@"' dd-agent -- <%= install_dir %>/bin/agentless-scanner run -c <%= etc_dir %>/datadog.yaml -p <%= install_dir %>/run/agentless-scanner.pid +end script diff --git a/omnibus/package-scripts/agentless-scanner-deb/postinst b/omnibus/package-scripts/agentless-scanner-deb/postinst new file mode 100755 index 00000000000000..f541b574cf578b --- /dev/null +++ b/omnibus/package-scripts/agentless-scanner-deb/postinst @@ -0,0 +1,64 @@ +#!/bin/sh +# +# Perform necessary datadog-agentless-scanner setup steps after package is installed. +# +# .deb: STEP 5 of 5 + +INSTALL_DIR=/opt/datadog/agentless-scanner +CONFIG_DIR=/etc/datadog-agent +SERVICE_NAME=datadog-agentless-scanner + +# If we are inside the Docker container, do nothing +if [ -n "$DOCKER_DD_AGENT" ]; then + echo "Installation from docker-dd-agent, nothing to do in postinst" + exit 0 +fi + +set -e +case "$1" in + configure) + # Create a symlink to the agent's binary + ln -sf $INSTALL_DIR/bin/agentless-scanner /usr/bin/datadog-agentless-scanner + ;; + abort-upgrade|abort-remove|abort-deconfigure) + ;; + + *) + ;; +esac + +# Enable and restart the agentless-scanner service here on Debian platforms +# On RHEL, this is done in the posttrans script +# supports systemd, upstart and sysvinit +echo "Enabling service $SERVICE_NAME" +if command -v systemctl >/dev/null 2>&1; then + systemctl enable $SERVICE_NAME || echo "[ WARNING ]\tCannot enable $SERVICE_NAME with systemctl" +elif command -v initctl >/dev/null 2>&1; then + # Nothing to do, this is defined directly in the upstart job file + : +elif command -v update-rc.d >/dev/null 2>&1; then + update-rc.d $SERVICE_NAME defaults || echo "[ WARNING ]\tCannot enable $SERVICE_NAME with update-rc.d" +else + echo "[ WARNING ]\tCannot detect a supported init system. The datadog-agentless-scanner package only provides service files for systemd, upstart and sysvinit." +fi + +# TODO: Use a configcheck command on the agent to determine if it's safe to restart, +# and avoid restarting when a check conf is invalid +if [ -f "$CONFIG_DIR/datadog.yaml" ]; then + echo "(Re)starting $SERVICE_NAME now..." + if command -v systemctl >/dev/null 2>&1; then + systemctl restart $SERVICE_NAME || true + elif command -v initctl >/dev/null 2>&1; then + initctl start $SERVICE_NAME || initctl restart $SERVICE_NAME || true + elif command -v service >/dev/null 2>&1; then + service $SERVICE_NAME restart || true + else + echo "[ WARNING ]\tCannot detect a supported init system. The datadog-agentless-scanner package only provides service files for systemd and upstart." + fi +else + # No datadog.yaml file is present. This is probably a clean install made with the + # step-by-step instructions/an automation tool, and the config file will be added next. + echo "No datadog.yaml file detected, not starting the agentless-scanner" +fi + +exit 0 diff --git a/omnibus/package-scripts/agentless-scanner-deb/postrm b/omnibus/package-scripts/agentless-scanner-deb/postrm new file mode 100755 index 00000000000000..7975f03c85e499 --- /dev/null +++ b/omnibus/package-scripts/agentless-scanner-deb/postrm @@ -0,0 +1,23 @@ +#!/bin/sh +# +# Perform necessary datadog-agentless-scanner removal steps after package is uninstalled. +# +# .deb: STEP 3 of 5 + +INSTALL_DIR=/opt/datadog/agentless-scanner + +# Remove the symlink to the binary. +rm -f "/usr/bin/datadog-agentless-scanner" + +set -e + +case "$1" in + purge) + echo "Force-deleting $INSTALL_DIR" + rm -rf $INSTALL_DIR + ;; + *) + ;; +esac + +exit 0 diff --git a/omnibus/package-scripts/agentless-scanner-deb/preinst b/omnibus/package-scripts/agentless-scanner-deb/preinst new file mode 100755 index 00000000000000..ba1c1f7779f693 --- /dev/null +++ b/omnibus/package-scripts/agentless-scanner-deb/preinst @@ -0,0 +1,24 @@ +#!/bin/sh +# +# Perform necessary datadog-agentless-scanner setup steps before package is installed. +# +# .deb: STEP 2 of 5 + +SERVICE_NAME=datadog-agentless-scanner + +set -e +if [ -f "/lib/systemd/system/$SERVICE_NAME.service" ] || [ -f "/usr/lib/systemd/system/$SERVICE_NAME.service" ]; then + # Stop an already running agent + # supports systemd, upstart and sysvinit + if command -v systemctl >/dev/null 2>&1; then + systemctl stop $SERVICE_NAME || true + elif command -v initctl >/dev/null 2>&1; then + initctl stop $SERVICE_NAME || true + elif command -v service >/dev/null 2>&1; then + service $SERVICE_NAME stop || true + else + echo "[ WARNING ]\tCannot detect a supported init system. The datadog-agentless-scanner package only provides service files for systemd, upstart and sysvinit." + fi +fi + +exit 0 diff --git a/omnibus/package-scripts/agentless-scanner-deb/prerm b/omnibus/package-scripts/agentless-scanner-deb/prerm new file mode 100755 index 00000000000000..6c69a98aca5c24 --- /dev/null +++ b/omnibus/package-scripts/agentless-scanner-deb/prerm @@ -0,0 +1,43 @@ +#!/bin/sh +# +# Perform necessary datadog-agentless-scanner setup steps prior to remove the old package. +# +# .deb: STEP 1 of 5 + +SERVICE_NAME=datadog-agentless-scanner + +stop_agent() +{ + # Stop an already running agentless-scanner + # supports systemd, upstart and sysvinit + if command -v systemctl >/dev/null 2>&1; then + systemctl stop $SERVICE_NAME || true + elif command -v initctl >/dev/null 2>&1; then + initctl stop $SERVICE_NAME || true + elif command -v service >/dev/null 2>&1; then + service $SERVICE_NAME stop || true + else + echo "[ WARNING ]\tCannot detect a supported init system. The datadog-agentless-scanner package only provides service files for systemd and upstart." + fi +} + +deregister_agent() +{ + # Disable agentless-scanner start on system boot + # supports systemd, upstart and sysvinit + if command -v systemctl >/dev/null 2>&1; then + systemctl disable $SERVICE_NAME || true + elif command -v initctl >/dev/null 2>&1; then + # Nothing to do, this is defined directly in the upstart job file + : + elif command -v update-rc.d >/dev/null 2>&1; then + update-rc.d -f $SERVICE_NAME remove || true + else + echo "[ WARNING ]\tCannot detect a supported init system. The datadog-agentless-scanner package only provides service files for systemd, upstart and sysvinit." + fi +} + +stop_agent +deregister_agent + +exit 0 diff --git a/omnibus/package-scripts/agentless-scanner-rpm/postinst b/omnibus/package-scripts/agentless-scanner-rpm/postinst new file mode 100755 index 00000000000000..f077f17e9e5830 --- /dev/null +++ b/omnibus/package-scripts/agentless-scanner-rpm/postinst @@ -0,0 +1,17 @@ +#!/bin/sh +# +# Perform necessary datadog-agentless-scanner setup steps after package is installed. +# NOTE: part of the setup is done in the posttrans (rpm-only) script +# +# .rpm: STEP 3 of 6 + +INSTALL_DIR=/opt/datadog/agentless-scanner +LOG_DIR=/var/log/datadog +CONFIG_DIR=/etc/datadog-agent + +# Set proper rights to the dd-agent user +chown -R dd-agent:dd-agent ${CONFIG_DIR} +chown -R dd-agent:dd-agent ${LOG_DIR} +chown -R dd-agent:dd-agent ${INSTALL_DIR} + +exit 0 diff --git a/omnibus/package-scripts/agentless-scanner-rpm/postrm b/omnibus/package-scripts/agentless-scanner-rpm/postrm new file mode 100755 index 00000000000000..09afd77e196da4 --- /dev/null +++ b/omnibus/package-scripts/agentless-scanner-rpm/postrm @@ -0,0 +1,22 @@ +#!/bin/sh +# +# Perform necessary datadog-agentless-scanner removal steps after package is uninstalled. +# +# .rpm: STEP 5 of 6 + +# Remove the symlink to the binary. +rm -f "/usr/bin/datadog-agentless-scanner" + +case "$*" in + 0) + # We're uninstalling. + # We don't delete the dd-agent user/group (see https://fedoraproject.org/wiki/Packaging:UsersAndGroups#Allocation_Strategies) + ;; + 1) + # We're upgrading. + ;; + *) + ;; +esac + +exit 0 diff --git a/omnibus/package-scripts/agentless-scanner-rpm/posttrans b/omnibus/package-scripts/agentless-scanner-rpm/posttrans new file mode 100755 index 00000000000000..6bf740508dc151 --- /dev/null +++ b/omnibus/package-scripts/agentless-scanner-rpm/posttrans @@ -0,0 +1,43 @@ +#! /bin/sh +# +# This script is RPM-specific +# It is run at the very end of an install/upgrade of the package +# It is NOT run on removal of the package +# +# .rpm: STEP 6 of 6 + +INSTALL_DIR=/opt/datadog/agentless-scanner +CONFIG_DIR=/etc/datadog-agent +SERVICE_NAME=datadog-agentless-scanner + +# Create a symlink to the agent's binary +ln -sf $INSTALL_DIR/bin/agentless-scanner /usr/bin/datadog-agentless-scanner + +echo "Enabling service $SERVICE_NAME" +if command -v systemctl >/dev/null 2>&1; then + systemctl enable $SERVICE_NAME || echo "[ WARNING ]\tCannot enable $SERVICE_NAME with systemctl" +elif command -v initctl >/dev/null 2>&1; then + # start/stop policy is already defined in the upstart job file + : +else + echo "[ WARNING ]\tCannot detect a supported init system. The datadog-agentless-scanner package only provides service files for systemd and upstart." +fi + +# TODO: Use a configcheck command on the agent to determine if it's safe to restart, +# and avoid restarting when a check conf is invalid +if [ -f "$CONFIG_DIR/datadog.yaml" ]; then + echo "(Re)starting $SERVICE_NAME now..." + if command -v systemctl >/dev/null 2>&1; then + systemctl restart $SERVICE_NAME || true + elif command -v initctl >/dev/null 2>&1; then + initctl start $SERVICE_NAME || initctl restart $SERVICE_NAME || true + else + echo "[ WARNING ]\tCannot detect a supported init system. The datadog-agentless-scanner package only provides service files for systemd and upstart." + fi +else + # No datadog.yaml file is present. This is probably a clean install made with the + # step-by-step instructions/an automation tool, and the config file will be added next. + echo "No datadog.yaml file detected, not starting the agent" +fi + +exit 0 diff --git a/omnibus/package-scripts/agentless-scanner-rpm/preinst b/omnibus/package-scripts/agentless-scanner-rpm/preinst new file mode 100755 index 00000000000000..112ace36953557 --- /dev/null +++ b/omnibus/package-scripts/agentless-scanner-rpm/preinst @@ -0,0 +1,23 @@ +#!/bin/sh +# +# Perform necessary datadog-agentless-scanner setup steps before package is installed. +# +# .rpm: STEP 2 of 6 + +SERVICE_NAME=datadog-agentless-scanner + +# Linux installation +set -e +if [ -f "/lib/systemd/system/$SERVICE_NAME.service" ] || [ -f "/usr/lib/systemd/system/$SERVICE_NAME.service" ]; then + # Stop an already running agent + # Only supports systemd and upstart + if command -v systemctl >/dev/null 2>&1; then + systemctl stop $SERVICE_NAME || true + elif command -v initctl >/dev/null 2>&1; then + initctl stop $SERVICE_NAME || true + else + echo "[ WARNING ]\tCannot detect a supported init system. The datadog-agentless-scanner package only provides service files for systemd and upstart." + fi +fi + +exit 0 diff --git a/omnibus/package-scripts/agentless-scanner-rpm/prerm b/omnibus/package-scripts/agentless-scanner-rpm/prerm new file mode 100755 index 00000000000000..5bff0e3a8521bb --- /dev/null +++ b/omnibus/package-scripts/agentless-scanner-rpm/prerm @@ -0,0 +1,39 @@ +#!/bin/sh +# +# Perform necessary datadog-agentless-scanner setup steps prior to remove the old package. +# +# .rpm: STEP 4 of 6 + +SERVICE_NAME=datadog-agentless-scanner + +stop_agent() +{ + # Stop an already running agentless-scanner + # Only supports systemd and upstart + if command -v systemctl >/dev/null 2>&1; then + systemctl stop $SERVICE_NAME || true + elif command -v initctl >/dev/null 2>&1; then + initctl stop $SERVICE_NAME || true + else + echo "[ WARNING ]\tCannot detect a supported init system. The datadog-agentless-scanner package only provides service files for systemd and upstart." + fi +} + +deregister_agent() +{ + # Disable agentless-scanner start on system boot + # Only supports systemd and upstart + if command -v systemctl >/dev/null 2>&1; then + systemctl disable $SERVICE_NAME || true + elif command -v initctl >/dev/null 2>&1; then + # Nothing to do, this is defined directly in the upstart job file + : + else + echo "[ WARNING ]\tCannot detect a supported init system. The datadog-agentless-scanner package only provides service files for systemd and upstart." + fi +} + +stop_agent +deregister_agent + +exit 0 diff --git a/tasks/__init__.py b/tasks/__init__.py index 6cce6d9a66a1dd..0f5e9643ced4f0 100644 --- a/tasks/__init__.py +++ b/tasks/__init__.py @@ -6,6 +6,7 @@ from tasks import ( agent, + agentless_scanner, bench, buildimages, cluster_agent, @@ -122,6 +123,7 @@ # add namespaced tasks to the root ns.add_collection(agent) +ns.add_collection(agentless_scanner) ns.add_collection(buildimages) ns.add_collection(cluster_agent) ns.add_collection(cluster_agent_cloudfoundry) diff --git a/tasks/agentless_scanner.py b/tasks/agentless_scanner.py new file mode 100644 index 00000000000000..30a8a5bf898078 --- /dev/null +++ b/tasks/agentless_scanner.py @@ -0,0 +1,170 @@ +""" +Agentless-scanner tasks +""" + + +import os +import sys + +from invoke import task +from invoke.exceptions import Exit + +from tasks.agent import bundle_install_omnibus +from tasks.build_tags import filter_incompatible_tags, get_build_tags, get_default_build_tags +from tasks.flavor import AgentFlavor +from tasks.go import deps +from tasks.libs.common.utils import REPO_PATH, bin_name, get_build_flags, get_version, load_release_versions + +# constants +AGENTLESS_SCANNER_BIN_PATH = os.path.join(".", "bin", "agentless-scanner") +STATIC_BIN_PATH = os.path.join(".", "bin", "static") + + +@task +def build( + ctx, + rebuild=False, + race=False, + static=False, + build_include=None, + build_exclude=None, + major_version='7', + arch="x64", + go_mod="mod", +): + """ + Build Agentless-scanner + """ + build_include = ( + get_default_build_tags(build="agentless-scanner", arch=arch, flavor=AgentFlavor.agentless_scanner) + if build_include is None + else filter_incompatible_tags(build_include.split(","), arch=arch) + ) + build_exclude = [] if build_exclude is None else build_exclude.split(",") + build_tags = get_build_tags(build_include, build_exclude) + ldflags, gcflags, env = get_build_flags(ctx, static=static, major_version=major_version) + bin_path = AGENTLESS_SCANNER_BIN_PATH + + if static: + bin_path = STATIC_BIN_PATH + + # NOTE: consider stripping symbols to reduce binary size + cmd = "go build -mod={go_mod} {race_opt} {build_type} -tags \"{build_tags}\" -o {bin_name} " + cmd += "-gcflags=\"{gcflags}\" -ldflags=\"{ldflags}\" {REPO_PATH}/cmd/agentless-scanner" + args = { + "go_mod": go_mod, + "race_opt": "-race" if race else "", + "build_type": "-a" if rebuild else "", + "build_tags": " ".join(build_tags), + "bin_name": os.path.join(bin_path, bin_name("agentless-scanner")), + "gcflags": gcflags, + "ldflags": ldflags, + "REPO_PATH": REPO_PATH, + } + ctx.run(cmd.format(**args), env=env) + + # Render the configuration file template + # + # We need to remove cross compiling bits if any because go generate must + # build and execute in the native platform + env = { + "GOOS": "", + "GOARCH": "", + } + cmd = "go generate -mod={} {}/cmd/agentless-scanner" + ctx.run(cmd.format(go_mod, REPO_PATH), env=env) + + if static and sys.platform.startswith("linux"): + cmd = "file {bin_name} " + args = { + "bin_name": os.path.join(bin_path, bin_name("agentless-scanner")), + } + result = ctx.run(cmd.format(**args)) + if "statically linked" not in result.stdout: + print("agentless-scanner binary is not static, exiting...") + raise Exit(code=1) + + +@task +def omnibus_build( + ctx, + log_level="info", + base_dir=None, + gem_path=None, + skip_deps=False, + release_version="nightly", + major_version='7', + omnibus_s3_cache=False, + go_mod_cache=None, + host_distribution=None, +): + """ + Build the Agentless-scanner packages with Omnibus Installer. + """ + if not skip_deps: + deps(ctx) + + # omnibus config overrides + overrides = [] + + # base dir (can be overridden through env vars, command line takes precedence) + base_dir = base_dir or os.environ.get("ALS_OMNIBUS_BASE_DIR") + if base_dir: + overrides.append(f"base_dir:{base_dir}") + if host_distribution: + overrides.append(f'host_distribution:{host_distribution}') + + overrides_cmd = "" + if overrides: + overrides_cmd = "--override=" + " ".join(overrides) + + env = load_release_versions(ctx, release_version) + + env['PACKAGE_VERSION'] = get_version( + ctx, + include_git=True, + url_safe=True, + git_sha_length=7, + major_version=major_version, + include_pipeline_id=True, + ) + + bundle_install_omnibus(ctx, gem_path=gem_path, env=env) + + with ctx.cd("omnibus"): + omnibus = "bundle exec omnibus.bat" if sys.platform == 'win32' else "bundle exec omnibus" + cmd = "{omnibus} build agentless-scanner --log-level={log_level} {populate_s3_cache} {overrides}" + args = {"omnibus": omnibus, "log_level": log_level, "overrides": overrides_cmd, "populate_s3_cache": ""} + + if omnibus_s3_cache: + args['populate_s3_cache'] = " --populate-s3-cache " + + env['MAJOR_VERSION'] = major_version + + integrations_core_version = os.environ.get('INTEGRATIONS_CORE_VERSION') + # Only overrides the env var if the value is a non-empty string. + if integrations_core_version: + env['INTEGRATIONS_CORE_VERSION'] = integrations_core_version + + # If the host has a GOMODCACHE set, try to reuse it + if not go_mod_cache and os.environ.get('GOMODCACHE'): + go_mod_cache = os.environ.get('GOMODCACHE') + + if go_mod_cache: + env['OMNIBUS_GOMODCACHE'] = go_mod_cache + + ctx.run(cmd.format(**args), env=env) + + +@task +def clean(ctx): + """ + Remove temporary objects and binary artifacts + """ + # go clean + print("Executing go clean") + ctx.run("go clean") + + # remove the bin/agentless-scanner folder + print("Remove agentless-scanner binary folder") + ctx.run("rm -rf ./bin/agentless-scanner") diff --git a/tasks/build_tags.py b/tasks/build_tags.py index b762361a14a56f..fef79dd8865876 100644 --- a/tasks/build_tags.py +++ b/tasks/build_tags.py @@ -93,6 +93,9 @@ } ) +# AGENTLESS_SCANNER_TAGS lists the tags needed when building the agentless-scanner +AGENTLESS_SCANNER_TAGS = {""} + # CLUSTER_AGENT_TAGS lists the tags needed when building the cluster-agent CLUSTER_AGENT_TAGS = {"clusterchecks", "kubeapiserver", "orchestrator", "zlib", "ec2", "gce"} @@ -194,6 +197,12 @@ "lint": DOGSTATSD_TAGS.union(UNIT_TEST_TAGS), "unit-tests": DOGSTATSD_TAGS.union(UNIT_TEST_TAGS), }, + AgentFlavor.agentless_scanner: { + "dogstatsd": AGENTLESS_SCANNER_TAGS, + "system-tests": AGENT_TAGS, + "lint": AGENTLESS_SCANNER_TAGS.union(UNIT_TEST_TAGS), + "unit-tests": AGENTLESS_SCANNER_TAGS.union(UNIT_TEST_TAGS), + }, } diff --git a/tasks/components.py b/tasks/components.py index a3f2871a9a485e..f01732b31baf9b 100644 --- a/tasks/components.py +++ b/tasks/components.py @@ -432,6 +432,10 @@ def lint_fxutil_oneshot_test(_): if str(file).endswith("_test.go"): continue + excluded_cmds = ["agentless-scanner"] + if file.parts[0] == "cmd" and file.parts[1] in excluded_cmds: + continue + one_shot_count = file.read_text().count("fxutil.OneShot(") run_count = file.read_text().count("fxutil.Run(") diff --git a/tasks/flavor.py b/tasks/flavor.py index 16399f84821d3e..24e377f3f8a0e1 100644 --- a/tasks/flavor.py +++ b/tasks/flavor.py @@ -7,6 +7,7 @@ class AgentFlavor(enum.Enum): iot = 2 heroku = 3 dogstatsd = 4 + agentless_scanner = 5 def is_iot(self): return self == type(self).iot diff --git a/tasks/unit-tests/testdata/fake_gitlab-ci.yml b/tasks/unit-tests/testdata/fake_gitlab-ci.yml index e8fbbed2c4d8bc..7b510943a40b7e 100644 --- a/tasks/unit-tests/testdata/fake_gitlab-ci.yml +++ b/tasks/unit-tests/testdata/fake_gitlab-ci.yml @@ -113,6 +113,7 @@ variables: STATIC_BINARIES_DIR: bin/static DOGSTATSD_BINARIES_DIR: bin/dogstatsd AGENT_BINARIES_DIR: bin/agent + AGENTLESS_SCANNER_BINARIES_DIR: bin/agentless-scanner CLUSTER_AGENT_BINARIES_DIR: bin/datadog-cluster-agent CWS_INSTRUMENTATION_BINARIES_DIR: bin/cws-instrumentation CLUSTER_AGENT_CLOUDFOUNDRY_BINARIES_DIR: bin/datadog-cluster-agent-cloudfoundry From 48a1cad243e5ca8be9d6bb3f71fb34ec412cd76b Mon Sep 17 00:00:00 2001 From: Ahmed Mezghani <38987709+ahmed-mez@users.noreply.github.com> Date: Tue, 5 Mar 2024 19:52:28 +0100 Subject: [PATCH 011/155] trace-agent: tag receiver and processing telemetry with service (#23381) --- cmd/trace-agent/config/remote/config.go | 2 +- pkg/trace/api/api.go | 49 ++++++++++++++++--------- pkg/trace/api/api_test.go | 12 ++---- pkg/trace/api/version.go | 9 +++++ pkg/trace/info/info_test.go | 4 +- pkg/trace/info/stats.go | 4 ++ pkg/trace/info/stats_test.go | 5 ++- test/new-e2e/tests/apm/docker_test.go | 11 ++++++ test/new-e2e/tests/apm/tests.go | 31 ++++++++++++++++ test/new-e2e/tests/apm/vm_test.go | 18 +++++++++ 10 files changed, 116 insertions(+), 29 deletions(-) diff --git a/cmd/trace-agent/config/remote/config.go b/cmd/trace-agent/config/remote/config.go index c40ae14f22b4e4..6254d6efb29e83 100644 --- a/cmd/trace-agent/config/remote/config.go +++ b/cmd/trace-agent/config/remote/config.go @@ -50,7 +50,7 @@ func ConfigHandler(r *api.HTTPReceiver, cf rcclient.ConfigFetcher, cfg *config.A cidProvider := api.NewIDProvider(cfg.ContainerProcRoot) return http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { defer timing.Since("datadog.trace_agent.receiver.config_process_ms", time.Now()) - tags := r.TagStats(api.V07, req.Header).AsTags() + tags := r.TagStats(api.V07, req.Header, "").AsTags() statusCode := http.StatusOK defer func() { tags = append(tags, fmt.Sprintf("status_code:%d", statusCode)) diff --git a/pkg/trace/api/api.go b/pkg/trace/api/api.go index 0230d866ffd965..865aef5977f510 100644 --- a/pkg/trace/api/api.go +++ b/pkg/trace/api/api.go @@ -350,11 +350,11 @@ const ( // TagStats returns the stats and tags coinciding with the information found in header. // For more information, check the "Datadog-Meta-*" HTTP headers defined in this file. -func (r *HTTPReceiver) TagStats(v Version, header http.Header) *info.TagStats { - return r.tagStats(v, header) +func (r *HTTPReceiver) TagStats(v Version, header http.Header, service string) *info.TagStats { + return r.tagStats(v, header, service) } -func (r *HTTPReceiver) tagStats(v Version, httpHeader http.Header) *info.TagStats { +func (r *HTTPReceiver) tagStats(v Version, httpHeader http.Header, service string) *info.TagStats { return r.Stats.GetTagStats(info.Tags{ Lang: httpHeader.Get(header.Lang), LangVersion: httpHeader.Get(header.LangVersion), @@ -362,6 +362,7 @@ func (r *HTTPReceiver) tagStats(v Version, httpHeader http.Header) *info.TagStat LangVendor: httpHeader.Get(header.LangInterpreterVendor), TracerVersion: httpHeader.Get(header.TracerVersion), EndpointVersion: string(v), + Service: service, }) } @@ -369,7 +370,7 @@ func (r *HTTPReceiver) tagStats(v Version, httpHeader http.Header) *info.TagStat // - tp is the decoded payload // - ranHook reports whether the decoder was able to run the pb.MetaHook // - err is the first error encountered -func decodeTracerPayload(v Version, req *http.Request, ts *info.TagStats, cIDProvider IDProvider) (tp *pb.TracerPayload, ranHook bool, err error) { +func decodeTracerPayload(v Version, req *http.Request, cIDProvider IDProvider, lang, langVersion, tracerVersion string) (tp *pb.TracerPayload, ranHook bool, err error) { switch v { case v01: var spans []*pb.Span @@ -377,11 +378,11 @@ func decodeTracerPayload(v Version, req *http.Request, ts *info.TagStats, cIDPro return nil, false, err } return &pb.TracerPayload{ - LanguageName: ts.Lang, - LanguageVersion: ts.LangVersion, + LanguageName: lang, + LanguageVersion: langVersion, ContainerID: cIDProvider.GetContainerID(req.Context(), req.Header), Chunks: traceChunksFromSpans(spans), - TracerVersion: ts.TracerVersion, + TracerVersion: tracerVersion, }, false, nil case v05: buf := getBuffer() @@ -392,11 +393,11 @@ func decodeTracerPayload(v Version, req *http.Request, ts *info.TagStats, cIDPro var traces pb.Traces err = traces.UnmarshalMsgDictionary(buf.Bytes()) return &pb.TracerPayload{ - LanguageName: ts.Lang, - LanguageVersion: ts.LangVersion, + LanguageName: lang, + LanguageVersion: langVersion, ContainerID: cIDProvider.GetContainerID(req.Context(), req.Header), Chunks: traceChunksFromTraces(traces), - TracerVersion: ts.TracerVersion, + TracerVersion: tracerVersion, }, true, err case V07: buf := getBuffer() @@ -413,11 +414,11 @@ func decodeTracerPayload(v Version, req *http.Request, ts *info.TagStats, cIDPro return nil, false, err } return &pb.TracerPayload{ - LanguageName: ts.Lang, - LanguageVersion: ts.LangVersion, + LanguageName: lang, + LanguageVersion: langVersion, ContainerID: cIDProvider.GetContainerID(req.Context(), req.Header), Chunks: traceChunksFromTraces(traces), - TracerVersion: ts.TracerVersion, + TracerVersion: tracerVersion, }, ranHook, nil } } @@ -446,7 +447,6 @@ type StatsProcessor interface { func (r *HTTPReceiver) handleStats(w http.ResponseWriter, req *http.Request) { defer r.timing.Since("datadog.trace_agent.receiver.stats_process_ms", time.Now()) - ts := r.tagStats(V07, req.Header) rd := apiutil.NewLimitedReader(req.Body, r.conf.MaxRequestBytes) req.Header.Set("Accept", "application/msgpack") in := &pb.ClientStatsPayload{} @@ -456,6 +456,14 @@ func (r *HTTPReceiver) handleStats(w http.ResponseWriter, req *http.Request) { return } + firstService := func(cs *pb.ClientStatsPayload) string { + if cs == nil || len(cs.Stats) == 0 || len(cs.Stats[0].Stats) == 0 { + return "" + } + return cs.Stats[0].Stats[0].Service + } + + ts := r.tagStats(V06, req.Header, firstService(in)) _ = r.statsd.Count("datadog.trace_agent.receiver.stats_payload", 1, ts.AsTags(), 1) _ = r.statsd.Count("datadog.trace_agent.receiver.stats_bytes", rd.Count, ts.AsTags(), 1) _ = r.statsd.Count("datadog.trace_agent.receiver.stats_buckets", int64(len(in.Stats)), ts.AsTags(), 1) @@ -465,7 +473,6 @@ func (r *HTTPReceiver) handleStats(w http.ResponseWriter, req *http.Request) { // handleTraces knows how to handle a bunch of traces func (r *HTTPReceiver) handleTraces(v Version, w http.ResponseWriter, req *http.Request) { - ts := r.tagStats(v, req.Header) tracen, err := traceCount(req) if err == errInvalidHeaderTraceCountValue { log.Errorf("Failed to count traces: %s", err) @@ -487,7 +494,7 @@ func (r *HTTPReceiver) handleTraces(v Version, w http.ResponseWriter, req *http. w.WriteHeader(r.rateLimiterResponse) } r.replyOK(req, v, w) - ts.PayloadRefused.Inc() + r.tagStats(v, req.Header, "").PayloadRefused.Inc() return } defer func() { @@ -496,8 +503,16 @@ func (r *HTTPReceiver) handleTraces(v Version, w http.ResponseWriter, req *http. <-r.recvsem }() + firstService := func(tp *pb.TracerPayload) string { + if tp == nil || len(tp.Chunks) == 0 || len(tp.Chunks[0].Spans) == 0 { + return "" + } + return tp.Chunks[0].Spans[0].Service + } + start := time.Now() - tp, ranHook, err := decodeTracerPayload(v, req, ts, r.containerIDProvider) + tp, ranHook, err := decodeTracerPayload(v, req, r.containerIDProvider, req.Header.Get(header.Lang), req.Header.Get(header.LangVersion), req.Header.Get(header.TracerVersion)) + ts := r.tagStats(v, req.Header, firstService(tp)) defer func(err error) { tags := append(ts.AsTags(), fmt.Sprintf("success:%v", err == nil)) _ = r.statsd.Histogram("datadog.trace_agent.receiver.serve_traces_ms", float64(time.Since(start))/float64(time.Millisecond), tags, 1) diff --git a/pkg/trace/api/api_test.go b/pkg/trace/api/api_test.go index 81e1d80239ced9..74c9fb3fba0365 100644 --- a/pkg/trace/api/api_test.go +++ b/pkg/trace/api/api_test.go @@ -572,13 +572,7 @@ func TestDecodeV05(t *testing.T) { req, err := http.NewRequest("POST", "/v0.5/traces", bytes.NewReader(b)) assert.NoError(err) req.Header.Set(header.ContainerID, "abcdef123789456") - tp, _, err := decodeTracerPayload(v05, req, &info.TagStats{ - Tags: info.Tags{ - Lang: "python", - LangVersion: "3.8.1", - TracerVersion: "1.2.3", - }, - }, NewIDProvider("")) + tp, _, err := decodeTracerPayload(v05, req, NewIDProvider(""), "python", "3.8.1", "1.2.3") assert.NoError(err) assert.EqualValues(tp, &pb.TracerPayload{ ContainerID: "abcdef123789456", @@ -690,6 +684,8 @@ func TestHandleStats(t *testing.T) { if !reflect.DeepEqual(gotp, p) || gotlang != "lang1" || gotTracerVersion != "0.1.0" { t.Fatalf("Did not match payload: %v: %v", gotlang, gotp) } + _, ok := rcv.Stats.Stats[info.Tags{Lang: "lang1", EndpointVersion: "v0.6", Service: "service", TracerVersion: "0.1.0"}] + assert.True(t, ok) }) } @@ -781,7 +777,7 @@ func TestHandleTraces(t *testing.T) { // We test stats for each app for _, lang := range langs { - ts, ok := rs.Stats[info.Tags{Lang: lang, EndpointVersion: "v0.4"}] + ts, ok := rs.Stats[info.Tags{Lang: lang, EndpointVersion: "v0.4", Service: "fennel_IS amazing!"}] assert.True(ok) assert.Equal(int64(20), ts.TracesReceived.Load()) assert.Equal(int64(83022), ts.TracesBytes.Load()) diff --git a/pkg/trace/api/version.go b/pkg/trace/api/version.go index 793b22e564a065..c55f594acf6b7c 100644 --- a/pkg/trace/api/version.go +++ b/pkg/trace/api/version.go @@ -109,6 +109,15 @@ const ( // v05 Version = "v0.5" + // V06 API + // + // Request: Stats Payload. + // Content-Type: application/msgpack + // Payload: ClientStatsPayload (pkg/proto/datadog/trace/stats.proto) + // + // + V06 Version = "v0.6" + // V07 API // // Request: Tracer Payload. diff --git a/pkg/trace/info/info_test.go b/pkg/trace/info/info_test.go index ad8a206125cebc..d35aae606dac67 100644 --- a/pkg/trace/info/info_test.go +++ b/pkg/trace/info/info_test.go @@ -419,7 +419,8 @@ func TestPublishUptime(t *testing.T) { func TestPublishReceiverStats(t *testing.T) { receiverStats = []TagStats{{ Tags: Tags{ - Lang: "go", + Lang: "go", + Service: "service", }, Stats: Stats{ TracesReceived: atom(1), @@ -487,6 +488,7 @@ func TestPublishReceiverStats(t *testing.T) { "LangVersion": "", "PayloadAccepted": 15.0, "PayloadRefused": 16.0, + "Service": "service", "SpansDropped": 11.0, "SpansFiltered": 12.0, "SpansMalformed": map[string]interface{}{ diff --git a/pkg/trace/info/stats.go b/pkg/trace/info/stats.go index 742dbc3a10fde4..289390aa3f507c 100644 --- a/pkg/trace/info/stats.go +++ b/pkg/trace/info/stats.go @@ -503,6 +503,7 @@ func (ts *TagStats) WarnString() string { type Tags struct { Lang, LangVersion, LangVendor, Interpreter, TracerVersion string EndpointVersion string + Service string } // toArray will transform the Tags struct into a slice of string. @@ -528,6 +529,9 @@ func (t *Tags) toArray() []string { if t.EndpointVersion != "" { tags = append(tags, "endpoint_version:"+t.EndpointVersion) } + if t.Service != "" { + tags = append(tags, "service:"+t.Service) + } return tags } diff --git a/pkg/trace/info/stats_test.go b/pkg/trace/info/stats_test.go index 773419551d6fd2..13f257a031f11f 100644 --- a/pkg/trace/info/stats_test.go +++ b/pkg/trace/info/stats_test.go @@ -176,6 +176,7 @@ func TestReceiverStats(t *testing.T) { Interpreter: "gcc", TracerVersion: "1.33", EndpointVersion: "v0.4", + Service: "service", } testStats := func() *ReceiverStats { stats := Stats{} @@ -255,9 +256,9 @@ func TestReceiverStats(t *testing.T) { log.Flush() logs := strings.Split(b.String(), "\n") - assert.Equal(t, "[INFO] [lang:go lang_version:1.12 lang_vendor:gov interpreter:gcc tracer_version:1.33 endpoint_version:v0.4] -> traces received: 1, traces filtered: 4, traces amount: 9 bytes, events extracted: 13, events sampled: 14", + assert.Equal(t, "[INFO] [lang:go lang_version:1.12 lang_vendor:gov interpreter:gcc tracer_version:1.33 endpoint_version:v0.4 service:service] -> traces received: 1, traces filtered: 4, traces amount: 9 bytes, events extracted: 13, events sampled: 14", logs[0]) - assert.Equal(t, "[WARN] [lang:go lang_version:1.12 lang_vendor:gov interpreter:gcc tracer_version:1.33 endpoint_version:v0.4] -> traces_dropped(decoding_error:1, empty_trace:3, foreign_span:6, payload_too_large:2, span_id_zero:5, timeout:7, trace_id_zero:4, unexpected_eof:8), spans_malformed(duplicate_span_id:1, invalid_duration:13, invalid_http_status_code:14, invalid_start_date:12, peer_service_invalid:8, peer_service_truncate:7, resource_empty:10, service_empty:2, service_invalid:4, service_truncate:3, span_name_empty:5, span_name_invalid:9, span_name_truncate:6, type_truncate:11). Enable debug logging for more details.", + assert.Equal(t, "[WARN] [lang:go lang_version:1.12 lang_vendor:gov interpreter:gcc tracer_version:1.33 endpoint_version:v0.4 service:service] -> traces_dropped(decoding_error:1, empty_trace:3, foreign_span:6, payload_too_large:2, span_id_zero:5, timeout:7, trace_id_zero:4, unexpected_eof:8), spans_malformed(duplicate_span_id:1, invalid_duration:13, invalid_http_status_code:14, invalid_start_date:12, peer_service_invalid:8, peer_service_truncate:7, resource_empty:10, service_empty:2, service_invalid:4, service_truncate:3, span_name_empty:5, span_name_invalid:9, span_name_truncate:6, type_truncate:11). Enable debug logging for more details.", logs[1]) assertStatsAreReset(t, rs) diff --git a/test/new-e2e/tests/apm/docker_test.go b/test/new-e2e/tests/apm/docker_test.go index 8aeec02d87e60f..631d2962c2fcd9 100644 --- a/test/new-e2e/tests/apm/docker_test.go +++ b/test/new-e2e/tests/apm/docker_test.go @@ -65,6 +65,17 @@ func (s *DockerFakeintakeSuite) TestTraceAgentMetrics() { }, 2*time.Minute, 10*time.Second, "Failed finding datadog.trace_agent.* metrics") } +func (s *DockerFakeintakeSuite) TestTraceAgentMetricTags() { + service := fmt.Sprintf("tracegen-metric-tags-%s", s.transport) + shutdown := runTracegenDocker(s.Env().RemoteHost, service, tracegenCfg{transport: s.transport}) + defer shutdown() + err := s.Env().FakeIntake.Client().FlushServerAndResetAggregators() + s.Require().NoError(err) + s.EventuallyWithTf(func(c *assert.CollectT) { + testTraceAgentMetricTags(s.T(), c, service, s.Env().FakeIntake) + }, 3*time.Minute, 10*time.Second, "Failed finding datadog.trace_agent.* metrics with tags") +} + func (s *DockerFakeintakeSuite) TestTracesHaveContainerTag() { err := s.Env().FakeIntake.Client().FlushServerAndResetAggregators() s.Require().NoError(err) diff --git a/test/new-e2e/tests/apm/tests.go b/test/new-e2e/tests/apm/tests.go index fd45f83eaf4a0a..7943cb3702f2fa 100644 --- a/test/new-e2e/tests/apm/tests.go +++ b/test/new-e2e/tests/apm/tests.go @@ -11,8 +11,10 @@ import ( "testing" "github.com/DataDog/datadog-agent/test/fakeintake/aggregator" + fakeintake "github.com/DataDog/datadog-agent/test/fakeintake/client" "github.com/DataDog/datadog-agent/test/new-e2e/pkg/components" "github.com/DataDog/datadog-agent/test/new-e2e/pkg/utils/e2e/client/agentclient" + "github.com/stretchr/testify/assert" ) @@ -152,3 +154,32 @@ func testTraceAgentMetrics(t *testing.T, c *assert.CollectT, intake *components. t.Log("Remaining metrics", expected) assert.Empty(c, expected) } + +func testTraceAgentMetricTags(t *testing.T, c *assert.CollectT, service string, intake *components.FakeIntake) { + t.Helper() + expected := map[string]struct{}{ + "datadog.trace_agent.receiver.payload_accepted": {}, + "datadog.trace_agent.receiver.trace": {}, + "datadog.trace_agent.receiver.traces_received": {}, + "datadog.trace_agent.receiver.spans_received": {}, + "datadog.trace_agent.receiver.traces_bytes": {}, + "datadog.trace_agent.receiver.traces_filtered": {}, + "datadog.trace_agent.receiver.spans_dropped": {}, + "datadog.trace_agent.receiver.spans_filtered": {}, + "datadog.trace_agent.receiver.traces_priority": {}, + "datadog.trace_agent.normalizer.traces_dropped": {}, + "datadog.trace_agent.normalizer.spans_malformed": {}, + "datadog.trace_agent.receiver.client_dropped_p0_spans": {}, + "datadog.trace_agent.receiver.client_dropped_p0_traces": {}, + "datadog.trace_agent.receiver.events_sampled": {}, + "datadog.trace_agent.receiver.events_extracted": {}, + } + serviceTag := "service:" + service + for m := range expected { + filtered, err := intake.Client().FilterMetrics(m, fakeintake.WithTags[*aggregator.MetricSeries]([]string{serviceTag})) + if assert.NoError(c, err) && assert.NotEmpty(c, filtered) { + delete(expected, m) + } + } + assert.Empty(c, expected) +} diff --git a/test/new-e2e/tests/apm/vm_test.go b/test/new-e2e/tests/apm/vm_test.go index 5b677b9e8e875a..b330a3012eee59 100644 --- a/test/new-e2e/tests/apm/vm_test.go +++ b/test/new-e2e/tests/apm/vm_test.go @@ -110,6 +110,24 @@ func (s *VMFakeintakeSuite) TestTraceAgentMetrics() { }, 3*time.Minute, 10*time.Second, "Failed finding datadog.trace_agent.* metrics") } +func (s *VMFakeintakeSuite) TestTraceAgentMetricTags() { + // Wait for agent to be live + s.T().Log("Waiting for Trace Agent to be live.") + s.Require().NoError(waitRemotePort(s, 8126)) + + service := fmt.Sprintf("tracegen-metric-tags-%s", s.transport) + shutdown := runTracegenDocker(s.Env().RemoteHost, service, tracegenCfg{transport: s.transport}) + defer shutdown() + + err := s.Env().FakeIntake.Client().FlushServerAndResetAggregators() + s.Require().NoError(err) + s.EventuallyWithTf(func(c *assert.CollectT) { + s.logStatus() + testTraceAgentMetricTags(s.T(), c, service, s.Env().FakeIntake) + s.logJournal() + }, 3*time.Minute, 10*time.Second, "Failed finding datadog.trace_agent.* metrics with tags") +} + func (s *VMFakeintakeSuite) TestTracesHaveContainerTag() { err := s.Env().FakeIntake.Client().FlushServerAndResetAggregators() s.Require().NoError(err) From c820ef10e62e9602e861b5fcafaf434773fc228c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guillermo=20Juli=C3=A1n?= Date: Tue, 5 Mar 2024 19:54:59 +0100 Subject: [PATCH 012/155] Do not test CentOS 7.9 (#23449) --- .gitlab/kernel_matrix_testing/security_agent.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.gitlab/kernel_matrix_testing/security_agent.yml b/.gitlab/kernel_matrix_testing/security_agent.yml index 4452cf20632679..7a5a886dbc5ed2 100644 --- a/.gitlab/kernel_matrix_testing/security_agent.yml +++ b/.gitlab/kernel_matrix_testing/security_agent.yml @@ -153,7 +153,6 @@ kernel_matrix_testing_run_security_agent_tests_x64: - "debian_10" - "debian_11" - "debian_12" - - "centos_79" TEST_SET: [all_tests] kernel_matrix_testing_run_security_agent_tests_arm64: @@ -182,7 +181,6 @@ kernel_matrix_testing_run_security_agent_tests_arm64: - "debian_10" - "debian_11" - "debian_12" - - "centos_79" TEST_SET: ["all_tests"] .kernel_matrix_testing_security_agent_cleanup: From 37a87ccee386ca6e2e17f3b1cb30612e8dd0b2de Mon Sep 17 00:00:00 2001 From: Dustin Long Date: Tue, 5 Mar 2024 14:28:14 -0500 Subject: [PATCH 013/155] [ASCII-1186] Cleanup IPC code in the subcommands, less usage of `pkgconfig.Datadog` (#22886) * Create IPCEndpoint for subcommands that call the internal api * Inline the body of pkg/config/setup.GetIPCAddress * Mod tidy for pkg/api * Add Options for constructing IPCEndpoint, tests * Change WithValues to be an option only for DoGet method * Replace comp/core/config * Update go.sum with inv tidy-all * Clarify what is being tested by TestIPCEndpointGetWithHostAndPort and TestIPCEndpointDeprecatedIPCAddress * Test non-TLS using http protocol * Remove unused variables * Specify the defalut values for WithHostAndPort --- cmd/agent/subcommands/secret/command.go | 41 +---- cmd/agent/subcommands/status/command.go | 62 ++----- pkg/api/go.mod | 11 +- pkg/api/go.sum | 10 + pkg/api/util/ipc_endpoint.go | 145 +++++++++++++++ pkg/api/util/ipc_endpoint_test.go | 232 ++++++++++++++++++++++++ 6 files changed, 420 insertions(+), 81 deletions(-) create mode 100644 pkg/api/util/ipc_endpoint.go create mode 100644 pkg/api/util/ipc_endpoint_test.go diff --git a/cmd/agent/subcommands/secret/command.go b/cmd/agent/subcommands/secret/command.go index 94918f9284c931..9770fe5934ddd2 100644 --- a/cmd/agent/subcommands/secret/command.go +++ b/cmd/agent/subcommands/secret/command.go @@ -7,9 +7,7 @@ package secret import ( - "encoding/json" "fmt" - "net/url" "github.com/spf13/cobra" "go.uber.org/fx" @@ -17,8 +15,7 @@ import ( "github.com/DataDog/datadog-agent/cmd/agent/command" "github.com/DataDog/datadog-agent/comp/core" "github.com/DataDog/datadog-agent/comp/core/config" - "github.com/DataDog/datadog-agent/pkg/api/util" - pkgconfig "github.com/DataDog/datadog-agent/pkg/config" + apiutil "github.com/DataDog/datadog-agent/pkg/api/util" "github.com/DataDog/datadog-agent/pkg/util/fxutil" ) @@ -61,49 +58,27 @@ func Commands(globalParams *command.GlobalParams) []*cobra.Command { } func showSecretInfo(config config.Component) error { - r, err := callAPIEndpoint("/agent/secrets", config) + res, err := callIPCEndpoint(config, "agent/secrets") if err != nil { return err } - fmt.Println(string(r)) + fmt.Println(string(res)) return nil } func secretRefresh(config config.Component) error { - r, err := callAPIEndpoint("/agent/secret/refresh", config) + res, err := callIPCEndpoint(config, "agent/secret/refresh") if err != nil { return err } - fmt.Println(string(r)) + fmt.Println(string(res)) return nil } -func callAPIEndpoint(apiEndpointPath string, config config.Component) ([]byte, error) { - if err := util.SetAuthToken(config); err != nil { - fmt.Println(err) - return nil, err - } - c := util.GetClient(false) - ipcAddress, err := pkgconfig.GetIPCAddress() +func callIPCEndpoint(config config.Component, endpointURL string) ([]byte, error) { + endpoint, err := apiutil.NewIPCEndpoint(config, endpointURL) if err != nil { return nil, err } - apiConfigURL := url.URL{ - Scheme: "https", - Host: fmt.Sprintf("%s:%d", ipcAddress, config.GetInt("cmd_port")), - Path: apiEndpointPath, - } - - r, err := util.DoGet(c, apiConfigURL.String(), util.LeaveConnectionOpen) - if err != nil { - var errMap = make(map[string]string) - json.Unmarshal(r, &errMap) //nolint:errcheck - // If the error has been marshalled into a json object, check it and return it properly - if e, found := errMap["error"]; found { - return nil, fmt.Errorf("%s", e) - } - - return nil, fmt.Errorf("Could not reach agent: %v\nMake sure the agent is running before requesting the runtime configuration and contact support if you continue having issues", err) - } - return r, nil + return endpoint.DoGet() } diff --git a/cmd/agent/subcommands/status/command.go b/cmd/agent/subcommands/status/command.go index 6a1a8d5bf3f5ff..3590ed7301730a 100644 --- a/cmd/agent/subcommands/status/command.go +++ b/cmd/agent/subcommands/status/command.go @@ -23,8 +23,7 @@ import ( "github.com/DataDog/datadog-agent/comp/core/log/logimpl" "github.com/DataDog/datadog-agent/comp/core/sysprobeconfig" "github.com/DataDog/datadog-agent/comp/core/sysprobeconfig/sysprobeconfigimpl" - "github.com/DataDog/datadog-agent/pkg/api/util" - pkgconfig "github.com/DataDog/datadog-agent/pkg/config" + apiutil "github.com/DataDog/datadog-agent/pkg/api/util" "github.com/DataDog/datadog-agent/pkg/util/fxutil" "github.com/DataDog/datadog-agent/pkg/util/scrubber" @@ -139,10 +138,6 @@ func requestStatus(config config.Component, cliParams *cliParams) error { if !cliParams.prettyPrintJSON && !cliParams.jsonStatus { fmt.Printf("Getting the status from the agent.\n\n") } - ipcAddress, err := pkgconfig.GetIPCAddress() - if err != nil { - return err - } v := url.Values{} if cliParams.verbose { @@ -155,14 +150,12 @@ func requestStatus(config config.Component, cliParams *cliParams) error { v.Set("format", "text") } - url := url.URL{ - Scheme: "https", - Host: fmt.Sprintf("%v:%v", ipcAddress, config.GetInt("cmd_port")), - Path: "/agent/status", - RawQuery: v.Encode(), + endpoint, err := apiutil.NewIPCEndpoint(config, "/agent/status") + if err != nil { + return err } - r, err := makeRequest(url.String()) + res, err := endpoint.DoGet(apiutil.WithValues(v)) if err != nil { return err } @@ -170,12 +163,12 @@ func requestStatus(config config.Component, cliParams *cliParams) error { // The rendering is done in the client so that the agent has less work to do if cliParams.prettyPrintJSON { var prettyJSON bytes.Buffer - json.Indent(&prettyJSON, r, "", " ") //nolint:errcheck + json.Indent(&prettyJSON, res, "", " ") //nolint:errcheck s = prettyJSON.String() } else if cliParams.jsonStatus { - s = string(r) + s = string(res) } else { - s = scrubMessage(string(r)) + s = scrubMessage(string(res)) } if cliParams.statusFilePath != "" { @@ -198,9 +191,11 @@ func componentStatusCmd(_ log.Component, config config.Component, cliParams *cli func componentStatus(config config.Component, cliParams *cliParams, component string) error { var s string - urlstr := fmt.Sprintf("https://localhost:%v/agent/%s/status", config.GetInt("cmd_port"), component) - - r, err := makeRequest(urlstr) + endpoint, err := apiutil.NewIPCEndpoint(config, fmt.Sprintf("/agent/%s/status", component)) + if err != nil { + return err + } + res, err := endpoint.DoGet() if err != nil { return err } @@ -208,10 +203,10 @@ func componentStatus(config config.Component, cliParams *cliParams, component st // The rendering is done in the client so that the agent has less work to do if cliParams.prettyPrintJSON { var prettyJSON bytes.Buffer - json.Indent(&prettyJSON, r, "", " ") //nolint:errcheck + json.Indent(&prettyJSON, res, "", " ") //nolint:errcheck s = prettyJSON.String() } else { - s = scrubMessage(string(r)) + s = scrubMessage(string(res)) } if cliParams.statusFilePath != "" { @@ -222,30 +217,3 @@ func componentStatus(config config.Component, cliParams *cliParams, component st return nil } - -func makeRequest(url string) ([]byte, error) { - var e error - c := util.GetClient(false) // FIX: get certificates right then make this true - - // Set session token - e = util.SetAuthToken(pkgconfig.Datadog) - if e != nil { - return nil, e - } - - r, e := util.DoGet(c, url, util.LeaveConnectionOpen) - if e != nil { - var errMap = make(map[string]string) - json.Unmarshal(r, &errMap) //nolint:errcheck - // If the error has been marshalled into a json object, check it and return it properly - if err, found := errMap["error"]; found { - e = fmt.Errorf(err) - } - - fmt.Printf("Could not reach agent: %v \nMake sure the agent is running before requesting the status and contact support if you continue having issues. \n", e) - return nil, e - } - - return r, nil - -} diff --git a/pkg/api/go.mod b/pkg/api/go.mod index 679dfb50ee77c8..32b84c7b7c628c 100644 --- a/pkg/api/go.mod +++ b/pkg/api/go.mod @@ -3,6 +3,7 @@ module github.com/DataDog/datadog-agent/pkg/api go 1.21.7 replace ( + github.com/DataDog/datadog-agent/comp/core/config => ../../comp/core/config github.com/DataDog/datadog-agent/comp/core/flare/types => ../../comp/core/flare/types github.com/DataDog/datadog-agent/comp/core/secrets => ../../comp/core/secrets github.com/DataDog/datadog-agent/comp/core/telemetry => ../../comp/core/telemetry @@ -30,11 +31,13 @@ replace ( ) require ( + github.com/DataDog/datadog-agent/comp/core/config v0.51.0 github.com/DataDog/datadog-agent/pkg/config/model v0.52.0-rc.3 github.com/DataDog/datadog-agent/pkg/config/utils v0.52.0-rc.3 github.com/DataDog/datadog-agent/pkg/status/health v0.52.0-rc.3 github.com/DataDog/datadog-agent/pkg/util/filesystem v0.52.0-rc.3 github.com/DataDog/datadog-agent/pkg/util/log v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/util/system v0.52.0-rc.3 github.com/gorilla/mux v1.8.1 github.com/stretchr/testify v1.8.4 ) @@ -45,11 +48,11 @@ require ( github.com/DataDog/datadog-agent/pkg/config/env v0.52.0-rc.3 // indirect github.com/DataDog/datadog-agent/pkg/config/setup v0.52.0-rc.3 // indirect github.com/DataDog/datadog-agent/pkg/util/executable v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/fxutil v0.52.0-rc.3 // indirect github.com/DataDog/datadog-agent/pkg/util/hostname/validate v0.52.0-rc.3 // indirect github.com/DataDog/datadog-agent/pkg/util/optional v0.52.0-rc.3 // indirect github.com/DataDog/datadog-agent/pkg/util/pointer v0.52.0-rc.3 // indirect github.com/DataDog/datadog-agent/pkg/util/scrubber v0.52.0-rc.3 // indirect - github.com/DataDog/datadog-agent/pkg/util/system v0.52.0-rc.3 // indirect github.com/DataDog/datadog-agent/pkg/util/system/socket v0.52.0-rc.3 // indirect github.com/DataDog/datadog-agent/pkg/util/winutil v0.52.0-rc.3 // indirect github.com/DataDog/datadog-agent/pkg/version v0.52.0-rc.3 // indirect @@ -61,6 +64,7 @@ require ( github.com/go-ole/go-ole v1.2.6 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/hectane/go-acl v0.0.0-20190604041725-da78bae5fc95 // indirect + github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 // indirect github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect github.com/magiconair/properties v1.8.1 // indirect @@ -72,12 +76,17 @@ require ( github.com/shoenig/go-m1cpu v0.1.6 // indirect github.com/spf13/afero v1.1.2 // indirect github.com/spf13/cast v1.5.1 // indirect + github.com/spf13/cobra v1.7.0 // indirect github.com/spf13/jwalterweatherman v1.0.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/tklauser/go-sysconf v0.3.12 // indirect github.com/tklauser/numcpus v0.6.1 // indirect github.com/yusufpapurcu/wmi v1.2.3 // indirect go.uber.org/atomic v1.11.0 // indirect + go.uber.org/dig v1.17.0 // indirect + go.uber.org/fx v1.18.2 // indirect + go.uber.org/multierr v1.6.0 // indirect + go.uber.org/zap v1.23.0 // indirect golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect golang.org/x/mod v0.15.0 // indirect golang.org/x/sys v0.17.0 // indirect diff --git a/pkg/api/go.sum b/pkg/api/go.sum index 65c5496984ed35..4722d6f9245814 100644 --- a/pkg/api/go.sum +++ b/pkg/api/go.sum @@ -1,6 +1,8 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/DataDog/datadog-agent/cmd/agent/common/path v0.52.0-rc.3 h1:19Co4jJadiX8N1r+Npu6O53f7RqaekQHgO/gvKLZXTw= +github.com/DataDog/datadog-agent/cmd/agent/common/path v0.52.0-rc.3/go.mod h1:1CByQ+q+7tNoaZghj13G4YTlPRO/mtLeLZryNYpjRvo= github.com/DataDog/viper v1.12.0 h1:FufyZpZPxyszafSV5B8Q8it75IhhuJwH0T7QpT6HnD0= github.com/DataDog/viper v1.12.0/go.mod h1:wDdUVJ2SHaMaPrCZrlRCObwkubsX8j5sme3LaR/SGTc= github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= @@ -12,6 +14,8 @@ github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRF github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/antihax/optional v0.0.0-20180407024304-ca021399b1a6/go.mod h1:V8iCPQYkqmusNa815XgQio277wI47sdRh1dUOLdyC6Q= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +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/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= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= @@ -33,6 +37,7 @@ github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8Nz github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= 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= @@ -133,6 +138,7 @@ github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFSt github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= github.com/pkg/errors v0.8.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= @@ -168,6 +174,7 @@ github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6L github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/shirou/gopsutil/v3 v3.23.12 h1:z90NtUkp3bMtmICZKpC4+WaknU1eXtp5vtbQ11DgpE4= github.com/shirou/gopsutil/v3 v3.23.12/go.mod h1:1FrWgea594Jp7qmjHUUPlJDTPgcsb9mGnXDxavtikzM= github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM= @@ -233,12 +240,15 @@ go.opentelemetry.io/otel/trace v1.20.0 h1:+yxVAPZPbQhbC3OfAkeIVTky6iTFpcr4SiY9om go.opentelemetry.io/otel/trace v1.20.0/go.mod h1:HJSK7F/hA5RlzpZ0zKDCHCDHm556LCDtKaAo6JmBFUU= 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.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= go.uber.org/dig v1.17.0 h1:5Chju+tUvcC+N7N6EV08BJz41UZuO3BmHcN4A287ZLI= go.uber.org/dig v1.17.0/go.mod h1:rTxpf7l5I0eBTlE6/9RL+lDybC7WFwY2QH55ZSjy1mU= go.uber.org/fx v1.18.2 h1:bUNI6oShr+OVFQeU8cDNbnN7VFsu+SsjHzUF51V/GAU= go.uber.org/fx v1.18.2/go.mod h1:g0V1KMQ66zIRk8bLu3Ea5Jt2w/cHlOIp4wdRsgh0JaY= +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.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= diff --git a/pkg/api/util/ipc_endpoint.go b/pkg/api/util/ipc_endpoint.go new file mode 100644 index 00000000000000..f9c585467fd79b --- /dev/null +++ b/pkg/api/util/ipc_endpoint.go @@ -0,0 +1,145 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2023-present Datadog, Inc. + +package util + +import ( + "crypto/tls" + "encoding/json" + "errors" + "fmt" + "net" + "net/http" + "net/url" + "strconv" + + "github.com/DataDog/datadog-agent/comp/core/config" + "github.com/DataDog/datadog-agent/pkg/util/log" + "github.com/DataDog/datadog-agent/pkg/util/system" +) + +// IPCEndpoint is an endpoint that IPC requests will be sent to +type IPCEndpoint struct { + client *http.Client + target url.URL + closeConn bool +} + +// GetOption is an option that can be passed to DoGet +type GetOption func(url.URL) url.URL + +// WithValues is an option to add url.Values to the GET request +func WithValues(values url.Values) GetOption { + return func(u url.URL) url.URL { + u.RawQuery = values.Encode() + return u + } +} + +// DoGet sends GET method to the endpoint +func (end *IPCEndpoint) DoGet(options ...GetOption) ([]byte, error) { + conn := LeaveConnectionOpen + if end.closeConn { + conn = CloseConnection + } + + target := end.target + for _, opt := range options { + target = opt(target) + } + + // TODO: after removing callers to api/util/DoGet, pass `end.token` instead of using global var + res, err := DoGet(end.client, target.String(), conn) + if err != nil { + var errMap = make(map[string]string) + _ = json.Unmarshal(res, &errMap) //nolint:errcheck + // If the error has been marshalled into a json object, check it and return it properly + if errStr, found := errMap["error"]; found { + return nil, errors.New(errStr) + } + + return nil, fmt.Errorf("could not reach agent: %v\nMake sure the agent is running before requesting the runtime configuration and contact support if you continue having issues", err) + } + return res, err +} + +// EndpointOption allows configuration of the IPCEndpoint during construction +type EndpointOption func(*IPCEndpoint) + +// WithCloseConnection is an option to close the connection +func WithCloseConnection(state bool) func(*IPCEndpoint) { + return func(end *IPCEndpoint) { + end.closeConn = state + } +} + +// WithHTTPClient is an option to assign a different http.Client +func WithHTTPClient(client *http.Client) func(*IPCEndpoint) { + return func(end *IPCEndpoint) { + end.client = client + } +} + +// WithURLScheme is an option to set the URL's scheme +func WithURLScheme(scheme string) func(*IPCEndpoint) { + return func(end *IPCEndpoint) { + end.target.Scheme = scheme + } +} + +// WithHostAndPort is an option to use a host address for sending IPC requests +// default is the config settings "cmd_host" (default localhost) and "cmd_port" (default 5001) +func WithHostAndPort(cmdHost string, cmdPort int) func(*IPCEndpoint) { + return func(end *IPCEndpoint) { + end.target.Host = net.JoinHostPort(cmdHost, strconv.Itoa(cmdPort)) + } +} + +// NewIPCEndpoint constructs a new IPC Endpoint using the given config, path, and options +func NewIPCEndpoint(config config.Component, endpointPath string, options ...EndpointOption) (*IPCEndpoint, error) { + // sets a global `token` in `doget.go` + // TODO: add `token` to Endpoint struct, instead of storing it in a global var + if err := SetAuthToken(config); err != nil { + return nil, err + } + + var cmdHostKey string + // ipc_address is deprecated in favor of cmd_host, but we still need to support it + // if it is set, use it, otherwise use cmd_host + if config.IsSet("ipc_address") { + log.Warn("ipc_address is deprecated, use cmd_host instead") + cmdHostKey = "ipc_address" + } else { + cmdHostKey = "cmd_host" + } + + // only IPC over localhost is currently supported + ipcHost, err := system.IsLocalAddress(config.GetString(cmdHostKey)) + if err != nil { + return nil, fmt.Errorf("%s: %s", cmdHostKey, err) + } + tr := &http.Transport{ + TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, + } + client := &http.Client{Transport: tr} + + ipcPort := config.GetInt("cmd_port") + targetURL := url.URL{ + Scheme: "https", + Host: net.JoinHostPort(ipcHost, strconv.Itoa(ipcPort)), + Path: endpointPath, + } + + // construct the endpoint and apply any options + endpoint := IPCEndpoint{ + client: client, + target: targetURL, + closeConn: false, + } + for _, opt := range options { + opt(&endpoint) + } + return &endpoint, nil +} diff --git a/pkg/api/util/ipc_endpoint_test.go b/pkg/api/util/ipc_endpoint_test.go new file mode 100644 index 00000000000000..2fa5b3a3cb1111 --- /dev/null +++ b/pkg/api/util/ipc_endpoint_test.go @@ -0,0 +1,232 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2023-present Datadog, Inc. + +package util + +import ( + "encoding/json" + "fmt" + "io" + "net" + "net/http" + "net/http/httptest" + "net/url" + "os" + "strings" + "testing" + + pkgconfigmodel "github.com/DataDog/datadog-agent/pkg/config/model" + "github.com/stretchr/testify/assert" +) + +func createConfig(t *testing.T, ts *httptest.Server) pkgconfigmodel.Config { + conf := pkgconfigmodel.NewConfig("datadog", "DD", strings.NewReplacer(".", "_")) + + // create a fake auth token + authTokenFile, err := os.CreateTemp("", "") + assert.NoError(t, err) + authTokenPath := authTokenFile.Name() + os.WriteFile(authTokenPath, []byte("0123456789abcdef0123456789abcdef"), 0640) + + addr, err := url.Parse(ts.URL) + assert.NoError(t, err) + localHost, localPort, _ := net.SplitHostPort(addr.Host) + + // set minimal configuration that IPCEndpoint needs + conf.Set("auth_token_file_path", authTokenPath, pkgconfigmodel.SourceAgentRuntime) + conf.Set("cmd_host", localHost, pkgconfigmodel.SourceAgentRuntime) + conf.Set("cmd_port", localPort, pkgconfigmodel.SourceAgentRuntime) + + return conf +} + +func TestNewIPCEndpoint(t *testing.T) { + conf := pkgconfigmodel.NewConfig("datadog", "DD", strings.NewReplacer(".", "_")) + + // create a fake auth token + authTokenFile, err := os.CreateTemp("", "") + assert.NoError(t, err) + authTokenPath := authTokenFile.Name() + os.WriteFile(authTokenPath, []byte("0123456789abcdef0123456789abcdef"), 0640) + + // set minimal configuration that IPCEndpoint needs + conf.Set("auth_token_file_path", authTokenPath, pkgconfigmodel.SourceAgentRuntime) + conf.Set("cmd_host", "localhost", pkgconfigmodel.SourceAgentRuntime) + conf.Set("cmd_port", "6789", pkgconfigmodel.SourceAgentRuntime) + + // test the endpoint construction + end, err := NewIPCEndpoint(conf, "test/api") + assert.NoError(t, err) + assert.Equal(t, end.target.String(), "https://localhost:6789/test/api") +} + +func TestNewIPCEndpointWithCloseConnection(t *testing.T) { + conf := pkgconfigmodel.NewConfig("datadog", "DD", strings.NewReplacer(".", "_")) + + // create a fake auth token + authTokenFile, err := os.CreateTemp("", "") + assert.NoError(t, err) + authTokenPath := authTokenFile.Name() + os.WriteFile(authTokenPath, []byte("0123456789abcdef0123456789abcdef"), 0640) + + // set minimal configuration that IPCEndpoint needs + conf.Set("auth_token_file_path", authTokenPath, pkgconfigmodel.SourceAgentRuntime) + conf.Set("cmd_host", "localhost", pkgconfigmodel.SourceAgentRuntime) + conf.Set("cmd_port", "6789", pkgconfigmodel.SourceAgentRuntime) + + // test constructing with the CloseConnection option + end, err := NewIPCEndpoint(conf, "test/api", WithCloseConnection(true)) + assert.NoError(t, err) + assert.True(t, end.closeConn) +} + +func TestIPCEndpointDoGet(t *testing.T) { + gotURL := "" + ts := httptest.NewTLSServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + gotURL = r.URL.String() + _, _ = io.ReadAll(r.Body) + w.Write([]byte("ok")) + })) + defer ts.Close() + + conf := createConfig(t, ts) + end, err := NewIPCEndpoint(conf, "test/api") + assert.NoError(t, err) + + // test that DoGet will hit the endpoint url + res, err := end.DoGet() + assert.NoError(t, err) + assert.Equal(t, res, []byte("ok")) + assert.Equal(t, gotURL, "/test/api") +} + +func TestIPCEndpointGetWithHTTPClientAndNonTLS(t *testing.T) { + // non-http server + gotURL := "" + ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + gotURL = r.URL.String() + _, _ = io.ReadAll(r.Body) + w.Write([]byte("ok")) + })) + defer ts.Close() + + // create non-TLS client and use the "http" protocol + client := http.Client{} + conf := createConfig(t, ts) + end, err := NewIPCEndpoint(conf, "test/api", WithHTTPClient(&client), WithURLScheme("http")) + assert.NoError(t, err) + + // test that DoGet will hit the endpoint url + res, err := end.DoGet() + assert.NoError(t, err) + assert.Equal(t, res, []byte("ok")) + assert.Equal(t, gotURL, "/test/api") +} + +func TestIPCEndpointGetWithValues(t *testing.T) { + gotURL := "" + ts := httptest.NewTLSServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + gotURL = r.URL.String() + _, _ = io.ReadAll(r.Body) + w.Write([]byte("ok")) + })) + defer ts.Close() + + conf := createConfig(t, ts) + // set url values for GET request + v := url.Values{} + v.Set("verbose", "true") + + // test construction with option for url.Values + end, err := NewIPCEndpoint(conf, "test/api") + assert.NoError(t, err) + + // test that DoGet will use query parameters from the url.Values + res, err := end.DoGet(WithValues(v)) + assert.NoError(t, err) + assert.Equal(t, res, []byte("ok")) + assert.Equal(t, gotURL, "/test/api?verbose=true") +} + +func TestIPCEndpointGetWithHostAndPort(t *testing.T) { + ts := httptest.NewTLSServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.ReadAll(r.Body) + w.Write([]byte("ok")) + })) + defer ts.Close() + + conf := createConfig(t, ts) + // modify the config so that it uses a different setting for the cmd_host + conf.Set("process_config.cmd_host", "127.0.0.1", pkgconfigmodel.SourceAgentRuntime) + + // test construction with alternate values for the host and port + end, err := NewIPCEndpoint(conf, "test/api", WithHostAndPort(conf.GetString("process_config.cmd_host"), conf.GetInt("cmd_port"))) + assert.NoError(t, err) + + // test that host provided by WithHostAndPort is used for the endpoint + res, err := end.DoGet() + assert.NoError(t, err) + assert.Equal(t, res, []byte("ok")) + assert.Equal(t, end.target.Host, fmt.Sprintf("127.0.0.1:%d", conf.GetInt("cmd_port"))) +} + +func TestIPCEndpointDeprecatedIPCAddress(t *testing.T) { + ts := httptest.NewTLSServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.ReadAll(r.Body) + w.Write([]byte("ok")) + })) + defer ts.Close() + + conf := createConfig(t, ts) + // Use the deprecated (but still supported) option "ipc_address" + conf.UnsetForSource("cmd_host", pkgconfigmodel.SourceAgentRuntime) + conf.Set("ipc_address", "127.0.0.1", pkgconfigmodel.SourceAgentRuntime) + + // test construction, uses ipc_address instead of cmd_host + end, err := NewIPCEndpoint(conf, "test/api") + assert.NoError(t, err) + + // test that host provided by "ipc_address" is used for the endpoint + res, err := end.DoGet() + assert.NoError(t, err) + assert.Equal(t, res, []byte("ok")) + assert.Equal(t, end.target.Host, fmt.Sprintf("127.0.0.1:%d", conf.GetInt("cmd_port"))) +} + +func TestIPCEndpointErrorText(t *testing.T) { + ts := httptest.NewTLSServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + w.WriteHeader(400) + w.Write([]byte("bad request")) + })) + defer ts.Close() + + conf := createConfig(t, ts) + end, err := NewIPCEndpoint(conf, "test/api") + assert.NoError(t, err) + + // test that error is returned by the endpoint + _, err = end.DoGet() + assert.Error(t, err) +} + +func TestIPCEndpointErrorMap(t *testing.T) { + ts := httptest.NewTLSServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + w.WriteHeader(400) + data, _ := json.Marshal(map[string]string{ + "error": "something went wrong", + }) + w.Write(data) + })) + defer ts.Close() + + conf := createConfig(t, ts) + end, err := NewIPCEndpoint(conf, "test/api") + assert.NoError(t, err) + + // test that error gets unwrapped from the errmap + _, err = end.DoGet() + assert.Error(t, err) + assert.Equal(t, err.Error(), "something went wrong") +} From f986fb4b62f7374aaadf90575edf07de252b6c8b Mon Sep 17 00:00:00 2001 From: Paul Cacheux Date: Tue, 5 Mar 2024 20:28:18 +0100 Subject: [PATCH 014/155] fix ownership of KMT gitlab files (#23453) --- .github/CODEOWNERS | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index cc2cac322ff26c..16aaafd8a195d9 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -96,8 +96,8 @@ /.gitlab/integration_test/windows.yml @DataDog/agent-platform @DataDog/windows-agent -/.gitlab/kernel_version_testing @DataDog/ebpf-platform -/.gitlab/kernel_version_testing/security_agent.yml @DataDog/agent-security +/.gitlab/kernel_matrix_testing @DataDog/ebpf-platform +/.gitlab/kernel_matrix_testing/security_agent.yml @DataDog/agent-security /.gitlab/container_build/ @DataDog/container-integrations @DataDog/agent-build-and-releases /.gitlab/container_build/docker_windows_agent6.yml @DataDog/agent-build-and-releases @DataDog/windows-agent From 6aaeb72ffd58142a3385533ca76441137d9b4a86 Mon Sep 17 00:00:00 2001 From: David du Colombier Date: Tue, 5 Mar 2024 21:52:25 +0100 Subject: [PATCH 015/155] [SBOM] Rebase on 'main' trivy branch (#23214) Co-authored-by: lebauce --- .copyright-overrides.yml | 17 + .wwhrd.yml | 6 + LICENSE-3rdparty.csv | 548 ++++++++-- .../collectors/util/image_util.go | 5 +- .../collectors/util/image_util_test.go | 33 +- go.mod | 231 +++-- go.sum | 935 +++++++++++------- pkg/collector/corechecks/sbom/convert.go | 7 +- pkg/sbom/collectors/host/host.go | 2 +- pkg/sbom/sbom.go | 1 + pkg/security/resolvers/sbom/resolver.go | 2 +- pkg/util/trivy/cache.go | 16 +- pkg/util/trivy/report.go | 4 +- pkg/util/trivy/trivy.go | 35 +- tasks/dogstatsd.py | 2 +- 15 files changed, 1270 insertions(+), 574 deletions(-) diff --git a/.copyright-overrides.yml b/.copyright-overrides.yml index a59207d6c2cc53..9c1b6e1cf27aab 100644 --- a/.copyright-overrides.yml +++ b/.copyright-overrides.yml @@ -203,9 +203,15 @@ github.com/aquasecurity/go-gem-version: Copyright (c) 2020 Teppei Fukuda (knqyf2 github.com/aquasecurity/go-npm-version: Copyright (c) 2020 Teppei Fukuda (knqyf263) github.com/aquasecurity/go-pep440-version: Copyright (c) 2020 Teppei Fukuda (knqyf263) github.com/aquasecurity/go-version: Copyright (c) 2020 Teppei Fukuda (knqyf263) +github.com/aquasecurity/trivy-java-db: Copyright 2019-2020 Aqua Security github.com/spdx/tools-golang: Copyright (c) 2018 The Authors github.com/google/flatbuffers: Copyright (c) 2014 Google github.com/gocomply/scap: "CC0 1.0 Universal" +github.com/anchore/go-struct-converter: Copyright (c) 2022-2023 Anchore, Inc. +github.com/bitnami/go-version/pkg/version: Copyright (c) 2023-2024 Carlos Rodríguez Hernández +github.com/kylelemons/godebug: Copyright (c) 2013-2020 Kyle Lemons +github.com/santhosh-tekuri/jsonschema: Copyright (c) 2017-2024 Santhosh Kumar Tekuri + # The Copyright information is not contained in the LICENSE file, but it can be found in other # files in the package, such as: @@ -292,3 +298,14 @@ github.com/pjbgf/sha1cd: github.com/kr/pretty: Copyright 2012 Keith Rarick github.com/kr/text: Copyright 2012 Keith Rarick + +# Copyright information is in the Makefile +github.com/openvex/go-vex: Copyright 2023 The OpenVEX Authors + +# Copyright information is in the LICENSE +github.com/aquasecurity/trivy-policies/pkg/spec: Copyright (c) 2024 Aqua Security +github.com/aquasecurity/trivy-policies/rules/specs: Copyright (c) 2024 Aqua Security +github.com/pjbgf/sha1cd: Copyright 2023 pjbgf + +# Copyright information is in the source headers +github.com/csaf-poc/csaf_distribution: Copyright 2021-2023 German Federal Office for Information Security (BSI) diff --git a/.wwhrd.yml b/.wwhrd.yml index 90374e3877fa9b..65f457eab52619 100644 --- a/.wwhrd.yml +++ b/.wwhrd.yml @@ -23,6 +23,12 @@ overrides: "github.com/xi2/xz": Public Domain # https://github.com/acomagu/bufpipe/blob/master/LICENSE "github.com/acomagu/bufpipe": MIT + # https://github.com/aquasecurity/trivy-policies/blob/main/LICENSE + "github.com/aquasecurity/trivy-policies/pkg/spec": MIT + "github.com/aquasecurity/trivy-policies/rules/specs": MIT + # https://github.com/csaf-poc/csaf_distribution/blob/main/LICENSES/MIT.txt + "github.com/csaf-poc/csaf_distribution/v3/csaf": MIT + "github.com/csaf-poc/csaf_distribution/v3/util": MIT exceptions: - "golang.org/x/mobile/..." diff --git a/LICENSE-3rdparty.csv b/LICENSE-3rdparty.csv index 332dd49a624fc3..997d084a838580 100644 --- a/LICENSE-3rdparty.csv +++ b/LICENSE-3rdparty.csv @@ -30,17 +30,60 @@ core,github.com/AdaLogics/go-fuzz-headers,Apache-2.0,AdamKorcz <44787359+AdamKor core,github.com/AdamKorcz/go-118-fuzz-build/testing,Apache-2.0,AdamKorcz |AdamKorcz <44787359+AdamKorcz@users.noreply.github.com>|John Howard |Kazuyoshi Kato |Khaled Yakdan |AdamKorcz |Sebastiaan van Stijn core,github.com/AlekSi/pointer,MIT,Copyright (c) 2015 Alexey Palazhchenko core,github.com/Azure/azure-sdk-for-go/profiles/preview/preview/containerregistry/runtime/containerregistry,MIT,Copyright (c) Microsoft Corporation +core,github.com/Azure/azure-sdk-for-go/sdk/azcore,MIT,Copyright (c) Microsoft Corporation +core,github.com/Azure/azure-sdk-for-go/sdk/azcore/cloud,MIT,Copyright (c) Microsoft Corporation +core,github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/exported,MIT,Copyright (c) Microsoft Corporation +core,github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/log,MIT,Copyright (c) Microsoft Corporation +core,github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/pollers,MIT,Copyright (c) Microsoft Corporation +core,github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/pollers/async,MIT,Copyright (c) Microsoft Corporation +core,github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/pollers/body,MIT,Copyright (c) Microsoft Corporation +core,github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/pollers/fake,MIT,Copyright (c) Microsoft Corporation +core,github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/pollers/loc,MIT,Copyright (c) Microsoft Corporation +core,github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/pollers/op,MIT,Copyright (c) Microsoft Corporation +core,github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/shared,MIT,Copyright (c) Microsoft Corporation +core,github.com/Azure/azure-sdk-for-go/sdk/azcore/log,MIT,Copyright (c) Microsoft Corporation +core,github.com/Azure/azure-sdk-for-go/sdk/azcore/policy,MIT,Copyright (c) Microsoft Corporation +core,github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime,MIT,Copyright (c) Microsoft Corporation +core,github.com/Azure/azure-sdk-for-go/sdk/azcore/streaming,MIT,Copyright (c) Microsoft Corporation +core,github.com/Azure/azure-sdk-for-go/sdk/azcore/tracing,MIT,Copyright (c) Microsoft Corporation +core,github.com/Azure/azure-sdk-for-go/sdk/azidentity,MIT,Copyright (c) Microsoft Corporation +core,github.com/Azure/azure-sdk-for-go/sdk/internal/diag,MIT,Copyright (c) Microsoft Corporation +core,github.com/Azure/azure-sdk-for-go/sdk/internal/errorinfo,MIT,Copyright (c) Microsoft Corporation +core,github.com/Azure/azure-sdk-for-go/sdk/internal/exported,MIT,Copyright (c) Microsoft Corporation +core,github.com/Azure/azure-sdk-for-go/sdk/internal/log,MIT,Copyright (c) Microsoft Corporation +core,github.com/Azure/azure-sdk-for-go/sdk/internal/poller,MIT,Copyright (c) Microsoft Corporation +core,github.com/Azure/azure-sdk-for-go/sdk/internal/temporal,MIT,Copyright (c) Microsoft Corporation +core,github.com/Azure/azure-sdk-for-go/sdk/internal/uuid,MIT,Copyright (c) Microsoft Corporation core,github.com/Azure/azure-sdk-for-go/services/preview/containerregistry/runtime/2019-08-15-preview/containerregistry,MIT,Copyright (c) Microsoft Corporation core,github.com/Azure/azure-sdk-for-go/version,MIT,Copyright (c) Microsoft Corporation core,github.com/Azure/go-autorest,Apache-2.0,Copyright 2015 Microsoft Corporation core,github.com/Azure/go-autorest/autorest,Apache-2.0,Copyright 2015 Microsoft Corporation core,github.com/Azure/go-autorest/autorest/adal,Apache-2.0,Copyright 2015 Microsoft Corporation core,github.com/Azure/go-autorest/autorest/azure,Apache-2.0,Copyright 2015 Microsoft Corporation -core,github.com/Azure/go-autorest/autorest/azure/auth,Apache-2.0,Copyright 2015 Microsoft Corporation -core,github.com/Azure/go-autorest/autorest/azure/cli,Apache-2.0,Copyright 2015 Microsoft Corporation core,github.com/Azure/go-autorest/autorest/date,Apache-2.0,Copyright 2015 Microsoft Corporation core,github.com/Azure/go-autorest/logger,Apache-2.0,Copyright 2015 Microsoft Corporation core,github.com/Azure/go-autorest/tracing,Apache-2.0,Copyright 2015 Microsoft Corporation +core,github.com/AzureAD/microsoft-authentication-library-for-go/apps/cache,MIT,Copyright (c) Microsoft Corporation +core,github.com/AzureAD/microsoft-authentication-library-for-go/apps/confidential,MIT,Copyright (c) Microsoft Corporation +core,github.com/AzureAD/microsoft-authentication-library-for-go/apps/errors,MIT,Copyright (c) Microsoft Corporation +core,github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/base,MIT,Copyright (c) Microsoft Corporation +core,github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/base/internal/storage,MIT,Copyright (c) Microsoft Corporation +core,github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/exported,MIT,Copyright (c) Microsoft Corporation +core,github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/json,MIT,Copyright (c) Microsoft Corporation +core,github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/json/types/time,MIT,Copyright (c) Microsoft Corporation +core,github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/local,MIT,Copyright (c) Microsoft Corporation +core,github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth,MIT,Copyright (c) Microsoft Corporation +core,github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops,MIT,Copyright (c) Microsoft Corporation +core,github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/accesstokens,MIT,Copyright (c) Microsoft Corporation +core,github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/authority,MIT,Copyright (c) Microsoft Corporation +core,github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/internal/comm,MIT,Copyright (c) Microsoft Corporation +core,github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/internal/grant,MIT,Copyright (c) Microsoft Corporation +core,github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/wstrust,MIT,Copyright (c) Microsoft Corporation +core,github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/oauth/ops/wstrust/defs,MIT,Copyright (c) Microsoft Corporation +core,github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/options,MIT,Copyright (c) Microsoft Corporation +core,github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/shared,MIT,Copyright (c) Microsoft Corporation +core,github.com/AzureAD/microsoft-authentication-library-for-go/apps/internal/version,MIT,Copyright (c) Microsoft Corporation +core,github.com/AzureAD/microsoft-authentication-library-for-go/apps/public,MIT,Copyright (c) Microsoft Corporation core,github.com/BurntSushi/toml,MIT,Copyright (c) 2013 TOML authors core,github.com/BurntSushi/toml/internal,MIT,Copyright (c) 2013 TOML authors core,github.com/CycloneDX/cyclonedx-go,Apache-2.0,Copyright & License | Copyright (c) OWASP Foundation | Copyright (c) OWASP Foundation. All Rights Reserved | Copyright OWASP Foundation @@ -139,6 +182,8 @@ core,github.com/GoogleCloudPlatform/docker-credential-gcr/credhelper,Apache-2.0, core,github.com/GoogleCloudPlatform/docker-credential-gcr/store,Apache-2.0,"Copyright 2016 Google, Inc." core,github.com/GoogleCloudPlatform/docker-credential-gcr/util,Apache-2.0,"Copyright 2016 Google, Inc." core,github.com/GoogleCloudPlatform/docker-credential-gcr/util/cmd,Apache-2.0,"Copyright 2016 Google, Inc." +core,github.com/Intevation/gval,BSD-3-Clause,"Copyright (c) 2017, Paessler AG " +core,github.com/Intevation/jsonpath,BSD-3-Clause,"Copyright (c) 2017, Paessler AG " core,github.com/Masterminds/goutils,Apache-2.0,Copyright 2014 Alexander Okoli core,github.com/Masterminds/semver,MIT,"Copyright (C) 2014-2019, Matt Butcher and Matt Farina" core,github.com/Masterminds/semver/v3,MIT,"Copyright (C) 2014-2019, Matt Butcher and Matt Farina" @@ -200,47 +245,138 @@ core,github.com/ProtonMail/go-crypto/openpgp/internal/encoding,BSD-3-Clause,Copy core,github.com/ProtonMail/go-crypto/openpgp/packet,BSD-3-Clause,Copyright (c) 2009 The Go Authors. All rights reserved core,github.com/ProtonMail/go-crypto/openpgp/s2k,BSD-3-Clause,Copyright (c) 2009 The Go Authors. All rights reserved core,github.com/StackExchange/wmi,MIT,Copyright (c) 2013 Stack Exchange +core,github.com/VividCortex/ewma,MIT,"Copyright (c) 2013 VividCortex | Copyright (c) 2013 VividCortex, Inc. All rights reserved" core,github.com/acobaugh/osrelease,BSD-3-Clause,Copyright 2017 Andrew Cobaugh core,github.com/agext/levenshtein,Apache-2.0,Copyright 2016 ALRUX Inc core,github.com/agnivade/levenshtein,MIT,Copyright (c) 2015 Agniva De Sarker +core,github.com/alecthomas/chroma,MIT,Copyright (C) 2017 Alec Thomas +core,github.com/alecthomas/chroma/formatters,MIT,Copyright (C) 2017 Alec Thomas +core,github.com/alecthomas/chroma/formatters/html,MIT,Copyright (C) 2017 Alec Thomas +core,github.com/alecthomas/chroma/formatters/svg,MIT,Copyright (C) 2017 Alec Thomas +core,github.com/alecthomas/chroma/lexers,MIT,Copyright (C) 2017 Alec Thomas +core,github.com/alecthomas/chroma/lexers/a,MIT,Copyright (C) 2017 Alec Thomas +core,github.com/alecthomas/chroma/lexers/b,MIT,Copyright (C) 2017 Alec Thomas +core,github.com/alecthomas/chroma/lexers/c,MIT,Copyright (C) 2017 Alec Thomas +core,github.com/alecthomas/chroma/lexers/circular,MIT,Copyright (C) 2017 Alec Thomas +core,github.com/alecthomas/chroma/lexers/d,MIT,Copyright (C) 2017 Alec Thomas +core,github.com/alecthomas/chroma/lexers/e,MIT,Copyright (C) 2017 Alec Thomas +core,github.com/alecthomas/chroma/lexers/f,MIT,Copyright (C) 2017 Alec Thomas +core,github.com/alecthomas/chroma/lexers/g,MIT,Copyright (C) 2017 Alec Thomas +core,github.com/alecthomas/chroma/lexers/h,MIT,Copyright (C) 2017 Alec Thomas +core,github.com/alecthomas/chroma/lexers/i,MIT,Copyright (C) 2017 Alec Thomas +core,github.com/alecthomas/chroma/lexers/internal,MIT,Copyright (C) 2017 Alec Thomas +core,github.com/alecthomas/chroma/lexers/j,MIT,Copyright (C) 2017 Alec Thomas +core,github.com/alecthomas/chroma/lexers/k,MIT,Copyright (C) 2017 Alec Thomas +core,github.com/alecthomas/chroma/lexers/l,MIT,Copyright (C) 2017 Alec Thomas +core,github.com/alecthomas/chroma/lexers/m,MIT,Copyright (C) 2017 Alec Thomas +core,github.com/alecthomas/chroma/lexers/n,MIT,Copyright (C) 2017 Alec Thomas +core,github.com/alecthomas/chroma/lexers/o,MIT,Copyright (C) 2017 Alec Thomas +core,github.com/alecthomas/chroma/lexers/p,MIT,Copyright (C) 2017 Alec Thomas +core,github.com/alecthomas/chroma/lexers/q,MIT,Copyright (C) 2017 Alec Thomas +core,github.com/alecthomas/chroma/lexers/r,MIT,Copyright (C) 2017 Alec Thomas +core,github.com/alecthomas/chroma/lexers/s,MIT,Copyright (C) 2017 Alec Thomas +core,github.com/alecthomas/chroma/lexers/t,MIT,Copyright (C) 2017 Alec Thomas +core,github.com/alecthomas/chroma/lexers/v,MIT,Copyright (C) 2017 Alec Thomas +core,github.com/alecthomas/chroma/lexers/w,MIT,Copyright (C) 2017 Alec Thomas +core,github.com/alecthomas/chroma/lexers/x,MIT,Copyright (C) 2017 Alec Thomas +core,github.com/alecthomas/chroma/lexers/y,MIT,Copyright (C) 2017 Alec Thomas +core,github.com/alecthomas/chroma/lexers/z,MIT,Copyright (C) 2017 Alec Thomas +core,github.com/alecthomas/chroma/styles,MIT,Copyright (C) 2017 Alec Thomas core,github.com/alecthomas/participle,MIT,Copyright (C) 2017 Alec Thomas core,github.com/alecthomas/participle/lexer,MIT,Copyright (C) 2017 Alec Thomas core,github.com/alecthomas/participle/lexer/ebnf,MIT,Copyright (C) 2017 Alec Thomas core,github.com/alecthomas/participle/lexer/ebnf/internal,MIT,Copyright (C) 2017 Alec Thomas core,github.com/alecthomas/units,MIT,Copyright (C) 2014 Alec Thomas +core,github.com/anchore/go-struct-converter,Apache-2.0,"Copyright (c) 2022-2023 Anchore, Inc." core,github.com/andybalholm/brotli,MIT,"Copyright (c) 2009, 2010, 2013-2016 by the Brotli Authors" core,github.com/antlr/antlr4/runtime/Go/antlr/v4,BSD-3-Clause,Copyright 2021 The ANTLR Project -core,github.com/aquasecurity/go-dep-parser/pkg/c/conan,MIT,Copyright (c) 2019 Teppei Fukuda -core,github.com/aquasecurity/go-dep-parser/pkg/conda/meta,MIT,Copyright (c) 2019 Teppei Fukuda -core,github.com/aquasecurity/go-dep-parser/pkg/dart/pub,MIT,Copyright (c) 2019 Teppei Fukuda -core,github.com/aquasecurity/go-dep-parser/pkg/dotnet/core_deps,MIT,Copyright (c) 2019 Teppei Fukuda -core,github.com/aquasecurity/go-dep-parser/pkg/golang/binary,MIT,Copyright (c) 2019 Teppei Fukuda -core,github.com/aquasecurity/go-dep-parser/pkg/golang/mod,MIT,Copyright (c) 2019 Teppei Fukuda -core,github.com/aquasecurity/go-dep-parser/pkg/golang/sum,MIT,Copyright (c) 2019 Teppei Fukuda -core,github.com/aquasecurity/go-dep-parser/pkg/gradle/lockfile,MIT,Copyright (c) 2019 Teppei Fukuda -core,github.com/aquasecurity/go-dep-parser/pkg/hex/mix,MIT,Copyright (c) 2019 Teppei Fukuda -core,github.com/aquasecurity/go-dep-parser/pkg/io,MIT,Copyright (c) 2019 Teppei Fukuda -core,github.com/aquasecurity/go-dep-parser/pkg/java/jar,MIT,Copyright (c) 2019 Teppei Fukuda -core,github.com/aquasecurity/go-dep-parser/pkg/java/pom,MIT,Copyright (c) 2019 Teppei Fukuda -core,github.com/aquasecurity/go-dep-parser/pkg/log,MIT,Copyright (c) 2019 Teppei Fukuda -core,github.com/aquasecurity/go-dep-parser/pkg/nodejs/npm,MIT,Copyright (c) 2019 Teppei Fukuda -core,github.com/aquasecurity/go-dep-parser/pkg/nodejs/packagejson,MIT,Copyright (c) 2019 Teppei Fukuda -core,github.com/aquasecurity/go-dep-parser/pkg/nodejs/pnpm,MIT,Copyright (c) 2019 Teppei Fukuda -core,github.com/aquasecurity/go-dep-parser/pkg/nodejs/yarn,MIT,Copyright (c) 2019 Teppei Fukuda -core,github.com/aquasecurity/go-dep-parser/pkg/nuget/config,MIT,Copyright (c) 2019 Teppei Fukuda -core,github.com/aquasecurity/go-dep-parser/pkg/nuget/lock,MIT,Copyright (c) 2019 Teppei Fukuda -core,github.com/aquasecurity/go-dep-parser/pkg/php/composer,MIT,Copyright (c) 2019 Teppei Fukuda -core,github.com/aquasecurity/go-dep-parser/pkg/python/packaging,MIT,Copyright (c) 2019 Teppei Fukuda -core,github.com/aquasecurity/go-dep-parser/pkg/python/pip,MIT,Copyright (c) 2019 Teppei Fukuda -core,github.com/aquasecurity/go-dep-parser/pkg/python/pipenv,MIT,Copyright (c) 2019 Teppei Fukuda -core,github.com/aquasecurity/go-dep-parser/pkg/python/poetry,MIT,Copyright (c) 2019 Teppei Fukuda -core,github.com/aquasecurity/go-dep-parser/pkg/ruby/bundler,MIT,Copyright (c) 2019 Teppei Fukuda -core,github.com/aquasecurity/go-dep-parser/pkg/ruby/gemspec,MIT,Copyright (c) 2019 Teppei Fukuda -core,github.com/aquasecurity/go-dep-parser/pkg/rust/binary,MIT,Copyright (c) 2019 Teppei Fukuda -core,github.com/aquasecurity/go-dep-parser/pkg/rust/cargo,MIT,Copyright (c) 2019 Teppei Fukuda -core,github.com/aquasecurity/go-dep-parser/pkg/swift/cocoapods,MIT,Copyright (c) 2019 Teppei Fukuda -core,github.com/aquasecurity/go-dep-parser/pkg/types,MIT,Copyright (c) 2019 Teppei Fukuda -core,github.com/aquasecurity/go-dep-parser/pkg/utils,MIT,Copyright (c) 2019 Teppei Fukuda +core,github.com/apparentlymart/go-textseg/v13/textseg,MIT,"COPYRIGHT AND PERMISSION NOTICE | Copyright (c) 2014 Couchbase, Inc | Copyright (c) 2017 Martin Atkins | Copyright © 1991-2017 Unicode, Inc. All rights reserved | copyright and license: | copyright and permission notice appear in associated | copyright and permission notice appear with all copies" +core,github.com/apparentlymart/go-textseg/v15/textseg,MIT,"COPYRIGHT AND PERMISSION NOTICE | Copyright (c) 2014 Couchbase, Inc | Copyright (c) 2017 Martin Atkins | Copyright © 1991-2017 Unicode, Inc. All rights reserved | copyright and license: | copyright and permission notice appear in associated | copyright and permission notice appear with all copies" +core,github.com/aquasecurity/defsec/pkg/framework,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/aws,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/aws/accessanalyzer,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/aws/apigateway,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/aws/apigateway/v1,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/aws/apigateway/v2,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/aws/athena,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/aws/cloudfront,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/aws/cloudtrail,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/aws/cloudwatch,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/aws/codebuild,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/aws/config,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/aws/documentdb,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/aws/dynamodb,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/aws/ec2,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/aws/ecr,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/aws/ecs,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/aws/efs,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/aws/eks,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/aws/elasticache,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/aws/elasticsearch,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/aws/elb,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/aws/emr,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/aws/iam,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/aws/kinesis,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/aws/kms,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/aws/lambda,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/aws/mq,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/aws/msk,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/aws/neptune,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/aws/rds,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/aws/redshift,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/aws/s3,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/aws/sam,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/aws/sns,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/aws/sqs,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/aws/ssm,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/aws/workspaces,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/azure,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/azure/appservice,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/azure/authorization,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/azure/compute,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/azure/container,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/azure/database,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/azure/datafactory,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/azure/datalake,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/azure/keyvault,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/azure/monitor,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/azure/network,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/azure/securitycenter,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/azure/storage,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/azure/synapse,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/cloudstack,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/cloudstack/compute,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/digitalocean,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/digitalocean/compute,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/digitalocean/spaces,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/github,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/google,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/google/bigquery,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/google/compute,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/google/dns,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/google/gke,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/google/iam,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/google/kms,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/google/sql,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/google/storage,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/kubernetes,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/nifcloud,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/nifcloud/computing,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/nifcloud/dns,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/nifcloud/nas,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/nifcloud/network,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/nifcloud/rdb,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/nifcloud/sslcertificate,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/openstack,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/providers/oracle,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/rego/convert,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/scan,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/severity,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/state,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/terraform,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/terraform/context,MIT,Copyright (c) 2021 Aqua Security +core,github.com/aquasecurity/defsec/pkg/types,MIT,Copyright (c) 2021 Aqua Security core,github.com/aquasecurity/go-gem-version,Apache-2.0,Copyright (c) 2020 Teppei Fukuda (knqyf263) core,github.com/aquasecurity/go-npm-version/pkg,Apache-2.0,Copyright (c) 2020 Teppei Fukuda (knqyf263) core,github.com/aquasecurity/go-pep440-version,Apache-2.0,Copyright (c) 2020 Teppei Fukuda (knqyf263) @@ -252,6 +388,7 @@ core,github.com/aquasecurity/table,MIT,Copyright (c) 2022 Aqua Security core,github.com/aquasecurity/tml,Unlicense,"copyright interest in the | copyright law | copyright laws, the author or authors" core,github.com/aquasecurity/trivy-db/pkg/db,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy-db/pkg/log,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy-db/pkg/metadata,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy-db/pkg/types,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy-db/pkg/utils,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy-db/pkg/utils/ints,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd @@ -259,6 +396,7 @@ core,github.com/aquasecurity/trivy-db/pkg/utils/strings,Apache-2.0,Copyright 201 core,github.com/aquasecurity/trivy-db/pkg/vulnsrc/alma,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy-db/pkg/vulnsrc/alpine,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy-db/pkg/vulnsrc/amazon,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy-db/pkg/vulnsrc/chainguard,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy-db/pkg/vulnsrc/debian,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy-db/pkg/vulnsrc/mariner,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy-db/pkg/vulnsrc/mariner/oval,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd @@ -270,11 +408,51 @@ core,github.com/aquasecurity/trivy-db/pkg/vulnsrc/suse-cvrf,Apache-2.0,Copyright core,github.com/aquasecurity/trivy-db/pkg/vulnsrc/ubuntu,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy-db/pkg/vulnsrc/vulnerability,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy-db/pkg/vulnsrc/wolfi,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy-java-db/pkg/db,Apache-2.0,Copyright 2019-2020 Aqua Security +core,github.com/aquasecurity/trivy-java-db/pkg/types,Apache-2.0,Copyright 2019-2020 Aqua Security +core,github.com/aquasecurity/trivy-policies/pkg/spec,MIT,Copyright (c) 2024 Aqua Security +core,github.com/aquasecurity/trivy-policies/specs,MIT,Copyright (c) 2024 Aqua Security core,github.com/aquasecurity/trivy/pkg/attestation,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/attestation/sbom,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/clock,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/cloud/aws/config,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/compliance/report,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/compliance/spec,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/dependency/parser/c/conan,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/dependency/parser/conda/meta,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/dependency/parser/dart/pub,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/dependency/parser/dotnet/core_deps,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/dependency/parser/golang/binary,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/dependency/parser/golang/mod,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/dependency/parser/golang/sum,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/dependency/parser/gradle/lockfile,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/dependency/parser/hex/mix,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/dependency/parser/java/jar,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/dependency/parser/java/pom,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/dependency/parser/nodejs/npm,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/dependency/parser/nodejs/packagejson,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/dependency/parser/nodejs/pnpm,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/dependency/parser/nodejs/yarn,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/dependency/parser/nuget/config,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/dependency/parser/nuget/lock,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/dependency/parser/nuget/packagesprops,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/dependency/parser/php/composer,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/dependency/parser/python/packaging,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/dependency/parser/python/pip,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/dependency/parser/python/pipenv,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/dependency/parser/python/poetry,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/dependency/parser/python/pyproject,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/dependency/parser/ruby/bundler,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/dependency/parser/ruby/gemspec,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/dependency/parser/rust/binary,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/dependency/parser/rust/cargo,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/dependency/parser/swift/cocoapods,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/dependency/parser/swift/swift,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/dependency/parser/types,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/dependency/parser/utils,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/detector/library,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/detector/library/compare,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/detector/library/compare/bitnami,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/detector/library/compare/maven,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/detector/library/compare/npm,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/detector/library/compare/pep440,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd @@ -283,6 +461,7 @@ core,github.com/aquasecurity/trivy/pkg/detector/ospkg,Apache-2.0,Copyright 2019- core,github.com/aquasecurity/trivy/pkg/detector/ospkg/alma,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/detector/ospkg/alpine,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/detector/ospkg/amazon,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/detector/ospkg/chainguard,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/detector/ospkg/debian,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/detector/ospkg/mariner,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/detector/ospkg/oracle,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd @@ -291,31 +470,40 @@ core,github.com/aquasecurity/trivy/pkg/detector/ospkg/redhat,Apache-2.0,Copyrigh core,github.com/aquasecurity/trivy/pkg/detector/ospkg/rocky,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/detector/ospkg/suse,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/detector/ospkg/ubuntu,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/detector/ospkg/version,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/detector/ospkg/wolfi,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/digest,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/downloader,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/fanal/analyzer,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/fanal/analyzer/all,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/fanal/analyzer/buildinfo,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd -core,github.com/aquasecurity/trivy/pkg/fanal/analyzer/command/apk,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/fanal/analyzer/config,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/fanal/analyzer/config/all,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/fanal/analyzer/config/azurearm,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/fanal/analyzer/config/cloudformation,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/fanal/analyzer/config/dockerfile,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/fanal/analyzer/config/helm,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd -core,github.com/aquasecurity/trivy/pkg/fanal/analyzer/config/json,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/fanal/analyzer/config/k8s,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/fanal/analyzer/config/terraform,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd -core,github.com/aquasecurity/trivy/pkg/fanal/analyzer/config/yaml,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/fanal/analyzer/config/terraformplan,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/fanal/analyzer/executable,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/fanal/analyzer/imgconf/apk,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/fanal/analyzer/imgconf/dockerfile,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/fanal/analyzer/imgconf/secret,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/fanal/analyzer/language,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/fanal/analyzer/language/c/conan,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/fanal/analyzer/language/conda/meta,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/fanal/analyzer/language/dart/pub,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/fanal/analyzer/language/dotnet/deps,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/fanal/analyzer/language/dotnet/nuget,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/fanal/analyzer/language/dotnet/packagesprops,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/fanal/analyzer/language/elixir/mix,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/fanal/analyzer/language/golang/binary,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/fanal/analyzer/language/golang/mod,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/fanal/analyzer/language/java/gradle,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/fanal/analyzer/language/java/jar,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/fanal/analyzer/language/java/pom,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/fanal/analyzer/language/nodejs/license,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/fanal/analyzer/language/nodejs/npm,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/fanal/analyzer/language/nodejs/pkg,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/fanal/analyzer/language/nodejs/pnpm,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd @@ -330,6 +518,8 @@ core,github.com/aquasecurity/trivy/pkg/fanal/analyzer/language/ruby/gemspec,Apac core,github.com/aquasecurity/trivy/pkg/fanal/analyzer/language/rust/binary,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/fanal/analyzer/language/rust/cargo,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/fanal/analyzer/language/swift/cocoapods,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/fanal/analyzer/language/swift/swift,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/fanal/analyzer/licensing,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/fanal/analyzer/os,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/fanal/analyzer/os/alpine,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/fanal/analyzer/os/amazonlinux,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd @@ -342,56 +532,84 @@ core,github.com/aquasecurity/trivy/pkg/fanal/analyzer/pkg/apk,Apache-2.0,Copyrig core,github.com/aquasecurity/trivy/pkg/fanal/analyzer/pkg/dpkg,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/fanal/analyzer/pkg/rpm,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/fanal/analyzer/repo/apk,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/fanal/analyzer/sbom,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/fanal/analyzer/secret,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/fanal/applier,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/fanal/artifact,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/fanal/artifact/image,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/fanal/artifact/local,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd -core,github.com/aquasecurity/trivy/pkg/fanal/artifact/remote,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/fanal/artifact/repo,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/fanal/artifact/sbom,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/fanal/artifact/vm,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/fanal/cache,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/fanal/handler,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/fanal/handler/all,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd -core,github.com/aquasecurity/trivy/pkg/fanal/handler/dpkg,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd -core,github.com/aquasecurity/trivy/pkg/fanal/handler/gomod,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/fanal/handler/sysfile,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/fanal/handler/unpackaged,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/fanal/image,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/fanal/image/daemon,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd -core,github.com/aquasecurity/trivy/pkg/fanal/image/token,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd -core,github.com/aquasecurity/trivy/pkg/fanal/image/token/azure,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd -core,github.com/aquasecurity/trivy/pkg/fanal/image/token/ecr,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd -core,github.com/aquasecurity/trivy/pkg/fanal/image/token/google,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/fanal/image/registry,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/fanal/image/registry/azure,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/fanal/image/registry/ecr,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/fanal/image/registry/google,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/fanal/log,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/fanal/secret,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/fanal/types,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/fanal/utils,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/fanal/vm,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/fanal/vm/disk,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/fanal/vm/filesystem,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/fanal/walker,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/flag,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/iac/detection,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/iac/scanners/azure/arm/parser/armjson,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/iac/types,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/javadb,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/licensing,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/licensing/expression,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/log,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/mapfs,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/misconf,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/module,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/module/api,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/module/serialize,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/oci,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/parallel,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/plugin,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/policy,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/purl,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/rekor,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/remote,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/report,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/report/cyclonedx,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/report/github,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/report/predicate,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/report/spdx,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/report/table,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/result,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/rpc,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/rpc/client,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/sbom,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/sbom/cyclonedx,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/sbom/cyclonedx/core,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/sbom/spdx,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/scanner,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/scanner/langpkg,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/scanner/local,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/scanner/ospkg,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/scanner/post,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/scanner/utils,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/semaphore,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/types,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd -core,github.com/aquasecurity/trivy/pkg/utils,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/utils/fsutils,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/uuid,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/version,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/vex,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/pkg/vulnerability,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/x/io,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/x/path,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/x/strings,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd +core,github.com/aquasecurity/trivy/pkg/x/sync,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/rpc/cache,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/rpc/common,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd core,github.com/aquasecurity/trivy/rpc/scanner,Apache-2.0,Copyright 2019-2020 Aqua Security Software Ltd @@ -489,6 +707,57 @@ core,github.com/aws/aws-sdk-go-v2/service/ssooidc/types,Apache-2.0,"Copyright 20 core,github.com/aws/aws-sdk-go-v2/service/sts,Apache-2.0,"Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." core,github.com/aws/aws-sdk-go-v2/service/sts/internal/endpoints,Apache-2.0,"Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." core,github.com/aws/aws-sdk-go-v2/service/sts/types,Apache-2.0,"Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." +core,github.com/aws/aws-sdk-go/aws,Apache-2.0,"Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." +core,github.com/aws/aws-sdk-go/aws/arn,Apache-2.0,"Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." +core,github.com/aws/aws-sdk-go/aws/auth/bearer,Apache-2.0,"Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." +core,github.com/aws/aws-sdk-go/aws/awserr,Apache-2.0,"Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." +core,github.com/aws/aws-sdk-go/aws/awsutil,Apache-2.0,"Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." +core,github.com/aws/aws-sdk-go/aws/client,Apache-2.0,"Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." +core,github.com/aws/aws-sdk-go/aws/client/metadata,Apache-2.0,"Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." +core,github.com/aws/aws-sdk-go/aws/corehandlers,Apache-2.0,"Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." +core,github.com/aws/aws-sdk-go/aws/credentials,Apache-2.0,"Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." +core,github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds,Apache-2.0,"Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." +core,github.com/aws/aws-sdk-go/aws/credentials/endpointcreds,Apache-2.0,"Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." +core,github.com/aws/aws-sdk-go/aws/credentials/processcreds,Apache-2.0,"Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." +core,github.com/aws/aws-sdk-go/aws/credentials/ssocreds,Apache-2.0,"Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." +core,github.com/aws/aws-sdk-go/aws/credentials/stscreds,Apache-2.0,"Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." +core,github.com/aws/aws-sdk-go/aws/csm,Apache-2.0,"Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." +core,github.com/aws/aws-sdk-go/aws/defaults,Apache-2.0,"Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." +core,github.com/aws/aws-sdk-go/aws/ec2metadata,Apache-2.0,"Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." +core,github.com/aws/aws-sdk-go/aws/endpoints,Apache-2.0,"Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." +core,github.com/aws/aws-sdk-go/aws/request,Apache-2.0,"Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." +core,github.com/aws/aws-sdk-go/aws/session,Apache-2.0,"Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." +core,github.com/aws/aws-sdk-go/aws/signer/v4,Apache-2.0,"Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." +core,github.com/aws/aws-sdk-go/internal/context,Apache-2.0,"Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." +core,github.com/aws/aws-sdk-go/internal/ini,Apache-2.0,"Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." +core,github.com/aws/aws-sdk-go/internal/s3shared,Apache-2.0,"Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." +core,github.com/aws/aws-sdk-go/internal/s3shared/arn,Apache-2.0,"Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." +core,github.com/aws/aws-sdk-go/internal/s3shared/s3err,Apache-2.0,"Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." +core,github.com/aws/aws-sdk-go/internal/sdkio,Apache-2.0,"Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." +core,github.com/aws/aws-sdk-go/internal/sdkmath,Apache-2.0,"Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." +core,github.com/aws/aws-sdk-go/internal/sdkrand,Apache-2.0,"Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." +core,github.com/aws/aws-sdk-go/internal/sdkuri,Apache-2.0,"Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." +core,github.com/aws/aws-sdk-go/internal/shareddefaults,Apache-2.0,"Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." +core,github.com/aws/aws-sdk-go/internal/strings,Apache-2.0,"Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." +core,github.com/aws/aws-sdk-go/internal/sync/singleflight,BSD-3-Clause,"Copyright (c) 2009 The Go Authors. All rights reserved | Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." +core,github.com/aws/aws-sdk-go/private/checksum,Apache-2.0,"Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." +core,github.com/aws/aws-sdk-go/private/protocol,Apache-2.0,"Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." +core,github.com/aws/aws-sdk-go/private/protocol/eventstream,Apache-2.0,"Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." +core,github.com/aws/aws-sdk-go/private/protocol/eventstream/eventstreamapi,Apache-2.0,"Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." +core,github.com/aws/aws-sdk-go/private/protocol/json/jsonutil,Apache-2.0,"Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." +core,github.com/aws/aws-sdk-go/private/protocol/jsonrpc,Apache-2.0,"Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." +core,github.com/aws/aws-sdk-go/private/protocol/query,Apache-2.0,"Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." +core,github.com/aws/aws-sdk-go/private/protocol/query/queryutil,Apache-2.0,"Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." +core,github.com/aws/aws-sdk-go/private/protocol/rest,Apache-2.0,"Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." +core,github.com/aws/aws-sdk-go/private/protocol/restjson,Apache-2.0,"Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." +core,github.com/aws/aws-sdk-go/private/protocol/restxml,Apache-2.0,"Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." +core,github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil,Apache-2.0,"Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." +core,github.com/aws/aws-sdk-go/service/s3,Apache-2.0,"Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." +core,github.com/aws/aws-sdk-go/service/sso,Apache-2.0,"Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." +core,github.com/aws/aws-sdk-go/service/sso/ssoiface,Apache-2.0,"Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." +core,github.com/aws/aws-sdk-go/service/ssooidc,Apache-2.0,"Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." +core,github.com/aws/aws-sdk-go/service/sts,Apache-2.0,"Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." +core,github.com/aws/aws-sdk-go/service/sts/stsiface,Apache-2.0,"Copyright 2014-2015 Stripe, Inc. | Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved." core,github.com/aws/smithy-go,Apache-2.0,"Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved" core,github.com/aws/smithy-go/auth,Apache-2.0,"Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved" core,github.com/aws/smithy-go/auth/bearer,Apache-2.0,"Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved" @@ -518,18 +787,22 @@ core,github.com/bahlo/generic-list-go,BSD-3-Clause,Copyright (c) 2009 The Go Aut core,github.com/beevik/ntp,BSD-2-Clause,Anton Tolchanov (knyar) | Ask Bjørn Hansen (abh) | Brett Vickers (beevik) | Christopher Batey (chbatey) | Copyright 2015-2017 Brett Vickers. All rights reserved | Leonid Evdokimov (darkk) | Meng Zhuo (mengzhuo) | Mikhail Salosin (AlphaB) core,github.com/benbjohnson/clock,MIT,Copyright (c) 2014 Ben Johnson core,github.com/beorn7/perks/quantile,MIT,Copyright (C) 2013 Blake Mizerany +core,github.com/bgentry/go-netrc/netrc,MIT,Copyright © 2010 Fazlul Shahriar . Newer | Copyright © 2014 Blake Gentry core,github.com/bhmj/jsonslice,MIT,Copyright (c) 2018 bhmj +core,github.com/bitnami/go-version/pkg/version,Apache-2.0,Copyright (c) 2023-2024 Carlos Rodríguez Hernández core,github.com/blabber/go-freebsd-sysctl/sysctl,0BSD,Copyright (c) 2014-2020 by Tobias Rehbein core,github.com/blang/semver/v4,MIT,Copyright (c) 2014 Benedikt Lang +core,github.com/bmatcuk/doublestar/v4,MIT,Copyright (c) 2014 Bob Matcuk core,github.com/bmizerany/pat,MIT,"Copyright (C) 2012 by Keith Rarick, Blake Mizerany" core,github.com/briandowns/spinner,Apache-2.0,Copyright (c) 2022 Brian J. Downs core,github.com/buger/jsonparser,MIT,Copyright (c) 2016 Leonid Bugaev -core,github.com/caarlos0/env/v6,MIT,Copyright (c) 2015-2022 Carlos Alexandro Becker core,github.com/cavaliergopher/grab/v3,BSD-3-Clause,Copyright (c) 2017 Ryan Armstrong. All rights reserved core,github.com/cavaliergopher/grab/v3/pkg/bps,BSD-3-Clause,Copyright (c) 2017 Ryan Armstrong. All rights reserved core,github.com/cenkalti/backoff,MIT,Copyright (c) 2014 Cenk Altı core,github.com/cenkalti/backoff/v4,MIT,Copyright (c) 2014 Cenk Altı core,github.com/cespare/xxhash/v2,MIT,Copyright (c) 2016 Caleb Spare +core,github.com/cheggaaa/pb/v3,BSD-3-Clause,"Copyright (c) 2012-2015, Sergey Cherepanov" +core,github.com/cheggaaa/pb/v3/termutil,BSD-3-Clause,"Copyright (c) 2012-2015, Sergey Cherepanov" core,github.com/cihub/seelog,BSD-3-Clause,"Copyright (c) 2012, Cloud Instruments Co., Ltd. " core,github.com/cilium/ebpf,MIT,"Copyright (c) 2017 Nathan Sweet | Copyright (c) 2018, 2019 Cloudflare | Copyright (c) 2019 Authors of Cilium" core,github.com/cilium/ebpf/asm,MIT,"Copyright (c) 2017 Nathan Sweet | Copyright (c) 2018, 2019 Cloudflare | Copyright (c) 2019 Authors of Cilium" @@ -673,12 +946,15 @@ core,github.com/coreos/go-systemd/v22/dbus,Apache-2.0,"Copyright 2017 CoreOS, In core,github.com/coreos/go-systemd/v22/journal,Apache-2.0,"Copyright 2017 CoreOS, Inc" core,github.com/coreos/pkg/dlopen,Apache-2.0,"Copyright 2017 CoreOS, Inc" core,github.com/cri-o/ocicni/pkg/ocicni,Apache-2.0,"Copyright 2016 Red Hat, Inc" +core,github.com/csaf-poc/csaf_distribution/v3/csaf,MIT,Copyright 2021-2023 German Federal Office for Information Security (BSI) +core,github.com/csaf-poc/csaf_distribution/v3/util,MIT,Copyright 2021-2023 German Federal Office for Information Security (BSI) core,github.com/cyphar/filepath-securejoin,BSD-3-Clause,Copyright (C) 2014-2015 Docker Inc & Go Authors. All rights reserved | Copyright (C) 2017 SUSE LLC. All rights reserved core,github.com/davecgh/go-spew/spew,ISC,Copyright (c) 2012-2016 Dave Collins core,github.com/dgryski/go-jump,MIT,Copyright (c) 2014 Damian Gryski core,github.com/dgryski/go-rendezvous,MIT,Copyright (c) 2017-2020 Damian Gryski -core,github.com/dimchansky/utfbom,Apache-2.0,"Copyright (c) 2018-2020, Dmitrij Koniajev (dimchansky@gmail.com)" core,github.com/distribution/reference,Apache-2.0,Copyright 2014 The CNCF Distribution Project Authors +core,github.com/dlclark/regexp2,MIT,Copyright (c) Doug Clark +core,github.com/dlclark/regexp2/syntax,MIT,Copyright (c) Doug Clark core,github.com/docker/cli/cli/config,Apache-2.0,"Copyright 2012-2017 Docker, Inc." core,github.com/docker/cli/cli/config/configfile,Apache-2.0,"Copyright 2012-2017 Docker, Inc." core,github.com/docker/cli/cli/config/credentials,Apache-2.0,"Copyright 2012-2017 Docker, Inc." @@ -899,6 +1175,7 @@ core,github.com/gogo/protobuf/protoc-gen-gogo/descriptor,BSD-3-Clause,"Copyright core,github.com/gogo/protobuf/sortkeys,BSD-3-Clause,"Copyright (c) 2013, The GoGo Authors. All rights reserved. | Copyright 2010 The Go Authors. All rights reserved." core,github.com/gogo/protobuf/types,BSD-3-Clause,"Copyright (c) 2013, The GoGo Authors. All rights reserved. | Copyright 2010 The Go Authors. All rights reserved." core,github.com/golang-jwt/jwt/v4,MIT,Copyright (c) 2012 Dave Grijalva | Copyright (c) 2021 golang-jwt maintainers +core,github.com/golang-jwt/jwt/v5,MIT,Copyright (c) 2012 Dave Grijalva | Copyright (c) 2021 golang-jwt maintainers core,github.com/golang/glog,Apache-2.0,Copyright (c) 2009 The Go Authors. All rights reserved. core,github.com/golang/glog/internal/logsink,Apache-2.0,Copyright (c) 2009 The Go Authors. All rights reserved. core,github.com/golang/glog/internal/stackdump,Apache-2.0,Copyright (c) 2009 The Go Authors. All rights reserved. @@ -937,11 +1214,11 @@ core,github.com/google/cel-go/interpreter,Apache-2.0,Copyright (c) 2018 The Go A core,github.com/google/cel-go/interpreter/functions,Apache-2.0,Copyright (c) 2018 The Go Authors. All rights reserved core,github.com/google/cel-go/parser,Apache-2.0,Copyright (c) 2018 The Go Authors. All rights reserved core,github.com/google/cel-go/parser/gen,Apache-2.0,Copyright (c) 2018 The Go Authors. All rights reserved -core,github.com/google/gnostic-models/compiler,Apache-2.0,"Copyright 2017-2022, Google LLC." -core,github.com/google/gnostic-models/extensions,Apache-2.0,"Copyright 2017-2022, Google LLC" -core,github.com/google/gnostic-models/jsonschema,Apache-2.0,"Copyright 2017-2022, Google LLC" -core,github.com/google/gnostic-models/openapiv2,Apache-2.0,"Copyright 2017-2022, Google LLC" -core,github.com/google/gnostic-models/openapiv3,Apache-2.0,"Copyright 2017-2022, Google LLC" +core,github.com/google/gnostic/compiler,Apache-2.0,"Copyright 2017-2020, Google LLC." +core,github.com/google/gnostic/extensions,Apache-2.0,"Copyright 2017-2020, Google LLC." +core,github.com/google/gnostic/jsonschema,Apache-2.0,"Copyright 2017-2020, Google LLC." +core,github.com/google/gnostic/openapiv2,Apache-2.0,"Copyright 2017-2020, Google LLC." +core,github.com/google/gnostic/openapiv3,Apache-2.0,"Copyright 2017-2020, Google LLC." core,github.com/google/go-cmp/cmp,BSD-3-Clause,Copyright (c) 2017 The Go Authors. All rights reserved. core,github.com/google/go-cmp/cmp/internal/diff,BSD-3-Clause,Copyright (c) 2017 The Go Authors. All rights reserved. core,github.com/google/go-cmp/cmp/internal/flags,BSD-3-Clause,Copyright (c) 2017 The Go Authors. All rights reserved. @@ -1052,11 +1329,13 @@ core,github.com/h2non/filetype/types,MIT,Copyright (c) Tomas Aparicio core,github.com/hashicorp/consul/api,MPL-2.0,"Copyright © 2014-2018 HashiCorp, Inc" core,github.com/hashicorp/errwrap,MPL-2.0,"Copyright © 2014-2018 HashiCorp, Inc" core,github.com/hashicorp/go-cleanhttp,MPL-2.0,"Copyright © 2014-2018 HashiCorp, Inc" +core,github.com/hashicorp/go-getter,MPL-2.0,"Copyright © 2014-2018 HashiCorp, Inc" +core,github.com/hashicorp/go-getter/helper/url,MPL-2.0,"Copyright © 2014-2018 HashiCorp, Inc" core,github.com/hashicorp/go-hclog,MIT,"Copyright © 2014-2018 HashiCorp, Inc" core,github.com/hashicorp/go-immutable-radix,MPL-2.0,"Copyright © 2014-2018 HashiCorp, Inc" core,github.com/hashicorp/go-multierror,MPL-2.0,"Copyright © 2014-2018 HashiCorp, Inc" -core,github.com/hashicorp/go-retryablehttp,MPL-2.0,"Copyright © 2014-2018 HashiCorp, Inc" core,github.com/hashicorp/go-rootcerts,MPL-2.0,"Copyright © 2014-2018 HashiCorp, Inc" +core,github.com/hashicorp/go-safetemp,MPL-2.0,"Copyright © 2014-2018 HashiCorp, Inc" core,github.com/hashicorp/go-version,MPL-2.0,"Copyright © 2014-2018 HashiCorp, Inc" core,github.com/hashicorp/golang-lru/simplelru,MPL-2.0,"Copyright © 2014-2018 HashiCorp, Inc" core,github.com/hashicorp/golang-lru/v2,MPL-2.0,"Copyright © 2014-2018 HashiCorp, Inc" @@ -1072,6 +1351,10 @@ core,github.com/hashicorp/hcl/hcl/token,MPL-2.0,"Copyright © 2014-2018 HashiCor core,github.com/hashicorp/hcl/json/parser,MPL-2.0,"Copyright © 2014-2018 HashiCorp, Inc" core,github.com/hashicorp/hcl/json/scanner,MPL-2.0,"Copyright © 2014-2018 HashiCorp, Inc" core,github.com/hashicorp/hcl/json/token,MPL-2.0,"Copyright © 2014-2018 HashiCorp, Inc" +core,github.com/hashicorp/hcl/v2,MPL-2.0,"Copyright © 2014-2018 HashiCorp, Inc" +core,github.com/hashicorp/hcl/v2/ext/customdecode,MPL-2.0,"Copyright © 2014-2018 HashiCorp, Inc" +core,github.com/hashicorp/hcl/v2/ext/typeexpr,MPL-2.0,"Copyright © 2014-2018 HashiCorp, Inc" +core,github.com/hashicorp/hcl/v2/hclsyntax,MPL-2.0,"Copyright © 2014-2018 HashiCorp, Inc" core,github.com/hashicorp/serf/coordinate,MPL-2.0,"Copyright © 2014-2018 HashiCorp, Inc" core,github.com/hectane/go-acl,MIT,Copyright (c) 2015 Nathan Osman core,github.com/hectane/go-acl/api,MIT,Copyright (c) 2015 Nathan Osman @@ -1130,6 +1413,9 @@ core,github.com/knqyf263/go-rpmdb/pkg/sqlite3,MIT,Copyright (c) 2019 Teppei Fuku core,github.com/knqyf263/nested,MIT,Copyright (c) 2019 Teppei Fukuda core,github.com/kr/pretty,MIT,Copyright 2012 Keith Rarick core,github.com/kr/text,MIT,Copyright 2012 Keith Rarick +core,github.com/kylelemons/godebug/diff,Apache-2.0,Copyright (c) 2013-2020 Kyle Lemons +core,github.com/kylelemons/godebug/pretty,Apache-2.0,Copyright (c) 2013-2020 Kyle Lemons +core,github.com/liamg/iamgo,MIT,Copyright (c) 2022 Liam Galvin core,github.com/liamg/jfather,MIT,Copyright (c) 2022 Liam Galvin core,github.com/libp2p/go-reuseport,ISC,Copyright (c) 2013 Conformal Systems LLC core,github.com/lorenzosaino/go-sysctl,BSD-3-Clause,"Copyright (c) 2018, Lorenzo Saino" @@ -1152,6 +1438,7 @@ core,github.com/masahiro331/go-disk/mbr,MIT,Copyright (c) 2022 Masahiro331 core,github.com/masahiro331/go-disk/types,MIT,Copyright (c) 2022 Masahiro331 core,github.com/masahiro331/go-ebs-file,MIT,Copyright (c) 2022 Masahiro331 core,github.com/masahiro331/go-ext4-filesystem/ext4,Apache-2.0,Copyright (c) 2021 masahiro331 +core,github.com/masahiro331/go-ext4-filesystem/log,Apache-2.0,Copyright (c) 2021 masahiro331 core,github.com/masahiro331/go-mvn-version,Apache-2.0,Copyright (c) 2020 masahiro331 core,github.com/masahiro331/go-vmdk-parser/pkg/virtualization/vmdk,Apache-2.0,Copyright (c) 2020 masahiro331 core,github.com/masahiro331/go-xfs-filesystem/log,Apache-2.0,Copyright (c) 2021 masahiro331 @@ -1160,6 +1447,7 @@ core,github.com/masahiro331/go-xfs-filesystem/xfs/utils,Apache-2.0,Copyright (c) core,github.com/mattn/go-colorable,MIT,Copyright (c) 2016 Yasuhiro Matsumoto core,github.com/mattn/go-isatty,MIT,Copyright (c) Yasuhiro MATSUMOTO core,github.com/mattn/go-runewidth,MIT,Copyright (c) 2016 Yasuhiro Matsumoto +core,github.com/mattn/go-shellwords,MIT,Copyright (c) 2017 Yasuhiro Matsumoto core,github.com/mdlayher/netlink,MIT,Copyright (C) 2016-2022 Matt Layher core,github.com/mdlayher/netlink/nlenc,MIT,Copyright (C) 2016-2022 Matt Layher core,github.com/mdlayher/socket,MIT,Copyright (C) 2021 Matt Layher @@ -1168,16 +1456,18 @@ core,github.com/microsoft/go-rustaudit,MIT,Copyright (c) Microsoft Corporation core,github.com/miekg/dns,BSD-3-Clause,"Alex A. Skinner | Alex Sergeyev | Andrew Tunnell-Jones | Ask Bjørn Hansen | Copyright (c) 2009, The Go Authors. Extensions copyright (c) 2011, Miek Gieben | Copyright 2009 The Go Authors. All rights reserved. Use of this source code | Copyright 2011 Miek Gieben. All rights reserved. Use of this source code is | Copyright 2014 CloudFlare. All rights reserved. Use of this source code is | Dave Cheney | Dusty Wilson | James Hartig | Marek Majkowski | Miek Gieben | Omri Bahumi | Peter van Dijk | copyright (c) 2011 Miek Gieben" core,github.com/mitchellh/copystructure,MIT,Copyright (c) 2014 Mitchell Hashimoto core,github.com/mitchellh/go-homedir,MIT,Copyright (c) 2013 Mitchell Hashimoto +core,github.com/mitchellh/go-testing-interface,MIT,Copyright (c) 2016 Mitchell Hashimoto +core,github.com/mitchellh/go-wordwrap,MIT,Copyright (c) 2014 Mitchell Hashimoto core,github.com/mitchellh/hashstructure/v2,MIT,Copyright (c) 2016 Mitchell Hashimoto core,github.com/mitchellh/mapstructure,MIT,Copyright (c) 2013 Mitchell Hashimoto core,github.com/mitchellh/reflectwalk,MIT,Copyright (c) 2013 Mitchell Hashimoto core,github.com/mkrautz/goar,BSD-3-Clause,Copyright (c) 2011 Mikkel Krautz -core,github.com/moby/buildkit/frontend/dockerfile/command,Apache-2.0,"Aaron L. Xu | Aaron Lehmann | Aaron Lehmann | Abdur Rehman | Addam Hardy | Adrian Plata | Aidan Hobson Sayers | Akihiro Suda | Alan Fregtman <941331+darkvertex@users.noreply.github.com> | Alex Couture-Beil | Alex Mayer | Alex Suraci | Alexander Morozov | Alexis Murzeau | Alice Frosi | Allen Sun | Amen Belayneh | Anca Iordache | Anda Xu | Anders F Björklund | Andrea Bolognani | Andrea Luzzardi | Andrew Chang | Andrey Smirnov | Andy Alt | Andy Caldwell | Ankush Agarwal | Anthony Sottile | Anurag Goel | Anusha Ragunathan | Arnaud Bailly | Avi Deitcher | Bastiaan Bakker | Ben Longo | Bertrand Paquet | Bin Liu | Brandon Mitchell | Brian Goff | Ce Gao | Chaerim Yeo | Changwei Ge | Chanhun Jeong | ChaosGramer | Charles Chan | Charles Korn | Charles Law | Chenbin | Chris Goller | Chris McKinnel | Christian Höltje | Christian Weichel | Ciro S. Costa | Claudiu Belu | Colin Chartier | Corey Larson | Cory Bennett | Cory Snider | CrazyMax | Csaba Apagyi | Dan Duvall | Daniel Cassidy | Daniel Nephin | Darren Shepherd | Dave Chen | Dave Henderson | Dave Tucker | David Calavera | David Dooling | David Gageot | David Karlsson | Davis Schirmer | Dennis Chen | Derek McGowan | Dharmit Shah | Ding Fei | Doug Davis | Edgar Lee | Eli Uriegas | Elias Faxö | Eng Zer Jun | Eric Engestrom | Erik Sipsma | Fernando Miguel | Fiona Klute | Foysal Iqbal | Fred Cox | Frieder Bluemle | Gabriel | Gabriel Adrian Samfira | Gaetan de Villele | Gahl Saraf | George | Govind Rai | Grant Reaber | Guilhem C | Hans van den Bogert | Hao Hu | Hector S | Helen Xie | Himanshu Pandey | Hiromu Nakamura | HowJMay | Hugo Santos | Ian Campbell | Ilya Dmitrichenko | Iskander (Alex) Sharipov | Jacob Gillespie | Jacob MacElroy | Jean-Pierre Huynh | Jeffrey Huang | Jesse Rittner | Jessica Frazelle | Jitender Kumar | John Howard | John Maguire | John Mulhausen | John Tims | Jon Zeolla | Jonathan Azoff | Jonathan Giannuzzi | Jonathan Stoppani | Jonny Stoten | JordanGoasdoue | Julian Goede | Justas Brazauskas | Justin Chadwell | Justin Cormack | Justin Garrison | Jörg Franke <359489+NewJorg@users.noreply.github.com> | Kang, Matthew | Kees Cook | Kevin Burke | Kir Kolyshkin | Kohei Tokunaga | Koichi Shiraishi | Kris-Mikael Krister | Kunal Kushwaha | Kyle | Lajos Papp | Levi Harrison | Lu Jingxiao | Luca Visentin | Maciej Kalisz | Madhav Puri | Manu Gupta | Marcus Comstedt | Mark Gordon | Marko Kohtala | Mary Anthony | Matias Insaurralde | Matt Kang | Matt Rickard | Maxime Lagresle | Michael Crosby | Michael Friis | Michael Irwin | Miguel Ángel Jimeno | Mihai Borobocea | Mike Brown | Mikhail Vasin | Misty Stanley-Jones | Miyachi Katsuya | Morgan Bauer | Morlay | Nao YONASHIRO | Natasha Jarus | Nathan Sullivan | Nick Miyake | Nick Santos | Nikhil Pandeti | Noel Georgi <18496730+frezbo@users.noreply.github.com> | Oliver Bristow | Omer Duchovne <79370724+od-cyera@users.noreply.github.com> | Omer Mizrahi | Ondrej Fabry | Otto Kekäläinen | Pablo Chico de Guzman | Patrick Hemmer | Patrick Lang | Patrick Van Stee | Paul ""TBBle"" Hampson | Paweł Gronowski | Peter Dave Hello | Petr Fedchenkov | Phil Estes | Pierre Fenoll | Pranav Pandit | Pratik Raj | Prayag Verma | Qiang Huang | Remy Suen | Ri Xu | Rob Taylor | Robert Estelle | Rubens Figueiredo | Sam Whited | Sascha Schwarze | Sean P. Kane | Sebastiaan van Stijn | Seiya Miyata | Serhat Gülçiçek | Sertac Ozercan | Shev Yan | Shijiang Wei | Shingo Omura | Shiwei Zhang | Siebe Schaap | Silvin Lubecki <31478878+silvin-lubecki@users.noreply.github.com> | Simon Ferquel | Slava Semushin | Solomon Hykes | Stefan Scherer | Stefan Weil | StefanSchoof | Stepan Blyshchak | Steve Lohr | Sven Dowideit | Takuya Noguchi | Thomas Leonard | Thomas Riccardi | Thomas Shaw | Tianon Gravi | Tibor Vass | Tiffany Jernigan | Tim Waugh | Tim Wraight | Tino Rusch | Tobias Klauser | Tomas Tomecek | Tomasz Kopczynski | Tomohiro Kusumoto | Troels Liebe Bentsen | Tõnis Tiigi | Valentin Lorentz | Vasek - Tom C | Victor Vieux | Victoria Bialas | Vincent Demeester | Vlad A. Ionescu | Vladislav Ivanov | Wang Yumu <37442693@qq.com> | Wei Fu | Wei Zhang | Xiaofan Zhang | Ximo Guanter | Yamazaki Masashi | Yan Song | Yong Tang | Yuichiro Kaneko | Yurii Rashkovskii | Zach Badgett | Ziv Tsarfati | a-palchikov | coryb | dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> | dito | eyherabh | f0 | genglu.gl | ggjulio | jgeiger | jlecordier | joey | jroenf | kevinmeredith | l00397676 | lalyos | liwenqi | lixiaobing10051267 | lomot | masibw | mikelinjie <294893458@qq.com> | msg | pieterdd | squeegels <1674195+squeegels@users.noreply.github.com> | sunchunming | wingkwong | zhangwenlong | 岁丰 | 沈陵 | 郑泽宇 " -core,github.com/moby/buildkit/frontend/dockerfile/instructions,Apache-2.0,"Aaron L. Xu | Aaron Lehmann | Aaron Lehmann | Abdur Rehman | Addam Hardy | Adrian Plata | Aidan Hobson Sayers | Akihiro Suda | Alan Fregtman <941331+darkvertex@users.noreply.github.com> | Alex Couture-Beil | Alex Mayer | Alex Suraci | Alexander Morozov | Alexis Murzeau | Alice Frosi | Allen Sun | Amen Belayneh | Anca Iordache | Anda Xu | Anders F Björklund | Andrea Bolognani | Andrea Luzzardi | Andrew Chang | Andrey Smirnov | Andy Alt | Andy Caldwell | Ankush Agarwal | Anthony Sottile | Anurag Goel | Anusha Ragunathan | Arnaud Bailly | Avi Deitcher | Bastiaan Bakker | Ben Longo | Bertrand Paquet | Bin Liu | Brandon Mitchell | Brian Goff | Ce Gao | Chaerim Yeo | Changwei Ge | Chanhun Jeong | ChaosGramer | Charles Chan | Charles Korn | Charles Law | Chenbin | Chris Goller | Chris McKinnel | Christian Höltje | Christian Weichel | Ciro S. Costa | Claudiu Belu | Colin Chartier | Corey Larson | Cory Bennett | Cory Snider | CrazyMax | Csaba Apagyi | Dan Duvall | Daniel Cassidy | Daniel Nephin | Darren Shepherd | Dave Chen | Dave Henderson | Dave Tucker | David Calavera | David Dooling | David Gageot | David Karlsson | Davis Schirmer | Dennis Chen | Derek McGowan | Dharmit Shah | Ding Fei | Doug Davis | Edgar Lee | Eli Uriegas | Elias Faxö | Eng Zer Jun | Eric Engestrom | Erik Sipsma | Fernando Miguel | Fiona Klute | Foysal Iqbal | Fred Cox | Frieder Bluemle | Gabriel | Gabriel Adrian Samfira | Gaetan de Villele | Gahl Saraf | George | Govind Rai | Grant Reaber | Guilhem C | Hans van den Bogert | Hao Hu | Hector S | Helen Xie | Himanshu Pandey | Hiromu Nakamura | HowJMay | Hugo Santos | Ian Campbell | Ilya Dmitrichenko | Iskander (Alex) Sharipov | Jacob Gillespie | Jacob MacElroy | Jean-Pierre Huynh | Jeffrey Huang | Jesse Rittner | Jessica Frazelle | Jitender Kumar | John Howard | John Maguire | John Mulhausen | John Tims | Jon Zeolla | Jonathan Azoff | Jonathan Giannuzzi | Jonathan Stoppani | Jonny Stoten | JordanGoasdoue | Julian Goede | Justas Brazauskas | Justin Chadwell | Justin Cormack | Justin Garrison | Jörg Franke <359489+NewJorg@users.noreply.github.com> | Kang, Matthew | Kees Cook | Kevin Burke | Kir Kolyshkin | Kohei Tokunaga | Koichi Shiraishi | Kris-Mikael Krister | Kunal Kushwaha | Kyle | Lajos Papp | Levi Harrison | Lu Jingxiao | Luca Visentin | Maciej Kalisz | Madhav Puri | Manu Gupta | Marcus Comstedt | Mark Gordon | Marko Kohtala | Mary Anthony | Matias Insaurralde | Matt Kang | Matt Rickard | Maxime Lagresle | Michael Crosby | Michael Friis | Michael Irwin | Miguel Ángel Jimeno | Mihai Borobocea | Mike Brown | Mikhail Vasin | Misty Stanley-Jones | Miyachi Katsuya | Morgan Bauer | Morlay | Nao YONASHIRO | Natasha Jarus | Nathan Sullivan | Nick Miyake | Nick Santos | Nikhil Pandeti | Noel Georgi <18496730+frezbo@users.noreply.github.com> | Oliver Bristow | Omer Duchovne <79370724+od-cyera@users.noreply.github.com> | Omer Mizrahi | Ondrej Fabry | Otto Kekäläinen | Pablo Chico de Guzman | Patrick Hemmer | Patrick Lang | Patrick Van Stee | Paul ""TBBle"" Hampson | Paweł Gronowski | Peter Dave Hello | Petr Fedchenkov | Phil Estes | Pierre Fenoll | Pranav Pandit | Pratik Raj | Prayag Verma | Qiang Huang | Remy Suen | Ri Xu | Rob Taylor | Robert Estelle | Rubens Figueiredo | Sam Whited | Sascha Schwarze | Sean P. Kane | Sebastiaan van Stijn | Seiya Miyata | Serhat Gülçiçek | Sertac Ozercan | Shev Yan | Shijiang Wei | Shingo Omura | Shiwei Zhang | Siebe Schaap | Silvin Lubecki <31478878+silvin-lubecki@users.noreply.github.com> | Simon Ferquel | Slava Semushin | Solomon Hykes | Stefan Scherer | Stefan Weil | StefanSchoof | Stepan Blyshchak | Steve Lohr | Sven Dowideit | Takuya Noguchi | Thomas Leonard | Thomas Riccardi | Thomas Shaw | Tianon Gravi | Tibor Vass | Tiffany Jernigan | Tim Waugh | Tim Wraight | Tino Rusch | Tobias Klauser | Tomas Tomecek | Tomasz Kopczynski | Tomohiro Kusumoto | Troels Liebe Bentsen | Tõnis Tiigi | Valentin Lorentz | Vasek - Tom C | Victor Vieux | Victoria Bialas | Vincent Demeester | Vlad A. Ionescu | Vladislav Ivanov | Wang Yumu <37442693@qq.com> | Wei Fu | Wei Zhang | Xiaofan Zhang | Ximo Guanter | Yamazaki Masashi | Yan Song | Yong Tang | Yuichiro Kaneko | Yurii Rashkovskii | Zach Badgett | Ziv Tsarfati | a-palchikov | coryb | dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> | dito | eyherabh | f0 | genglu.gl | ggjulio | jgeiger | jlecordier | joey | jroenf | kevinmeredith | l00397676 | lalyos | liwenqi | lixiaobing10051267 | lomot | masibw | mikelinjie <294893458@qq.com> | msg | pieterdd | squeegels <1674195+squeegels@users.noreply.github.com> | sunchunming | wingkwong | zhangwenlong | 岁丰 | 沈陵 | 郑泽宇 " -core,github.com/moby/buildkit/frontend/dockerfile/parser,Apache-2.0,"Aaron L. Xu | Aaron Lehmann | Aaron Lehmann | Abdur Rehman | Addam Hardy | Adrian Plata | Aidan Hobson Sayers | Akihiro Suda | Alan Fregtman <941331+darkvertex@users.noreply.github.com> | Alex Couture-Beil | Alex Mayer | Alex Suraci | Alexander Morozov | Alexis Murzeau | Alice Frosi | Allen Sun | Amen Belayneh | Anca Iordache | Anda Xu | Anders F Björklund | Andrea Bolognani | Andrea Luzzardi | Andrew Chang | Andrey Smirnov | Andy Alt | Andy Caldwell | Ankush Agarwal | Anthony Sottile | Anurag Goel | Anusha Ragunathan | Arnaud Bailly | Avi Deitcher | Bastiaan Bakker | Ben Longo | Bertrand Paquet | Bin Liu | Brandon Mitchell | Brian Goff | Ce Gao | Chaerim Yeo | Changwei Ge | Chanhun Jeong | ChaosGramer | Charles Chan | Charles Korn | Charles Law | Chenbin | Chris Goller | Chris McKinnel | Christian Höltje | Christian Weichel | Ciro S. Costa | Claudiu Belu | Colin Chartier | Corey Larson | Cory Bennett | Cory Snider | CrazyMax | Csaba Apagyi | Dan Duvall | Daniel Cassidy | Daniel Nephin | Darren Shepherd | Dave Chen | Dave Henderson | Dave Tucker | David Calavera | David Dooling | David Gageot | David Karlsson | Davis Schirmer | Dennis Chen | Derek McGowan | Dharmit Shah | Ding Fei | Doug Davis | Edgar Lee | Eli Uriegas | Elias Faxö | Eng Zer Jun | Eric Engestrom | Erik Sipsma | Fernando Miguel | Fiona Klute | Foysal Iqbal | Fred Cox | Frieder Bluemle | Gabriel | Gabriel Adrian Samfira | Gaetan de Villele | Gahl Saraf | George | Govind Rai | Grant Reaber | Guilhem C | Hans van den Bogert | Hao Hu | Hector S | Helen Xie | Himanshu Pandey | Hiromu Nakamura | HowJMay | Hugo Santos | Ian Campbell | Ilya Dmitrichenko | Iskander (Alex) Sharipov | Jacob Gillespie | Jacob MacElroy | Jean-Pierre Huynh | Jeffrey Huang | Jesse Rittner | Jessica Frazelle | Jitender Kumar | John Howard | John Maguire | John Mulhausen | John Tims | Jon Zeolla | Jonathan Azoff | Jonathan Giannuzzi | Jonathan Stoppani | Jonny Stoten | JordanGoasdoue | Julian Goede | Justas Brazauskas | Justin Chadwell | Justin Cormack | Justin Garrison | Jörg Franke <359489+NewJorg@users.noreply.github.com> | Kang, Matthew | Kees Cook | Kevin Burke | Kir Kolyshkin | Kohei Tokunaga | Koichi Shiraishi | Kris-Mikael Krister | Kunal Kushwaha | Kyle | Lajos Papp | Levi Harrison | Lu Jingxiao | Luca Visentin | Maciej Kalisz | Madhav Puri | Manu Gupta | Marcus Comstedt | Mark Gordon | Marko Kohtala | Mary Anthony | Matias Insaurralde | Matt Kang | Matt Rickard | Maxime Lagresle | Michael Crosby | Michael Friis | Michael Irwin | Miguel Ángel Jimeno | Mihai Borobocea | Mike Brown | Mikhail Vasin | Misty Stanley-Jones | Miyachi Katsuya | Morgan Bauer | Morlay | Nao YONASHIRO | Natasha Jarus | Nathan Sullivan | Nick Miyake | Nick Santos | Nikhil Pandeti | Noel Georgi <18496730+frezbo@users.noreply.github.com> | Oliver Bristow | Omer Duchovne <79370724+od-cyera@users.noreply.github.com> | Omer Mizrahi | Ondrej Fabry | Otto Kekäläinen | Pablo Chico de Guzman | Patrick Hemmer | Patrick Lang | Patrick Van Stee | Paul ""TBBle"" Hampson | Paweł Gronowski | Peter Dave Hello | Petr Fedchenkov | Phil Estes | Pierre Fenoll | Pranav Pandit | Pratik Raj | Prayag Verma | Qiang Huang | Remy Suen | Ri Xu | Rob Taylor | Robert Estelle | Rubens Figueiredo | Sam Whited | Sascha Schwarze | Sean P. Kane | Sebastiaan van Stijn | Seiya Miyata | Serhat Gülçiçek | Sertac Ozercan | Shev Yan | Shijiang Wei | Shingo Omura | Shiwei Zhang | Siebe Schaap | Silvin Lubecki <31478878+silvin-lubecki@users.noreply.github.com> | Simon Ferquel | Slava Semushin | Solomon Hykes | Stefan Scherer | Stefan Weil | StefanSchoof | Stepan Blyshchak | Steve Lohr | Sven Dowideit | Takuya Noguchi | Thomas Leonard | Thomas Riccardi | Thomas Shaw | Tianon Gravi | Tibor Vass | Tiffany Jernigan | Tim Waugh | Tim Wraight | Tino Rusch | Tobias Klauser | Tomas Tomecek | Tomasz Kopczynski | Tomohiro Kusumoto | Troels Liebe Bentsen | Tõnis Tiigi | Valentin Lorentz | Vasek - Tom C | Victor Vieux | Victoria Bialas | Vincent Demeester | Vlad A. Ionescu | Vladislav Ivanov | Wang Yumu <37442693@qq.com> | Wei Fu | Wei Zhang | Xiaofan Zhang | Ximo Guanter | Yamazaki Masashi | Yan Song | Yong Tang | Yuichiro Kaneko | Yurii Rashkovskii | Zach Badgett | Ziv Tsarfati | a-palchikov | coryb | dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> | dito | eyherabh | f0 | genglu.gl | ggjulio | jgeiger | jlecordier | joey | jroenf | kevinmeredith | l00397676 | lalyos | liwenqi | lixiaobing10051267 | lomot | masibw | mikelinjie <294893458@qq.com> | msg | pieterdd | squeegels <1674195+squeegels@users.noreply.github.com> | sunchunming | wingkwong | zhangwenlong | 岁丰 | 沈陵 | 郑泽宇 " -core,github.com/moby/buildkit/frontend/dockerfile/shell,Apache-2.0,"Aaron L. Xu | Aaron Lehmann | Aaron Lehmann | Abdur Rehman | Addam Hardy | Adrian Plata | Aidan Hobson Sayers | Akihiro Suda | Alan Fregtman <941331+darkvertex@users.noreply.github.com> | Alex Couture-Beil | Alex Mayer | Alex Suraci | Alexander Morozov | Alexis Murzeau | Alice Frosi | Allen Sun | Amen Belayneh | Anca Iordache | Anda Xu | Anders F Björklund | Andrea Bolognani | Andrea Luzzardi | Andrew Chang | Andrey Smirnov | Andy Alt | Andy Caldwell | Ankush Agarwal | Anthony Sottile | Anurag Goel | Anusha Ragunathan | Arnaud Bailly | Avi Deitcher | Bastiaan Bakker | Ben Longo | Bertrand Paquet | Bin Liu | Brandon Mitchell | Brian Goff | Ce Gao | Chaerim Yeo | Changwei Ge | Chanhun Jeong | ChaosGramer | Charles Chan | Charles Korn | Charles Law | Chenbin | Chris Goller | Chris McKinnel | Christian Höltje | Christian Weichel | Ciro S. Costa | Claudiu Belu | Colin Chartier | Corey Larson | Cory Bennett | Cory Snider | CrazyMax | Csaba Apagyi | Dan Duvall | Daniel Cassidy | Daniel Nephin | Darren Shepherd | Dave Chen | Dave Henderson | Dave Tucker | David Calavera | David Dooling | David Gageot | David Karlsson | Davis Schirmer | Dennis Chen | Derek McGowan | Dharmit Shah | Ding Fei | Doug Davis | Edgar Lee | Eli Uriegas | Elias Faxö | Eng Zer Jun | Eric Engestrom | Erik Sipsma | Fernando Miguel | Fiona Klute | Foysal Iqbal | Fred Cox | Frieder Bluemle | Gabriel | Gabriel Adrian Samfira | Gaetan de Villele | Gahl Saraf | George | Govind Rai | Grant Reaber | Guilhem C | Hans van den Bogert | Hao Hu | Hector S | Helen Xie | Himanshu Pandey | Hiromu Nakamura | HowJMay | Hugo Santos | Ian Campbell | Ilya Dmitrichenko | Iskander (Alex) Sharipov | Jacob Gillespie | Jacob MacElroy | Jean-Pierre Huynh | Jeffrey Huang | Jesse Rittner | Jessica Frazelle | Jitender Kumar | John Howard | John Maguire | John Mulhausen | John Tims | Jon Zeolla | Jonathan Azoff | Jonathan Giannuzzi | Jonathan Stoppani | Jonny Stoten | JordanGoasdoue | Julian Goede | Justas Brazauskas | Justin Chadwell | Justin Cormack | Justin Garrison | Jörg Franke <359489+NewJorg@users.noreply.github.com> | Kang, Matthew | Kees Cook | Kevin Burke | Kir Kolyshkin | Kohei Tokunaga | Koichi Shiraishi | Kris-Mikael Krister | Kunal Kushwaha | Kyle | Lajos Papp | Levi Harrison | Lu Jingxiao | Luca Visentin | Maciej Kalisz | Madhav Puri | Manu Gupta | Marcus Comstedt | Mark Gordon | Marko Kohtala | Mary Anthony | Matias Insaurralde | Matt Kang | Matt Rickard | Maxime Lagresle | Michael Crosby | Michael Friis | Michael Irwin | Miguel Ángel Jimeno | Mihai Borobocea | Mike Brown | Mikhail Vasin | Misty Stanley-Jones | Miyachi Katsuya | Morgan Bauer | Morlay | Nao YONASHIRO | Natasha Jarus | Nathan Sullivan | Nick Miyake | Nick Santos | Nikhil Pandeti | Noel Georgi <18496730+frezbo@users.noreply.github.com> | Oliver Bristow | Omer Duchovne <79370724+od-cyera@users.noreply.github.com> | Omer Mizrahi | Ondrej Fabry | Otto Kekäläinen | Pablo Chico de Guzman | Patrick Hemmer | Patrick Lang | Patrick Van Stee | Paul ""TBBle"" Hampson | Paweł Gronowski | Peter Dave Hello | Petr Fedchenkov | Phil Estes | Pierre Fenoll | Pranav Pandit | Pratik Raj | Prayag Verma | Qiang Huang | Remy Suen | Ri Xu | Rob Taylor | Robert Estelle | Rubens Figueiredo | Sam Whited | Sascha Schwarze | Sean P. Kane | Sebastiaan van Stijn | Seiya Miyata | Serhat Gülçiçek | Sertac Ozercan | Shev Yan | Shijiang Wei | Shingo Omura | Shiwei Zhang | Siebe Schaap | Silvin Lubecki <31478878+silvin-lubecki@users.noreply.github.com> | Simon Ferquel | Slava Semushin | Solomon Hykes | Stefan Scherer | Stefan Weil | StefanSchoof | Stepan Blyshchak | Steve Lohr | Sven Dowideit | Takuya Noguchi | Thomas Leonard | Thomas Riccardi | Thomas Shaw | Tianon Gravi | Tibor Vass | Tiffany Jernigan | Tim Waugh | Tim Wraight | Tino Rusch | Tobias Klauser | Tomas Tomecek | Tomasz Kopczynski | Tomohiro Kusumoto | Troels Liebe Bentsen | Tõnis Tiigi | Valentin Lorentz | Vasek - Tom C | Victor Vieux | Victoria Bialas | Vincent Demeester | Vlad A. Ionescu | Vladislav Ivanov | Wang Yumu <37442693@qq.com> | Wei Fu | Wei Zhang | Xiaofan Zhang | Ximo Guanter | Yamazaki Masashi | Yan Song | Yong Tang | Yuichiro Kaneko | Yurii Rashkovskii | Zach Badgett | Ziv Tsarfati | a-palchikov | coryb | dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> | dito | eyherabh | f0 | genglu.gl | ggjulio | jgeiger | jlecordier | joey | jroenf | kevinmeredith | l00397676 | lalyos | liwenqi | lixiaobing10051267 | lomot | masibw | mikelinjie <294893458@qq.com> | msg | pieterdd | squeegels <1674195+squeegels@users.noreply.github.com> | sunchunming | wingkwong | zhangwenlong | 岁丰 | 沈陵 | 郑泽宇 " -core,github.com/moby/buildkit/util/stack,Apache-2.0,"Aaron L. Xu | Aaron Lehmann | Aaron Lehmann | Abdur Rehman | Addam Hardy | Adrian Plata | Aidan Hobson Sayers | Akihiro Suda | Alan Fregtman <941331+darkvertex@users.noreply.github.com> | Alex Couture-Beil | Alex Mayer | Alex Suraci | Alexander Morozov | Alexis Murzeau | Alice Frosi | Allen Sun | Amen Belayneh | Anca Iordache | Anda Xu | Anders F Björklund | Andrea Bolognani | Andrea Luzzardi | Andrew Chang | Andrey Smirnov | Andy Alt | Andy Caldwell | Ankush Agarwal | Anthony Sottile | Anurag Goel | Anusha Ragunathan | Arnaud Bailly | Avi Deitcher | Bastiaan Bakker | Ben Longo | Bertrand Paquet | Bin Liu | Brandon Mitchell | Brian Goff | Ce Gao | Chaerim Yeo | Changwei Ge | Chanhun Jeong | ChaosGramer | Charles Chan | Charles Korn | Charles Law | Chenbin | Chris Goller | Chris McKinnel | Christian Höltje | Christian Weichel | Ciro S. Costa | Claudiu Belu | Colin Chartier | Corey Larson | Cory Bennett | Cory Snider | CrazyMax | Csaba Apagyi | Dan Duvall | Daniel Cassidy | Daniel Nephin | Darren Shepherd | Dave Chen | Dave Henderson | Dave Tucker | David Calavera | David Dooling | David Gageot | David Karlsson | Davis Schirmer | Dennis Chen | Derek McGowan | Dharmit Shah | Ding Fei | Doug Davis | Edgar Lee | Eli Uriegas | Elias Faxö | Eng Zer Jun | Eric Engestrom | Erik Sipsma | Fernando Miguel | Fiona Klute | Foysal Iqbal | Fred Cox | Frieder Bluemle | Gabriel | Gabriel Adrian Samfira | Gaetan de Villele | Gahl Saraf | George | Govind Rai | Grant Reaber | Guilhem C | Hans van den Bogert | Hao Hu | Hector S | Helen Xie | Himanshu Pandey | Hiromu Nakamura | HowJMay | Hugo Santos | Ian Campbell | Ilya Dmitrichenko | Iskander (Alex) Sharipov | Jacob Gillespie | Jacob MacElroy | Jean-Pierre Huynh | Jeffrey Huang | Jesse Rittner | Jessica Frazelle | Jitender Kumar | John Howard | John Maguire | John Mulhausen | John Tims | Jon Zeolla | Jonathan Azoff | Jonathan Giannuzzi | Jonathan Stoppani | Jonny Stoten | JordanGoasdoue | Julian Goede | Justas Brazauskas | Justin Chadwell | Justin Cormack | Justin Garrison | Jörg Franke <359489+NewJorg@users.noreply.github.com> | Kang, Matthew | Kees Cook | Kevin Burke | Kir Kolyshkin | Kohei Tokunaga | Koichi Shiraishi | Kris-Mikael Krister | Kunal Kushwaha | Kyle | Lajos Papp | Levi Harrison | Lu Jingxiao | Luca Visentin | Maciej Kalisz | Madhav Puri | Manu Gupta | Marcus Comstedt | Mark Gordon | Marko Kohtala | Mary Anthony | Matias Insaurralde | Matt Kang | Matt Rickard | Maxime Lagresle | Michael Crosby | Michael Friis | Michael Irwin | Miguel Ángel Jimeno | Mihai Borobocea | Mike Brown | Mikhail Vasin | Misty Stanley-Jones | Miyachi Katsuya | Morgan Bauer | Morlay | Nao YONASHIRO | Natasha Jarus | Nathan Sullivan | Nick Miyake | Nick Santos | Nikhil Pandeti | Noel Georgi <18496730+frezbo@users.noreply.github.com> | Oliver Bristow | Omer Duchovne <79370724+od-cyera@users.noreply.github.com> | Omer Mizrahi | Ondrej Fabry | Otto Kekäläinen | Pablo Chico de Guzman | Patrick Hemmer | Patrick Lang | Patrick Van Stee | Paul ""TBBle"" Hampson | Paweł Gronowski | Peter Dave Hello | Petr Fedchenkov | Phil Estes | Pierre Fenoll | Pranav Pandit | Pratik Raj | Prayag Verma | Qiang Huang | Remy Suen | Ri Xu | Rob Taylor | Robert Estelle | Rubens Figueiredo | Sam Whited | Sascha Schwarze | Sean P. Kane | Sebastiaan van Stijn | Seiya Miyata | Serhat Gülçiçek | Sertac Ozercan | Shev Yan | Shijiang Wei | Shingo Omura | Shiwei Zhang | Siebe Schaap | Silvin Lubecki <31478878+silvin-lubecki@users.noreply.github.com> | Simon Ferquel | Slava Semushin | Solomon Hykes | Stefan Scherer | Stefan Weil | StefanSchoof | Stepan Blyshchak | Steve Lohr | Sven Dowideit | Takuya Noguchi | Thomas Leonard | Thomas Riccardi | Thomas Shaw | Tianon Gravi | Tibor Vass | Tiffany Jernigan | Tim Waugh | Tim Wraight | Tino Rusch | Tobias Klauser | Tomas Tomecek | Tomasz Kopczynski | Tomohiro Kusumoto | Troels Liebe Bentsen | Tõnis Tiigi | Valentin Lorentz | Vasek - Tom C | Victor Vieux | Victoria Bialas | Vincent Demeester | Vlad A. Ionescu | Vladislav Ivanov | Wang Yumu <37442693@qq.com> | Wei Fu | Wei Zhang | Xiaofan Zhang | Ximo Guanter | Yamazaki Masashi | Yan Song | Yong Tang | Yuichiro Kaneko | Yurii Rashkovskii | Zach Badgett | Ziv Tsarfati | a-palchikov | coryb | dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> | dito | eyherabh | f0 | genglu.gl | ggjulio | jgeiger | jlecordier | joey | jroenf | kevinmeredith | l00397676 | lalyos | liwenqi | lixiaobing10051267 | lomot | masibw | mikelinjie <294893458@qq.com> | msg | pieterdd | squeegels <1674195+squeegels@users.noreply.github.com> | sunchunming | wingkwong | zhangwenlong | 岁丰 | 沈陵 | 郑泽宇 " -core,github.com/moby/buildkit/util/suggest,Apache-2.0,"Aaron L. Xu | Aaron Lehmann | Aaron Lehmann | Abdur Rehman | Addam Hardy | Adrian Plata | Aidan Hobson Sayers | Akihiro Suda | Alan Fregtman <941331+darkvertex@users.noreply.github.com> | Alex Couture-Beil | Alex Mayer | Alex Suraci | Alexander Morozov | Alexis Murzeau | Alice Frosi | Allen Sun | Amen Belayneh | Anca Iordache | Anda Xu | Anders F Björklund | Andrea Bolognani | Andrea Luzzardi | Andrew Chang | Andrey Smirnov | Andy Alt | Andy Caldwell | Ankush Agarwal | Anthony Sottile | Anurag Goel | Anusha Ragunathan | Arnaud Bailly | Avi Deitcher | Bastiaan Bakker | Ben Longo | Bertrand Paquet | Bin Liu | Brandon Mitchell | Brian Goff | Ce Gao | Chaerim Yeo | Changwei Ge | Chanhun Jeong | ChaosGramer | Charles Chan | Charles Korn | Charles Law | Chenbin | Chris Goller | Chris McKinnel | Christian Höltje | Christian Weichel | Ciro S. Costa | Claudiu Belu | Colin Chartier | Corey Larson | Cory Bennett | Cory Snider | CrazyMax | Csaba Apagyi | Dan Duvall | Daniel Cassidy | Daniel Nephin | Darren Shepherd | Dave Chen | Dave Henderson | Dave Tucker | David Calavera | David Dooling | David Gageot | David Karlsson | Davis Schirmer | Dennis Chen | Derek McGowan | Dharmit Shah | Ding Fei | Doug Davis | Edgar Lee | Eli Uriegas | Elias Faxö | Eng Zer Jun | Eric Engestrom | Erik Sipsma | Fernando Miguel | Fiona Klute | Foysal Iqbal | Fred Cox | Frieder Bluemle | Gabriel | Gabriel Adrian Samfira | Gaetan de Villele | Gahl Saraf | George | Govind Rai | Grant Reaber | Guilhem C | Hans van den Bogert | Hao Hu | Hector S | Helen Xie | Himanshu Pandey | Hiromu Nakamura | HowJMay | Hugo Santos | Ian Campbell | Ilya Dmitrichenko | Iskander (Alex) Sharipov | Jacob Gillespie | Jacob MacElroy | Jean-Pierre Huynh | Jeffrey Huang | Jesse Rittner | Jessica Frazelle | Jitender Kumar | John Howard | John Maguire | John Mulhausen | John Tims | Jon Zeolla | Jonathan Azoff | Jonathan Giannuzzi | Jonathan Stoppani | Jonny Stoten | JordanGoasdoue | Julian Goede | Justas Brazauskas | Justin Chadwell | Justin Cormack | Justin Garrison | Jörg Franke <359489+NewJorg@users.noreply.github.com> | Kang, Matthew | Kees Cook | Kevin Burke | Kir Kolyshkin | Kohei Tokunaga | Koichi Shiraishi | Kris-Mikael Krister | Kunal Kushwaha | Kyle | Lajos Papp | Levi Harrison | Lu Jingxiao | Luca Visentin | Maciej Kalisz | Madhav Puri | Manu Gupta | Marcus Comstedt | Mark Gordon | Marko Kohtala | Mary Anthony | Matias Insaurralde | Matt Kang | Matt Rickard | Maxime Lagresle | Michael Crosby | Michael Friis | Michael Irwin | Miguel Ángel Jimeno | Mihai Borobocea | Mike Brown | Mikhail Vasin | Misty Stanley-Jones | Miyachi Katsuya | Morgan Bauer | Morlay | Nao YONASHIRO | Natasha Jarus | Nathan Sullivan | Nick Miyake | Nick Santos | Nikhil Pandeti | Noel Georgi <18496730+frezbo@users.noreply.github.com> | Oliver Bristow | Omer Duchovne <79370724+od-cyera@users.noreply.github.com> | Omer Mizrahi | Ondrej Fabry | Otto Kekäläinen | Pablo Chico de Guzman | Patrick Hemmer | Patrick Lang | Patrick Van Stee | Paul ""TBBle"" Hampson | Paweł Gronowski | Peter Dave Hello | Petr Fedchenkov | Phil Estes | Pierre Fenoll | Pranav Pandit | Pratik Raj | Prayag Verma | Qiang Huang | Remy Suen | Ri Xu | Rob Taylor | Robert Estelle | Rubens Figueiredo | Sam Whited | Sascha Schwarze | Sean P. Kane | Sebastiaan van Stijn | Seiya Miyata | Serhat Gülçiçek | Sertac Ozercan | Shev Yan | Shijiang Wei | Shingo Omura | Shiwei Zhang | Siebe Schaap | Silvin Lubecki <31478878+silvin-lubecki@users.noreply.github.com> | Simon Ferquel | Slava Semushin | Solomon Hykes | Stefan Scherer | Stefan Weil | StefanSchoof | Stepan Blyshchak | Steve Lohr | Sven Dowideit | Takuya Noguchi | Thomas Leonard | Thomas Riccardi | Thomas Shaw | Tianon Gravi | Tibor Vass | Tiffany Jernigan | Tim Waugh | Tim Wraight | Tino Rusch | Tobias Klauser | Tomas Tomecek | Tomasz Kopczynski | Tomohiro Kusumoto | Troels Liebe Bentsen | Tõnis Tiigi | Valentin Lorentz | Vasek - Tom C | Victor Vieux | Victoria Bialas | Vincent Demeester | Vlad A. Ionescu | Vladislav Ivanov | Wang Yumu <37442693@qq.com> | Wei Fu | Wei Zhang | Xiaofan Zhang | Ximo Guanter | Yamazaki Masashi | Yan Song | Yong Tang | Yuichiro Kaneko | Yurii Rashkovskii | Zach Badgett | Ziv Tsarfati | a-palchikov | coryb | dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> | dito | eyherabh | f0 | genglu.gl | ggjulio | jgeiger | jlecordier | joey | jroenf | kevinmeredith | l00397676 | lalyos | liwenqi | lixiaobing10051267 | lomot | masibw | mikelinjie <294893458@qq.com> | msg | pieterdd | squeegels <1674195+squeegels@users.noreply.github.com> | sunchunming | wingkwong | zhangwenlong | 岁丰 | 沈陵 | 郑泽宇 " +core,github.com/moby/buildkit/frontend/dockerfile/command,Apache-2.0,Aaron L. Xu | Aaron Lehmann | Akihiro Suda | Alexander Morozov | Alice Frosi | Allen Sun | Anda Xu | Anthony Sottile | Arnaud Bailly | Bin Liu | Brian Goff | Daniel Nephin | Dave Chen | David Calavera | Dennis Chen | Derek McGowan | Doug Davis | Edgar Lee | Eli Uriegas | Fernando Miguel | Hao Hu | Helen Xie | Himanshu Pandey | Hiromu Nakamura | Ian Campbell | Iskander (Alex) Sharipov | Jean-Pierre Huynh | Jessica Frazelle | John Howard | Jonathan Stoppani | Justas Brazauskas | Justin Cormack | Kunal Kushwaha | Lajos Papp | Matt Rickard | Michael Crosby | Miyachi Katsuya | Nao YONASHIRO | Natasha Jarus | Noel Georgi <18496730+frezbo@users.noreply.github.com> | Ondrej Fabry | Patrick Van Stee | Ri Xu | Sebastiaan van Stijn | Shev Yan | Simon Ferquel | Stefan Weil | Thomas Leonard | Thomas Shaw | Tibor Vass | Tiffany Jernigan | Tino Rusch | Tobias Klauser | Tomas Tomecek | Tomohiro Kusumoto | Tõnis Tiigi | Vincent Demeester | Wei Fu | Yong Tang | Yuichiro Kaneko | Ziv Tsarfati | f0 | 郑泽宇 +core,github.com/moby/buildkit/frontend/dockerfile/instructions,Apache-2.0,Aaron L. Xu | Aaron Lehmann | Akihiro Suda | Alexander Morozov | Alice Frosi | Allen Sun | Anda Xu | Anthony Sottile | Arnaud Bailly | Bin Liu | Brian Goff | Daniel Nephin | Dave Chen | David Calavera | Dennis Chen | Derek McGowan | Doug Davis | Edgar Lee | Eli Uriegas | Fernando Miguel | Hao Hu | Helen Xie | Himanshu Pandey | Hiromu Nakamura | Ian Campbell | Iskander (Alex) Sharipov | Jean-Pierre Huynh | Jessica Frazelle | John Howard | Jonathan Stoppani | Justas Brazauskas | Justin Cormack | Kunal Kushwaha | Lajos Papp | Matt Rickard | Michael Crosby | Miyachi Katsuya | Nao YONASHIRO | Natasha Jarus | Noel Georgi <18496730+frezbo@users.noreply.github.com> | Ondrej Fabry | Patrick Van Stee | Ri Xu | Sebastiaan van Stijn | Shev Yan | Simon Ferquel | Stefan Weil | Thomas Leonard | Thomas Shaw | Tibor Vass | Tiffany Jernigan | Tino Rusch | Tobias Klauser | Tomas Tomecek | Tomohiro Kusumoto | Tõnis Tiigi | Vincent Demeester | Wei Fu | Yong Tang | Yuichiro Kaneko | Ziv Tsarfati | f0 | 郑泽宇 +core,github.com/moby/buildkit/frontend/dockerfile/parser,Apache-2.0,Aaron L. Xu | Aaron Lehmann | Akihiro Suda | Alexander Morozov | Alice Frosi | Allen Sun | Anda Xu | Anthony Sottile | Arnaud Bailly | Bin Liu | Brian Goff | Daniel Nephin | Dave Chen | David Calavera | Dennis Chen | Derek McGowan | Doug Davis | Edgar Lee | Eli Uriegas | Fernando Miguel | Hao Hu | Helen Xie | Himanshu Pandey | Hiromu Nakamura | Ian Campbell | Iskander (Alex) Sharipov | Jean-Pierre Huynh | Jessica Frazelle | John Howard | Jonathan Stoppani | Justas Brazauskas | Justin Cormack | Kunal Kushwaha | Lajos Papp | Matt Rickard | Michael Crosby | Miyachi Katsuya | Nao YONASHIRO | Natasha Jarus | Noel Georgi <18496730+frezbo@users.noreply.github.com> | Ondrej Fabry | Patrick Van Stee | Ri Xu | Sebastiaan van Stijn | Shev Yan | Simon Ferquel | Stefan Weil | Thomas Leonard | Thomas Shaw | Tibor Vass | Tiffany Jernigan | Tino Rusch | Tobias Klauser | Tomas Tomecek | Tomohiro Kusumoto | Tõnis Tiigi | Vincent Demeester | Wei Fu | Yong Tang | Yuichiro Kaneko | Ziv Tsarfati | f0 | 郑泽宇 +core,github.com/moby/buildkit/frontend/dockerfile/shell,Apache-2.0,Aaron L. Xu | Aaron Lehmann | Akihiro Suda | Alexander Morozov | Alice Frosi | Allen Sun | Anda Xu | Anthony Sottile | Arnaud Bailly | Bin Liu | Brian Goff | Daniel Nephin | Dave Chen | David Calavera | Dennis Chen | Derek McGowan | Doug Davis | Edgar Lee | Eli Uriegas | Fernando Miguel | Hao Hu | Helen Xie | Himanshu Pandey | Hiromu Nakamura | Ian Campbell | Iskander (Alex) Sharipov | Jean-Pierre Huynh | Jessica Frazelle | John Howard | Jonathan Stoppani | Justas Brazauskas | Justin Cormack | Kunal Kushwaha | Lajos Papp | Matt Rickard | Michael Crosby | Miyachi Katsuya | Nao YONASHIRO | Natasha Jarus | Noel Georgi <18496730+frezbo@users.noreply.github.com> | Ondrej Fabry | Patrick Van Stee | Ri Xu | Sebastiaan van Stijn | Shev Yan | Simon Ferquel | Stefan Weil | Thomas Leonard | Thomas Shaw | Tibor Vass | Tiffany Jernigan | Tino Rusch | Tobias Klauser | Tomas Tomecek | Tomohiro Kusumoto | Tõnis Tiigi | Vincent Demeester | Wei Fu | Yong Tang | Yuichiro Kaneko | Ziv Tsarfati | f0 | 郑泽宇 +core,github.com/moby/buildkit/util/stack,Apache-2.0,Aaron L. Xu | Aaron Lehmann | Akihiro Suda | Alexander Morozov | Alice Frosi | Allen Sun | Anda Xu | Anthony Sottile | Arnaud Bailly | Bin Liu | Brian Goff | Daniel Nephin | Dave Chen | David Calavera | Dennis Chen | Derek McGowan | Doug Davis | Edgar Lee | Eli Uriegas | Fernando Miguel | Hao Hu | Helen Xie | Himanshu Pandey | Hiromu Nakamura | Ian Campbell | Iskander (Alex) Sharipov | Jean-Pierre Huynh | Jessica Frazelle | John Howard | Jonathan Stoppani | Justas Brazauskas | Justin Cormack | Kunal Kushwaha | Lajos Papp | Matt Rickard | Michael Crosby | Miyachi Katsuya | Nao YONASHIRO | Natasha Jarus | Noel Georgi <18496730+frezbo@users.noreply.github.com> | Ondrej Fabry | Patrick Van Stee | Ri Xu | Sebastiaan van Stijn | Shev Yan | Simon Ferquel | Stefan Weil | Thomas Leonard | Thomas Shaw | Tibor Vass | Tiffany Jernigan | Tino Rusch | Tobias Klauser | Tomas Tomecek | Tomohiro Kusumoto | Tõnis Tiigi | Vincent Demeester | Wei Fu | Yong Tang | Yuichiro Kaneko | Ziv Tsarfati | f0 | 郑泽宇 +core,github.com/moby/buildkit/util/suggest,Apache-2.0,Aaron L. Xu | Aaron Lehmann | Akihiro Suda | Alexander Morozov | Alice Frosi | Allen Sun | Anda Xu | Anthony Sottile | Arnaud Bailly | Bin Liu | Brian Goff | Daniel Nephin | Dave Chen | David Calavera | Dennis Chen | Derek McGowan | Doug Davis | Edgar Lee | Eli Uriegas | Fernando Miguel | Hao Hu | Helen Xie | Himanshu Pandey | Hiromu Nakamura | Ian Campbell | Iskander (Alex) Sharipov | Jean-Pierre Huynh | Jessica Frazelle | John Howard | Jonathan Stoppani | Justas Brazauskas | Justin Cormack | Kunal Kushwaha | Lajos Papp | Matt Rickard | Michael Crosby | Miyachi Katsuya | Nao YONASHIRO | Natasha Jarus | Noel Georgi <18496730+frezbo@users.noreply.github.com> | Ondrej Fabry | Patrick Van Stee | Ri Xu | Sebastiaan van Stijn | Shev Yan | Simon Ferquel | Stefan Weil | Thomas Leonard | Thomas Shaw | Tibor Vass | Tiffany Jernigan | Tino Rusch | Tobias Klauser | Tomas Tomecek | Tomohiro Kusumoto | Tõnis Tiigi | Vincent Demeester | Wei Fu | Yong Tang | Yuichiro Kaneko | Ziv Tsarfati | f0 | 郑泽宇 core,github.com/moby/locker,Apache-2.0,"Copyright 2013-2018 Docker, Inc" core,github.com/moby/sys/mountinfo,Apache-2.0,Copyright (c) 2014-2018 The Docker & Go Authors. All rights reserved. core,github.com/moby/sys/sequential,Apache-2.0,Kir Kolyshkin |Sebastiaan van Stijn |Sebastiaan van Stijn |Tibor Vass |Brian Goff |John Howard |Victor Vieux |Michael Crosby |Daniel Nephin |Tianon Gravi |Vincent Batts |Akihiro Suda |Michael Crosby |Yong Tang |Kir Kolyshkin |Christopher Jones |Guillaume J. Charmes |Kato Kazuyoshi |Manu Gupta |Michael Crosby |Vincent Demeester |Aleksa Sarai |Amit Krishnan |Arnaud Porterie |Brian Goff |Brian Goff |Dan Walsh |Michael Crosby |Phil Estes |Shengjing Zhu |Solomon Hykes |Tobias Klauser |lalyos |unclejack |Akihiro Suda |Alexander Morozov |Jessica Frazelle |Jessica Frazelle |Jessie Frazelle |Justas Brazauskas |Justin Cormack |Kazuyoshi Kato |Naveed Jamil |Vincent Demeester |shuai-z |Ahmet Alp Balkan |Aleksa Sarai |Alexander Larsson |Alexander Morozov |Alexandr Morozov |Alexandr Morozov |Antonio Murdaca |Antonio Murdaca |Antonio Murdaca |Artem Khramov |Cezar Sa Espinola |Chen Hanxiao |Darren Stahl |David Calavera |Derek McGowan |Eng Zer Jun |Erik Dubbelboer |Fabian Kramm |Guillaume Dufour |Guillaume J. Charmes |Hajime Tazaki |Jamie Hannaford |Jason A. Donenfeld |Jhon Honce |Josh Soref |Kasper Fabæch Brandt |Kathryn Baldauf |Kenfe-Mickael Laventure |Kirill Kolyshkin |Muhammad Kaisar Arkhan |Oli |Olli Janatuinen |Paul Nasrat |Peter Bourgon |Peter Waller |Phil Estes |Samuel Karp |Stefan J. Wernli |Steven Hartland |Stig Larsson |Tim Wang |Victor Vieux |Victor Vieux |Yan Feng |jhowardmsft |liuxiaodong |phineas |unclejack |yuexiao-wang |谢致邦 (XIE Zhibang) @@ -1212,6 +1502,7 @@ core,github.com/oliveagle/jsonpath,MIT,Copyright (c) 2015 oliver core,github.com/open-policy-agent/opa/ast,Apache-2.0,Copyright 2016 The OPA Authors. All rights reserved. core,github.com/open-policy-agent/opa/ast/internal/scanner,Apache-2.0,Copyright 2016 The OPA Authors. All rights reserved. core,github.com/open-policy-agent/opa/ast/internal/tokens,Apache-2.0,Copyright 2016 The OPA Authors. All rights reserved. +core,github.com/open-policy-agent/opa/ast/json,Apache-2.0,Copyright 2016 The OPA Authors. All rights reserved. core,github.com/open-policy-agent/opa/ast/location,Apache-2.0,Copyright 2016 The OPA Authors. All rights reserved. core,github.com/open-policy-agent/opa/bundle,Apache-2.0,Copyright 2016 The OPA Authors. All rights reserved. core,github.com/open-policy-agent/opa/capabilities,Apache-2.0,Copyright 2016 The OPA Authors. All rights reserved. @@ -1220,6 +1511,7 @@ core,github.com/open-policy-agent/opa/format,Apache-2.0,Copyright 2016 The OPA A core,github.com/open-policy-agent/opa/hooks,Apache-2.0,Copyright 2016 The OPA Authors. All rights reserved. core,github.com/open-policy-agent/opa/internal/bundle,Apache-2.0,Copyright 2016 The OPA Authors. All rights reserved. core,github.com/open-policy-agent/opa/internal/cidr/merge,Apache-2.0,Copyright 2016 The OPA Authors. All rights reserved. +core,github.com/open-policy-agent/opa/internal/compiler,Apache-2.0,Copyright 2016 The OPA Authors. All rights reserved. core,github.com/open-policy-agent/opa/internal/compiler/wasm,Apache-2.0,Copyright 2016 The OPA Authors. All rights reserved. core,github.com/open-policy-agent/opa/internal/compiler/wasm/opa,Apache-2.0,Copyright 2016 The OPA Authors. All rights reserved. core,github.com/open-policy-agent/opa/internal/config,Apache-2.0,Copyright 2016 The OPA Authors. All rights reserved. @@ -1254,6 +1546,7 @@ core,github.com/open-policy-agent/opa/internal/providers/aws/crypto,Apache-2.0,C core,github.com/open-policy-agent/opa/internal/providers/aws/v4,Apache-2.0,Copyright 2016 The OPA Authors. All rights reserved. core,github.com/open-policy-agent/opa/internal/ref,Apache-2.0,Copyright 2016 The OPA Authors. All rights reserved. core,github.com/open-policy-agent/opa/internal/rego/opa,Apache-2.0,Copyright 2016 The OPA Authors. All rights reserved. +core,github.com/open-policy-agent/opa/internal/report,Apache-2.0,Copyright 2016 The OPA Authors. All rights reserved. core,github.com/open-policy-agent/opa/internal/runtime/init,Apache-2.0,Copyright 2016 The OPA Authors. All rights reserved. core,github.com/open-policy-agent/opa/internal/semver,Apache-2.0,Copyright 2016 The OPA Authors. All rights reserved. core,github.com/open-policy-agent/opa/internal/strings,Apache-2.0,Copyright 2016 The OPA Authors. All rights reserved. @@ -1280,6 +1573,7 @@ core,github.com/open-policy-agent/opa/plugins/rest,Apache-2.0,Copyright 2016 The core,github.com/open-policy-agent/opa/rego,Apache-2.0,Copyright 2016 The OPA Authors. All rights reserved. core,github.com/open-policy-agent/opa/resolver,Apache-2.0,Copyright 2016 The OPA Authors. All rights reserved. core,github.com/open-policy-agent/opa/resolver/wasm,Apache-2.0,Copyright 2016 The OPA Authors. All rights reserved. +core,github.com/open-policy-agent/opa/schemas,Apache-2.0,Copyright 2016 The OPA Authors. All rights reserved. core,github.com/open-policy-agent/opa/storage,Apache-2.0,Copyright 2016 The OPA Authors. All rights reserved. core,github.com/open-policy-agent/opa/storage/inmem,Apache-2.0,Copyright 2016 The OPA Authors. All rights reserved. core,github.com/open-policy-agent/opa/storage/internal/errors,Apache-2.0,Copyright 2016 The OPA Authors. All rights reserved. @@ -1307,24 +1601,38 @@ core,github.com/openshift/api/security/v1,Apache-2.0,"Copyright 2020 Red Hat, In core,github.com/opentracing/opentracing-go,Apache-2.0,Copyright 2016 The OpenTracing Authors core,github.com/opentracing/opentracing-go/ext,Apache-2.0,Copyright 2016 The OpenTracing Authors core,github.com/opentracing/opentracing-go/log,Apache-2.0,Copyright 2016 The OpenTracing Authors +core,github.com/openvex/go-vex/pkg/csaf,Apache-2.0,Copyright 2023 The OpenVEX Authors +core,github.com/openvex/go-vex/pkg/vex,Apache-2.0,Copyright 2023 The OpenVEX Authors core,github.com/outcaste-io/ristretto,Apache-2.0,"Copyright (c) 2014 Andreas Briese, eduToolbox@Bri-C GmbH, Sarstedt | Copyright (c) 2019 Ewan Chou | Copyright 2019 Dgraph Labs, Inc. and Contributors | Copyright 2020 Dgraph Labs, Inc. and Contributors | Copyright 2020 The LevelDB-Go and Pebble Authors. All rights reserved. | Copyright 2021 Dgraph Labs, Inc. and Contributors" core,github.com/outcaste-io/ristretto/z,MIT,"Copyright (c) 2014 Andreas Briese, eduToolbox@Bri-C GmbH, Sarstedt | Copyright (c) 2019 Ewan Chou | Copyright 2019 Dgraph Labs, Inc. and Contributors | Copyright 2020 Dgraph Labs, Inc. and Contributors | Copyright 2020 The LevelDB-Go and Pebble Authors. All rights reserved. | Copyright 2021 Dgraph Labs, Inc. and Contributors" core,github.com/outcaste-io/ristretto/z/simd,MIT,"Copyright (c) 2014 Andreas Briese, eduToolbox@Bri-C GmbH, Sarstedt | Copyright (c) 2019 Ewan Chou | Copyright 2019 Dgraph Labs, Inc. and Contributors | Copyright 2020 Dgraph Labs, Inc. and Contributors | Copyright 2020 The LevelDB-Go and Pebble Authors. All rights reserved. | Copyright 2021 Dgraph Labs, Inc. and Contributors" core,github.com/owenrumney/go-sarif/v2/sarif,Unlicense,"copyright interest in the | copyright law | copyright laws, the author or authors" +core,github.com/owenrumney/squealer/internal/pkg/match,Unlicense,"copyright interest in the | copyright law | copyright laws, the author or authors" +core,github.com/owenrumney/squealer/internal/pkg/metrics,Unlicense,"copyright interest in the | copyright law | copyright laws, the author or authors" +core,github.com/owenrumney/squealer/internal/pkg/scan,Unlicense,"copyright interest in the | copyright law | copyright laws, the author or authors" +core,github.com/owenrumney/squealer/pkg/config,Unlicense,"copyright interest in the | copyright law | copyright laws, the author or authors" +core,github.com/owenrumney/squealer/pkg/result,Unlicense,"copyright interest in the | copyright law | copyright laws, the author or authors" +core,github.com/owenrumney/squealer/pkg/squealer,Unlicense,"copyright interest in the | copyright law | copyright laws, the author or authors" core,github.com/package-url/packageurl-go,MIT,Copyright (c) the purl authors core,github.com/pahanini/go-grpc-bidirectional-streaming-example/src/proto,MIT,Copyright (c) 2017 Pavel Tetyaev core,github.com/patrickmn/go-cache,MIT,Alex Edwards | Copyright (c) 2012-2017 Patrick Mylund Nielsen and the go-cache contributors | Dustin Sallings | Jason Mooberry | Sergey Shepelev core,github.com/pborman/uuid,BSD-3-Clause,"Copyright (c) 2009,2014 Google Inc. All rights reserved | Paul Borman " core,github.com/pelletier/go-toml,MIT,"Copyright (c) 2013 - 2021 Thomas Pelletier, Eric Anderton" +core,github.com/pelletier/go-toml/v2,MIT,"Copyright (c) 2013 - 2021 Thomas Pelletier, Eric Anderton | Copyright (c) 2021 - 2023 Thomas Pelletier" +core,github.com/pelletier/go-toml/v2/internal/characters,MIT,"Copyright (c) 2013 - 2021 Thomas Pelletier, Eric Anderton | Copyright (c) 2021 - 2023 Thomas Pelletier" +core,github.com/pelletier/go-toml/v2/internal/danger,MIT,"Copyright (c) 2013 - 2021 Thomas Pelletier, Eric Anderton | Copyright (c) 2021 - 2023 Thomas Pelletier" +core,github.com/pelletier/go-toml/v2/internal/tracker,MIT,"Copyright (c) 2013 - 2021 Thomas Pelletier, Eric Anderton | Copyright (c) 2021 - 2023 Thomas Pelletier" +core,github.com/pelletier/go-toml/v2/unstable,MIT,"Copyright (c) 2013 - 2021 Thomas Pelletier, Eric Anderton | Copyright (c) 2021 - 2023 Thomas Pelletier" core,github.com/philhofer/fwd,MIT,"Copyright (c) 2014-2015, Philip Hofer" core,github.com/pierrec/lz4/v4,BSD-3-Clause,"Copyright (c) 2015, Pierre Curto" core,github.com/pierrec/lz4/v4/internal/lz4block,BSD-3-Clause,"Copyright (c) 2015, Pierre Curto" core,github.com/pierrec/lz4/v4/internal/lz4errors,BSD-3-Clause,"Copyright (c) 2015, Pierre Curto" core,github.com/pierrec/lz4/v4/internal/lz4stream,BSD-3-Clause,"Copyright (c) 2015, Pierre Curto" core,github.com/pierrec/lz4/v4/internal/xxh32,BSD-3-Clause,"Copyright (c) 2015, Pierre Curto" -core,github.com/pjbgf/sha1cd,Apache-2.0,"Copyright 2009 The Go Authors. All rights reserved. | Copyright 2017 Marc Stevens , Dan Shumow | Copyright 2022 Paulo Gomes " -core,github.com/pjbgf/sha1cd/internal,Apache-2.0,"Copyright 2009 The Go Authors. All rights reserved. | Copyright 2017 Marc Stevens , Dan Shumow | Copyright 2022 Paulo Gomes " -core,github.com/pjbgf/sha1cd/ubc,Apache-2.0,"Copyright 2009 The Go Authors. All rights reserved. | Copyright 2017 Marc Stevens , Dan Shumow | Copyright 2022 Paulo Gomes " +core,github.com/pjbgf/sha1cd,Apache-2.0,Copyright 2023 pjbgf +core,github.com/pjbgf/sha1cd/internal,Apache-2.0,Copyright 2023 pjbgf +core,github.com/pjbgf/sha1cd/ubc,Apache-2.0,Copyright 2023 pjbgf +core,github.com/pkg/browser,BSD-2-Clause,"Copyright (c) 2014, Dave Cheney " core,github.com/pkg/errors,BSD-2-Clause,"Copyright (c) 2015, Dave Cheney " core,github.com/planetscale/vtprotobuf/protohelpers,BSD-3-Clause,"Copyright (c) 2013, The GoGo Authors. All rights reserved | Copyright (c) 2018 The Go Authors. All rights reserved | Copyright (c) 2021, PlanetScale Inc. All rights reserved" core,github.com/pmezard/go-difflib/difflib,BSD-3-Clause,"Copyright (c) 2013, Patrick Mezard" @@ -1362,8 +1670,11 @@ core,github.com/rs/zerolog,MIT,Copyright (c) 2017 Olivier Poitrey core,github.com/rs/zerolog/internal/cbor,MIT,Copyright (c) 2017 Olivier Poitrey core,github.com/rs/zerolog/internal/json,MIT,Copyright (c) 2017 Olivier Poitrey core,github.com/rs/zerolog/log,MIT,Copyright (c) 2017 Olivier Poitrey +core,github.com/sagikazarmark/locafero,MIT,Copyright (c) 2023 Márk Sági-Kazár +core,github.com/sagikazarmark/slog-shim,BSD-3-Clause,Copyright (c) 2009 The Go Authors. All rights reserved core,github.com/samber/lo,MIT,Copyright (c) 2022 Samuel Berthe | Copyright © 2022 [Samuel Berthe](https://github.com/samber) core,github.com/samuel/go-zookeeper/zk,BSD-3-Clause,"Copyright (c) 2013, Samuel Stauffer " +core,github.com/santhosh-tekuri/jsonschema/v5,Apache-2.0,Copyright (c) 2017-2024 Santhosh Kumar Tekuri core,github.com/saracen/walker,MIT,Copyright (c) 2019 Arran Walker core,github.com/sassoftware/go-rpmutils,Apache-2.0,Copyright (c) SAS Institute Inc. core,github.com/sassoftware/go-rpmutils/cpio,Apache-2.0,Copyright (c) SAS Institute Inc. @@ -1404,20 +1715,29 @@ core,github.com/skeema/knownhosts,Apache-2.0,Copyright 2023 Skeema LLC and the S core,github.com/skydive-project/go-debouncer,Apache-2.0,"Copyright (C) 2018 Red Hat, Inc." core,github.com/smira/go-ftp-protocol/protocol,MIT,Copyright (c) 2014 Andrey Smirnov core,github.com/smira/go-xz,MIT,Copyright (c) 2015 Andrey Smirnov +core,github.com/sourcegraph/conc,MIT,Copyright (c) 2023 Sourcegraph +core,github.com/sourcegraph/conc/internal/multierror,MIT,Copyright (c) 2023 Sourcegraph +core,github.com/sourcegraph/conc/iter,MIT,Copyright (c) 2023 Sourcegraph +core,github.com/sourcegraph/conc/panics,MIT,Copyright (c) 2023 Sourcegraph core,github.com/spaolacci/murmur3,BSD-3-Clause,"Copyright 2013, Sébastien Paolacci" -core,github.com/spdx/tools-golang/jsonloader,Apache-2.0,Copyright (c) 2018 The Authors -core,github.com/spdx/tools-golang/jsonloader/parser2v2,Apache-2.0,Copyright (c) 2018 The Authors -core,github.com/spdx/tools-golang/jsonsaver,Apache-2.0,Copyright (c) 2018 The Authors -core,github.com/spdx/tools-golang/jsonsaver/saver2v2,Apache-2.0,Copyright (c) 2018 The Authors +core,github.com/spdx/tools-golang/convert,Apache-2.0,Copyright (c) 2018 The Authors +core,github.com/spdx/tools-golang/json,Apache-2.0,Copyright (c) 2018 The Authors +core,github.com/spdx/tools-golang/json/marshal,Apache-2.0,Copyright (c) 2018 The Authors core,github.com/spdx/tools-golang/spdx,Apache-2.0,Copyright (c) 2018 The Authors -core,github.com/spdx/tools-golang/spdxlib,Apache-2.0,Copyright (c) 2018 The Authors -core,github.com/spdx/tools-golang/tvloader,Apache-2.0,Copyright (c) 2018 The Authors -core,github.com/spdx/tools-golang/tvloader/parser2v1,Apache-2.0,Copyright (c) 2018 The Authors -core,github.com/spdx/tools-golang/tvloader/parser2v2,Apache-2.0,Copyright (c) 2018 The Authors -core,github.com/spdx/tools-golang/tvloader/reader,Apache-2.0,Copyright (c) 2018 The Authors -core,github.com/spdx/tools-golang/tvsaver,Apache-2.0,Copyright (c) 2018 The Authors -core,github.com/spdx/tools-golang/tvsaver/saver2v1,Apache-2.0,Copyright (c) 2018 The Authors -core,github.com/spdx/tools-golang/tvsaver/saver2v2,Apache-2.0,Copyright (c) 2018 The Authors +core,github.com/spdx/tools-golang/spdx/common,Apache-2.0,Copyright (c) 2018 The Authors +core,github.com/spdx/tools-golang/spdx/v2/common,Apache-2.0,Copyright (c) 2018 The Authors +core,github.com/spdx/tools-golang/spdx/v2/v2_1,Apache-2.0,Copyright (c) 2018 The Authors +core,github.com/spdx/tools-golang/spdx/v2/v2_1/tagvalue/reader,Apache-2.0,Copyright (c) 2018 The Authors +core,github.com/spdx/tools-golang/spdx/v2/v2_1/tagvalue/writer,Apache-2.0,Copyright (c) 2018 The Authors +core,github.com/spdx/tools-golang/spdx/v2/v2_2,Apache-2.0,Copyright (c) 2018 The Authors +core,github.com/spdx/tools-golang/spdx/v2/v2_2/tagvalue/reader,Apache-2.0,Copyright (c) 2018 The Authors +core,github.com/spdx/tools-golang/spdx/v2/v2_2/tagvalue/writer,Apache-2.0,Copyright (c) 2018 The Authors +core,github.com/spdx/tools-golang/spdx/v2/v2_3,Apache-2.0,Copyright (c) 2018 The Authors +core,github.com/spdx/tools-golang/spdx/v2/v2_3/tagvalue/reader,Apache-2.0,Copyright (c) 2018 The Authors +core,github.com/spdx/tools-golang/spdx/v2/v2_3/tagvalue/writer,Apache-2.0,Copyright (c) 2018 The Authors +core,github.com/spdx/tools-golang/tagvalue,Apache-2.0,Copyright (c) 2018 The Authors +core,github.com/spdx/tools-golang/tagvalue/reader,Apache-2.0,Copyright (c) 2018 The Authors +core,github.com/spdx/tools-golang/utils,Apache-2.0,Copyright (c) 2018 The Authors core,github.com/spf13/afero,Apache-2.0,Copyright 2013 tsuru authors. All rights reserved. | Copyright © 2014 Steve Francia . core,github.com/spf13/afero/internal/common,Apache-2.0,Copyright 2013 tsuru authors. All rights reserved. | Copyright © 2014 Steve Francia . core,github.com/spf13/afero/mem,Apache-2.0,Copyright 2013 tsuru authors. All rights reserved. | Copyright © 2014 Steve Francia . @@ -1425,6 +1745,16 @@ core,github.com/spf13/cast,MIT,Copyright (c) 2014 Steve Francia core,github.com/spf13/cobra,Apache-2.0,Copyright © 2013 Steve Francia . core,github.com/spf13/jwalterweatherman,MIT,Copyright (c) 2014 Steve Francia core,github.com/spf13/pflag,BSD-3-Clause,Copyright (c) 2012 Alex Ogier. All rights reserved | Copyright (c) 2012 The Go Authors. All rights reserved +core,github.com/spf13/viper,MIT,Copyright (c) 2014 Steve Francia +core,github.com/spf13/viper/internal/encoding,MIT,Copyright (c) 2014 Steve Francia +core,github.com/spf13/viper/internal/encoding/dotenv,MIT,Copyright (c) 2014 Steve Francia +core,github.com/spf13/viper/internal/encoding/hcl,MIT,Copyright (c) 2014 Steve Francia +core,github.com/spf13/viper/internal/encoding/ini,MIT,Copyright (c) 2014 Steve Francia +core,github.com/spf13/viper/internal/encoding/javaproperties,MIT,Copyright (c) 2014 Steve Francia +core,github.com/spf13/viper/internal/encoding/json,MIT,Copyright (c) 2014 Steve Francia +core,github.com/spf13/viper/internal/encoding/toml,MIT,Copyright (c) 2014 Steve Francia +core,github.com/spf13/viper/internal/encoding/yaml,MIT,Copyright (c) 2014 Steve Francia +core,github.com/spf13/viper/internal/features,MIT,Copyright (c) 2014 Steve Francia core,github.com/stoewer/go-strcase,MIT,"Copyright (c) 2017, Adrian Stoewer " core,github.com/stormcat24/protodep,Apache-2.0,Copyright Akinori Yamada core,github.com/stormcat24/protodep/pkg/logger,Apache-2.0,Copyright Akinori Yamada @@ -1434,6 +1764,7 @@ core,github.com/stretchr/testify/assert,MIT,"Copyright (c) 2012-2020 Mat Ryer, T core,github.com/stretchr/testify/mock,MIT,"Copyright (c) 2012-2020 Mat Ryer, Tyler Bunnell and contributors" core,github.com/stretchr/testify/require,MIT,"Copyright (c) 2012-2020 Mat Ryer, Tyler Bunnell and contributors" core,github.com/stretchr/testify/suite,MIT,"Copyright (c) 2012-2020 Mat Ryer, Tyler Bunnell and contributors" +core,github.com/subosito/gotenv,MIT,Copyright (c) 2013 Alif Rachmawadi core,github.com/swaggest/jsonschema-go,MIT,Copyright (c) 2019 swaggest core,github.com/swaggest/refl,MIT,Copyright (c) 2020 swaggest core,github.com/syndtr/gocapability/capability,BSD-2-Clause,Copyright 2013 Suryandaru Triandana @@ -1451,6 +1782,37 @@ core,github.com/syndtr/goleveldb/leveldb/table,BSD-2-Clause,Copyright 2012 Surya core,github.com/syndtr/goleveldb/leveldb/util,BSD-2-Clause,Copyright 2012 Suryandaru Triandana core,github.com/tchap/go-patricia/v2/patricia,MIT,Copyright (c) 2014 The AUTHORS | Ondřej Kupka | This is the complete list of go-patricia copyright holders: core,github.com/tedsuo/rata,MIT,Copyright (c) 2014 Ted Young +core,github.com/tetratelabs/wazero,Apache-2.0,Copyright 2020-2023 wazero authors +core,github.com/tetratelabs/wazero/api,Apache-2.0,Copyright 2020-2023 wazero authors +core,github.com/tetratelabs/wazero/experimental,Apache-2.0,Copyright 2020-2023 wazero authors +core,github.com/tetratelabs/wazero/imports/wasi_snapshot_preview1,Apache-2.0,Copyright 2020-2023 wazero authors +core,github.com/tetratelabs/wazero/internal/asm,Apache-2.0,Copyright 2020-2023 wazero authors +core,github.com/tetratelabs/wazero/internal/asm/amd64,Apache-2.0,Copyright 2020-2023 wazero authors +core,github.com/tetratelabs/wazero/internal/asm/arm64,Apache-2.0,Copyright 2020-2023 wazero authors +core,github.com/tetratelabs/wazero/internal/bitpack,Apache-2.0,Copyright 2020-2023 wazero authors +core,github.com/tetratelabs/wazero/internal/descriptor,Apache-2.0,Copyright 2020-2023 wazero authors +core,github.com/tetratelabs/wazero/internal/engine/compiler,Apache-2.0,Copyright 2020-2023 wazero authors +core,github.com/tetratelabs/wazero/internal/engine/interpreter,Apache-2.0,Copyright 2020-2023 wazero authors +core,github.com/tetratelabs/wazero/internal/filecache,Apache-2.0,Copyright 2020-2023 wazero authors +core,github.com/tetratelabs/wazero/internal/fsapi,Apache-2.0,Copyright 2020-2023 wazero authors +core,github.com/tetratelabs/wazero/internal/ieee754,Apache-2.0,Copyright 2020-2023 wazero authors +core,github.com/tetratelabs/wazero/internal/internalapi,Apache-2.0,Copyright 2020-2023 wazero authors +core,github.com/tetratelabs/wazero/internal/leb128,Apache-2.0,Copyright 2020-2023 wazero authors +core,github.com/tetratelabs/wazero/internal/moremath,Apache-2.0,Copyright 2020-2023 wazero authors +core,github.com/tetratelabs/wazero/internal/platform,Apache-2.0,Copyright 2020-2023 wazero authors +core,github.com/tetratelabs/wazero/internal/sock,Apache-2.0,Copyright 2020-2023 wazero authors +core,github.com/tetratelabs/wazero/internal/sys,Apache-2.0,Copyright 2020-2023 wazero authors +core,github.com/tetratelabs/wazero/internal/sysfs,Apache-2.0,Copyright 2020-2023 wazero authors +core,github.com/tetratelabs/wazero/internal/u32,Apache-2.0,Copyright 2020-2023 wazero authors +core,github.com/tetratelabs/wazero/internal/u64,Apache-2.0,Copyright 2020-2023 wazero authors +core,github.com/tetratelabs/wazero/internal/version,Apache-2.0,Copyright 2020-2023 wazero authors +core,github.com/tetratelabs/wazero/internal/wasip1,Apache-2.0,Copyright 2020-2023 wazero authors +core,github.com/tetratelabs/wazero/internal/wasm,Apache-2.0,Copyright 2020-2023 wazero authors +core,github.com/tetratelabs/wazero/internal/wasm/binary,Apache-2.0,Copyright 2020-2023 wazero authors +core,github.com/tetratelabs/wazero/internal/wasmdebug,Apache-2.0,Copyright 2020-2023 wazero authors +core,github.com/tetratelabs/wazero/internal/wasmruntime,Apache-2.0,Copyright 2020-2023 wazero authors +core,github.com/tetratelabs/wazero/internal/wazeroir,Apache-2.0,Copyright 2020-2023 wazero authors +core,github.com/tetratelabs/wazero/sys,Apache-2.0,Copyright 2020-2023 wazero authors core,github.com/tinylib/msgp,MIT,Copyright (c) 2009 The Go Authors (license at http://golang.org) where indicated | Copyright (c) 2014 Philip Hofer core,github.com/tinylib/msgp/gen,MIT,Copyright (c) 2009 The Go Authors (license at http://golang.org) where indicated | Copyright (c) 2014 Philip Hofer core,github.com/tinylib/msgp/msgp,MIT,Copyright (c) 2009 The Go Authors (license at http://golang.org) where indicated | Copyright (c) 2014 Philip Hofer @@ -1514,6 +1876,14 @@ core,github.com/xor-gate/ar,MIT,Copyright (c) 2013 Blake Smith | CZ.NIC z.s.p.o. | Copyright (c) 2014 The mathutil Authors. All rights reserved | Edward Betts | Faiz Abbasi | Gary Burd | Jan Mercl <0xjnml@gmail.com> | Muhammad Surya | Santiago De la Cruz core,modernc.org/memory,BSD-3-Clause,Anup Kodlekere | Copyright (c) 2017 The Memory Authors. All rights reserved | Gleb Sakhnov | Jan Mercl <0xjnml@gmail.com> | Steffen Butzer | ZHU Zijia core,modernc.org/opt,BSD-3-Clause,Copyright (c) 2019 The Opt Authors. All rights reserved | Jan Mercl <0xjnml@gmail.com> -core,modernc.org/sqlite,BSD-3-Clause,Alexander Menzhinsky | Artyom Pervukhin | Copyright (c) 2017 The Sqlite Authors. All rights reserved | Dan Peterson | David Skinner | David Walton | Davsk Ltd Co | FlyingOnion <731677080@qq.com> | Gleb Sakhnov | Jaap Aarts | Jan Mercl <0xjnml@gmail.com> | Logan Snow | Matthew Gabeler-Lee | Michael Hoffmann | Ross Light | Saed SayedAhmed | Steffen Butzer | Yaacov Akiba Slama -core,modernc.org/sqlite/lib,BSD-3-Clause,Alexander Menzhinsky | Artyom Pervukhin | Copyright (c) 2017 The Sqlite Authors. All rights reserved | Dan Peterson | David Skinner | David Walton | Davsk Ltd Co | FlyingOnion <731677080@qq.com> | Gleb Sakhnov | Jaap Aarts | Jan Mercl <0xjnml@gmail.com> | Logan Snow | Matthew Gabeler-Lee | Michael Hoffmann | Ross Light | Saed SayedAhmed | Steffen Butzer | Yaacov Akiba Slama +core,modernc.org/sqlite,BSD-3-Clause,Alexander Menzhinsky | Alexey Palazhchenko | Angus Dippenaar | Artyom Pervukhin | Copyright (c) 2017 The Sqlite Authors. All rights reserved | Dan Kortschak | Dan Peterson | David Skinner | David Walton | Davsk Ltd Co | Elle Mouton | FerretDB Inc. | FlyingOnion <731677080@qq.com> | Gleb Sakhnov | Jaap Aarts | Jan Mercl <0xjnml@gmail.com> | Josh Bleecher Snyder | Josh Klein | Logan Snow | Mark Summerfield | Matthew Gabeler-Lee | Michael Hoffmann | Michael Rykov | Romain Le Disez | Ross Light | Saed SayedAhmed | Sean McGivern | Steffen Butzer | W. Michael Petullo | Yaacov Akiba Slama +core,modernc.org/sqlite/lib,BSD-3-Clause,Alexander Menzhinsky | Alexey Palazhchenko | Angus Dippenaar | Artyom Pervukhin | Copyright (c) 2017 The Sqlite Authors. All rights reserved | Dan Kortschak | Dan Peterson | David Skinner | David Walton | Davsk Ltd Co | Elle Mouton | FerretDB Inc. | FlyingOnion <731677080@qq.com> | Gleb Sakhnov | Jaap Aarts | Jan Mercl <0xjnml@gmail.com> | Josh Bleecher Snyder | Josh Klein | Logan Snow | Mark Summerfield | Matthew Gabeler-Lee | Michael Hoffmann | Michael Rykov | Romain Le Disez | Ross Light | Saed SayedAhmed | Sean McGivern | Steffen Butzer | W. Michael Petullo | Yaacov Akiba Slama core,modernc.org/strutil,BSD-3-Clause,CZ.NIC z.s.p.o. | Copyright (c) 2014 The strutil Authors. All rights reserved | Jan Mercl <0xjnml@gmail.com> core,modernc.org/token,BSD-3-Clause,Copyright (c) 2009 The Go Authors. All rights reserved core,sigs.k8s.io/apiserver-network-proxy/konnectivity-client/pkg/client,Apache-2.0,Copyright 2017 The Kubernetes Authors. @@ -2978,3 +3353,4 @@ core,sigs.k8s.io/structured-merge-diff/v4/schema,Apache-2.0,Copyright 2017 The K core,sigs.k8s.io/structured-merge-diff/v4/typed,Apache-2.0,Copyright 2017 The Kubernetes Authors. core,sigs.k8s.io/structured-merge-diff/v4/value,Apache-2.0,Copyright 2017 The Kubernetes Authors. core,sigs.k8s.io/yaml,MIT,Copyright 2017 The Kubernetes Authors. +core,sigs.k8s.io/yaml/goyaml.v2,Apache-2.0,Copyright 2017 The Kubernetes Authors. diff --git a/comp/core/workloadmeta/collectors/util/image_util.go b/comp/core/workloadmeta/collectors/util/image_util.go index bbd507469ff230..59f4447cef128d 100644 --- a/comp/core/workloadmeta/collectors/util/image_util.go +++ b/comp/core/workloadmeta/collectors/util/image_util.go @@ -13,14 +13,15 @@ import ( "github.com/CycloneDX/cyclonedx-go" trivydx "github.com/aquasecurity/trivy/pkg/sbom/cyclonedx" + trivydxcore "github.com/aquasecurity/trivy/pkg/sbom/cyclonedx/core" "github.com/mohae/deepcopy" "github.com/DataDog/datadog-agent/comp/core/workloadmeta" ) const ( - repoTagPropertyKey = trivydx.Namespace + trivydx.PropertyRepoTag - repoDigestPropertyKey = trivydx.Namespace + trivydx.PropertyRepoDigest + repoTagPropertyKey = trivydxcore.Namespace + trivydx.PropertyRepoTag + repoDigestPropertyKey = trivydxcore.Namespace + trivydx.PropertyRepoDigest ) // UpdateSBOMRepoMetadata finds if the repo tags and repo digests are present in the SBOM and updates them if not. diff --git a/comp/core/workloadmeta/collectors/util/image_util_test.go b/comp/core/workloadmeta/collectors/util/image_util_test.go index bc21bad9102541..b5b4bf61db1566 100644 --- a/comp/core/workloadmeta/collectors/util/image_util_test.go +++ b/comp/core/workloadmeta/collectors/util/image_util_test.go @@ -16,6 +16,7 @@ import ( "github.com/CycloneDX/cyclonedx-go" "github.com/DataDog/datadog-agent/comp/core/workloadmeta" trivydx "github.com/aquasecurity/trivy/pkg/sbom/cyclonedx" + trivydxcore "github.com/aquasecurity/trivy/pkg/sbom/cyclonedx/core" ) func Test_UpdateSBOMRepoMetadata(t *testing.T) { @@ -74,8 +75,8 @@ func Test_UpdateSBOMRepoMetadata(t *testing.T) { Metadata: &cyclonedx.Metadata{ Component: &cyclonedx.Component{ Properties: &[]cyclonedx.Property{ - {Name: trivydx.Namespace + trivydx.PropertyRepoDigest, Value: "digest2"}, - {Name: trivydx.Namespace + trivydx.PropertyRepoTag, Value: "tag2"}, + {Name: trivydxcore.Namespace + trivydx.PropertyRepoDigest, Value: "digest2"}, + {Name: trivydxcore.Namespace + trivydx.PropertyRepoTag, Value: "tag2"}, }, }, }, @@ -90,10 +91,10 @@ func Test_UpdateSBOMRepoMetadata(t *testing.T) { Metadata: &cyclonedx.Metadata{ Component: &cyclonedx.Component{ Properties: &[]cyclonedx.Property{ - {Name: trivydx.Namespace + trivydx.PropertyRepoDigest, Value: "digest1"}, - {Name: trivydx.Namespace + trivydx.PropertyRepoDigest, Value: "digest2"}, - {Name: trivydx.Namespace + trivydx.PropertyRepoTag, Value: "tag1"}, - {Name: trivydx.Namespace + trivydx.PropertyRepoTag, Value: "tag2"}, + {Name: trivydxcore.Namespace + trivydx.PropertyRepoDigest, Value: "digest1"}, + {Name: trivydxcore.Namespace + trivydx.PropertyRepoDigest, Value: "digest2"}, + {Name: trivydxcore.Namespace + trivydx.PropertyRepoTag, Value: "tag1"}, + {Name: trivydxcore.Namespace + trivydx.PropertyRepoTag, Value: "tag2"}, }, }, }, @@ -109,8 +110,8 @@ func Test_UpdateSBOMRepoMetadata(t *testing.T) { Metadata: &cyclonedx.Metadata{ Component: &cyclonedx.Component{ Properties: &[]cyclonedx.Property{ - {Name: trivydx.Namespace + trivydx.PropertyRepoTag, Value: "tag1"}, - {Name: trivydx.Namespace + trivydx.PropertyRepoDigest, Value: "digest1"}, + {Name: trivydxcore.Namespace + trivydx.PropertyRepoTag, Value: "tag1"}, + {Name: trivydxcore.Namespace + trivydx.PropertyRepoDigest, Value: "digest1"}, }, }, }, @@ -125,8 +126,8 @@ func Test_UpdateSBOMRepoMetadata(t *testing.T) { Metadata: &cyclonedx.Metadata{ Component: &cyclonedx.Component{ Properties: &[]cyclonedx.Property{ - {Name: trivydx.Namespace + trivydx.PropertyRepoDigest, Value: "digest1"}, - {Name: trivydx.Namespace + trivydx.PropertyRepoTag, Value: "tag1"}, + {Name: trivydxcore.Namespace + trivydx.PropertyRepoDigest, Value: "digest1"}, + {Name: trivydxcore.Namespace + trivydx.PropertyRepoTag, Value: "tag1"}, }, }, }, @@ -142,8 +143,8 @@ func Test_UpdateSBOMRepoMetadata(t *testing.T) { Metadata: &cyclonedx.Metadata{ Component: &cyclonedx.Component{ Properties: &[]cyclonedx.Property{ - {Name: trivydx.Namespace + trivydx.PropertyRepoTag, Value: "tag1"}, - {Name: trivydx.Namespace + trivydx.PropertyRepoDigest, Value: "digest1"}, + {Name: trivydxcore.Namespace + trivydx.PropertyRepoTag, Value: "tag1"}, + {Name: trivydxcore.Namespace + trivydx.PropertyRepoDigest, Value: "digest1"}, }, }, }, @@ -157,7 +158,7 @@ func Test_UpdateSBOMRepoMetadata(t *testing.T) { Metadata: &cyclonedx.Metadata{ Component: &cyclonedx.Component{ Properties: &[]cyclonedx.Property{ - {Name: trivydx.Namespace + trivydx.PropertyRepoDigest, Value: "digest1"}, + {Name: trivydxcore.Namespace + trivydx.PropertyRepoDigest, Value: "digest1"}, }, }, }, @@ -173,9 +174,9 @@ func Test_UpdateSBOMRepoMetadata(t *testing.T) { Metadata: &cyclonedx.Metadata{ Component: &cyclonedx.Component{ Properties: &[]cyclonedx.Property{ - {Name: trivydx.Namespace + trivydx.PropertyRepoTag, Value: "tag1"}, + {Name: trivydxcore.Namespace + trivydx.PropertyRepoTag, Value: "tag1"}, {Name: "prop1", Value: "tag1"}, - {Name: trivydx.Namespace + trivydx.PropertyRepoDigest, Value: "digest1"}, + {Name: trivydxcore.Namespace + trivydx.PropertyRepoDigest, Value: "digest1"}, }, }, }, @@ -189,7 +190,7 @@ func Test_UpdateSBOMRepoMetadata(t *testing.T) { Metadata: &cyclonedx.Metadata{ Component: &cyclonedx.Component{ Properties: &[]cyclonedx.Property{ - {Name: trivydx.Namespace + trivydx.PropertyRepoDigest, Value: "digest1"}, + {Name: trivydxcore.Namespace + trivydx.PropertyRepoDigest, Value: "digest1"}, {Name: "prop1", Value: "tag1"}, }, }, diff --git a/go.mod b/go.mod index ea869f2beb32e3..5ee4e3306b11b6 100644 --- a/go.mod +++ b/go.mod @@ -93,7 +93,7 @@ require ( code.cloudfoundry.org/bbs v0.0.0-20200403215808-d7bc971db0db code.cloudfoundry.org/garden v0.0.0-20210208153517-580cadd489d2 code.cloudfoundry.org/lager v2.0.0+incompatible - github.com/CycloneDX/cyclonedx-go v0.7.2 + github.com/CycloneDX/cyclonedx-go v0.8.0 github.com/DataDog/appsec-internal-go v1.4.2 github.com/DataDog/datadog-agent/pkg/gohai v0.52.0-rc.3 github.com/DataDog/datadog-agent/pkg/obfuscate v0.52.0-rc.3 @@ -125,10 +125,10 @@ require ( github.com/acobaugh/osrelease v0.1.0 github.com/alecthomas/participle v0.7.1 // indirect github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 - github.com/aquasecurity/trivy-db v0.0.0-20230105123735-5ce110fc82e1 + github.com/aquasecurity/trivy-db v0.0.0-20231005141211-4fc651f7ac8d github.com/avast/retry-go/v4 v4.5.0 github.com/aws/aws-lambda-go v1.37.0 - github.com/aws/aws-sdk-go v1.46.0 // indirect + github.com/aws/aws-sdk-go v1.49.21 // indirect github.com/beevik/ntp v0.3.0 github.com/benbjohnson/clock v1.3.5 github.com/bhmj/jsonslice v0.0.0-20200323023432-92c3edaad8e2 @@ -145,7 +145,7 @@ require ( github.com/cri-o/ocicni v0.4.0 github.com/cyphar/filepath-securejoin v0.2.4 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc - github.com/docker/docker v25.0.1+incompatible + github.com/docker/docker v25.0.2+incompatible github.com/docker/go-connections v0.5.0 github.com/dustin/go-humanize v1.0.1 github.com/elastic/go-libaudit/v2 v2.5.0 @@ -164,7 +164,7 @@ require ( github.com/golang/mock v1.6.0 github.com/golang/protobuf v1.5.3 github.com/google/go-cmp v0.6.0 - github.com/google/go-containerregistry v0.17.0 + github.com/google/go-containerregistry v0.19.0 github.com/google/gofuzz v1.2.0 github.com/google/gopacket v1.1.19 github.com/google/pprof v0.0.0-20230817174616-7a8ec2ada47b @@ -195,10 +195,10 @@ require ( github.com/netsampler/goflow2 v1.3.3 github.com/olekukonko/tablewriter v0.0.5 github.com/oliveagle/jsonpath v0.0.0-20180606110733-2e52cf6e6852 - github.com/open-policy-agent/opa v0.56.0 + github.com/open-policy-agent/opa v0.61.0 github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.75.0 // indirect github.com/opencontainers/go-digest v1.0.0 - github.com/opencontainers/image-spec v1.1.0-rc5 + github.com/opencontainers/image-spec v1.1.0-rc6 github.com/opencontainers/runtime-spec v1.1.0 github.com/openshift/api v3.9.0+incompatible github.com/pahanini/go-grpc-bidirectional-streaming-example v0.0.0-20211027164128-cc6111af44be @@ -209,14 +209,14 @@ require ( github.com/prometheus/procfs v0.12.0 github.com/richardartoul/molecule v1.0.1-0.20221107223329-32cfee06a052 // indirect github.com/robfig/cron/v3 v3.0.1 - github.com/samber/lo v1.38.1 + github.com/samber/lo v1.39.0 github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da github.com/shirou/gopsutil/v3 v3.24.1 github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4 github.com/sirupsen/logrus v1.9.3 github.com/skydive-project/go-debouncer v1.0.0 github.com/smira/go-xz v0.1.0 - github.com/spf13/afero v1.9.5 + github.com/spf13/afero v1.11.0 github.com/spf13/cast v1.6.0 github.com/spf13/cobra v1.8.0 github.com/spf13/pflag v1.0.5 @@ -234,9 +234,9 @@ require ( github.com/vmihailenco/msgpack/v4 v4.3.12 github.com/wI2L/jsondiff v0.4.0 github.com/xeipuuv/gojsonschema v1.2.0 - go.etcd.io/bbolt v1.3.7 + go.etcd.io/bbolt v1.3.8 go.etcd.io/etcd/client/v2 v2.306.0-alpha.0 - go.mongodb.org/mongo-driver v1.12.1 + go.mongodb.org/mongo-driver v1.13.1 go.opentelemetry.io/collector v0.91.0 // indirect go.opentelemetry.io/collector/component v0.93.0 go.opentelemetry.io/collector/confmap v0.93.0 @@ -265,28 +265,28 @@ require ( golang.org/x/tools v0.18.0 golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 google.golang.org/genproto v0.0.0-20231212172506-995d672761c0 // indirect - google.golang.org/grpc v1.60.1 + google.golang.org/grpc v1.61.0 google.golang.org/grpc/examples v0.0.0-20221020162917-9127159caf5a google.golang.org/protobuf v1.32.0 gopkg.in/DataDog/dd-trace-go.v1 v1.58.0 gopkg.in/yaml.v2 v2.4.0 gopkg.in/yaml.v3 v3.0.1 gopkg.in/zorkian/go-datadog-api.v2 v2.30.0 - k8s.io/api v0.28.6 - k8s.io/apiextensions-apiserver v0.28.6 - k8s.io/apimachinery v0.28.6 - k8s.io/apiserver v0.28.6 + k8s.io/api v0.29.1 + k8s.io/apiextensions-apiserver v0.29.0 + k8s.io/apimachinery v0.29.1 + k8s.io/apiserver v0.29.0 k8s.io/autoscaler/vertical-pod-autoscaler v0.13.0 - k8s.io/client-go v0.28.6 + k8s.io/client-go v0.29.0 k8s.io/cri-api v0.28.6 k8s.io/klog v1.0.1-0.20200310124935-4ad0115ba9e4 // Min version that includes fix for Windows Nano - k8s.io/klog/v2 v2.100.1 + k8s.io/klog/v2 v2.120.0 k8s.io/kube-aggregator v0.28.6 - k8s.io/kube-openapi v0.0.0-20230901164831-6c774f458599 + k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 k8s.io/kube-state-metrics/v2 v2.8.2 k8s.io/kubelet v0.28.6 k8s.io/metrics v0.28.6 - k8s.io/utils v0.0.0-20230726121419-3b25d923346b + k8s.io/utils v0.0.0-20231127182322-b307cd553661 sigs.k8s.io/custom-metrics-apiserver v1.28.0 ) @@ -312,10 +312,8 @@ require ( github.com/AlekSi/pointer v1.2.0 // indirect github.com/Azure/azure-sdk-for-go v68.0.0+incompatible // indirect github.com/Azure/go-autorest v14.2.0+incompatible // indirect - github.com/Azure/go-autorest/autorest v0.11.28 // indirect - github.com/Azure/go-autorest/autorest/adal v0.9.21 // indirect - github.com/Azure/go-autorest/autorest/azure/auth v0.5.11 // indirect - github.com/Azure/go-autorest/autorest/azure/cli v0.4.5 // indirect + github.com/Azure/go-autorest/autorest v0.11.29 // indirect + github.com/Azure/go-autorest/autorest/adal v0.9.23 // indirect github.com/Azure/go-autorest/autorest/date v0.3.0 // indirect github.com/Azure/go-autorest/logger v0.2.1 // indirect github.com/Azure/go-autorest/tracing v0.6.0 // indirect @@ -331,12 +329,11 @@ require ( github.com/Masterminds/semver v1.5.0 github.com/NYTimes/gziphandler v1.1.1 // indirect github.com/OneOfOne/xxhash v1.2.8 // indirect - github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 + github.com/ProtonMail/go-crypto v0.0.0-20230923063757-afb1ddc0824c github.com/StackExchange/wmi v1.2.1 // indirect github.com/agext/levenshtein v1.2.3 // indirect github.com/agnivade/levenshtein v1.1.1 // indirect github.com/andybalholm/brotli v1.0.6 // indirect - github.com/aquasecurity/go-dep-parser v0.0.0-20230115135733-3be7cb085121 // indirect github.com/aquasecurity/go-gem-version v0.0.0-20201115065557-8eed6fe000ce // indirect github.com/aquasecurity/go-npm-version v0.0.0-20201110091526-0b796d180798 // indirect github.com/aquasecurity/go-pep440-version v0.0.0-20210121094942-22b2f8951d46 // indirect @@ -353,8 +350,8 @@ require ( github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.2 // indirect github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.2 // indirect github.com/aws/aws-sdk-go-v2/internal/ini v1.7.3 // indirect - github.com/aws/aws-sdk-go-v2/service/ebs v1.21.1 // indirect - github.com/aws/aws-sdk-go-v2/service/ec2 v1.138.1 + github.com/aws/aws-sdk-go-v2/service/ebs v1.21.7 // indirect + github.com/aws/aws-sdk-go-v2/service/ec2 v1.142.0 github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.2 // indirect github.com/aws/aws-sdk-go-v2/service/sso v1.18.7 // indirect github.com/aws/aws-sdk-go-v2/service/ssooidc v1.21.7 // indirect @@ -363,7 +360,6 @@ require ( github.com/beorn7/perks v1.0.1 // indirect github.com/bmizerany/pat v0.0.0-20170815010413-6226ea591a40 // indirect github.com/briandowns/spinner v1.23.0 // indirect - github.com/caarlos0/env/v6 v6.10.1 // indirect github.com/cavaliergopher/grab/v3 v3.0.1 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/containerd/continuity v0.4.2 // indirect @@ -375,9 +371,8 @@ require ( github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f // indirect github.com/dgryski/go-jump v0.0.0-20211018200510-ba001c3ffce0 // indirect github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect - github.com/dimchansky/utfbom v1.1.1 // indirect github.com/docker/cli v25.0.1+incompatible // indirect - github.com/docker/distribution v2.8.2+incompatible // indirect + github.com/docker/distribution v2.8.3+incompatible // indirect github.com/docker/docker-credential-helpers v0.8.0 // indirect github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c // indirect github.com/docker/go-units v0.5.0 // indirect @@ -385,7 +380,6 @@ require ( github.com/emirpasic/gods v1.18.1 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/ghodss/yaml v1.0.0 - github.com/go-errors/errors v1.4.2 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect github.com/go-git/go-billy/v5 v5.5.0 // indirect github.com/go-git/go-git/v5 v5.11.0 // indirect @@ -393,40 +387,38 @@ require ( github.com/go-logfmt/logfmt v0.5.1 // indirect github.com/go-logr/logr v1.4.1 // indirect github.com/go-logr/stdr v1.2.2 // indirect - github.com/go-openapi/analysis v0.21.4 // indirect - github.com/go-openapi/errors v0.20.4 // indirect - github.com/go-openapi/jsonpointer v0.19.6 // indirect - github.com/go-openapi/jsonreference v0.20.2 // indirect - github.com/go-openapi/loads v0.21.2 // indirect - github.com/go-openapi/runtime v0.26.0 // indirect - github.com/go-openapi/spec v0.20.9 // indirect - github.com/go-openapi/strfmt v0.21.7 // indirect - github.com/go-openapi/swag v0.22.4 // indirect - github.com/go-openapi/validate v0.22.1 // indirect + github.com/go-openapi/analysis v0.21.5 // indirect + github.com/go-openapi/errors v0.21.0 // indirect + github.com/go-openapi/jsonpointer v0.20.1 // indirect + github.com/go-openapi/jsonreference v0.20.3 // indirect + github.com/go-openapi/loads v0.21.3 // indirect + github.com/go-openapi/runtime v0.27.1 // indirect + github.com/go-openapi/spec v0.20.12 // indirect + github.com/go-openapi/strfmt v0.22.0 // indirect + github.com/go-openapi/swag v0.22.5 // indirect + github.com/go-openapi/validate v0.22.4 // indirect github.com/go-redis/redis/v8 v8.11.5 // indirect - github.com/go-test/deep v1.0.7 // indirect github.com/godbus/dbus/v5 v5.1.0 github.com/golang-jwt/jwt/v4 v4.5.0 // indirect github.com/golang/glog v1.1.2 // indirect github.com/golang/snappy v0.0.4 // indirect github.com/google/licenseclassifier/v2 v2.0.0 // indirect - github.com/google/uuid v1.5.0 + github.com/google/uuid v1.6.0 github.com/google/wire v0.5.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect github.com/googleapis/gax-go/v2 v2.12.0 // indirect github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/hashicorp/go-hclog v1.5.0 // indirect github.com/hashicorp/go-immutable-radix v1.3.1 // indirect - github.com/hashicorp/go-retryablehttp v0.7.4 // indirect github.com/hashicorp/go-rootcerts v1.0.2 // indirect github.com/hashicorp/go-version v1.6.0 github.com/hashicorp/golang-lru v1.0.2 // indirect github.com/hashicorp/hcl v1.0.1-vault-5 // indirect github.com/hashicorp/serf v0.10.1 // indirect - github.com/huandu/xstrings v1.3.3 // indirect + github.com/huandu/xstrings v1.4.0 // indirect github.com/ianlancetaylor/cgosymbolizer v0.0.0-20221208003206-eaf69f594683 github.com/ianlancetaylor/demangle v0.0.0-20230524184225-eabc099b10ab // indirect github.com/in-toto/in-toto-golang v0.9.0 // indirect @@ -448,9 +440,9 @@ require ( github.com/klauspost/pgzip v1.2.5 // indirect github.com/knadh/koanf v1.5.0 // indirect github.com/knqyf263/go-apk-version v0.0.0-20200609155635-041fdbb8563f // indirect - github.com/knqyf263/go-deb-version v0.0.0-20190517075300-09fca494f03d // indirect + github.com/knqyf263/go-deb-version v0.0.0-20230223133812-3ed183d23422 // indirect github.com/knqyf263/go-rpm-version v0.0.0-20220614171824-631e686d1075 // indirect - github.com/knqyf263/go-rpmdb v0.0.0-20221030142135-919c8a52f04f + github.com/knqyf263/go-rpmdb v0.0.0-20231008124120-ac49267ab4e1 github.com/knqyf263/nested v0.0.1 // indirect github.com/liamg/jfather v0.0.7 // indirect github.com/libp2p/go-reuseport v0.2.0 // indirect @@ -458,11 +450,11 @@ require ( github.com/lunixbochs/struc v0.0.0-20200707160740-784aaebc1d40 // indirect github.com/magiconair/properties v1.8.7 // indirect github.com/masahiro331/go-disk v0.0.0-20220919035250-c8da316f91ac // indirect - github.com/masahiro331/go-ebs-file v0.0.0-20221225061409-5ef263bb2cc3 // indirect - github.com/masahiro331/go-ext4-filesystem v0.0.0-20221225060520-c150f5eacfe1 // indirect + github.com/masahiro331/go-ebs-file v0.0.0-20240112135404-d5fbb1d46323 // indirect + github.com/masahiro331/go-ext4-filesystem v0.0.0-20231208112839-4339555a0cd4 // indirect github.com/masahiro331/go-mvn-version v0.0.0-20210429150710-d3157d602a08 // indirect github.com/masahiro331/go-vmdk-parser v0.0.0-20221225061455-612096e4bbbd // indirect - github.com/masahiro331/go-xfs-filesystem v0.0.0-20221225060805-c02764233454 // indirect + github.com/masahiro331/go-xfs-filesystem v0.0.0-20230608043311-a335f4599b70 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.15 // indirect @@ -473,12 +465,12 @@ require ( github.com/mitchellh/hashstructure/v2 v2.0.2 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/mkrautz/goar v0.0.0-20150919110319-282caa8bd9da // indirect - github.com/moby/buildkit v0.11.0 // indirect + github.com/moby/buildkit v0.12.5 // indirect github.com/moby/locker v1.0.1 // indirect github.com/moby/sys/signal v0.7.0 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect - github.com/montanaflynn/stats v0.6.6 // indirect + github.com/montanaflynn/stats v0.7.0 // indirect github.com/mostynb/go-grpc-compression v1.2.2 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect @@ -488,8 +480,8 @@ require ( github.com/opencontainers/selinux v1.11.0 // indirect github.com/opentracing/opentracing-go v1.2.0 github.com/outcaste-io/ristretto v0.2.3 // indirect - github.com/owenrumney/go-sarif/v2 v2.1.2 // indirect - github.com/package-url/packageurl-go v0.1.1-0.20220428063043-89078438f170 // indirect + github.com/owenrumney/go-sarif/v2 v2.3.0 // indirect + github.com/package-url/packageurl-go v0.1.2 // indirect github.com/pborman/uuid v1.2.1 // indirect github.com/pelletier/go-toml v1.9.5 // indirect github.com/philhofer/fwd v1.1.2 // indirect @@ -499,18 +491,18 @@ require ( github.com/prometheus/common v0.46.0 github.com/prometheus/statsd_exporter v0.22.7 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect - github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 // indirect + github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect github.com/rivo/uniseg v0.4.4 // indirect github.com/rs/cors v1.10.1 // indirect github.com/safchain/baloum v0.0.0-20221229104256-b1fc8f70a86b - github.com/saracen/walker v0.0.0-20191201085201-324a081bae7e // indirect + github.com/saracen/walker v0.1.3 // indirect github.com/sassoftware/go-rpmutils v0.2.0 // indirect - github.com/secure-systems-lab/go-securesystemslib v0.7.0 // indirect + github.com/secure-systems-lab/go-securesystemslib v0.8.0 // indirect github.com/sergi/go-diff v1.3.1 // indirect github.com/shibumi/go-pathspec v1.3.0 // indirect - github.com/shopspring/decimal v1.2.0 // indirect + github.com/shopspring/decimal v1.3.1 // indirect github.com/smira/go-ftp-protocol v0.0.0-20140829150050-066b75c2b70d // indirect - github.com/spdx/tools-golang v0.5.1 // indirect + github.com/spdx/tools-golang v0.5.4-0.20231108154018-0c0f394b5e1a // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/stretchr/objx v0.5.2 // indirect github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect @@ -538,7 +530,7 @@ require ( github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 // indirect - github.com/xlab/treeprint v1.1.0 // indirect + github.com/xlab/treeprint v1.2.0 // indirect github.com/xor-gate/ar v0.0.0-20170530204233-5c72ae81e2b7 // indirect github.com/yashtewari/glob-intersection v0.2.0 // indirect github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d // indirect @@ -553,16 +545,16 @@ require ( go.opentelemetry.io/collector/semconv v0.93.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 // indirect go.opentelemetry.io/contrib/propagators/b3 v1.21.1 // indirect - go.opentelemetry.io/otel v1.22.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0 + go.opentelemetry.io/otel v1.23.1 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.23.1 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0 - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.21.0 + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.23.1 go.opentelemetry.io/otel/exporters/prometheus v0.45.0 // indirect - go.opentelemetry.io/otel/metric v1.22.0 // indirect - go.opentelemetry.io/otel/sdk v1.22.0 + go.opentelemetry.io/otel/metric v1.23.1 // indirect + go.opentelemetry.io/otel/sdk v1.23.1 go.opentelemetry.io/otel/sdk/metric v1.22.0 // indirect - go.opentelemetry.io/otel/trace v1.22.0 // indirect - go.opentelemetry.io/proto/otlp v1.0.0 // indirect + go.opentelemetry.io/otel/trace v1.23.1 // indirect + go.opentelemetry.io/proto/otlp v1.1.0 // indirect golang.org/x/crypto v0.19.0 // indirect golang.org/x/mod v0.15.0 golang.org/x/oauth2 v0.16.0 // indirect @@ -575,24 +567,24 @@ require ( gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect - k8s.io/component-base v0.28.6 + k8s.io/component-base v0.29.0 k8s.io/gengo v0.0.0-20230829151522-9cce18d56c01 // indirect lukechampine.com/uint128 v1.2.0 // indirect mellium.im/sasl v0.3.1 // indirect modernc.org/cc/v3 v3.40.0 // indirect - modernc.org/ccgo/v3 v3.16.13-0.20221017192402-261537637ce8 // indirect - modernc.org/libc v1.21.2 // indirect - modernc.org/mathutil v1.5.0 // indirect - modernc.org/memory v1.4.0 // indirect + modernc.org/ccgo/v3 v3.16.13 // indirect + modernc.org/libc v1.29.0 // indirect + modernc.org/mathutil v1.6.0 // indirect + modernc.org/memory v1.7.2 // indirect modernc.org/opt v0.1.3 // indirect - modernc.org/sqlite v1.17.3 + modernc.org/sqlite v1.28.0 modernc.org/strutil v1.1.3 // indirect - modernc.org/token v1.0.1 // indirect - sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.1.2 // indirect + modernc.org/token v1.1.0 // indirect + sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.28.0 // indirect sigs.k8s.io/controller-runtime v0.11.2 // indirect sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect - sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect - sigs.k8s.io/yaml v1.3.0 + sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect + sigs.k8s.io/yaml v1.4.0 ) require github.com/lorenzosaino/go-sysctl v0.3.1 @@ -654,7 +646,7 @@ require ( github.com/DataDog/datadog-agent/pkg/version v0.52.0-rc.3 github.com/DataDog/go-libddwaf/v2 v2.2.2 github.com/DataDog/opentelemetry-mapping-go/pkg/otlp/logs v0.13.3 - github.com/aquasecurity/trivy v0.0.0-00010101000000-000000000000 + github.com/aquasecurity/trivy v0.49.2-0.20240212231818-6a2ed8bdfe76 github.com/aws/aws-sdk-go-v2/service/kms v1.27.1 github.com/aws/aws-sdk-go-v2/service/rds v1.73.0 github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.25.1 @@ -683,48 +675,86 @@ require ( dario.cat/mergo v1.0.0 // indirect github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 // indirect github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20230306123547-8075edf89bb0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0 // indirect + github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1 // indirect github.com/DataDog/datadog-agent/pkg/util/buf v0.52.0-rc.3 // indirect github.com/DataDog/datadog-agent/pkg/util/system/socket v0.52.0-rc.3 // indirect github.com/DataDog/datadog-api-client-go/v2 v2.13.0 // indirect github.com/DataDog/go-sqllexer v0.0.9 // indirect + github.com/Intevation/gval v1.3.0 // indirect + github.com/Intevation/jsonpath v0.2.1 // indirect + github.com/VividCortex/ewma v1.2.0 // indirect + github.com/alecthomas/chroma v0.10.0 // indirect + github.com/anchore/go-struct-converter v0.0.0-20221118182256-c68fdcfa2092 // indirect github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230305170008-8188dc5388df // indirect + github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect + github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect + github.com/aquasecurity/defsec v0.94.2-0.20240119001230-c2d65f49dfeb // indirect + github.com/aquasecurity/trivy-java-db v0.0.0-20240109071736-184bd7481d48 // indirect + github.com/aquasecurity/trivy-policies v0.9.1-0.20240212232053-c450017d5624 // indirect github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.5.4 // indirect github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.15.15 // indirect github.com/aws/aws-sdk-go-v2/internal/v4a v1.2.10 // indirect - github.com/aws/aws-sdk-go-v2/service/ecr v1.17.18 // indirect + github.com/aws/aws-sdk-go-v2/service/ecr v1.24.6 // indirect github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.1 // indirect github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.2.10 // indirect github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.16.10 // indirect github.com/aws/aws-sdk-go-v2/service/s3 v1.48.1 // indirect github.com/bahlo/generic-list-go v0.2.0 // indirect + github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect + github.com/bitnami/go-version v0.0.0-20231130084017-bb00604d650c // indirect github.com/blang/semver/v4 v4.0.0 // indirect + github.com/bmatcuk/doublestar/v4 v4.6.1 // indirect github.com/buger/jsonparser v1.1.1 // indirect + github.com/cheggaaa/pb/v3 v3.1.4 // indirect github.com/cloudflare/circl v1.3.7 // indirect github.com/containerd/log v0.1.0 // indirect + github.com/csaf-poc/csaf_distribution/v3 v3.0.0 // indirect github.com/distribution/reference v0.5.0 // indirect + github.com/dlclark/regexp2 v1.4.0 // indirect github.com/ebitengine/purego v0.6.0-alpha.5 // indirect github.com/elastic/go-licenser v0.4.1 // indirect github.com/emicklei/go-restful/v3 v3.11.0 // indirect github.com/evanphx/json-patch/v5 v5.6.0 // indirect github.com/godror/knownpb v0.1.0 // indirect - github.com/google/cel-go v0.16.1 // indirect + github.com/golang-jwt/jwt/v5 v5.0.0 // indirect + github.com/google/cel-go v0.17.7 // indirect github.com/google/gnostic v0.6.9 // indirect - github.com/google/gnostic-models v0.6.8 // indirect github.com/google/s2a-go v0.1.7 // indirect - github.com/hashicorp/hcl/v2 v2.17.0 // indirect + github.com/hashicorp/go-getter v1.7.3 // indirect + github.com/hashicorp/go-safetemp v1.0.0 // indirect + github.com/hashicorp/hcl/v2 v2.19.1 // indirect github.com/knadh/koanf/v2 v2.0.1 // indirect github.com/kr/text v0.2.0 // indirect + github.com/kylelemons/godebug v1.1.0 // indirect + github.com/liamg/iamgo v0.0.9 // indirect + github.com/mattn/go-shellwords v1.0.12 // indirect + github.com/mitchellh/go-testing-interface v1.14.1 // indirect + github.com/mitchellh/go-wordwrap v1.0.1 // indirect github.com/moby/sys/sequential v0.5.0 // indirect github.com/moby/sys/user v0.1.0 // indirect + github.com/openvex/go-vex v0.2.5 // indirect + github.com/owenrumney/squealer v1.2.1 // indirect + github.com/pelletier/go-toml/v2 v2.1.0 // indirect github.com/pjbgf/sha1cd v0.3.0 // indirect + github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 // indirect github.com/rogpeppe/go-internal v1.11.0 // indirect github.com/rs/zerolog v1.29.1 // indirect + github.com/sagikazarmark/locafero v0.4.0 // indirect + github.com/sagikazarmark/slog-shim v0.1.0 // indirect + github.com/santhosh-tekuri/jsonschema/v5 v5.3.1 // indirect github.com/shoenig/go-m1cpu v0.1.6 // indirect github.com/sigstore/rekor v1.2.2 // indirect github.com/skeema/knownhosts v1.2.1 // indirect + github.com/sourcegraph/conc v0.3.0 // indirect github.com/spaolacci/murmur3 v1.1.0 // indirect + github.com/spf13/viper v1.18.2 // indirect github.com/stoewer/go-strcase v1.2.0 // indirect + github.com/subosito/gotenv v1.6.0 // indirect github.com/swaggest/refl v1.3.0 // indirect + github.com/tetratelabs/wazero v1.2.1 // indirect github.com/wk8/go-ordered-map/v2 v2.1.8 // indirect github.com/zclconf/go-cty v1.13.0 // indirect go.opentelemetry.io/collector/config/configauth v0.91.0 // indirect @@ -749,11 +779,11 @@ require ( golang.org/x/exp/typeparams v0.0.0-20220613132600-b0d781184e0d // indirect golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 // indirect gomodules.xyz/jsonpatch/v2 v2.3.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20231212172506-995d672761c0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240102182953-50ed04b92917 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917 // indirect gopkg.in/ini.v1 v1.67.0 // indirect honnef.co/go/tools v0.3.2 // indirect - k8s.io/kms v0.28.6 // indirect + k8s.io/kms v0.29.0 // indirect ) replace github.com/pahanini/go-grpc-bidirectional-streaming-example v0.0.0-20211027164128-cc6111af44be => github.com/DataDog/go-grpc-bidirectional-streaming-example v0.0.0-20221024060302-b9cf785c02fe @@ -769,12 +799,17 @@ replace k8s.io/cri-api => k8s.io/cri-api v0.25.5 // Use custom Trivy fork to reduce binary size // Pull in replacements needed by upstream Trivy replace ( - github.com/aquasecurity/trivy => github.com/DataDog/trivy v0.0.0-20240118082257-7f12ba39deb4 + github.com/aquasecurity/trivy => github.com/DataDog/trivy v0.0.0-20240304161355-562f4c8f35a6 github.com/saracen/walker => github.com/DataDog/walker v0.0.0-20230418153152-7f29bb2dc950 - github.com/spdx/tools-golang => github.com/spdx/tools-golang v0.3.0 - oras.land/oras-go => oras.land/oras-go v1.1.1 ) +// Temporarely use forks of trivy libraries to use lazy initialization of zap loggers. +// Patch was pushed upstream but maintainers would prefer moving to slog once 1.22 is out +replace github.com/aquasecurity/trivy-db => github.com/datadog/trivy-db v0.0.0-20240228172000-42caffdaee3f + +// Use a version of cel-go compatible with k8s.io/kubeapiserver 0.27.6 +replace github.com/google/cel-go v0.17.7 => github.com/google/cel-go v0.16.1 + // Waiting for datadog-operator kube version bump replace sigs.k8s.io/controller-runtime v0.11.2 => sigs.k8s.io/controller-runtime v0.15.0 @@ -794,8 +829,16 @@ exclude ( github.com/knadh/koanf/providers/confmap v0.1.0 ) -// Temporarely use forks of trivy libraries to use lazy initialization of zap loggers. -// Patch was pushed upstream but maintainers would prefer moving to slog once 1.22 is out -replace github.com/aquasecurity/go-dep-parser => github.com/lebauce/go-dep-parser v0.0.0-20231030190658-51bbb436f1b8 - -replace github.com/aquasecurity/trivy-db => github.com/lebauce/trivy-db v0.0.0-20231031000443-2d41e0fab0ae +replace ( + // Stick to v0.27.6 as bumping client-go to 0.28.x breaks cluster agent leader election + k8s.io/api => k8s.io/api v0.27.6 + k8s.io/apimachinery => k8s.io/apimachinery v0.27.6 + k8s.io/apiserver => k8s.io/apiserver v0.27.6 + k8s.io/cli-runtime => k8s.io/cli-runtime v0.27.6 + k8s.io/client-go => k8s.io/client-go v0.27.6 + k8s.io/component-base => k8s.io/component-base v0.27.6 + // Small compilation fixes so that k8s.io/apiserver can compile against kube-openapi + k8s.io/kube-openapi => github.com/datadog/kube-openapi v0.0.0-20231101162351-39b249f0ed92 + k8s.io/kubectl => k8s.io/kubectl v0.27.6 + sigs.k8s.io/kustomize/kyaml => sigs.k8s.io/kustomize/kyaml v0.14.3-0.20230526173653-cf3e81b590ab +) diff --git a/go.sum b/go.sum index 7f8f78bb85e971..50ff1b98eac345 100644 --- a/go.sum +++ b/go.sum @@ -3,7 +3,6 @@ cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= @@ -16,36 +15,176 @@ cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOY cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= -cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= +cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= +cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= +cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= +cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= +cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= +cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= +cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= +cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= +cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= +cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= +cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= +cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= +cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= +cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= +cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= cloud.google.com/go v0.111.0 h1:YHLKNupSD1KqjDbQ3+LVdQ81h/UJbJyZG203cEfnQgM= cloud.google.com/go v0.111.0/go.mod h1:0mibmpKP1TyOOFYQY5izo0LnT+ecvOQ0Sg3OdmMiNRU= +cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= +cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= +cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= +cloud.google.com/go/analytics v0.12.0/go.mod h1:gkfj9h6XRf9+TS4bmuhPEShsh3hH8PAZzm/41OOhQd4= +cloud.google.com/go/area120 v0.5.0/go.mod h1:DE/n4mp+iqVyvxHN41Vf1CR602GiHQjFPusMFW6bGR4= +cloud.google.com/go/area120 v0.6.0/go.mod h1:39yFJqWVgm0UZqWTOdqkLhjoC7uFfgXRC8g/ZegeAh0= +cloud.google.com/go/artifactregistry v1.6.0/go.mod h1:IYt0oBPSAGYj/kprzsBjZ/4LnG/zOcHyFHjWPCi6SAQ= +cloud.google.com/go/artifactregistry v1.7.0/go.mod h1:mqTOFOnGZx8EtSqK/ZWcsm/4U8B77rbcLP6ruDU2Ixk= +cloud.google.com/go/asset v1.5.0/go.mod h1:5mfs8UvcM5wHhqtSv8J1CtxxaQq3AdBxxQi2jGW/K4o= +cloud.google.com/go/asset v1.7.0/go.mod h1:YbENsRK4+xTiL+Ofoj5Ckf+O17kJtgp3Y3nn4uzZz5s= +cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjbytpUaW0= +cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY= +cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw= +cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI= +cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= +cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= 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/bigquery v1.42.0/go.mod h1:8dRTJxhtG+vwBKzE5OseQn/hiydoQN3EedCaOdYmxRA= +cloud.google.com/go/billing v1.4.0/go.mod h1:g9IdKBEFlItS8bTtlrZdVLWSSdSyFUZKXNS02zKMOZY= +cloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s= +cloud.google.com/go/binaryauthorization v1.1.0/go.mod h1:xwnoWu3Y84jbuHa0zd526MJYmtnVXn0syOjaJgy4+dM= +cloud.google.com/go/binaryauthorization v1.2.0/go.mod h1:86WKkJHtRcv5ViNABtYMhhNWRrD1Vpi//uKEy7aYEfI= +cloud.google.com/go/cloudtasks v1.5.0/go.mod h1:fD92REy1x5woxkKEkLdvavGnPJGEn8Uic9nWuLzqCpY= +cloud.google.com/go/cloudtasks v1.6.0/go.mod h1:C6Io+sxuke9/KNRkbQpihnW93SWDU3uXt92nu85HkYI= +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= +cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s= +cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= +cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= +cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= cloud.google.com/go/compute v1.23.3 h1:6sVlXXBmbd7jNX0Ipq0trII3e4n1/MsADLK6a+aiVlk= cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzcFZeQ+h8CI= cloud.google.com/go/compute/metadata v0.2.4-0.20230617002413-005d2dfb6b68 h1:aRVqY1p2IJaBGStWMsQMpkAa83cPkCDLl80eOj0Rbz4= cloud.google.com/go/compute/metadata v0.2.4-0.20230617002413-005d2dfb6b68/go.mod h1:1a3eRNYX12fs5UABBIXS8HXVvQbX9hRB/RkEBPORpe8= +cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= +cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= +cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= +cloud.google.com/go/datacatalog v1.5.0/go.mod h1:M7GPLNQeLfWqeIm3iuiruhPzkt65+Bx8dAKvScX8jvs= +cloud.google.com/go/datacatalog v1.6.0/go.mod h1:+aEyF8JKg+uXcIdAmmaMUmZ3q1b/lKLtXCmXdnc0lbc= +cloud.google.com/go/dataflow v0.6.0/go.mod h1:9QwV89cGoxjjSR9/r7eFDqqjtvbKxAK2BaYU6PVk9UM= +cloud.google.com/go/dataflow v0.7.0/go.mod h1:PX526vb4ijFMesO1o202EaUmouZKBpjHsTlCtB4parQ= +cloud.google.com/go/dataform v0.3.0/go.mod h1:cj8uNliRlHpa6L3yVhDOBrUXH+BPAO1+KFMQQNSThKo= +cloud.google.com/go/dataform v0.4.0/go.mod h1:fwV6Y4Ty2yIFL89huYlEkwUPtS7YZinZbzzj5S9FzCE= +cloud.google.com/go/datalabeling v0.5.0/go.mod h1:TGcJ0G2NzcsXSE/97yWjIZO0bXj0KbVlINXMG9ud42I= +cloud.google.com/go/datalabeling v0.6.0/go.mod h1:WqdISuk/+WIGeMkpw/1q7bK/tFEZxsrFJOJdY2bXvTQ= +cloud.google.com/go/dataqna v0.5.0/go.mod h1:90Hyk596ft3zUQ8NkFfvICSIfHFh1Bc7C4cK3vbhkeo= +cloud.google.com/go/dataqna v0.6.0/go.mod h1:1lqNpM7rqNLVgWBJyk5NF6Uen2PHym0jtVJonplVsDA= 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/datastream v1.2.0/go.mod h1:i/uTP8/fZwgATHS/XFu0TcNUhuA0twZxxQ3EyCUQMwo= +cloud.google.com/go/datastream v1.3.0/go.mod h1:cqlOX8xlyYF/uxhiKn6Hbv6WjwPPuI9W2M9SAXwaLLQ= +cloud.google.com/go/dialogflow v1.15.0/go.mod h1:HbHDWs33WOGJgn6rfzBW1Kv807BE3O1+xGbn59zZWI4= +cloud.google.com/go/dialogflow v1.16.1/go.mod h1:po6LlzGfK+smoSmTBnbkIZY2w8ffjz/RcGSS+sh1el0= +cloud.google.com/go/dialogflow v1.17.0/go.mod h1:YNP09C/kXA1aZdBgC/VtXX74G/TKn7XVCcVumTflA+8= +cloud.google.com/go/documentai v1.7.0/go.mod h1:lJvftZB5NRiFSX4moiye1SMxHx0Bc3x1+p9e/RfXYiU= +cloud.google.com/go/documentai v1.8.0/go.mod h1:xGHNEB7CtsnySCNrCFdCyyMz44RhFEEX2Q7UD0c5IhU= +cloud.google.com/go/domains v0.6.0/go.mod h1:T9Rz3GasrpYk6mEGHh4rymIhjlnIuB4ofT1wTxDeT4Y= +cloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg= +cloud.google.com/go/edgecontainer v0.1.0/go.mod h1:WgkZ9tp10bFxqO8BLPqv2LlfmQF1X8lZqwW4r1BTajk= +cloud.google.com/go/edgecontainer v0.2.0/go.mod h1:RTmLijy+lGpQ7BXuTDa4C4ssxyXT34NIuHIgKuP4s5w= cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= +cloud.google.com/go/functions v1.6.0/go.mod h1:3H1UA3qiIPRWD7PeZKLvHZ9SaQhR26XIJcC0A5GbvAk= +cloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg= +cloud.google.com/go/gaming v1.5.0/go.mod h1:ol7rGcxP/qHTRQE/RO4bxkXq+Fix0j6D4LFPzYTIrDM= +cloud.google.com/go/gaming v1.6.0/go.mod h1:YMU1GEvA39Qt3zWGyAVA9bpYz/yAhTvaQ1t2sK4KPUA= +cloud.google.com/go/gkeconnect v0.5.0/go.mod h1:c5lsNAg5EwAy7fkqX/+goqFsU1Da/jQFqArp+wGNr/o= +cloud.google.com/go/gkeconnect v0.6.0/go.mod h1:Mln67KyU/sHJEBY8kFZ0xTeyPtzbq9StAVvEULYK16A= +cloud.google.com/go/gkehub v0.9.0/go.mod h1:WYHN6WG8w9bXU0hqNxt8rm5uxnk8IH+lPY9J2TV7BK0= +cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y977wO+hBH0= +cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= +cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= +cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= cloud.google.com/go/iam v1.1.5 h1:1jTsCu4bcsNsE4iiqNT5SHwrDRCfRmIaaaVFhRveTJI= cloud.google.com/go/iam v1.1.5/go.mod h1:rB6P/Ic3mykPbFio+vo7403drjlgvoWfYpJhMXEbzv8= +cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= +cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= +cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= +cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= +cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= +cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= +cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= +cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM= +cloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY= +cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s= +cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA= +cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o= +cloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ= +cloud.google.com/go/networksecurity v0.6.0/go.mod h1:Q5fjhTr9WMI5mbpRYEbiexTzROf7ZbDzvzCrNl14nyU= +cloud.google.com/go/notebooks v1.2.0/go.mod h1:9+wtppMfVPUeJ8fIWPOq1UnATHISkGXGqTkxeieQ6UY= +cloud.google.com/go/notebooks v1.3.0/go.mod h1:bFR5lj07DtCPC7YAAJ//vHskFBxA5JzYlH68kXVdk34= +cloud.google.com/go/osconfig v1.7.0/go.mod h1:oVHeCeZELfJP7XLxcBGTMBvRO+1nQ5tFG9VQTmYS2Fs= +cloud.google.com/go/osconfig v1.8.0/go.mod h1:EQqZLu5w5XA7eKizepumcvWx+m8mJUhEwiPqWiZeEdg= +cloud.google.com/go/oslogin v1.4.0/go.mod h1:YdgMXWRaElXz/lDk1Na6Fh5orF7gvmJ0FGLIs9LId4E= +cloud.google.com/go/oslogin v1.5.0/go.mod h1:D260Qj11W2qx/HVF29zBg+0fd6YCSjSqLUkY/qEenQU= +cloud.google.com/go/phishingprotection v0.5.0/go.mod h1:Y3HZknsK9bc9dMi+oE8Bim0lczMU6hrX0UpADuMefr0= +cloud.google.com/go/phishingprotection v0.6.0/go.mod h1:9Y3LBLgy0kDTcYET8ZH3bq/7qni15yVUoAxiFxnlSUA= +cloud.google.com/go/privatecatalog v0.5.0/go.mod h1:XgosMUvvPyxDjAVNDYxJ7wBW8//hLDDYmnsNcMGq1K0= +cloud.google.com/go/privatecatalog v0.6.0/go.mod h1:i/fbkZR0hLN29eEWiiwue8Pb+GforiEIBnV9yrRUOKI= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/recaptchaenterprise v1.3.1/go.mod h1:OdD+q+y4XGeAlxRaMn1Y7/GveP6zmq76byL6tjPE7d4= +cloud.google.com/go/recaptchaenterprise/v2 v2.1.0/go.mod h1:w9yVqajwroDNTfGuhmOjPDN//rZGySaf6PtFVcSCa7o= +cloud.google.com/go/recaptchaenterprise/v2 v2.2.0/go.mod h1:/Zu5jisWGeERrd5HnlS3EUGb/D335f9k51B/FVil0jk= +cloud.google.com/go/recaptchaenterprise/v2 v2.3.0/go.mod h1:O9LwGCjrhGHBQET5CA7dd5NwwNQUErSgEDit1DLNTdo= +cloud.google.com/go/recommendationengine v0.5.0/go.mod h1:E5756pJcVFeVgaQv3WNpImkFP8a+RptV6dDLGPILjvg= +cloud.google.com/go/recommendationengine v0.6.0/go.mod h1:08mq2umu9oIqc7tDy8sx+MNJdLG0fUi3vaSVbztHgJ4= +cloud.google.com/go/recommender v1.5.0/go.mod h1:jdoeiBIVrJe9gQjwd759ecLJbxCDED4A6p+mqoqDvTg= +cloud.google.com/go/recommender v1.6.0/go.mod h1:+yETpm25mcoiECKh9DEScGzIRyDKpZ0cEhWGo+8bo+c= +cloud.google.com/go/redis v1.7.0/go.mod h1:V3x5Jq1jzUcg+UNsRvdmsfuFnit1cfe3Z/PGyq/lm4Y= +cloud.google.com/go/redis v1.8.0/go.mod h1:Fm2szCDavWzBk2cDKxrkmWBqoCiL1+Ctwq7EyqBCA/A= +cloud.google.com/go/retail v1.8.0/go.mod h1:QblKS8waDmNUhghY2TI9O3JLlFk8jybHeV4BF19FrE4= +cloud.google.com/go/retail v1.9.0/go.mod h1:g6jb6mKuCS1QKnH/dpu7isX253absFl6iE92nHwlBUY= +cloud.google.com/go/scheduler v1.4.0/go.mod h1:drcJBmxF3aqZJRhmkHQ9b3uSSpQoltBPGPxGAWROx6s= +cloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI= +cloud.google.com/go/secretmanager v1.6.0/go.mod h1:awVa/OXF6IiyaU1wQ34inzQNc4ISIDIrId8qE5QGgKA= +cloud.google.com/go/security v1.5.0/go.mod h1:lgxGdyOKKjHL4YG3/YwIL2zLqMFCKs0UbQwgyZmfJl4= +cloud.google.com/go/security v1.7.0/go.mod h1:mZklORHl6Bg7CNnnjLH//0UlAlaXqiG7Lb9PsPXLfD0= +cloud.google.com/go/security v1.8.0/go.mod h1:hAQOwgmaHhztFhiQ41CjDODdWP0+AE1B3sX4OFlq+GU= +cloud.google.com/go/securitycenter v1.13.0/go.mod h1:cv5qNAqjY84FCN6Y9z28WlkKXyWsgLO832YiWwkCWcU= +cloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc= +cloud.google.com/go/servicedirectory v1.4.0/go.mod h1:gH1MUaZCgtP7qQiI+F+A+OpeKF/HQWgtAddhTbhL2bs= +cloud.google.com/go/servicedirectory v1.5.0/go.mod h1:QMKFL0NUySbpZJ1UZs3oFAmdvVxhhxB6eJ/Vlp73dfg= +cloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM= +cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= +cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= +cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= +cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= cloud.google.com/go/storage v1.36.0 h1:P0mOkAcaJxhCTvAkMhxMfrTKiNcub4YmmPBtlhAyTr8= cloud.google.com/go/storage v1.36.0/go.mod h1:M6M/3V/D3KpzMTJyPOR/HU6n2Si5QdaXYEsng2xgOs8= +cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= +cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= +cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= +cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4= +cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0= +cloud.google.com/go/vision/v2 v2.2.0/go.mod h1:uCdV4PpN1S0jyCyq8sIM42v2Y6zOLkZs+4R9LrGYwFo= +cloud.google.com/go/vision/v2 v2.3.0/go.mod h1:UO61abBx9QRMFkNBbf1D8B1LXdS2cGiiCRx0vSpZoUo= +cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xXZmFiHmGE= +cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= +cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= +cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= code.cloudfoundry.org/bbs v0.0.0-20200403215808-d7bc971db0db h1:e0HKyVUgju7z1J4C3roz2Jdl2ZpcVq/DaJrq49GobXM= code.cloudfoundry.org/bbs v0.0.0-20200403215808-d7bc971db0db/go.mod h1:XKlGVVXFi5EcHHMPzw3xgONK9PeEZuUbIC43XNwxD10= code.cloudfoundry.org/cfhttp/v2 v2.0.0 h1:4+mLfyzm84gUpJnCT68BLPUypGgvUsYq29QKaSotTz4= @@ -89,22 +228,23 @@ github.com/AlekSi/pointer v1.2.0/go.mod h1:gZGfd3dpW4vEc/UlyfKKi1roIqcCgwOIvb0tS github.com/Azure/azure-pipeline-go v0.2.3/go.mod h1:x841ezTBIMG6O3lAcl8ATHnsOPVl2bqk7S3ta6S6u4k= github.com/Azure/azure-sdk-for-go v68.0.0+incompatible h1:fcYLmCpyNYRnvJbPerq7U0hS+6+I79yEDJBqVNcqUzU= github.com/Azure/azure-sdk-for-go v68.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.0 h1:fb8kj/Dh4CSwgsOzHeZY4Xh68cFVbzXx+ONXGMY//4w= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.0/go.mod h1:uReU2sSxZExRPBAg3qKzmAucSi51+SP1OhohieR821Q= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0 h1:BMAjVKJM0U/CYF27gA0ZMmXGkOcvfFtD0oHVZ1TIPRI= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0/go.mod h1:1fXstnBMas5kzG+S3q8UoJcmyU6nUeunJcMDHcRYHhs= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0 h1:d81/ng9rET2YqdVkVwkb6EXeRrLJIwyGnJcAlAWKwhs= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0/go.mod h1:s4kgfzA0covAXNicZHDMN58jExvcng2mC/DepXiF1EI= github.com/Azure/azure-storage-blob-go v0.15.0/go.mod h1:vbjsVbX0dlxnRc4FFMPsS9BsJWPcne7GB7onqlPvz58= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= 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.11.24/go.mod h1:G6kyRlFnTuSbEYkQGawPfsCswgme4iYf6rfSKUDzbCc= -github.com/Azure/go-autorest/autorest v0.11.28 h1:ndAExarwr5Y+GaHE6VCaY1kyS/HwwGGyuimVhWsHOEM= -github.com/Azure/go-autorest/autorest v0.11.28/go.mod h1:MrkzG3Y3AH668QyF9KRk5neJnGgmhQ6krbhR8Q5eMvA= +github.com/Azure/go-autorest/autorest v0.11.29 h1:I4+HL/JDvErx2LjyzaVxllw2lRDB5/BT2Bm4g20iqYw= +github.com/Azure/go-autorest/autorest v0.11.29/go.mod h1:ZtEzC4Jy2JDrZLxvWs8LrBWEBycl1hbT1eknI8MtfAs= 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.18/go.mod h1:XVVeme+LZwABT8K5Lc3hA4nAe8LDBVle26gTrguhhPQ= -github.com/Azure/go-autorest/autorest/adal v0.9.21 h1:jjQnVFXPfekaqb8vIsv2G1lxshoW+oGv4MDlhRtnYZk= -github.com/Azure/go-autorest/autorest/adal v0.9.21/go.mod h1:zua7mBUaCc5YnSLKYgGJR/w5ePdMDA6H56upLsHzA9U= -github.com/Azure/go-autorest/autorest/azure/auth v0.5.11 h1:P6bYXFoao05z5uhOQzbC3Qd8JqF3jUoocoTeIxkp2cA= -github.com/Azure/go-autorest/autorest/azure/auth v0.5.11/go.mod h1:84w/uV8E37feW2NCJ08uT9VBfjfUHpgLVnG2InYD6cg= -github.com/Azure/go-autorest/autorest/azure/cli v0.4.5 h1:0W/yGmFdTIT77fvdlGZ0LMISoLHFJ7Tx4U0yeB+uFs4= -github.com/Azure/go-autorest/autorest/azure/cli v0.4.5/go.mod h1:ADQAXrkgm7acgWVUNamOgh8YNrv4p27l3Wc55oVfpzg= +github.com/Azure/go-autorest/autorest/adal v0.9.22/go.mod h1:XuAbAEUv2Tta//+voMI038TrJBqjKam0me7qR+L8Cmk= +github.com/Azure/go-autorest/autorest/adal v0.9.23 h1:Yepx8CvFxwNKpH6ja7RZ+sKX+DWYNldbLiALMC3BTz8= +github.com/Azure/go-autorest/autorest/adal v0.9.23/go.mod h1:5pcMqFkdPhviJdlEy3kC/v1ZLnQl0MH6XA5YCcMhy4c= 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.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= @@ -114,12 +254,14 @@ github.com/Azure/go-autorest/logger v0.2.1 h1:IG7i4p/mDa2Ce4TRyAO8IHnVhAVF3RFU+Z github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUMfuitfgcfuo= github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= +github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1 h1:WpB/QDNLpMw72xHJc34BNNykqSOeEJDAWkhf0u12/Jk= +github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8= github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/CycloneDX/cyclonedx-go v0.7.2 h1:kKQ0t1dPOlugSIYVOMiMtFqeXI2wp/f5DBIdfux8gnQ= -github.com/CycloneDX/cyclonedx-go v0.7.2/go.mod h1:K2bA+324+Og0X84fA8HhN2X066K7Bxz4rpMQ4ZhjtSk= +github.com/CycloneDX/cyclonedx-go v0.8.0 h1:FyWVj6x6hoJrui5uRQdYZcSievw3Z32Z88uYzG/0D6M= +github.com/CycloneDX/cyclonedx-go v0.8.0/go.mod h1:K2bA+324+Og0X84fA8HhN2X066K7Bxz4rpMQ4ZhjtSk= github.com/DATA-DOG/go-sqlmock v1.5.0 h1:Shsta01QNfFxHCfpW6YH2STWB0MudeXXEWMr20OEh60= github.com/DATA-DOG/go-sqlmock v1.5.0/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= github.com/DataDog/agent-payload/v5 v5.0.105 h1:ip81v5WbfuRDBDGhYz2Qzzv3YwLhOmf1sp60WVfvIgA= @@ -171,8 +313,8 @@ github.com/DataDog/opentelemetry-mapping-go/pkg/quantile v0.13.3 h1:9fdt/9NeSUty github.com/DataDog/opentelemetry-mapping-go/pkg/quantile v0.13.3/go.mod h1:P8Tr/1BSm0vQ0UXVOtIKmJKXCgb84jdFe9HuBKJPwkc= github.com/DataDog/sketches-go v1.4.4 h1:dF52vzXRFSPOj2IjXSWLvXq3jubL4CI69kwYjJ1w5Z8= github.com/DataDog/sketches-go v1.4.4/go.mod h1:XR0ns2RtEEF09mDKXiKZiQg+nfZStrq1ZuL1eezeZe0= -github.com/DataDog/trivy v0.0.0-20240118082257-7f12ba39deb4 h1:+gTTB2sV0FcL+4U5P5as0B8ccGO0c/1EDO8DzUwrrIM= -github.com/DataDog/trivy v0.0.0-20240118082257-7f12ba39deb4/go.mod h1:uhQpTykniXVif+uj7bROhjgoi9q1nCYw8oLSV0/KZ8g= +github.com/DataDog/trivy v0.0.0-20240304161355-562f4c8f35a6 h1:QbTUPFkDfpTTM2eShGxiMS4GHEJ0ZR3rrO5BAigo24s= +github.com/DataDog/trivy v0.0.0-20240304161355-562f4c8f35a6/go.mod h1:0MnErd0UhxPs2oJFKkQOZpi+BiwN2qU8yPygRofJTtE= github.com/DataDog/viper v1.12.0 h1:FufyZpZPxyszafSV5B8Q8it75IhhuJwH0T7QpT6HnD0= github.com/DataDog/viper v1.12.0/go.mod h1:wDdUVJ2SHaMaPrCZrlRCObwkubsX8j5sme3LaR/SGTc= github.com/DataDog/walker v0.0.0-20230418153152-7f29bb2dc950 h1:2imDajw3V85w1iqHsuXN+hUBZQVF+r9eME8tsPq/HpA= @@ -189,8 +331,10 @@ github.com/DisposaBoy/JsonConfigReader v0.0.0-20201129172854-99cf318d67e7 h1:AJK github.com/DisposaBoy/JsonConfigReader v0.0.0-20201129172854-99cf318d67e7/go.mod h1:GCzqZQHydohgVLSIqRKZeTt8IGb1Y4NaFfim3H40uUI= github.com/GoogleCloudPlatform/docker-credential-gcr v2.0.5+incompatible h1:juIaKLLVhqzP55d8x4cSVgwyQv76Z55/fRv/UBr2KkQ= github.com/GoogleCloudPlatform/docker-credential-gcr v2.0.5+incompatible/go.mod h1:BB1eHdMLYEFuFdBlRMb0N7YGVdM5s6Pt0njxgvfbGGs= -github.com/MakeNowJust/heredoc v1.0.0 h1:cXCdzVdstXyiTqTvfqk9SDHpKNjxuom+DOlyEeQ4pzQ= -github.com/MakeNowJust/heredoc v1.0.0/go.mod h1:mG5amYoWBHf8vpLOuehzbGGw0EHxpZZ6lCpQ4fNJ8LE= +github.com/Intevation/gval v1.3.0 h1:+Ze5sft5MmGbZrHj06NVUbcxCb67l9RaPTLMNr37mjw= +github.com/Intevation/gval v1.3.0/go.mod h1:xmGyGpP5be12EL0P12h+dqiYG8qn2j3PJxIgkoOHO5o= +github.com/Intevation/jsonpath v0.2.1 h1:rINNQJ0Pts5XTFEG+zamtdL7l9uuE1z0FBA+r55Sw+A= +github.com/Intevation/jsonpath v0.2.1/go.mod h1:WnZ8weMmwAx/fAO3SutjYFU+v7DFreNYnibV7CiaYIw= github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= github.com/Masterminds/semver v1.4.2/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= @@ -201,8 +345,6 @@ github.com/Masterminds/semver/v3 v3.2.1 h1:RN9w6+7QoMeJVGyfmbcgs28Br8cvmnucEXnY0 github.com/Masterminds/semver/v3 v3.2.1/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ= github.com/Masterminds/sprig/v3 v3.2.3 h1:eL2fZNezLomi0uOLqjQoN6BfsDD+fyLtgbJMAj9n6YA= github.com/Masterminds/sprig/v3 v3.2.3/go.mod h1:rXcFaZ2zZbLRJv/xSysmlgIM1u11eBaRMhvYXJNkGuM= -github.com/Masterminds/squirrel v1.5.3 h1:YPpoceAcxuzIljlr5iWpNKaql7hLeG1KLSrhvdHpkZc= -github.com/Masterminds/squirrel v1.5.3/go.mod h1:NNaOrjSoIDfDA40n7sr2tPNZRfjzjA400rg+riTZj10= github.com/Microsoft/go-winio v0.5.0/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= @@ -215,13 +357,13 @@ github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAE github.com/OneOfOne/xxhash v1.2.8 h1:31czK/TI9sNkxIKfaUfGlU47BAxQ0ztGgd9vPyqimf8= github.com/OneOfOne/xxhash v1.2.8/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q= github.com/ProtonMail/go-crypto v0.0.0-20230717121422-5aa5874ade95/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= -github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 h1:kkhsdkhsCvIsutKu5zLMgWtgh9YxGCNAw8Ad8hjwfYg= -github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= -github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= +github.com/ProtonMail/go-crypto v0.0.0-20230923063757-afb1ddc0824c h1:kMFnB0vCcX7IL/m9Y5LO+KQYv+t1CQOiFe6+SV2J7bE= +github.com/ProtonMail/go-crypto v0.0.0-20230923063757-afb1ddc0824c/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= github.com/StackExchange/wmi v0.0.0-20181212234831-e0a55b97c705/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA= github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8= +github.com/VividCortex/ewma v1.2.0 h1:f58SaIzcDXrSy3kWaHNvuJgJ3Nmz59Zji6XoJR/q1ow= +github.com/VividCortex/ewma v1.2.0/go.mod h1:nz4BbCtbLyFDeC9SUHbtcT5644juEuWfUAUnGx7j5l4= github.com/acobaugh/osrelease v0.1.0 h1:Yb59HQDGGNhCj4suHaFQQfBps5wyoKLSSX/J/+UifRE= github.com/acobaugh/osrelease v0.1.0/go.mod h1:4bFEs0MtgHNHBrmHCt67gNisnabCRAlzdVasCEGHTWY= github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo= @@ -242,8 +384,10 @@ github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 h1:s6gZFSlWYmbqAu github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a h1:HbKu58rmZpUGpz5+4FfNmIU+FmZg2P3Xaj2v2bfNWmk= github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a/go.mod h1:SGnFV6hVsYE877CKEZ6tDNTjaSXYUk6QqoIK6PrAtcc= -github.com/alicebob/miniredis/v2 v2.23.0 h1:+lwAJYjvvdIVg6doFHuotFjueJ/7KY10xo/vm3X3Scw= -github.com/alicebob/miniredis/v2 v2.23.0/go.mod h1:XNqvJdQJv5mSuVMc0ynneafpnL/zv52acZ6kqeS0t88= +github.com/alicebob/miniredis/v2 v2.31.1 h1:7XAt0uUg3DtwEKW5ZAGa+K7FZV2DdKQo5K/6TTnfX8Y= +github.com/alicebob/miniredis/v2 v2.31.1/go.mod h1:UB/T2Uztp7MlFSDakaX1sTXUv5CASoprx0wulRT6HBg= +github.com/anchore/go-struct-converter v0.0.0-20221118182256-c68fdcfa2092 h1:aM1rlcoLz8y5B2r4tTLMiVTrMtpfY0O8EScKJxaSaEc= +github.com/anchore/go-struct-converter v0.0.0-20221118182256-c68fdcfa2092/go.mod h1:rYqSE9HbjzpHTI74vwPvae4ZVYZd1lue2ta6xHPdblA= github.com/andybalholm/brotli v1.0.1/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y= github.com/andybalholm/brotli v1.0.6 h1:Yf9fFpf49Zrxb9NlQaluyE92/+X7UVHlhMNJN2sxfOI= github.com/andybalholm/brotli v1.0.6/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= @@ -253,14 +397,14 @@ github.com/antihax/optional v0.0.0-20180407024304-ca021399b1a6/go.mod h1:V8iCPQY github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230305170008-8188dc5388df h1:7RFfzj4SSt6nnvCPbCqijJi1nWCd+TqAT3bYCStRC18= github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230305170008-8188dc5388df/go.mod h1:pSwJ0fSY5KhvocuWSx4fz3BA8OrA1bQn+K1Eli3BRwM= -github.com/apparentlymart/go-cidr v1.1.0 h1:2mAhrMoF+nhXqxTzSZMUzDHkLjmIHC+Zzn4tdgBZjnU= -github.com/apparentlymart/go-cidr v1.1.0/go.mod h1:EBcsNrHc3zQeuaeCeCtQruQm+n9/YjEn/vI25Lg7Gwc= github.com/apparentlymart/go-textseg/v13 v13.0.0 h1:Y+KvPE1NYz0xl601PVImeQfFyEy6iT90AvPUL1NNfNw= github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo= +github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY= +github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4= github.com/aquasecurity/bolt-fixtures v0.0.0-20200903104109-d34e7f983986 h1:2a30xLN2sUZcMXl50hg+PJCIDdJgIvIbVcKqLJ/ZrtM= github.com/aquasecurity/bolt-fixtures v0.0.0-20200903104109-d34e7f983986/go.mod h1:NT+jyeCzXk6vXR5MTkdn4z64TgGfE5HMLC8qfj5unl8= -github.com/aquasecurity/defsec v0.82.7-0.20230103191626-4f3187c78d6b h1:3tjlf7nI/AFqoClNTOmm7MbO/HJy/ObQRzMIj2M44z8= -github.com/aquasecurity/defsec v0.82.7-0.20230103191626-4f3187c78d6b/go.mod h1:aX3TcsZB+IA1j9AXMzxrCJQ74WcEnoO1L2TkW1vKgsA= +github.com/aquasecurity/defsec v0.94.2-0.20240119001230-c2d65f49dfeb h1:7x3aMSnQhXJLcFOCivOmNBk0zAVLKkEk5UWkrRxxHIk= +github.com/aquasecurity/defsec v0.94.2-0.20240119001230-c2d65f49dfeb/go.mod h1:wiX9BX0SOG0ZWjVIPYGPl46fyO3Gu8lJnk4rmhFR7IA= github.com/aquasecurity/go-gem-version v0.0.0-20201115065557-8eed6fe000ce h1:QgBRgJvtEOBtUXilDb1MLi1p1MWoyFDXAu5DEUl5nwM= github.com/aquasecurity/go-gem-version v0.0.0-20201115065557-8eed6fe000ce/go.mod h1:HXgVzOPvXhVGLJs4ZKO817idqr/xhwsTcj17CLYY74s= github.com/aquasecurity/go-npm-version v0.0.0-20201110091526-0b796d180798 h1:eveqE9ivrt30CJ7dOajOfBavhZ4zPqHcZe/4tKp0alc= @@ -270,14 +414,16 @@ github.com/aquasecurity/go-pep440-version v0.0.0-20210121094942-22b2f8951d46/go. github.com/aquasecurity/go-version v0.0.0-20201107203531-5e48ac5d022a/go.mod h1:9Beu8XsUNNfzml7WBf3QmyPToP1wm1Gj/Vc5UJKqTzU= github.com/aquasecurity/go-version v0.0.0-20210121072130-637058cfe492 h1:rcEG5HI490FF0a7zuvxOxen52ddygCfNVjP0XOCMl+M= github.com/aquasecurity/go-version v0.0.0-20210121072130-637058cfe492/go.mod h1:9Beu8XsUNNfzml7WBf3QmyPToP1wm1Gj/Vc5UJKqTzU= -github.com/aquasecurity/memoryfs v1.4.4 h1:HdkShi6jjKZLAgQ+6/CXXDB/zwH2hAMp2oklo9w5t7A= -github.com/aquasecurity/memoryfs v1.4.4/go.mod h1:kLxvGxhdyG0zmlFUJB6VAkLn4WRPOycLW/UYO6dspao= github.com/aquasecurity/table v1.8.0 h1:9ntpSwrUfjrM6/YviArlx/ZBGd6ix8W+MtojQcM7tv0= github.com/aquasecurity/table v1.8.0/go.mod h1:eqOmvjjB7AhXFgFqpJUEE/ietg7RrMSJZXyTN8E/wZw= github.com/aquasecurity/testdocker v0.0.0-20230111101738-e741bda259da h1:pj/adfN0Wbzc0H8YkI1nX5K92wOU5/1/1TRuuc0y5Nw= github.com/aquasecurity/testdocker v0.0.0-20230111101738-e741bda259da/go.mod h1:852lbQLpK2nCwlR4ZLYIccxYCfoQao6q9Nl6tjz54v8= github.com/aquasecurity/tml v0.6.1 h1:y2ZlGSfrhnn7t4ZJ/0rotuH+v5Jgv6BDDO5jB6A9gwo= github.com/aquasecurity/tml v0.6.1/go.mod h1:OnYMWY5lvI9ejU7yH9LCberWaaTBW7hBFsITiIMY2yY= +github.com/aquasecurity/trivy-java-db v0.0.0-20240109071736-184bd7481d48 h1:JVgBIuIYbwG+ekC5lUHUpGJboPYiCcxiz06RCtz8neI= +github.com/aquasecurity/trivy-java-db v0.0.0-20240109071736-184bd7481d48/go.mod h1:Ldya37FLi0e/5Cjq2T5Bty7cFkzUDwTcPeQua+2M8i8= +github.com/aquasecurity/trivy-policies v0.9.1-0.20240212232053-c450017d5624 h1:OKJa4JRaB54tY3XxrUA5waEPuI+AsNMoz7PR5rkDQj0= +github.com/aquasecurity/trivy-policies v0.9.1-0.20240212232053-c450017d5624/go.mod h1:AHMSfZ86npbvCMRxrGFw51PIfl60FRwXWgrvxWy7EU0= github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0 h1:jfIu9sQUG6Ig+0+Ap1h4unLjW6YQJpKZVmUzxsD4E/Q= github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0/go.mod h1:t2tdKJDJF9BV14lnkjHmOQgcvEKgtqs5a1N3LNdJhGE= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= @@ -289,7 +435,6 @@ github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= -github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/avast/retry-go/v4 v4.5.0 h1:QoRAZZ90cj5oni2Lsgl2GW8mNTnUCnmpx/iKpwVisHg= @@ -299,10 +444,10 @@ github.com/awalterschulze/gographviz v2.0.3+incompatible h1:9sVEXJBJLwGX7EQVhLm2 github.com/awalterschulze/gographviz v2.0.3+incompatible/go.mod h1:GEV5wmg4YquNw7v1kkyoX9etIk8yVmXj+AkDHuuETHs= github.com/aws/aws-lambda-go v1.37.0 h1:WXkQ/xhIcXZZ2P5ZBEw+bbAKeCEcb5NtiYpSwVVzIXg= github.com/aws/aws-lambda-go v1.37.0/go.mod h1:jwFe2KmMsHmffA1X2R09hH6lFzJQxzI8qK17ewzbQMM= -github.com/aws/aws-sdk-go v1.46.0 h1:Igh7W8P+sA6mXJ9yhreOSweefLapcqekhxQlY1llxcM= -github.com/aws/aws-sdk-go v1.46.0/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= +github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= +github.com/aws/aws-sdk-go v1.49.21 h1:Rl8KW6HqkwzhATwvXhyr7vD4JFUMi7oXGAw9SrxxIFY= +github.com/aws/aws-sdk-go v1.49.21/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk= 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 v1.16.16/go.mod h1:SwiyXi/1zTUZ6KIAmLK5V5ll8SiURNUYOqTerZPaF9k= github.com/aws/aws-sdk-go-v2 v1.21.2/go.mod h1:ErQhvNuEMhJjweavOYhxVkn2RUx7kQXVATHrjKtxIpM= github.com/aws/aws-sdk-go-v2 v1.25.2 h1:/uiG1avJRgLGiQM9X3qJM8+Qa6KRGK5rRPuXE0HUM+w= github.com/aws/aws-sdk-go-v2 v1.25.2/go.mod h1:Evoc5AsmtveRt1komDwIsjHFyrP5tDuF1D1U+6z6pNo= @@ -323,11 +468,9 @@ github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.14.11 h1:c5I5iH+DZcH3xOIMlz3/tC github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.14.11/go.mod h1:cRrYDYAMUohBJUtUnOhydaMHtiK/1NZ0Otc9lIb6O0Y= github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.15.15 h1:2MUXyGW6dVaQz6aqycpbdLIH1NMcUI6kW6vQ0RabGYg= github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.15.15/go.mod h1:aHbhbR6WEQgHAiRj41EQ2W47yOYwNtIkWTXmcAtYqj8= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.23/go.mod h1:2DFxAQ9pfIRy0imBCJv+vZ2X6RKxves6fbnEuSry6b4= github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.43/go.mod h1:auo+PiyLl0n1l8A0e8RIeR8tOzYPfZZH/JNlrJ8igTQ= github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.2 h1:bNo4LagzUKbjdxE0tIcR9pMzLR2U/Tgie1Hq1HQ3iH8= github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.2/go.mod h1:wRQv0nN6v9wDXuWThpovGQjqF1HFdcgWjporw14lS8k= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.17/go.mod h1:pRwaTYCJemADaqCbUAxltMoHKata7hmB5PjEXeu0kfg= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.37/go.mod h1:Qe+2KtKml+FEsQF/DHmDV+xjtche/hwoF75EG4UlHW8= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.2 h1:EtOU5jsPdIQNP+6Q2C5e3d65NKT1PeCiQk+9OdzO12Q= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.2/go.mod h1:tyF5sKccmDz0Bv4NrstEr+/9YkSPJHrcO7UsUKf7pWM= @@ -339,12 +482,12 @@ github.com/aws/aws-sdk-go-v2/internal/v4a v1.1.6/go.mod h1:Q0Hq2X/NuL7z8b1Dww8rm github.com/aws/aws-sdk-go-v2/internal/v4a v1.2.10 h1:5oE2WzJE56/mVveuDZPJESKlg/00AaS2pY2QZcnxg4M= github.com/aws/aws-sdk-go-v2/internal/v4a v1.2.10/go.mod h1:FHbKWQtRBYUz4vO5WBWjzMD2by126ny5y/1EoaWoLfI= 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/ebs v1.21.1 h1:LpSKObCMetDFDfoIR3TosU2z5wLdfLIF+waIp8UvdwY= -github.com/aws/aws-sdk-go-v2/service/ebs v1.21.1/go.mod h1:iC1LA0meJCpcAlZklU2l3V/66b+lVQ+XND3moAFrDA0= -github.com/aws/aws-sdk-go-v2/service/ec2 v1.138.1 h1:ToFONzxcc0i0xp9towBF/aVy8qwqGSs3siKoOZiYEMk= -github.com/aws/aws-sdk-go-v2/service/ec2 v1.138.1/go.mod h1:lTBYr5XTnzQ+fG7EdenYlhrDifjdGJ/Lxul24zeuTNU= -github.com/aws/aws-sdk-go-v2/service/ecr v1.17.18 h1:uiF/RI+Up8H2xdgT2GWa20YzxiKEalHieqNjm6HC3Xk= -github.com/aws/aws-sdk-go-v2/service/ecr v1.17.18/go.mod h1:DQtDYmexqR+z+B6HBCvY7zK/tuXKv6Zy/IwOXOK3eow= +github.com/aws/aws-sdk-go-v2/service/ebs v1.21.7 h1:CRzzXjmgx9p362yO39D6hbZULdMI23gaKqSxijJCXHM= +github.com/aws/aws-sdk-go-v2/service/ebs v1.21.7/go.mod h1:wnsHqpi3RgDwklS5SPHUgjcUUpontGPKJ+GJYOdV7pY= +github.com/aws/aws-sdk-go-v2/service/ec2 v1.142.0 h1:VrFC1uEZjX4ghkm/et8ATVGb1mT75Iv8aPKPjUE+F8A= +github.com/aws/aws-sdk-go-v2/service/ec2 v1.142.0/go.mod h1:qjhtI9zjpUHRc6khtrIM9fb48+ii6+UikL3/b+MKYn0= +github.com/aws/aws-sdk-go-v2/service/ecr v1.24.6 h1:cT7h+GWP2k0hJSsPmppKgxl4C9R6gCC5/oF4oHnmpK4= +github.com/aws/aws-sdk-go-v2/service/ecr v1.24.6/go.mod h1:AOHmGMoPtSY9Zm2zBuwUJQBisIvYAZeA1n7b6f4e880= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.15/go.mod h1:26SQUPcTNgV1Tapwdt4a1rOsYRsnBsJHLMPoxK2b0d8= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.1 h1:EyBZibRTVAs6ECHZOw5/wlylS9OcTzwyjeQMudmREjE= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.1/go.mod h1:JKpmtYhhPs7D97NL/ltqz7yCkERFW5dOlHyVl66ZYF8= @@ -379,7 +522,6 @@ github.com/aws/aws-sdk-go-v2/service/sts v1.23.2/go.mod h1:Eows6e1uQEsc4ZaHANmsP github.com/aws/aws-sdk-go-v2/service/sts v1.26.7 h1:NzO4Vrau795RkUdSHKEwiR01FaGzGOH1EETJ+5QHnm0= github.com/aws/aws-sdk-go-v2/service/sts v1.26.7/go.mod h1:6h2YuIoxaMSCFf5fi1EgZAwdfkGMgDY+DVfa61uLe4U= github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E= -github.com/aws/smithy-go v1.13.3/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA= github.com/aws/smithy-go v1.15.0/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA= github.com/aws/smithy-go v1.20.1 h1:4SZlSlMr36UEqC7XOyRVb27XMeZubNcBNN+9IgEPIQw= github.com/aws/smithy-go v1.20.1/go.mod h1:krry+ya/rV9RDcV/Q16kpu6ypI4K2czasz0NC3qS14E= @@ -399,13 +541,15 @@ github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bhmj/jsonslice v0.0.0-20200323023432-92c3edaad8e2 h1:11xwzvvHBTyUMCD7infJV2SXSaVyp9ZXK9QgfV6Jfss= github.com/bhmj/jsonslice v0.0.0-20200323023432-92c3edaad8e2/go.mod h1:blvNODZOz8uOvDJzGiXzoi8QlzcAhA57sMnKx1D18/k= +github.com/bitnami/go-version v0.0.0-20231130084017-bb00604d650c h1:C4UZIaS+HAw+X6jGUsoP2ZbM99PuqhCttjomg1yhNAI= +github.com/bitnami/go-version v0.0.0-20231130084017-bb00604d650c/go.mod h1:9iglf1GG4oNRJ39bZ5AZrjgAFD2RwQbXw6Qf7Cs47wo= github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= github.com/blabber/go-freebsd-sysctl v0.0.0-20201130114544-503969f39d8f h1:gMH+lz/KRpSqdoL+IQjgd91bP1LB8vrVEfNxr47GYC8= github.com/blabber/go-freebsd-sysctl v0.0.0-20201130114544-503969f39d8f/go.mod h1:cTRyHktEaXkKTTEyZ0hAgS7H4V0AVoKhB8Dx0tVr/tY= github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= -github.com/bmatcuk/doublestar v1.3.4 h1:gPypJ5xD31uhX6Tf54sDPUOBXTqKH4c9aPY66CyQrS0= -github.com/bmatcuk/doublestar v1.3.4/go.mod h1:wiQtGV+rzVYxB7WIlirSN++5HPtPlXEo9MEoZQC/PmE= +github.com/bmatcuk/doublestar/v4 v4.6.1 h1:FH9SifrbvJhnlQpztAx++wlkk70QBf0iBWDwNy7PA4I= +github.com/bmatcuk/doublestar/v4 v4.6.1/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc= github.com/bmizerany/pat v0.0.0-20170815010413-6226ea591a40 h1:y4B3+GPxKlrigF1ha5FFErxK+sr6sWxQovRMzwMhejo= github.com/bmizerany/pat v0.0.0-20170815010413-6226ea591a40/go.mod h1:8rLXio+WjiTceGBHIoTvn60HIbs7Hm7bcHjyrSqYB9c= github.com/bool64/dev v0.2.31 h1:OS57EqYaYe2M/2bw9uhDCIFiZZwywKFS/4qMLN6JUmQ= @@ -421,8 +565,6 @@ github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx2 github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/bytecodealliance/wasmtime-go/v3 v3.0.2 h1:3uZCA/BLTIu+DqCfguByNMJa2HVHpXvjfy0Dy7g6fuA= github.com/bytecodealliance/wasmtime-go/v3 v3.0.2/go.mod h1:RnUjnIXxEJcL6BgCvNyzCCRzZcxCgsZCi+RNlvYor5Q= -github.com/caarlos0/env/v6 v6.10.1 h1:t1mPSxNpei6M5yAeu1qtRdPAK29Nbcf/n3G7x+b3/II= -github.com/caarlos0/env/v6 v6.10.1/go.mod h1:hvp/ryKXKipEkcuYjs9mI4bBCg+UI0Yhgm5Zu0ddvwc= github.com/cavaliergopher/grab/v3 v3.0.1 h1:4z7TkBfmPjmLAAmkkAZNX/6QJ1nNFdv3SdIHXju0Fr4= github.com/cavaliergopher/grab/v3 v3.0.1/go.mod h1:1U/KNnD+Ft6JJiYoYBAimKH2XrYptb8Kl3DFGmsjpq4= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= @@ -436,11 +578,12 @@ github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XL github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/chai2010/gettext-go v1.0.2 h1:1Lwwip6Q2QGsAdl/ZKPCwTe9fe0CjlUbqj5bFNSjIRk= -github.com/chai2010/gettext-go v1.0.2/go.mod h1:y+wnP2cHYaVj19NZhYKAwEMH2CI1gNHeQQ+5AjwawxA= github.com/cheggaaa/pb v1.0.10/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= +github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= github.com/cheggaaa/pb v1.0.29 h1:FckUN5ngEk2LpvuG0fw1GEFx6LtyY2pWI/Z2QgCnEYo= github.com/cheggaaa/pb v1.0.29/go.mod h1:W40334L7FMC5JKWldsTWbdGjLo0RxUKK73K+TuPxX30= +github.com/cheggaaa/pb/v3 v3.1.4 h1:DN8j4TVVdKu3WxVwcRKu0sG00IIU6FewoABZzXbRQeo= +github.com/cheggaaa/pb/v3 v3.1.4/go.mod h1:6wVjILNBaXMs8c21qRiaUM8BR82erfgau1DQ4iUXmSA= github.com/chromedp/cdproto v0.0.0-20230802225258-3cf4e6d46a89 h1:aPflPkRFkVwbW6dmcVqfgwp1i+UWGFH6VgR1Jim5Ygc= github.com/chromedp/cdproto v0.0.0-20230802225258-3cf4e6d46a89/go.mod h1:GKljq0VrfU4D5yc+2qA6OVr8pmO/MBbPEWqWQ/oqGEs= github.com/chromedp/chromedp v0.9.2 h1:dKtNz4kApb06KuSXoTQIyUC2TrA0fhGDwNZf3bcgfKw= @@ -468,10 +611,14 @@ github.com/cloudfoundry-community/go-cfclient/v2 v2.0.1-0.20230503155151-3d15366 github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4 h1:/inchEIKaYC1Akx+H+gqO04wryn5h75LSazbRlnya1k= -github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20231109132714-523115ebc101 h1:7To3pQ+pZo0i3dsWEbinPNFs5gPSBOsJtx3wTT94VBY= +github.com/cncf/xds/go v0.0.0-20231109132714-523115ebc101/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/codahale/rfc6979 v0.0.0-20141003034818-6a90f24967eb h1:EDmT6Q9Zs+SbUoc7Ik9EfrFqcylYqgPZ9ANSbTAntnE= github.com/codahale/rfc6979 v0.0.0-20141003034818-6a90f24967eb/go.mod h1:ZjrT6AXHbDs86ZSdt/osfBi5qfexBrKUdONk989Wnk4= github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0 h1:sDMmm+q/3+BukdIpxwO365v/Rbspp2Nt5XntgQRXq8Q= @@ -520,8 +667,14 @@ github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46t github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/cri-o/ocicni v0.4.0 h1:FKTiq4CESW5OfqM3M87KyHApcawtWw5EwufMiZyXYb0= github.com/cri-o/ocicni v0.4.0/go.mod h1:/L2k9zk6l2O1FbE4xY1qTqSWJBqobOvsoYlkghIhjmk= +github.com/csaf-poc/csaf_distribution/v3 v3.0.0 h1:ob9+Fmpff0YWgTP3dYaw7G2hKQ9cegh9l3zksc+q3sM= +github.com/csaf-poc/csaf_distribution/v3 v3.0.0/go.mod h1:uilCTiNKivq+6zrDvjtZaUeLk70oe21iwKivo6ILwlQ= github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= +github.com/datadog/kube-openapi v0.0.0-20231101162351-39b249f0ed92 h1:yD8+tBuU9fnZfX5lyCvDL0Qq92s5SwA/kSPyg27n1rM= +github.com/datadog/kube-openapi v0.0.0-20231101162351-39b249f0ed92/go.mod h1:lpeO0N0x//2YZfE7dY/Vs9b7a03vixYPSjdD/sQSZSc= +github.com/datadog/trivy-db v0.0.0-20240228172000-42caffdaee3f h1:IFB3J+f0m2e7nZjPTqvzLrrb6dVU6BQrsGx/7Tmm8Xk= +github.com/datadog/trivy-db v0.0.0-20240228172000-42caffdaee3f/go.mod h1:cj9/QmD9N3OZnKQMp+/DvdV+ym3HyIkd4e+F0ZM3ZGs= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= @@ -541,26 +694,24 @@ github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cu github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/dgryski/trifles v0.0.0-20200323201526-dd97f9abfb48 h1:fRzb/w+pyskVMQ+UbP35JkH8yB7MYb4q/qhBarqZE6g= github.com/dgryski/trifles v0.0.0-20200323201526-dd97f9abfb48/go.mod h1:if7Fbed8SFyPtHLHbg49SI7NAdJiC5WIA09pe59rfAA= -github.com/dimchansky/utfbom v1.1.1 h1:vV6w1AhK4VMnhBno/TPVCoK9U/LP0PkLCS9tbxHdi/U= -github.com/dimchansky/utfbom v1.1.1/go.mod h1:SxdoEBH5qIqFocHMyGOXVAybYJdr71b1Q/j0mACtrfE= github.com/distribution/reference v0.5.0 h1:/FUIFXtfc/x2gpa5/VGfiGLuOIdYa1t65IKK2OFGvA0= github.com/distribution/reference v0.5.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= github.com/dlclark/regexp2 v1.4.0 h1:F1rxgk7p4uKjwIQxBs9oAXe5CqrXlCduYEJvrF4u93E= github.com/dlclark/regexp2 v1.4.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= +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/docker/cli v25.0.1+incompatible h1:mFpqnrS6Hsm3v1k7Wa/BO23oz0k121MTbTO1lpcGSkU= github.com/docker/cli v25.0.1+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= -github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8= -github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v25.0.1+incompatible h1:k5TYd5rIVQRSqcTwCID+cyVA0yRg86+Pcrz1ls0/frA= -github.com/docker/docker v25.0.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk= +github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= +github.com/docker/docker v25.0.2+incompatible h1:/OaKeauroa10K4Nqavw4zlhcDq/WBcPMc5DbjOGgozY= +github.com/docker/docker v25.0.2+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker-credential-helpers v0.8.0 h1:YQFtbBQb4VrpoPxhFuzEBPQ9E16qz5SpHLS+uswaCp8= github.com/docker/docker-credential-helpers v0.8.0/go.mod h1:UGFXcuoQ5TxPiB54nHOZ32AWRqQdECoh/Mg0AlEYb40= github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc= github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c h1:+pKlWGMw7gf6bQ+oDZB4KHQFypsfjYlq/C4rfL7D3g8= github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= -github.com/docker/go-metrics v0.0.1 h1:AgB/0SvBxihN0X8OR4SjsblXkbMvalQ8cjmtKQ2rQV8= -github.com/docker/go-metrics v0.0.1/go.mod h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHzueweSI3Vw= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= @@ -592,6 +743,7 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.m github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= +github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/envoyproxy/protoc-gen-validate v1.0.2 h1:QkIBuU5k+x7/QXPvPPnWXWlCdaBFApVqftFV6k087DA= github.com/envoyproxy/protoc-gen-validate v1.0.2/go.mod h1:GpiZQP3dDbg4JouG/NNS7QWXpgx6x8QiMKdmN72jogE= @@ -599,8 +751,6 @@ github.com/evanphx/json-patch v5.7.0+incompatible h1:vgGkfT/9f8zE6tvSCe74nfpAVDQ github.com/evanphx/json-patch v5.7.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch/v5 v5.6.0 h1:b91NhWfaz02IuVxO9faSllyAtNXHMPkC5J8sJCLunww= github.com/evanphx/json-patch/v5 v5.6.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4= -github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d h1:105gxyaGwCFad8crR9dcMQWvV9Hvulu6hwUh4tWPJnM= -github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d/go.mod h1:ZZMPRZwes7CROmyNKgQzC3XPs6L/G2EJLHddWejkmf4= 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.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= @@ -629,13 +779,13 @@ github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm github.com/gin-gonic/gin v1.7.7/go.mod h1:axIBovoeJpVj8S3BwE0uPMTeReE4+AfFtqpqaZ1qq1U= github.com/glaslos/ssdeep v0.3.3 h1:6+/hcz3CcLKSZVOm/xbmcfCAuyVDhBAYFQxHHQR+ATA= github.com/glaslos/ssdeep v0.3.3/go.mod h1:y1Kro2xRYIZdPkL9uQCf/aXtPEEf+TEHe91tlKU8Y0w= +github.com/glebarez/go-sqlite v1.20.3 h1:89BkqGOXR9oRmG58ZrzgoY/Fhy5x0M+/WV48U5zVrZ4= +github.com/glebarez/go-sqlite v1.20.3/go.mod h1:u3N6D/wftiAzIOJtZl6BmedqxmmkDfH3q+ihjqxC9u0= github.com/gliderlabs/ssh v0.3.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY= github.com/gliderlabs/ssh v0.3.5/go.mod h1:8XB4KraRrX39qHhT6yxPsHedjA08I/uBVwj4xC+/+z4= github.com/go-delve/delve v1.20.1 h1:km9RA+oUw6vd/mYL4EGcT5DsqGE0w/To8zFq0ZRj4PQ= github.com/go-delve/delve v1.20.1/go.mod h1:oeVm2dZ1zgc9wWHGv6dUarkLBPyMvVEBi6RJiW8BORI= github.com/go-delve/liner v1.2.3-0.20220127212407-d32d89dd2a5d/go.mod h1:biJCRbqp51wS+I92HMqn5H8/A0PAhxn2vyOT+JqhiGI= -github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= -github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU= @@ -647,8 +797,6 @@ github.com/go-git/go-git/v5 v5.11.0/go.mod h1:6GFcX2P3NM7FPBfpePbpLd21XxsgdAt+lK 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= -github.com/go-gorp/gorp/v3 v3.0.2 h1:ULqJXIekoqMx29FI5ekXXFoH1dT2Vc8UhnRzBg+Emz4= -github.com/go-gorp/gorp/v3 v3.0.2/go.mod h1:BJ3q1ejpV8cVALtcXvXaXyTOlMmJhWDxTmncaR6rwBY= github.com/go-ini/ini v1.67.0 h1:z6ZrTEZqSWOTyH2FlglNbNgARyHG8oLW9gMELqKr06A= github.com/go-ini/ini v1.67.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= @@ -665,7 +813,6 @@ github.com/go-logfmt/logfmt v0.5.1 h1:otpy5pqBCBZ1ng9RQ0dPu4PN7ba75Y/aA+UpowDyNV github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= -github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= @@ -679,44 +826,26 @@ github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNI 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= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= -github.com/go-openapi/analysis v0.21.2/go.mod h1:HZwRk4RRisyG8vx2Oe6aqeSQcoxRp47Xkp3+K6q+LdY= -github.com/go-openapi/analysis v0.21.4 h1:ZDFLvSNxpDaomuCueM0BlSXxpANBlFYiBvr+GXrvIHc= -github.com/go-openapi/analysis v0.21.4/go.mod h1:4zQ35W4neeZTqh3ol0rv/O8JBbka9QyAgQRPp9y3pfo= -github.com/go-openapi/errors v0.19.8/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= -github.com/go-openapi/errors v0.19.9/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= -github.com/go-openapi/errors v0.20.2/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= -github.com/go-openapi/errors v0.20.4 h1:unTcVm6PispJsMECE3zWgvG4xTiKda1LIR5rCRWLG6M= -github.com/go-openapi/errors v0.20.4/go.mod h1:Z3FlZ4I8jEGxjUK+bugx3on2mIAk4txuAOhlsB1FSgk= -github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE= -github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= -github.com/go-openapi/jsonreference v0.19.6/go.mod h1:diGHMEHg2IqXZGKxqyvWdfWU/aim5Dprw5bqpKkTvns= -github.com/go-openapi/jsonreference v0.20.0/go.mod h1:Ag74Ico3lPc+zR+qjn4XBUmXymS4zJbYVCZmcgkasdo= -github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE= -github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= -github.com/go-openapi/loads v0.21.1/go.mod h1:/DtAMXXneXFjbQMGEtbamCZb+4x7eGwkvZCvBmwUG+g= -github.com/go-openapi/loads v0.21.2 h1:r2a/xFIYeZ4Qd2TnGpWDIQNcP80dIaZgf704za8enro= -github.com/go-openapi/loads v0.21.2/go.mod h1:Jq58Os6SSGz0rzh62ptiu8Z31I+OTHqmULx5e/gJbNw= -github.com/go-openapi/runtime v0.26.0 h1:HYOFtG00FM1UvqrcxbEJg/SwvDRvYLQKGhw2zaQjTcc= -github.com/go-openapi/runtime v0.26.0/go.mod h1:QgRGeZwrUcSHdeh4Ka9Glvo0ug1LC5WyE+EV88plZrQ= -github.com/go-openapi/spec v0.20.4/go.mod h1:faYFR1CvsJZ0mNsmsphTMSoRrNV3TEDoAM7FOEWeq8I= -github.com/go-openapi/spec v0.20.6/go.mod h1:2OpW+JddWPrpXSCIX8eOx7lZ5iyuWj3RYR6VaaBKcWA= -github.com/go-openapi/spec v0.20.9 h1:xnlYNQAwKd2VQRRfwTEI0DcK+2cbuvI/0c7jx3gA8/8= -github.com/go-openapi/spec v0.20.9/go.mod h1:2OpW+JddWPrpXSCIX8eOx7lZ5iyuWj3RYR6VaaBKcWA= -github.com/go-openapi/strfmt v0.21.0/go.mod h1:ZRQ409bWMj+SOgXofQAGTIo2Ebu72Gs+WaRADcS5iNg= -github.com/go-openapi/strfmt v0.21.1/go.mod h1:I/XVKeLc5+MM5oPNN7P6urMOpuLXEcNrCX/rPGuWb0k= -github.com/go-openapi/strfmt v0.21.3/go.mod h1:k+RzNO0Da+k3FrrynSNN8F7n/peCmQQqbbXjtDfvmGg= -github.com/go-openapi/strfmt v0.21.7 h1:rspiXgNWgeUzhjo1YU01do6qsahtJNByjLVbPLNHb8k= -github.com/go-openapi/strfmt v0.21.7/go.mod h1:adeGTkxE44sPyLk0JV235VQAO/ZXUr8KAzYjclFs3ew= -github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= -github.com/go-openapi/swag v0.21.1/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= -github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= -github.com/go-openapi/swag v0.22.4 h1:QLMzNJnMGPRNDCbySlcj1x01tzU8/9LTTL9hZZZogBU= -github.com/go-openapi/swag v0.22.4/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= -github.com/go-openapi/validate v0.22.1 h1:G+c2ub6q47kfX1sOBLwIQwzBVt8qmOAARyo/9Fqs9NU= -github.com/go-openapi/validate v0.22.1/go.mod h1:rjnrwK57VJ7A8xqfpAOEKRH8yQSGUriMu5/zuPSQ1hg= +github.com/go-openapi/analysis v0.21.5 h1:3tHfEBh6Ia8eKc4M7khOGjPOAlWKJ10d877Cr9teujI= +github.com/go-openapi/analysis v0.21.5/go.mod h1:25YcZosX9Lwz2wBsrFrrsL8bmjjXdlyP6zsr2AMy29M= +github.com/go-openapi/errors v0.21.0 h1:FhChC/duCnfoLj1gZ0BgaBmzhJC2SL/sJr8a2vAobSY= +github.com/go-openapi/errors v0.21.0/go.mod h1:jxNTMUxRCKj65yb/okJGEtahVd7uvWnuWfj53bse4ho= +github.com/go-openapi/jsonpointer v0.20.1 h1:MkK4VEIEZMj4wT9PmjaUmGflVBr9nvud4Q4UVFbDoBE= +github.com/go-openapi/jsonpointer v0.20.1/go.mod h1:bHen+N0u1KEO3YlmqOjTT9Adn1RfD91Ar825/PuiRVs= +github.com/go-openapi/jsonreference v0.20.3 h1:EjGcjTW8pD1mRis6+w/gmoBdqv5+RbE9B85D1NgDOVQ= +github.com/go-openapi/jsonreference v0.20.3/go.mod h1:FviDZ46i9ivh810gqzFLl5NttD5q3tSlMLqLr6okedM= +github.com/go-openapi/loads v0.21.3 h1:8sSH2FIm/SnbDUGv572md4YqVMFne/a9Eubvcd3anew= +github.com/go-openapi/loads v0.21.3/go.mod h1:Y3aMR24iHbKHppOj91nQ/SHc0cuPbAr4ndY4a02xydc= +github.com/go-openapi/runtime v0.27.1 h1:ae53yaOoh+fx/X5Eaq8cRmavHgDma65XPZuvBqvJYto= +github.com/go-openapi/runtime v0.27.1/go.mod h1:fijeJEiEclyS8BRurYE1DE5TLb9/KZl6eAdbzjsrlLU= +github.com/go-openapi/spec v0.20.12 h1:cgSLbrsmziAP2iais+Vz7kSazwZ8rsUZd6TUzdDgkVI= +github.com/go-openapi/spec v0.20.12/go.mod h1:iSCgnBcwbMW9SfzJb8iYynXvcY6C/QFrI7otzF7xGM4= +github.com/go-openapi/strfmt v0.22.0 h1:Ew9PnEYc246TwrEspvBdDHS4BVKXy/AOVsfqGDgAcaI= +github.com/go-openapi/strfmt v0.22.0/go.mod h1:HzJ9kokGIju3/K6ap8jL+OlGAbjpSv27135Yr9OivU4= +github.com/go-openapi/swag v0.22.5 h1:fVS63IE3M0lsuWRzuom3RLwUMVI2peDH01s6M70ugys= +github.com/go-openapi/swag v0.22.5/go.mod h1:Gl91UqO+btAM0plGGxHqJcQZ1ZTy6jbmridBTsDy8A0= +github.com/go-openapi/validate v0.22.4 h1:5v3jmMyIPKTR8Lv9syBAIRxG6lY0RqeBPB1LKEijzk8= +github.com/go-openapi/validate v0.22.4/go.mod h1:qm6O8ZIcPVdSY5219468Jv7kBdGvkiZLPOmqnqTUZ2A= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs= @@ -738,32 +867,8 @@ github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg78 github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= github.com/go-test/deep v1.0.2-0.20181118220953-042da051cf31/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= -github.com/go-test/deep v1.0.7 h1:/VSMRlnY/JSyqxQUzQLKVMAskpY/NZKFA5j2P+0pP2M= -github.com/go-test/deep v1.0.7/go.mod h1:QV8Hv/iy04NyLBxAdO9njL0iVPN1S4d/A3NVv1V36o8= -github.com/gobuffalo/attrs v0.0.0-20190224210810-a9411de4debd/go.mod h1:4duuawTqi2wkkpB4ePgWMaai6/Kc6WEz83bhFwpHzj0= -github.com/gobuffalo/depgen v0.0.0-20190329151759-d478694a28d3/go.mod h1:3STtPUQYuzV0gBVOY3vy6CfMm/ljR4pABfrTeHNLHUY= -github.com/gobuffalo/depgen v0.1.0/go.mod h1:+ifsuy7fhi15RWncXQQKjWS9JPkdah5sZvtHc2RXGlg= -github.com/gobuffalo/envy v1.6.15/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= -github.com/gobuffalo/envy v1.7.0/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= -github.com/gobuffalo/flect v0.1.0/go.mod h1:d2ehjJqGOH/Kjqcoz+F7jHTBbmDb38yXA598Hb50EGs= -github.com/gobuffalo/flect v0.1.1/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI= -github.com/gobuffalo/flect v0.1.3/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI= -github.com/gobuffalo/genny v0.0.0-20190329151137-27723ad26ef9/go.mod h1:rWs4Z12d1Zbf19rlsn0nurr75KqhYp52EAGGxTbBhNk= -github.com/gobuffalo/genny v0.0.0-20190403191548-3ca520ef0d9e/go.mod h1:80lIj3kVJWwOrXWWMRzzdhW3DsrdjILVil/SFKBzF28= -github.com/gobuffalo/genny v0.1.0/go.mod h1:XidbUqzak3lHdS//TPu2OgiFB+51Ur5f7CSnXZ/JDvo= -github.com/gobuffalo/genny v0.1.1/go.mod h1:5TExbEyY48pfunL4QSXxlDOmdsD44RRq4mVZ0Ex28Xk= -github.com/gobuffalo/gitgen v0.0.0-20190315122116-cc086187d211/go.mod h1:vEHJk/E9DmhejeLeNt7UVvlSGv3ziL+djtTr3yyzcOw= -github.com/gobuffalo/gogen v0.0.0-20190315121717-8f38393713f5/go.mod h1:V9QVDIxsgKNZs6L2IYiGR8datgMhB577vzTDqypH360= -github.com/gobuffalo/gogen v0.1.0/go.mod h1:8NTelM5qd8RZ15VjQTFkAW6qOMx5wBbW4dSCS3BY8gg= -github.com/gobuffalo/gogen v0.1.1/go.mod h1:y8iBtmHmGc4qa3urIyo1shvOD8JftTtfcKi+71xfDNE= -github.com/gobuffalo/logger v0.0.0-20190315122211-86e12af44bc2/go.mod h1:QdxcLw541hSGtBnhUc4gaNIXRjiDppFGaDqzbrBd3v8= -github.com/gobuffalo/mapi v1.0.1/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc= -github.com/gobuffalo/mapi v1.0.2/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc= -github.com/gobuffalo/packd v0.0.0-20190315124812-a385830c7fc0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4= -github.com/gobuffalo/packd v0.1.0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4= -github.com/gobuffalo/packr/v2 v2.0.9/go.mod h1:emmyGweYTm6Kdper+iywB6YK5YzuKchGtJQZ0Odn4pQ= -github.com/gobuffalo/packr/v2 v2.2.0/go.mod h1:CaAwI0GPIAv+5wKLtv8Afwl+Cm78K/I/VCm/3ptBN+0= -github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw= +github.com/go-test/deep v1.1.0 h1:WOcxcdHcvdgThNXjw0t76K42FXTU7HpNQWHpA2HHNlg= +github.com/go-test/deep v1.1.0/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE= 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.1.0 h1:exrUm0f4YX0L7EBwZHuCF4GDp8aJfVeBrlLQrs6NqWU= @@ -772,8 +877,8 @@ github.com/gobwas/pool v0.2.1 h1:xfeeEhW7pwmX8nuLVlqbzVc7udMDrwetjEv+TZIz1og= github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= github.com/gobwas/ws v1.2.1 h1:F2aeBZrm2NDsc7vbovKrWSogd4wvfAxg0FQ89/iqOTk= github.com/gobwas/ws v1.2.1/go.mod h1:hRKAFb8wOxFROYNsT1bqfWnhX+b5MFeJM9r2ZSwg/KY= -github.com/goccy/go-yaml v1.8.2 h1:gDYrSN12XK/wQTFjxWIgcIqjNCV/Zb5V09M7cq+dbCs= -github.com/goccy/go-yaml v1.8.2/go.mod h1:wS4gNoLalDSJxo/SpngzPQ2BN4uuZVLCmbM4S3vd4+Y= +github.com/goccy/go-yaml v1.9.5 h1:Eh/+3uk9kLxG4koCX6lRMAPS1OaMSAi+FJcya0INdB0= +github.com/goccy/go-yaml v1.9.5/go.mod h1:U/jl18uSupI5rdI2jmuCswEA2htH9eXfferR3KfscvA= github.com/gocomply/scap v0.1.2-0.20230531064509-55a00f73e8d6 h1:u1QKTc+GgWnBO1Mo0CwQ/4DXElFmSvNKRspxAr+AJuY= github.com/gocomply/scap v0.1.2-0.20230531064509-55a00f73e8d6/go.mod h1:ifGf7cSYIibtw3UXJy7QlbR8kJE6giDk7vGyCQZv0zo= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= @@ -794,9 +899,10 @@ github.com/golang-jwt/jwt v3.2.1+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzq 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/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang-jwt/jwt/v5 v5.0.0 h1:1n1XNM9hk7O9mnQoNBGolZvzebBQ7p93ULHRc28XJUE= +github.com/golang-jwt/jwt/v5 v5.0.0/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/glog v1.1.2 h1:DVjP2PbBOzHyzA+dn3WhHIq4NdVu3Q+pvivFICf/7fo= github.com/golang/glog v1.1.2/go.mod h1:zR+okUeTbrL6EL3xHUDxZuEtGv04p5shwip1+mL/rLQ= @@ -813,6 +919,7 @@ github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -830,25 +937,25 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.2/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4= -github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= +github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU= +github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= github.com/google/cel-go v0.16.1 h1:3hZfSNiAU3KOiNtxuFXVp5WFy4hf/Ly3Sa4/7F8SXNo= github.com/google/cel-go v0.16.1/go.mod h1:HXZKzB0LXqer5lHHgfWAnlYwJaQBDKMjxjulNQzhwhY= -github.com/google/flatbuffers v1.12.1 h1:MVlul7pQNoDzWRLTw5imwYsl+usrS1TXG2H4jg6ImGw= -github.com/google/flatbuffers v1.12.1/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/flatbuffers v2.0.8+incompatible h1:ivUb1cGomAB101ZM1T0nOiWz9pSrTMoa9+EiY7igmkM= +github.com/google/flatbuffers v2.0.8+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/gnostic v0.6.9 h1:ZK/5VhkoX835RikCHpSUJV9a+S3e1zLh59YnyWeBW+0= github.com/google/gnostic v0.6.9/go.mod h1:Nm8234We1lq6iB9OmlgNv3nH91XLLVZHCDayfA3xq+E= -github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I= -github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U= 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= @@ -866,8 +973,8 @@ github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeN github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-containerregistry v0.17.0 h1:5p+zYs/R4VGHkhyvgWurWrpJ2hW4Vv9fQI+GzdcwXLk= -github.com/google/go-containerregistry v0.17.0/go.mod h1:u0qB2l7mvtWVR5kNcbFIhFY1hLbf8eeGapA+vbFDCtQ= +github.com/google/go-containerregistry v0.19.0 h1:uIsMRBV7m/HDkDxE/nXMnv1q+lOOSPlQ/ywc5JbB8Ic= +github.com/google/go-containerregistry v0.19.0/go.mod h1:u0qB2l7mvtWVR5kNcbFIhFY1hLbf8eeGapA+vbFDCtQ= github.com/google/go-dap v0.6.0/go.mod h1:5q8aYQFnHOAZEMP+6vmq25HKYAEwE+LF5yh7JKrrhSQ= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= @@ -881,6 +988,7 @@ github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPg github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= @@ -892,31 +1000,44 @@ github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hf 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= github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +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-20230817174616-7a8ec2ada47b h1:h9U78+dx9a4BKdQkBBos92HalKpaGKHrp+3Uo6yTodo= github.com/google/pprof v0.0.0-20230817174616-7a8ec2ada47b/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= -github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= -github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/google/subcommands v1.0.1/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= 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= github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.5.0 h1:1p67kYwdtXjb0gL0BPiP1Av9wiZPo5A8z2cWkTZ+eyU= -github.com/google/uuid v1.5.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/wire v0.5.0 h1:I7ELFeVBr3yfPIcc8+MWvrjk+3VjbcSzoXm3JVa+jD8= github.com/google/wire v0.5.0/go.mod h1:ngWDr9Qvq3yZA10YrxfyGELY/AFWGVpy9c1LTRi1EoU= +github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= +github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= +github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= +github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= +github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= +github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= +github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= +github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= +github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= -github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= +github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= @@ -927,10 +1048,6 @@ github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWm github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gosnmp/gosnmp v1.37.1-0.20240115134726-db0c09337869 h1:MphZl80DUq02iPzdDxVffuUD1V24UH6UtmEY6FX+/M4= github.com/gosnmp/gosnmp v1.37.1-0.20240115134726-db0c09337869/go.mod h1:GDH9vNqpsD7f2HvZhKs5dlqSEcAS6s6Qp099oZRCR+M= -github.com/gosuri/uitable v0.0.4 h1:IG2xLKRvErL3uhY6e1BylFzG+aJiwQviDDTfOKeKTpY= -github.com/gosuri/uitable v0.0.4/go.mod h1:tKR86bXuXPZazfOTG1FIzvjIdXzd0mo4Vtn16vt0PJo= -github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7 h1:pdN6V1QBWetyv/0+wjACpqVH+eVULgEjkurDLq3goeM= -github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.2.0/go.mod h1:mJzapYve32yjrKlk9GbyCZHuPgZsrbyIbyKhSzOpg6s= github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI= @@ -941,8 +1058,8 @@ github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t github.com/grpc-ecosystem/grpc-gateway v1.13.0/go.mod h1:8XEsbTttt/W+VvjtQhLACqCisSPWTxCZ7sBRjU6iH9c= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 h1:YBftPWNWd4WwGqtY2yeZL2ef8rHAxPBD8KFhJpmcqms= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0/go.mod h1:YN5jB8ie0yfIUg6VvR9Kz84aCaG7AsGZnLjhHbUqwPg= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0 h1:Wqo399gCIufwto+VfwCSvsnfGpF/w5E9CNxSwbpD6No= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0/go.mod h1:qmOFXW2epJhM0qSnUUYpldc7gVz2KMQwJ/QYCDIa7XU= github.com/h2non/filetype v1.0.5/go.mod h1:isekKqOuhMj+s/7r3rIeTErIRy4Rub5uBWHfvMusLMU= github.com/h2non/filetype v1.1.3 h1:FKkx9QbD7HR/zjK1Ia5XiBsq9zdLi5Kf3zGyFTAFkGg= github.com/h2non/filetype v1.1.3/go.mod h1:319b3zT68BvV+WRj7cwy856M2ehB3HqNOt6sy1HndBY= @@ -961,11 +1078,10 @@ github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtng github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= -github.com/hashicorp/go-getter v1.6.2 h1:7jX7xcB+uVCliddZgeKyNxv0xoT7qL5KDtH7rU4IqIk= -github.com/hashicorp/go-getter v1.6.2/go.mod h1:IZCrswsZPeWv9IkVnLElzRU/gz/QPi6pZHn4tv6vbwA= +github.com/hashicorp/go-getter v1.7.3 h1:bN2+Fw9XPFvOCjB0UOevFIMICZ7G2XSQHzfvLUyOM5E= +github.com/hashicorp/go-getter v1.7.3/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= 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-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-hclog v1.5.0 h1:bI2ocEMgcVlz55Oj1xZNBsVi900c7II+fWDyV9o+13c= github.com/hashicorp/go-hclog v1.5.0/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= @@ -982,8 +1098,8 @@ github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9 github.com/hashicorp/go-plugin v1.0.1/go.mod h1:++UyYGoz3o5w9ZzAdZxtQKrWWP+iqPBn3cQptSMzBuY= github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= github.com/hashicorp/go-retryablehttp v0.5.4/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= -github.com/hashicorp/go-retryablehttp v0.7.4 h1:ZQgVdpTdAL7WpMIwLzCfbalOcSUdkDZnpUv3/+BxzFA= -github.com/hashicorp/go-retryablehttp v0.7.4/go.mod h1:Jy/gPYAdjqffZ/yFGCFV2doI5wjtH1ewM9u8iYVjtX8= +github.com/hashicorp/go-retryablehttp v0.7.5 h1:bJj+Pj19UZMIweq/iie+1u5YCdGrnxCT9yvm0e+Nd5M= +github.com/hashicorp/go-retryablehttp v0.7.5/go.mod h1:Jy/gPYAdjqffZ/yFGCFV2doI5wjtH1ewM9u8iYVjtX8= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= github.com/hashicorp/go-rootcerts v1.0.1/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= github.com/hashicorp/go-rootcerts v1.0.2 h1:jzhAVGtqPKbwpyCPELlgNWhE1znq+qwJtW5Oi2viEzc= @@ -1012,8 +1128,8 @@ github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyf github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/hcl v1.0.1-vault-5 h1:kI3hhbbyzr4dldA8UdTb7ZlVVlI2DACdCfz31RPDgJM= github.com/hashicorp/hcl v1.0.1-vault-5/go.mod h1:XYhtn6ijBSAj6n4YqAaf7RBPS4I06AItNorpy+MoQNM= -github.com/hashicorp/hcl/v2 v2.17.0 h1:z1XvSUyXd1HP10U4lrLg5e0JMVz6CPaJvAgxM0KNZVY= -github.com/hashicorp/hcl/v2 v2.17.0/go.mod h1:gJyW2PTShkJqQBKpAmPO3yxMxIuoXkOF2TpqXzrQyx4= +github.com/hashicorp/hcl/v2 v2.19.1 h1://i05Jqznmb2EXqa39Nsvyan2o5XyMowW5fnCKW5RPI= +github.com/hashicorp/hcl/v2 v2.19.1/go.mod h1:ThLC89FV4p9MPW804KVbe/cEXoQ8NZEh+JtMeeGErHE= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= @@ -1034,8 +1150,9 @@ github.com/hectane/go-acl v0.0.0-20190604041725-da78bae5fc95/go.mod h1:QiyDdbZLa github.com/hjson/hjson-go/v4 v4.0.0/go.mod h1:KaYt3bTw3zhBjYqnXkYywcYctk0A2nxeEFTse3rH13E= github.com/howeyc/gopass v0.0.0-20170109162249-bf9dde6d0d2c/go.mod h1:lADxMC39cJJqL93Duh1xhAs4I2Zs8mKS89XWXFGp9cs= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/huandu/xstrings v1.3.3 h1:/Gcsuc1x8JVbJ9/rlye4xZnVAbEkGauT8lbebqcQws4= github.com/huandu/xstrings v1.3.3/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= +github.com/huandu/xstrings v1.4.0 h1:D17IlohoQq4UcpqD7fDk80P7l+lwAmlFaBHgOipl2FU= +github.com/huandu/xstrings v1.4.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= github.com/iancoleman/orderedmap v0.3.0 h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJn+Ichc= github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJDkXXS7VoV7XGE= github.com/ianlancetaylor/cgosymbolizer v0.0.0-20221208003206-eaf69f594683 h1:K5WubDh+7FP4wf8HB+vOrUmeCoGMYmLv0QMfWYA4oCk= @@ -1099,8 +1216,6 @@ github.com/justincormack/go-memfd v0.0.0-20170219213707-6e4af0518993 h1:YnMJVKw7 github.com/justincormack/go-memfd v0.0.0-20170219213707-6e4af0518993/go.mod h1:VYi8SD2j14Nh9hNT7l57A00YUx/tMxY6pPA1IGljdrg= github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 h1:iQTw/8FWTuc7uiaSepXwyf3o52HaUYcV+Tu66S3F5GA= github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8= -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.17.0 h1:b4kY7nqDdioR/6qnbHQyDvmA17u5G1cZ6J+CZXwSWoI= github.com/karrick/godirwalk v1.17.0/go.mod h1:j4mkqPuvaLI8mp1DroR3P6ad7cyYd4c1qeJ3RV7ULlk= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs= @@ -1117,6 +1232,7 @@ github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0 github.com/klauspost/compress v1.11.4/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= +github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= github.com/klauspost/compress v1.17.4 h1:Ej5ixsIri7BrIjBkRZLTo6ghwrEtHFk7ijlczPW4fZ4= github.com/klauspost/compress v1.17.4/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= @@ -1128,18 +1244,16 @@ github.com/knadh/koanf/v2 v2.0.1 h1:1dYGITt1I23x8cfx8ZnldtezdyaZtfAuRtIFOiRzK7g= github.com/knadh/koanf/v2 v2.0.1/go.mod h1:ZeiIlIDXTE7w1lMT6UVcNiRAS2/rCeLn/GdLNvY1Dus= github.com/knqyf263/go-apk-version v0.0.0-20200609155635-041fdbb8563f h1:GvCU5GXhHq+7LeOzx/haG7HSIZokl3/0GkoUFzsRJjg= github.com/knqyf263/go-apk-version v0.0.0-20200609155635-041fdbb8563f/go.mod h1:q59u9px8b7UTj0nIjEjvmTWekazka6xIt6Uogz5Dm+8= -github.com/knqyf263/go-deb-version v0.0.0-20190517075300-09fca494f03d h1:X4cedH4Kn3JPupAwwWuo4AzYp16P0OyLO9d7OnMZc/c= -github.com/knqyf263/go-deb-version v0.0.0-20190517075300-09fca494f03d/go.mod h1:o8sgWoz3JADecfc/cTYD92/Et1yMqMy0utV1z+VaZao= +github.com/knqyf263/go-deb-version v0.0.0-20230223133812-3ed183d23422 h1:PPPlUUqPP6fLudIK4n0l0VU4KT2cQGnheW9x8pNiCHI= +github.com/knqyf263/go-deb-version v0.0.0-20230223133812-3ed183d23422/go.mod h1:ijAmSS4jErO6+KRzcK6ixsm3Vt96hMhJ+W+x+VmbrQA= github.com/knqyf263/go-rpm-version v0.0.0-20220614171824-631e686d1075 h1:aC6MEAs3PE3lWD7lqrJfDxHd6hcced9R4JTZu85cJwU= github.com/knqyf263/go-rpm-version v0.0.0-20220614171824-631e686d1075/go.mod h1:i4sF0l1fFnY1aiw08QQSwVAFxHEm311Me3WsU/X7nL0= -github.com/knqyf263/go-rpmdb v0.0.0-20221030142135-919c8a52f04f h1:oz80cOWEcx/tTh5T0g43oz5W7zZw8jm7zD5BR9tQjX8= -github.com/knqyf263/go-rpmdb v0.0.0-20221030142135-919c8a52f04f/go.mod h1:zp6SMcRd0GB+uwNJjr+DkrNZdQZ4er2HMO6KyD0vIGU= +github.com/knqyf263/go-rpmdb v0.0.0-20231008124120-ac49267ab4e1 h1:lrciwn7tj0j7HS5DfpAFnFZEqxzPGIkVOVS89dLOkf0= +github.com/knqyf263/go-rpmdb v0.0.0-20231008124120-ac49267ab4e1/go.mod h1:9LQcoMCMQ9vrF7HcDtXfvqGO4+ddxFQ8+YF/0CVGDww= github.com/knqyf263/nested v0.0.1 h1:Sv26CegUMhjt19zqbBKntjwESdxe5hxVPSk0+AKjdUc= github.com/knqyf263/nested v0.0.1/go.mod h1:zwhsIhMkBg90DTOJQvxPkKIypEHPYkgWHs4gybdlUmk= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= @@ -1153,29 +1267,19 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 h1:SOEGU9fKiNWd/HOJuq6+3iTQz8KNCLtVX6idSoTLdUw= -github.com/lann/builder v0.0.0-20180802200727-47ae307949d0/go.mod h1:dXGbAdH5GtBTC4WfIxhKZfyBF/HBFgRZSWwZ9g/He9o= -github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 h1:P6pPBnrTSX3DEVR4fDembhRWSsG5rVo6hYhAB/ADZrk= -github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0/go.mod h1:vmVJ0l/dxyfGW6FmdpVm2joNMFikkuWg0EoCKLGUMNw= -github.com/lebauce/go-dep-parser v0.0.0-20231030190658-51bbb436f1b8 h1:yY34EefI9BeWg6WrXAGe5qx5anUPxmpr19vQVQNDNg4= -github.com/lebauce/go-dep-parser v0.0.0-20231030190658-51bbb436f1b8/go.mod h1:Cj+0xDZFgXGQin2fo40aH2a9srUKMOCFPw50NHsfVEk= -github.com/lebauce/trivy-db v0.0.0-20231031000443-2d41e0fab0ae h1:kPeQn+9KEEqrlIApu6c70E2ESDc//Hgpy6Ja+lZXxIs= -github.com/lebauce/trivy-db v0.0.0-20231031000443-2d41e0fab0ae/go.mod h1:/nULgnDeq/JMPMVwE1dmf4kWlYn++7VrM3O2naj4BHA= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= github.com/liamg/iamgo v0.0.9 h1:tADGm3xVotyRJmuKKaH4+zsBn7LOcvgdpuF3WsSKW3c= github.com/liamg/iamgo v0.0.9/go.mod h1:Kk6ZxBF/GQqG9nnaUjIi6jf+WXNpeOTyhwc6gnguaZQ= github.com/liamg/jfather v0.0.7 h1:Xf78zS263yfT+xr2VSo6+kyAy4ROlCacRqJG7s5jt4k= github.com/liamg/jfather v0.0.7/go.mod h1:xXBGiBoiZ6tmHhfy5Jzw8sugzajwYdi6VosIpB3/cPM= -github.com/liamg/memoryfs v1.4.3 h1:+ChjcuPRYpjJSulD13PXDNR3JeJ5HUYKjLHyWVK0bqU= -github.com/liamg/memoryfs v1.4.3/go.mod h1:z7mfqXFQS8eSeBBsFjYLlxYRMRyiPktytvYCYTb3BSk= +github.com/liamg/memoryfs v1.6.0 h1:jAFec2HI1PgMTem5gR7UT8zi9u4BfG5jorCRlLH06W8= +github.com/liamg/memoryfs v1.6.0/go.mod h1:z7mfqXFQS8eSeBBsFjYLlxYRMRyiPktytvYCYTb3BSk= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/lib/pq v1.10.6 h1:jbk+ZieJ0D7EVGJYpL9QTz7/YW6UHbmdnZWYyK5cdBs= -github.com/lib/pq v1.10.6/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= +github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/libp2p/go-reuseport v0.2.0 h1:18PRvIMlpY6ZK85nIAicSBuXXvrYoSw3dsBAR7zc560= github.com/libp2p/go-reuseport v0.2.0/go.mod h1:bvVho6eLMm6Bz5hmU0LYN3ixd3nPPvtIlaURZZgOY4k= -github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de h1:9TO3cAIGXtEhnIaL+V+BEER86oLrvS+kWobKpbJuye0= -github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE= github.com/lightstep/go-expohisto v1.0.0 h1:UPtTS1rGdtehbbAF7o/dhkWLTDI73UifG8LbfQI7cA4= github.com/lightstep/go-expohisto v1.0.0/go.mod h1:xDXD0++Mu2FOaItXtdDfksfgxfV0z1TMPa+e/EUd0cs= github.com/lorenzosaino/go-sysctl v0.3.1 h1:3phX80tdITw2fJjZlwbXQnDWs4S30beNcMbw0cn0HtY= @@ -1192,27 +1296,22 @@ github.com/lxn/win v0.0.0-20210218163916-a377121e959e/go.mod h1:KxxjdtRkfNoYDCUP github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= -github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= -github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= github.com/martini-contrib/render v0.0.0-20150707142108-ec18f8345a11 h1:YFh+sjyJTMQSYjKwM4dFKhJPJC/wfo98tPUc17HdoYw= github.com/martini-contrib/render v0.0.0-20150707142108-ec18f8345a11/go.mod h1:Ah2dBMoxZEqk118as2T4u4fjfXarE0pPnMJaArZQZsI= github.com/masahiro331/go-disk v0.0.0-20220919035250-c8da316f91ac h1:QyRucnGOLHJag1eB9CtuZwZk+/LpvTSYr5mnFLLFlgA= github.com/masahiro331/go-disk v0.0.0-20220919035250-c8da316f91ac/go.mod h1:J7Vb0sf0JzOhT0uHTeCqO6dqP/ELVcQvQ6yQ/56ZRGw= -github.com/masahiro331/go-ebs-file v0.0.0-20221225061409-5ef263bb2cc3 h1:CCX8exCYIPHrMKba1KDhM37PxC3/amBUZXH8yoJOAMQ= -github.com/masahiro331/go-ebs-file v0.0.0-20221225061409-5ef263bb2cc3/go.mod h1:5NOkqebMwu8UiOTSjwqam1Ykdr7fci52TVE2xDQnIiM= -github.com/masahiro331/go-ext4-filesystem v0.0.0-20221225060520-c150f5eacfe1 h1:GBZZSY8xEoAf76ZOlxqKi/OMufpZnTxpTf7ectT1eNM= -github.com/masahiro331/go-ext4-filesystem v0.0.0-20221225060520-c150f5eacfe1/go.mod h1:X08d9nmB+eg7Gj2XWAOkiG8lbMFbgGXPsDKEvkFwyF8= +github.com/masahiro331/go-ebs-file v0.0.0-20240112135404-d5fbb1d46323 h1:uQubA711SeYStvStohMLrdvRTTohdPHrEPFzerLcY9I= +github.com/masahiro331/go-ebs-file v0.0.0-20240112135404-d5fbb1d46323/go.mod h1:OdtzwqTtu49Gh5RFkNEU1SbcihIuVTtUipwHflqxckE= +github.com/masahiro331/go-ext4-filesystem v0.0.0-20231208112839-4339555a0cd4 h1:uHO44vOunB0oEtk+r8ifBbFOD0mr6+fmoyFNCgLE66k= +github.com/masahiro331/go-ext4-filesystem v0.0.0-20231208112839-4339555a0cd4/go.mod h1:3XMMY1M486mWGTD13WPItg6FsgflQR72ZMAkd+gsyoQ= github.com/masahiro331/go-mvn-version v0.0.0-20210429150710-d3157d602a08 h1:AevUBW4cc99rAF8q8vmddIP8qd/0J5s/UyltGbp66dg= github.com/masahiro331/go-mvn-version v0.0.0-20210429150710-d3157d602a08/go.mod h1:JOkBRrE1HvgTyjk6diFtNGgr8XJMtIfiBzkL5krqzVk= github.com/masahiro331/go-vmdk-parser v0.0.0-20221225061455-612096e4bbbd h1:Y30EzvuoVp97b0unb/GOFXzBUKRXZXUN2e0wYmvC+ic= github.com/masahiro331/go-vmdk-parser v0.0.0-20221225061455-612096e4bbbd/go.mod h1:5f7mCJGW9cJb8SDn3z8qodGxpMCOo8d/2nls/tiwRrw= -github.com/masahiro331/go-xfs-filesystem v0.0.0-20221225060805-c02764233454 h1:XHFL/6QXvGlsBZ6xZvLPSsQW5QIzrOnNUKgkjRo7KWo= -github.com/masahiro331/go-xfs-filesystem v0.0.0-20221225060805-c02764233454/go.mod h1:QKBZqdn6teT0LK3QhAf3K6xakItd1LonOShOEC44idQ= +github.com/masahiro331/go-xfs-filesystem v0.0.0-20230608043311-a335f4599b70 h1:X6W6raTo07X0q4pvSI/68Pj/Ic4iIU2CfQU65OH0Zhc= +github.com/masahiro331/go-xfs-filesystem v0.0.0-20230608043311-a335f4599b70/go.mod h1:QKBZqdn6teT0LK3QhAf3K6xakItd1LonOShOEC44idQ= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= @@ -1222,6 +1321,7 @@ github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxec github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-ieproxy v0.0.1/go.mod h1:pYabZ6IHcRpFh7vIaLfK7rdcWgFEb3SFJ6/gNWuh88E= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= @@ -1232,11 +1332,14 @@ github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWE github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/mattn/go-shellwords v1.0.2/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= +github.com/mattn/go-shellwords v1.0.12 h1:M2zGm7EW6UQJvDeQxo4T51eKPurbeFbe8WtebGE2xrk= +github.com/mattn/go-shellwords v1.0.12/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y= github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= github.com/mattn/go-sqlite3 v1.14.16 h1:yOQRA0RpS5PFz/oikGwBEqvAWhWg5ufRz4ETLjwpU1Y= github.com/mattn/go-sqlite3 v1.14.16/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= @@ -1263,8 +1366,9 @@ github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrk github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= 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 h1:fzU/JVNcaqHQEcVFAKeR41fkiLdIPrefOvVG1VZ96U0= github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= +github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= @@ -1274,8 +1378,6 @@ github.com/mitchellh/hashstructure/v2 v2.0.2/go.mod h1:MG3aRVU/N29oo/V/IhBX8GR/z github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c h1:cqn374mizHuIWj+OSJCajGr/phAmuMug9qIX3l9CflE= github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= @@ -1284,12 +1386,10 @@ github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zx github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/mkrautz/goar v0.0.0-20150919110319-282caa8bd9da h1:Iu5QFXIMK/YrHJ0NgUnK0rqYTTyb0ldt/rqNenAj39U= github.com/mkrautz/goar v0.0.0-20150919110319-282caa8bd9da/go.mod h1:NfnmoBY0gGkr3/NmI+DP/UXbZvOCurCUYAzOdYJjlOc= -github.com/moby/buildkit v0.13.0-beta3 h1:eefOGE6SsWYHFfymc09Q7VU5i3L9vUs8ZCZVCDXWNOo= -github.com/moby/buildkit v0.13.0-beta3/go.mod h1:tSWWhq1EDM0eB3ngMNDiH2hOOW9fXTyn2uXuOraCLlE= +github.com/moby/buildkit v0.12.5 h1:RNHH1l3HDhYyZafr5EgstEu8aGNCwyfvMtrQDtjH9T0= +github.com/moby/buildkit v0.12.5/go.mod h1:YGwjA2loqyiYfZeEo8FtI7z4x5XponAaIWsWcSjWwso= github.com/moby/locker v1.0.1 h1:fOXqR41zeveg4fFODix+1Ch4mj/gT0NE1XJbp/epuBg= github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= -github.com/moby/spdystream v0.2.0 h1:cjW1zVyyoiM0T7b6UoySUFqzXMoqRckQtXwGPiBhOM8= -github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= github.com/moby/sys/mountinfo v0.7.1 h1:/tTvQaSJRr2FshkhXiIpux6fQ2Zvc4j7tAhMTStAG2g= github.com/moby/sys/mountinfo v0.7.1/go.mod h1:IJb6JQeOklcdMU9F5xQ8ZALD+CUr5VlGpwtX+VE0rpI= github.com/moby/sys/sequential v0.5.0 h1:OPvI35Lzn9K04PBbCLW0g4LcFAJgHsvXsRyewg5lXtc= @@ -1298,8 +1398,8 @@ github.com/moby/sys/signal v0.7.0 h1:25RW3d5TnQEoKvRbEKUGay6DCQ46IxAVTT9CUMgmsSI github.com/moby/sys/signal v0.7.0/go.mod h1:GQ6ObYZfqacOwTtlXvcmh9A26dVRul/hbOZn88Kg8Tg= github.com/moby/sys/user v0.1.0 h1:WmZ93f5Ux6het5iituh9x2zAG7NFY9Aqi49jjE1PaQg= github.com/moby/sys/user v0.1.0/go.mod h1:fKJhFOnsCN6xZ5gSfbM6zaHGgDJMrqt9/reuj4T7MmU= -github.com/moby/term v0.0.0-20221205130635-1aeaba878587 h1:HfkjXDfhgVaN5rmueG8cL8KKeFNecRCXFhaJ2qZ5SKA= -github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= +github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0= +github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -1309,11 +1409,9 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/mohae/deepcopy v0.0.0-20170603005431-491d3605edfb h1:e+l77LJOEqXTIQihQJVkA6ZxPOUmfPM5e4H7rcpgtSk= github.com/mohae/deepcopy v0.0.0-20170603005431-491d3605edfb/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= -github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 h1:n6/2gBQ3RWajuToeY6ZtZTIKv2v7ThUy5KKusIT0yc0= -github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00/go.mod h1:Pm3mSP3c5uWn86xMLZ5Sa7JB9GsEZySvHYXCTK4E9q4= github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= -github.com/montanaflynn/stats v0.6.6 h1:Duep6KMIDpY4Yo11iFsvyqJDyfzLF9+sndUKT+v64GQ= -github.com/montanaflynn/stats v0.6.6/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow= +github.com/montanaflynn/stats v0.7.0 h1:r3y12KyNxj/Sb/iOE46ws+3mS1+MZca1wlHQFPsY/JU= +github.com/montanaflynn/stats v0.7.0/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow= 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.2.2 h1:XaDbnRvt2+1vgr0b/l0qh4mJAfIxE0bKXtz2Znl3GGI= @@ -1327,7 +1425,6 @@ github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+ github.com/ncw/swift v1.0.30/go.mod h1:23YIA4yWVnGwv2dQlN4bB7egfYX6YLn0Yo/S6zZO/ZM= github.com/netsampler/goflow2 v1.3.3 h1:uheCMgWwbaHnVdsvc2bqbdQe93E73pVF77WGu/kPE7U= github.com/netsampler/goflow2 v1.3.3/go.mod h1:mUjr4ERDTtNUAVtf2EomWHmr6Xvz2N9DahhFkhNnFkQ= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/npillmayer/nestext v0.1.3/go.mod h1:h2lrijH8jpicr25dFY+oAJLyzlya6jhnuG+zWp9L0Uk= github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d h1:VhgPp6v9qf9Agr/56bj7Y/xa04UccTW04VP0Qed4vnQ= github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d/go.mod h1:YUTz3bUH2ZwIWBy3CJBeOBEugqcmXREj14T+iG/4k4U= @@ -1365,8 +1462,8 @@ github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAl github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= github.com/onsi/gomega v1.30.0 h1:hvMK7xYz4D3HapigLTeGdId/NcfQx1VHMJc60ew99+8= github.com/onsi/gomega v1.30.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ= -github.com/open-policy-agent/opa v0.56.0 h1:FUSb6MyckjuffOMshEG8P+HGnckxkJ8ENZJHEzAddhk= -github.com/open-policy-agent/opa v0.56.0/go.mod h1:un01L10fkolr00KJMDSqGb2FXCjVyVQOybLtHOfSEfY= +github.com/open-policy-agent/opa v0.61.0 h1:nhncQ2CAYtQTV/SMBhDDPsCpCQsUW+zO/1j+T5V7oZg= +github.com/open-policy-agent/opa v0.61.0/go.mod h1:7OUuzJnsS9yHf8lw0ApfcbrnaRG1EkN3J2fuuqi4G/E= github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.75.0 h1:XW4DBJP3+dgdclPVA7d9aetG/FBUmwSNQGWaWoZnyo0= github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.75.0/go.mod h1:IyFOweK1oDRlcm4k+hdobQjvP5z3L5+5G7NBrQj1Kx0= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.93.0 h1:R0GGB09OWAP1bSVps2brDOOln8pgSgzHU658bdzIb+g= @@ -1377,8 +1474,8 @@ github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetr github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.75.0/go.mod h1:Zx+/9iSrxOX8yI5pq1yQjLkTW/mQRs8kw4t0w4Ro820= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/opencontainers/image-spec v1.1.0-rc5 h1:Ygwkfw9bpDvs+c9E34SdgGOj41dX/cbdlwvlWt0pnFI= -github.com/opencontainers/image-spec v1.1.0-rc5/go.mod h1:X4pATf0uXsnn3g5aiGIsVnJBR4mxhKzfwmvK/B2NTm8= +github.com/opencontainers/image-spec v1.1.0-rc6 h1:XDqvyKsJEbRtATzkgItUqBA7QHk58yxX1Ov9HERHNqU= +github.com/opencontainers/image-spec v1.1.0-rc6/go.mod h1:W4s4sFTMaBeK1BQLXbG4AdM2szdn85PY75RI83NrTrM= github.com/opencontainers/runtime-spec v1.1.0 h1:HHUyrt9mwHUjtasSbXSMvs4cyFxh+Bll4AjJ9odEGpg= github.com/opencontainers/runtime-spec v1.1.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/selinux v1.11.0 h1:+5Zbo97w3Lbmb3PeqQtpmTkMwsW5nRI3YaLpt7tQ7oU= @@ -1388,17 +1485,19 @@ github.com/openshift/api v3.9.0+incompatible/go.mod h1:dh9o4Fs58gpFXGSYfnVxGR9Pn github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs= github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= +github.com/openvex/go-vex v0.2.5 h1:41utdp2rHgAGCsG+UbjmfMG5CWQxs15nGqir1eRgSrQ= +github.com/openvex/go-vex v0.2.5/go.mod h1:j+oadBxSUELkrKh4NfNb+BPo77U3q7gdKME88IO/0Wo= github.com/outcaste-io/ristretto v0.2.3 h1:AK4zt/fJ76kjlYObOeNwh4T3asEuaCmp26pOvUOL9w0= github.com/outcaste-io/ristretto v0.2.3/go.mod h1:W8HywhmtlopSB1jeMg3JtdIhf+DYkLAr0VN/s4+MHac= github.com/owenrumney/go-sarif v1.1.1/go.mod h1:dNDiPlF04ESR/6fHlPyq7gHKmrM0sHUvAGjsoh8ZH0U= -github.com/owenrumney/go-sarif/v2 v2.1.2 h1:PMDK7tXShJ9zsB7bfvlpADH5NEw1dfA9xwU8Xtdj73U= -github.com/owenrumney/go-sarif/v2 v2.1.2/go.mod h1:MSqMMx9WqlBSY7pXoOZWgEsVB4FDNfhcaXDA1j6Sr+w= -github.com/owenrumney/squealer v1.0.1-0.20220510063705-c0be93f0edea h1:RwQ26NYF4vvP7GckFRB4ABL18Byo7vnYBzMpmZKkGwQ= -github.com/owenrumney/squealer v1.0.1-0.20220510063705-c0be93f0edea/go.mod h1:WWvhG67r/BBwvLwmE2TcASI0b/xyPxmR9y33q/mg4ig= +github.com/owenrumney/go-sarif/v2 v2.3.0 h1:wP5yEpI53zr0v5cBmagXzLbHZp9Oylyo3AJDpfLBITs= +github.com/owenrumney/go-sarif/v2 v2.3.0/go.mod h1:MSqMMx9WqlBSY7pXoOZWgEsVB4FDNfhcaXDA1j6Sr+w= +github.com/owenrumney/squealer v1.2.1 h1:4ryMMT59aaz8VMsqsD+FDkarADJz0F1dcq2fd0DRR+c= +github.com/owenrumney/squealer v1.2.1/go.mod h1:7D0a/+Bouwy504YhaWsBYW73kyklSEq1MNf6zsNoTRg= github.com/oxtoacart/bpool v0.0.0-20150712133111-4e1c5567d7c2 h1:CXwSGu/LYmbjEab5aMCs5usQRVBGThelUKBNnoSOuso= github.com/oxtoacart/bpool v0.0.0-20150712133111-4e1c5567d7c2/go.mod h1:L3UMQOThbttwfYRNFOWLLVXMhk5Lkio4GGOtw5UrxS0= -github.com/package-url/packageurl-go v0.1.1-0.20220428063043-89078438f170 h1:DiLBVp4DAcZlBVBEtJpNWZpZVq0AEeCY7Hqk8URVs4o= -github.com/package-url/packageurl-go v0.1.1-0.20220428063043-89078438f170/go.mod h1:uQd4a7Rh3ZsVg5j0lNyAfyxIeGde9yrlhjF78GzeW0c= +github.com/package-url/packageurl-go v0.1.2 h1:0H2DQt6DHd/NeRlVwW4EZ4oEI6Bn40XlNPRqegcxuo4= +github.com/package-url/packageurl-go v0.1.2/go.mod h1:uQd4a7Rh3ZsVg5j0lNyAfyxIeGde9yrlhjF78GzeW0c= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= @@ -1411,8 +1510,8 @@ github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/9 github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE= github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= -github.com/peterbourgon/diskv v2.0.1+incompatible h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI= -github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= +github.com/pelletier/go-toml/v2 v2.1.0 h1:FnwAJ4oYMvbT/34k9zzHuZNrhlz48GB3/s6at6/MHO4= +github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc= github.com/philhofer/fwd v1.1.2 h1:bnDivRJ1EWPjUIRXV5KfORO897HTbpFAQddBdE8t7Gw= github.com/philhofer/fwd v1.1.2/go.mod h1:qkPdfjR2SIEbspLqpe1tO4n5yICnr2DY7mqEx2tUTP0= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= @@ -1421,12 +1520,13 @@ github.com/pierrec/lz4/v4 v4.1.18 h1:xaKrnTkyoqfh1YItXl56+6KJNVYWlEEPuAQW9xsplYQ github.com/pierrec/lz4/v4 v4.1.18/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= +github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU= +github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI= 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/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/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= github.com/planetscale/vtprotobuf v0.6.0 h1:nBeETjudeJ5ZgBHUz1fVHvbqUKnYOXNhsIEabROxmNA= github.com/planetscale/vtprotobuf v0.6.0/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= @@ -1488,8 +1588,8 @@ github.com/protocolbuffers/protoscope v0.0.0-20221109213918-8e7a6aafa2c9 h1:arwj github.com/protocolbuffers/protoscope v0.0.0-20221109213918-8e7a6aafa2c9/go.mod h1:SKZx6stCn03JN3BOWTwvVIO2ajMkb/zQdTceXYhKw/4= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 h1:OdAsTTz6OkFY5QxjkYwrChwuRruF69c169dPK26NUlk= -github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= +github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= +github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/rhnvrm/simples3 v0.6.1/go.mod h1:Y+3vYm2V7Y4VijFoJHHTrja6OgPrJ2cBti8dPGkC3sA= github.com/richardartoul/molecule v1.0.1-0.20221107223329-32cfee06a052 h1:Qp27Idfgi6ACvFQat5+VJvlYToylpM/hcyLBI3WaKPA= github.com/richardartoul/molecule v1.0.1-0.20221107223329-32cfee06a052/go.mod h1:uvX/8buq8uVeiZiFht+0lqSLBHF+uGV8BrTv8W/SIwk= @@ -1500,8 +1600,6 @@ github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs= github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= -github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= 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.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= @@ -1514,10 +1612,6 @@ github.com/rs/xid v1.4.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= github.com/rs/zerolog v1.28.0/go.mod h1:NILgTygv/Uej1ra5XxGf82ZFSLk58MFGAUS2o6usyD0= github.com/rs/zerolog v1.29.1 h1:cO+d60CHkknCbvzEWxP0S9K6KqyTjrCNUy1LdQLCGPc= github.com/rs/zerolog v1.29.1/go.mod h1:Le6ESbR7hc+DP6Lt1THiV8CQSdkkNrd3R0XbEgp3ZBU= -github.com/rubenv/sql-migrate v1.1.2 h1:9M6oj4e//owVVHYrFISmY9LBRw6gzkCNmD9MV36tZeQ= -github.com/rubenv/sql-migrate v1.1.2/go.mod h1:/7TZymwxN8VWumcIxw1jjHEcR1djpdkMHQPT4FWdnbQ= -github.com/russross/blackfriday v1.6.0 h1:KqfZb0pUVN2lYqZUYRddxF4OR8ZMURnJIG5Y3VRLtww= -github.com/russross/blackfriday v1.6.0/go.mod h1:ti0ldHuxg49ri4ksnFxlkCfN+hvslNlmVHqNRXXJNAY= 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/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= @@ -1525,16 +1619,22 @@ 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/baloum v0.0.0-20221229104256-b1fc8f70a86b h1:cTiH46CYvPhgOlE0t82N+rgQw44b7vB39ay+P+wiVz8= github.com/safchain/baloum v0.0.0-20221229104256-b1fc8f70a86b/go.mod h1:1+GWOH32bsIEAHknYja6/H1efcDs+/Q2XrtYMM200Ho= -github.com/samber/lo v1.38.1 h1:j2XEAqXKb09Am4ebOg31SpvzUTTs6EN3VfgeLUhPdXM= -github.com/samber/lo v1.38.1/go.mod h1:+m/ZKRl6ClXCE2Lgf3MsQlWfh4bn1bz6CXEOxnEXnEA= +github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ= +github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= +github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= +github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= +github.com/samber/lo v1.39.0 h1:4gTz1wUhNYLhFSKl6O+8peW0v2F4BCY034GRpU9WnuA= +github.com/samber/lo v1.39.0/go.mod h1:+m/ZKRl6ClXCE2Lgf3MsQlWfh4bn1bz6CXEOxnEXnEA= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da h1:p3Vo3i64TCLY7gIfzeQaUJ+kppEO5WQG3cL8iE8tGHU= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= +github.com/santhosh-tekuri/jsonschema/v5 v5.3.1 h1:lZUw3E0/J3roVtGQ+SCrUrg3ON6NgVqpn3+iol9aGu4= +github.com/santhosh-tekuri/jsonschema/v5 v5.3.1/go.mod h1:uToXkOrWAZ6/Oc07xWQrPOhJotwFIyu2bBVN41fcDUY= github.com/sassoftware/go-rpmutils v0.2.0 h1:pKW0HDYMFWQ5b4JQPiI3WI12hGsVoW0V8+GMoZiI/JE= github.com/sassoftware/go-rpmutils v0.2.0/go.mod h1:TJJQYtLe/BeEmEjelI3b7xNZjzAukEkeWKmoakvaOoI= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/secure-systems-lab/go-securesystemslib v0.7.0 h1:OwvJ5jQf9LnIAS83waAjPbcMsODrTQUpJ02eNLUoxBg= -github.com/secure-systems-lab/go-securesystemslib v0.7.0/go.mod h1:/2gYnlnHVQ6xeGtfIqFy7Do03K4cdCY0A/GlJLDKLHI= +github.com/secure-systems-lab/go-securesystemslib v0.8.0 h1:mr5An6X45Kb2nddcFlbmfHkLguCE9laoZCUzEEpIZXA= +github.com/secure-systems-lab/go-securesystemslib v0.8.0/go.mod h1:UH2VZVuJfCYR8WgMlCU1uFsOUU+KeyrTWcSS73NBOzU= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8= github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I= @@ -1548,16 +1648,15 @@ github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFt github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ= github.com/shoenig/test v0.6.4 h1:kVTaSd7WLz5WZ2IaoM0RSzRsUD+m8wRR+5qvntpn4LU= github.com/shoenig/test v0.6.4/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k= -github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ= github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= +github.com/shopspring/decimal v1.3.1 h1:2Usl1nmF/WZucqkFZhnfFYxxxu8LG21F6nPQBE5gKV8= +github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sigstore/rekor v1.2.2 h1:5JK/zKZvcQpL/jBmHvmFj3YbpDMBQnJQ6ygp8xdF3bY= github.com/sigstore/rekor v1.2.2/go.mod h1:FGnWBGWzeNceJnp0x9eDFd41mI8aQqCjj+Zp0IEs0Qg= github.com/sijms/go-ora/v2 v2.8.6 h1:sq907Z5cno0YIXidOYM85tiQFFVhhgssw09IJPG0WG4= github.com/sijms/go-ora/v2 v2.8.6/go.mod h1:EHxlY6x7y9HAsdfumurRfTd+v8NrEOTR3Xl4FWlH6xk= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= @@ -1582,18 +1681,19 @@ github.com/smira/go-xz v0.1.0/go.mod h1:OmdEWnIIkuLzRLHGF4YtjDzF9VFUevEcP6YxDPRq 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= -github.com/sosedoff/gitkit v0.3.0 h1:TfINVRNUM+GcFa+LGhZ3RcWN86Im1M6i8qs0IsgMy90= -github.com/sosedoff/gitkit v0.3.0/go.mod h1:V3EpGZ0nvCBhXerPsbDeqtyReNb48cwP9KtkUYTKT5I= +github.com/sosedoff/gitkit v0.4.0 h1:opyQJ/h9xMRLsz2ca/2CRXtstePcpldiZN8DpLLF8Os= +github.com/sosedoff/gitkit v0.4.0/go.mod h1:V3EpGZ0nvCBhXerPsbDeqtyReNb48cwP9KtkUYTKT5I= +github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= +github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spdx/gordf v0.0.0-20201111095634-7098f93598fb/go.mod h1:uKWaldnbMnjsSAXRurWqqrdyZen1R7kxl8TkmWk2OyM= -github.com/spdx/tools-golang v0.3.0 h1:rtm+DHk3aAt74Fh0Wgucb4pCxjXV8SqHCPEb2iBd30k= -github.com/spdx/tools-golang v0.3.0/go.mod h1:RO4Y3IFROJnz+43JKm1YOrbtgQNljW4gAPpA/sY2eqo= +github.com/spdx/tools-golang v0.5.4-0.20231108154018-0c0f394b5e1a h1:uuREJ3I15VLjYZuhxjTQnA2bTqzRQX1HKEphYBzqT9o= +github.com/spdx/tools-golang v0.5.4-0.20231108154018-0c0f394b5e1a/go.mod h1:BHs8QEhK6MbFGdyjxvuBtzJtCLrN5bwUBC9fzQlYBXs= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/afero v1.9.5 h1:stMpOSZFs//0Lv29HduCmli3GUfpFoF3Y1Q/aXj/wVM= -github.com/spf13/afero v1.9.5/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= -github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= +github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= @@ -1605,6 +1705,8 @@ 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/spf13/viper v1.6.2/go.mod h1:t3iDnF5Jlj76alVNuyFBk5oUMCvsrkbvZK0WQdfDi5k= github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= +github.com/spf13/viper v1.18.2 h1:LUXCnvUvSM6FXAsj6nnfc8Q2tp1dIgUfY9Kc8GsSOiQ= +github.com/spf13/viper v1.18.2/go.mod h1:EKmWIqdnk5lOcmR72yw6hS+8OPYcwD0jteitLMVB+yk= github.com/square/certstrap v1.2.0 h1:ecgyABrbFLr8jSbOC6oTBmBek0t/HqtgrMUZCPuyfdw= github.com/square/certstrap v1.2.0/go.mod h1:CUHqV+fxJW0Y5UQFnnbYwQ7bpKXO1AKbic9g73799yw= github.com/stoewer/go-strcase v1.2.0 h1:Z2iHWqGXH00XYgqDmNgQbIBxf3wrNq0F3feEy0ainaU= @@ -1629,11 +1731,14 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/stvp/go-udp-testing v0.0.0-20201019212854-469649b16807/go.mod h1:7jxmlfBCDBXRzr0eAQJ48XC1hBu1np4CS5+cHEYfwpc= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= +github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= +github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= github.com/swaggest/assertjson v1.9.0 h1:dKu0BfJkIxv/xe//mkCrK5yZbs79jL7OVf9Ija7o2xQ= github.com/swaggest/assertjson v1.9.0/go.mod h1:b+ZKX2VRiUjxfUIal0HDN85W0nHPAYUbYH5WkkSsFsU= github.com/swaggest/jsonschema-go v0.3.64 h1:HyB41fkA4XP0BZkqWfGap5i2JtRHQGXG/21dGDPbyLM= @@ -1653,7 +1758,8 @@ github.com/tedsuo/rata v1.0.0 h1:Sf9aZrYy6ElSTncjnGkyC2yuVvz5YJetBIUKJ4CmeKE= github.com/tedsuo/rata v1.0.0/go.mod h1:X47ELzhOoLbfFIY0Cql9P6yo3Cdwf2CMX3FVZxRzJPc= github.com/terminalstatic/go-xsd-validate v0.1.5 h1:RqpJnf6HGE2CB/lZB1A8BYguk8uRtcvYAPLCF15qguo= github.com/terminalstatic/go-xsd-validate v0.1.5/go.mod h1:18lsvYFofBflqCrvo1umpABZ99+GneNTw2kEEc8UPJw= -github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= +github.com/tetratelabs/wazero v1.2.1 h1:J4X2hrGzJvt+wqltuvcSjHQ7ujQxA9gb6PeMs4qlUWs= +github.com/tetratelabs/wazero v1.2.1/go.mod h1:wYx2gNRg8/WihJfSDxA1TIL8H+GkfLYm+bIfbblu9VQ= github.com/tinylib/msgp v1.1.8 h1:FCXC1xanKO4I8plpHGH2P7koL/RzZs12l/+r7vakfm0= github.com/tinylib/msgp v1.1.8/go.mod h1:qkpG+2ldGg4xRFmx+jfTvZPxfGFhi64BcnL9vkCm/Tw= github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= @@ -1684,6 +1790,7 @@ github.com/ugorji/go/codec v1.2.11 h1:BMaWp1Bb6fHwEtbplGBGJ498wD+LKlNSl25MjdZY4d github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= github.com/ulikunitz/xz v0.5.8/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/ulikunitz/xz v0.5.9/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= +github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8= github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/uptrace/bun v1.1.14 h1:S5vvNnjEynJ0CvnrBOD7MIRW7q/WbtvFXrdfy0lddAM= @@ -1722,12 +1829,8 @@ github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c= github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= -github.com/xdg-go/scram v1.0.2/go.mod h1:1WAq6h33pAW+iRreB34OORO2Nf7qel3VV3fjBj+hCSs= -github.com/xdg-go/scram v1.1.1/go.mod h1:RaEWvsqvNKKvBPvcKeFjrG2cJqOkHTiyTpzz23ni57g= github.com/xdg-go/scram v1.1.2 h1:FHX5I5B4i4hKRVRBCFRxq1iQRej7WO3hhBuJf+UUySY= github.com/xdg-go/scram v1.1.2/go.mod h1:RT/sEzTbU5y00aCK8UOx6R7YryM0iF1N2MOmC3kKLN4= -github.com/xdg-go/stringprep v1.0.2/go.mod h1:8F9zXuvzgwmyT5DUm4GUfZGDdT3W+LCvS6+da4O5kxM= -github.com/xdg-go/stringprep v1.0.3/go.mod h1:W3f5j4i+9rC0kuIEJL0ky1VpHXQU3ocBgklLGvcBnW8= github.com/xdg-go/stringprep v1.0.4 h1:XLI/Ng3O1Atzq0oBs3TWm+5ZVgkq2aqdlvP9JtoZ6c8= github.com/xdg-go/stringprep v1.0.4/go.mod h1:mPGuuIYwz7CmR2bT9j4GbQqutWS1zV24gijq1dTyGkM= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= @@ -1741,8 +1844,8 @@ github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 h1:nIPpBwaJSVYIxUFsDv3M8ofm github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8/go.mod h1:HUYIGzjTL3rfEspMxjDjgmT5uz5wzYJKVo23qUhYTos= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xlab/treeprint v1.1.0 h1:G/1DjNkPpfZCFt9CSh6b5/nY4VimlbHF3Rh4obvtzDk= -github.com/xlab/treeprint v1.1.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0= +github.com/xlab/treeprint v1.2.0 h1:HzHnuAF1plUN2zGlAFHbSQP2qJ0ZAD3XF5XD7OesXRQ= +github.com/xlab/treeprint v1.2.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0= github.com/xor-gate/ar v0.0.0-20170530204233-5c72ae81e2b7 h1:Vo3q7h44BfmnLQh5SdF+2xwIoVnHThmZLunx6odjrHI= github.com/xor-gate/ar v0.0.0-20170530204233-5c72ae81e2b7/go.mod h1:TCWCUPhQU1j7axqROa/VHnlgJGHthAOqJZahg7b/DUc= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= @@ -1761,20 +1864,18 @@ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9dec github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/yuin/gopher-lua v0.0.0-20210529063254-f4c35e4016d9 h1:k/gmLsJDWwWqbLCur2yWnJzwQEKRcAHXo6seXGuSwWw= -github.com/yuin/gopher-lua v0.0.0-20210529063254-f4c35e4016d9/go.mod h1:E1AXubJBdNmFERAOucpDIxNzeGfLzg0mYh+UfMWdChA= +github.com/yuin/gopher-lua v1.1.0 h1:BojcDhfyDWgU2f2TOzYK/g5p2gxMrku8oupLDqlnSqE= +github.com/yuin/gopher-lua v1.1.0/go.mod h1:GBR0iDaNXjAgGg9zfCvksxSRnQx76gclCIb7kdAd1Pw= github.com/yusufpapurcu/wmi v1.2.3 h1:E1ctvB7uKFMOJw3fdOW32DwGE9I7t++CRUEMKvFoFiw= github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= github.com/zclconf/go-cty v1.10.0/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= github.com/zclconf/go-cty v1.13.0 h1:It5dfKTTZHe9aeppbNOda3mN7Ag7sg6QkBNm6TkyFa0= github.com/zclconf/go-cty v1.13.0/go.mod h1:YKQzy/7pZ7iq2jNFzy5go57xdxdWoLLpaEp4u238AE0= -github.com/zclconf/go-cty-yaml v1.0.2 h1:dNyg4QLTrv2IfJpm7Wtxi55ed5gLGOlPrZ6kMd51hY0= -github.com/zclconf/go-cty-yaml v1.0.2/go.mod h1:IP3Ylp0wQpYm50IHK8OZWKMu6sPJIUgKa8XhiVHura0= 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.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.7 h1:j+zJOnnEjF/kyHlDDgGnVL/AIqIJPq8UoB2GSNfkUfQ= -go.etcd.io/bbolt v1.3.7/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw= +go.etcd.io/bbolt v1.3.8 h1:xs88BrvEv273UsB79e0hcVrlUWmS0a8upikMFhSyAtA= +go.etcd.io/bbolt v1.3.8/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw= go.etcd.io/etcd/api/v3 v3.5.4/go.mod h1:5GB2vv4A4AOn3yk7MftYGHkUfGtDHnEraIjym4dYz5A= go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 h1:se+XckWlVTTfwjZSsAZJ2zGPzmIMq3j7fKBCmHoB9UA= go.etcd.io/etcd/api/v3 v3.6.0-alpha.0/go.mod h1:z13pg39zewDLZeXIKeM0xELOeFKcqjLocfwl5M820+w= @@ -1792,11 +1893,8 @@ go.etcd.io/etcd/raft/v3 v3.6.0-alpha.0 h1:BQ6CnNP4pIpy5rusFlTBxAacDgPXhuiHFwoTsB go.etcd.io/etcd/raft/v3 v3.6.0-alpha.0/go.mod h1:/kZdrBXlc5fUgYXfIEQ0B5sb7ejXPKbtF4jWzF1exiQ= go.etcd.io/etcd/server/v3 v3.6.0-alpha.0.0.20220522111935-c3bc4116dcd1 h1:S801WVTlIcQnS+pA7srsyxgxg4qNYx4Fm/YToSDde+w= go.etcd.io/etcd/server/v3 v3.6.0-alpha.0.0.20220522111935-c3bc4116dcd1/go.mod h1:sw82kLjlBpuhowfKyi54jk2s8qK8W4YG5EwlY/BleOY= -go.mongodb.org/mongo-driver v1.7.3/go.mod h1:NqaYOwnXWr5Pm7AOpO5QFxKJ503nbMse/R79oO62zWg= -go.mongodb.org/mongo-driver v1.7.5/go.mod h1:VXEWRZ6URJIkUq2SCAyapmhH0ZLRBP+FT4xhp5Zvxng= -go.mongodb.org/mongo-driver v1.10.0/go.mod h1:wsihk0Kdgv8Kqu1Anit4sfK+22vSFbUrAVEYRhCXrA8= -go.mongodb.org/mongo-driver v1.12.1 h1:nLkghSU8fQNaK7oUmDhQFsnrtcoNy7Z6LVFKsEecqgE= -go.mongodb.org/mongo-driver v1.12.1/go.mod h1:/rGBTebI3XYboVmgz+Wv3Bcbl3aD0QF9zl6kDDw18rQ= +go.mongodb.org/mongo-driver v1.13.1 h1:YIc7HTYsKndGK4RFzJ3covLz1byri52x0IoMB0Pt/vk= +go.mongodb.org/mongo-driver v1.13.1/go.mod h1:wcDf1JBCXy2mOW0bWHwO/IOYqdca1MPCwDtFu/Z9+eo= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= @@ -1874,38 +1972,37 @@ go.opentelemetry.io/contrib/propagators/b3 v1.21.1 h1:WPYiUgmw3+b7b3sQ1bFBFAf0q+ go.opentelemetry.io/contrib/propagators/b3 v1.21.1/go.mod h1:EmzokPoSqsYMBVK4nRnhsfm5mbn8J1eDuz/U1UaQaWg= go.opentelemetry.io/contrib/zpages v0.46.1 h1:U8Hh84dc+vJTVgRnL+QKWtWD2iqTSKibrQ85EeQqsNg= go.opentelemetry.io/contrib/zpages v0.46.1/go.mod h1:1Wq9YTzkhr3Jkyi/sVrasFSppVzJQcvFf2Vc2ExZd6c= -go.opentelemetry.io/otel v1.22.0 h1:xS7Ku+7yTFvDfDraDIJVpw7XPyuHlB9MCiqqX5mcJ6Y= -go.opentelemetry.io/otel v1.22.0/go.mod h1:eoV4iAi3Ea8LkAEI9+GFT44O6T/D0GWAVFyZVCC6pMI= +go.opentelemetry.io/otel v1.23.1 h1:Za4UzOqJYS+MUczKI320AtqZHZb7EqxO00jAHE0jmQY= +go.opentelemetry.io/otel v1.23.1/go.mod h1:Td0134eafDLcTS4y+zQ26GE8u3dEuRBiBCTUIRHaikA= go.opentelemetry.io/otel/bridge/opencensus v0.44.0 h1:/inELPJztkn6Xx3ap9qw8i8XdeWF0B/OjGHOdRTePZ8= go.opentelemetry.io/otel/bridge/opencensus v0.44.0/go.mod h1:dQTBJVBx1xahrXEFBV1BGPAnGuXC92LCj55fxIrtj7I= go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.44.0 h1:jd0+5t/YynESZqsSyPz+7PAFdEop0dlN0+PkyHYo8oI= go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.44.0/go.mod h1:U707O40ee1FpQGyhvqnzmCJm1Wh6OX6GGBVn0E6Uyyk= go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v0.44.0 h1:bflGWrfYyuulcdxf14V6n9+CoQcu5SAAdHmDPAJnlps= go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v0.44.0/go.mod h1:qcTO4xHAxZLaLxPd60TdE88rxtItPHgHWqOhOGRr0as= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0 h1:cl5P5/GIfFh4t6xyruOgJP5QiA1pw4fYYdv6nc6CBWw= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0/go.mod h1:zgBdWWAu7oEEMC06MMKc5NLbA/1YDXV1sMpSqEeLQLg= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.23.1 h1:o8iWeVFa1BcLtVEV0LzrCxV2/55tB3xLxADr6Kyoey4= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.23.1/go.mod h1:SEVfdK4IoBnbT2FXNM/k8yC08MrfbhWk3U4ljM8B3HE= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0 h1:tIqheXEFWAZ7O8A7m+J0aPTmpJN3YQ7qetUAdkkkKpk= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0/go.mod h1:nUeKExfxAQVbiVFn32YXpXZZHZ61Cc3s3Rn1pDBGAb0= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.21.0 h1:digkEZCJWobwBqMwC0cwCq8/wkkRy/OowZg5OArWZrM= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.21.0/go.mod h1:/OpE/y70qVkndM0TrxT4KBoN3RsFZP0QaofcfYrj76I= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.23.1 h1:cfuy3bXmLJS7M1RZmAL6SuhGtKUp2KEsrm00OlAXkq4= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.23.1/go.mod h1:22jr92C6KwlwItJmQzfixzQM3oyyuYLCfHiMY+rpsPU= go.opentelemetry.io/otel/exporters/prometheus v0.45.0 h1:BeIK2KGho0oCWa7LxEGSqfDZbs7Fpv/Viz+FS4P8CXE= go.opentelemetry.io/otel/exporters/prometheus v0.45.0/go.mod h1:UVJZPLnfDSvHj+eJuZE+E1GjIBD267mEMfAAHJdghWg= go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v0.44.0 h1:dEZWPjVN22urgYCza3PXRUGEyCB++y1sAqm6guWFesk= go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v0.44.0/go.mod h1:sTt30Evb7hJB/gEk27qLb1+l9n4Tb8HvHkR0Wx3S6CU= go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.21.0 h1:VhlEQAPp9R1ktYfrPk5SOryw1e9LDDTZCbIPFrho0ec= go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.21.0/go.mod h1:kB3ufRbfU+CQ4MlUcqtW8Z7YEOBeK2DJ6CmR5rYYF3E= -go.opentelemetry.io/otel/metric v1.22.0 h1:lypMQnGyJYeuYPhOM/bgjbFM6WE44W1/T45er4d8Hhg= -go.opentelemetry.io/otel/metric v1.22.0/go.mod h1:evJGjVpZv0mQ5QBRJoBF64yMuOf4xCWdXjK8pzFvliY= -go.opentelemetry.io/otel/sdk v1.22.0 h1:6coWHw9xw7EfClIC/+O31R8IY3/+EiRFHevmHafB2Gw= -go.opentelemetry.io/otel/sdk v1.22.0/go.mod h1:iu7luyVGYovrRpe2fmj3CVKouQNdTOkxtLzPvPz1DOc= +go.opentelemetry.io/otel/metric v1.23.1 h1:PQJmqJ9u2QaJLBOELl1cxIdPcpbwzbkjfEyelTl2rlo= +go.opentelemetry.io/otel/metric v1.23.1/go.mod h1:mpG2QPlAfnK8yNhNJAxDZruU9Y1/HubbC+KyH8FaCWI= +go.opentelemetry.io/otel/sdk v1.23.1 h1:O7JmZw0h76if63LQdsBMKQDWNb5oEcOThG9IrxscV+E= +go.opentelemetry.io/otel/sdk v1.23.1/go.mod h1:LzdEVR5am1uKOOwfBWFef2DCi1nu3SA8XQxx2IerWFk= go.opentelemetry.io/otel/sdk/metric v1.22.0 h1:ARrRetm1HCVxq0cbnaZQlfwODYJHo3gFL8Z3tSmHBcI= go.opentelemetry.io/otel/sdk/metric v1.22.0/go.mod h1:KjQGeMIDlBNEOo6HvjhxIec1p/69/kULDcp4gr0oLQQ= -go.opentelemetry.io/otel/trace v1.22.0 h1:Hg6pPujv0XG9QaVbGOBVHunyuLcCC3jN7WEhPx83XD0= -go.opentelemetry.io/otel/trace v1.22.0/go.mod h1:RbbHXVqKES9QhzZq/fE5UnOSILqRt40a21sPw2He1xo= +go.opentelemetry.io/otel/trace v1.23.1 h1:4LrmmEd8AU2rFvU1zegmvqW7+kWarxtNOPyeL6HmYY8= +go.opentelemetry.io/otel/trace v1.23.1/go.mod h1:4IpnpJFwr1mo/6HL8XIPJaE9y0+u1KcVmuW7dwFSVrI= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I= -go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM= -go.starlark.net v0.0.0-20220816155156-cfacd8902214 h1:MqijAN3S61c7KWasOk+zIqIjHQPN6WUra/X3+YAkQxQ= +go.opentelemetry.io/proto/otlp v1.1.0 h1:2Di21piLrCqJ3U3eXGCTPHE9R8Nh+0uglSnOyxikMeI= +go.opentelemetry.io/proto/otlp v1.1.0/go.mod h1:GpBHCBWiqvVLDqmHZsoMM3C5ySeKTC7ej/RNTae6MdY= go.starlark.net v0.0.0-20220816155156-cfacd8902214/go.mod h1:VZcBMdr3cT3PnBoWunTabuSEXwVAH+ZJ5zxfs3AdASk= 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= @@ -1949,23 +2046,21 @@ golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnf golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181127143415-eb0de9b17e85/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/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-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= -golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= +golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= @@ -2057,23 +2152,29 @@ golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= -golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= +golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210610132358-84b48f89b13b/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20220923203811-8be639271d50/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= @@ -2091,15 +2192,28 @@ golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= golang.org/x/oauth2 v0.16.0 h1:aDkGMBSYxElaoP81NpoUoz2oo2R2wHdZpGToUxfyQrQ= golang.org/x/oauth2 v0.16.0/go.mod h1:hqZ+0LWXsiVoZpeld6jVt06P3adbS2Uu911W1SsJv2o= 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-20190412183630-56d357773e84/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-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -2110,6 +2224,7 @@ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220923202941-7f9b1623fab7/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= @@ -2127,12 +2242,10 @@ golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 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-20190419153524-e8e3143a4f4a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190529164535-6a60838ec259/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190531175056-4c3a928424d2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -2178,31 +2291,47 @@ golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/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-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210906170528-6f6e22806c34/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211102192858-4dd72447c267/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211117180635-dee7805ff2e1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/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-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-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220627191245-f75cf1eec38b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220708085239-5a0f0661e09d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -2264,14 +2393,10 @@ golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3 golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/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= -golang.org/x/tools v0.0.0-20190420181800-aa740d480789/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190422233926-fe54fb35175b/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= @@ -2317,10 +2442,12 @@ golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +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.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ= @@ -2331,7 +2458,9 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T 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/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= gomodules.xyz/jsonpatch/v2 v2.3.0 h1:8NFhfS6gzxNqjLIYnZxg319wZ5Qjnx4m/CcX+Klzazc= @@ -2357,6 +2486,35 @@ google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz513 google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= +google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= +google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= +google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= +google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= +google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= +google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= +google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= +google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= +google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= +google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= +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= +google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= +google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= +google.golang.org/api v0.77.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= +google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= +google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= +google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o= +google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g= +google.golang.org/api v0.90.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= +google.golang.org/api v0.93.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= +google.golang.org/api v0.95.0/go.mod h1:eADj+UBuxkh5zlrSntJghuNeg8HwQ1w5lTKkuqaETEI= +google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= google.golang.org/api v0.156.0 h1:yloYcGbBtVYjLKQe4enCunxvwn3s2w/XPrrhVf6MsvQ= google.golang.org/api v0.156.0/go.mod h1:bUSmn4KFO0Q+69zo9CNIDp4Psi6BqM0np0CbzKRSiSY= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= @@ -2407,14 +2565,77 @@ google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210329143202-679c6ae281ee/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= +google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= +google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +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-20220107163113-42d7afdf6368/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= +google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +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-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220722212130-b98a9ff5e252/go.mod h1:GkXuJDJ6aQ7lnJcRF+SJVgFdQhypqgl3LB1C9vabdRE= +google.golang.org/genproto v0.0.0-20220801145646-83ce21fca29f/go.mod h1:iHe1svFLAZg9VWz891+QbRMwUv9O/1Ww+/mngYeThbc= +google.golang.org/genproto v0.0.0-20220815135757-37a418bb8959/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220817144833-d7fd3f11b9b1/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220829144015-23454907ede3/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220829175752-36a9c930ecbf/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220913154956-18f8339a66a5/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220914142337-ca0e39ece12f/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220915135415-7fd63a7952de/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220916172020-2692e8806bfa/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220919141832-68c03719ef51/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006/go.mod h1:ht8XFiar2npT/g4vkk7O0WYS1sHOHbdujxbEp7CJWbw= +google.golang.org/genproto v0.0.0-20220926165614-551eb538f295/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= +google.golang.org/genproto v0.0.0-20220926220553-6981cbe3cfce/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= +google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqwhZAwq4wsRUaVG555sVgsNmIjRtO7t/JH29U= +google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= +google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= +google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= google.golang.org/genproto v0.0.0-20231212172506-995d672761c0 h1:YJ5pD9rF8o9Qtta0Cmy9rdBwkSjrTCT6XTiUQVOtIos= google.golang.org/genproto v0.0.0-20231212172506-995d672761c0/go.mod h1:l/k7rMz0vFTBPy+tFSGvXEd3z+BcoG1k7EHbqm+YBsY= -google.golang.org/genproto/googleapis/api v0.0.0-20231212172506-995d672761c0 h1:s1w3X6gQxwrLEpxnLd/qXTVLgQE2yXwaOaoa6IlY/+o= -google.golang.org/genproto/googleapis/api v0.0.0-20231212172506-995d672761c0/go.mod h1:CAny0tYF+0/9rmDB9fahA9YLzX3+AEVl1qXbv5hhj6c= +google.golang.org/genproto/googleapis/api v0.0.0-20240102182953-50ed04b92917 h1:rcS6EyEaoCO52hQDupoSfrxI3R6C2Tq741is7X8OvnM= +google.golang.org/genproto/googleapis/api v0.0.0-20240102182953-50ed04b92917/go.mod h1:CmlNWB9lSezaYELKS5Ym1r44VrrbPUa7JTvw+6MbpJ0= google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917 h1:6G8oQ016D88m1xAKljMlBOOGWDZkes4kMhgGFlf8WcQ= google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917/go.mod h1:xtjpI3tXFPP051KaWnhvxkiubL/6dJ18vLVf7q2pTOU= google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= @@ -2439,11 +2660,27 @@ google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= google.golang.org/grpc v1.41.0/go.mod h1:U3l9uK9J0sini8mHphKoXyaqDA/8VyGnDee1zzIUK6k= -google.golang.org/grpc v1.60.1 h1:26+wFr+cNqSGFcOXcabYC0lUVJVRa2Sb2ortSK7VrEU= -google.golang.org/grpc v1.60.1/go.mod h1:OlCHIeLYqSSsLi6i49B5QGdzaMZK9+M7LXN2FKz4eGM= +google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= +google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.61.0 h1:TOvOcuXn30kRao+gfcvsebNEa5iZIiLkisYEkf7R7o0= +google.golang.org/grpc v1.61.0/go.mod h1:VUbo7IFqmF1QtCAstipjG0GIoq49KvMe9+h1jFLBNJs= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/grpc/examples v0.0.0-20221020162917-9127159caf5a h1:p51n6zkL483uumoZhCSGtHCem9kDeU05G5jX/wYI9gw= google.golang.org/grpc/examples v0.0.0-20221020162917-9127159caf5a/go.mod h1:gxndsbNG1n4TZcHGgsYEfVGnTxqfEdfiDv6/DADXX9o= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= @@ -2472,9 +2709,9 @@ gopkg.in/asn1-ber.v1 v1.0.0-20181015200546-f715ec2f112d/go.mod h1:cuepJuh7vyXfUy 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-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/cheggaaa/pb.v1 v1.0.28 h1:n1tBJnnK2r7g9OW2btFH91V92STTUevLXYFb8gy9EMk= gopkg.in/cheggaaa/pb.v1 v1.0.28/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= @@ -2504,7 +2741,6 @@ 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-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= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= @@ -2515,8 +2751,6 @@ gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= gotest.tools/v3 v3.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0= gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= -helm.sh/helm/v3 v3.10.3 h1:wL7IUZ7Zyukm5Kz0OUmIFZgKHuAgByCrUcJBtY0kDyw= -helm.sh/helm/v3 v3.10.3/go.mod h1:CXOcs02AYvrlPMWARNYNRgf2rNP7gLJQsi/Ubd4EDrI= honnef.co/go/gotraceui v0.2.0 h1:dmNsfQ9Vl3GwbiVD7Z8d/osC6WtGGrasyrC2suc4ZIQ= honnef.co/go/gotraceui v0.2.0/go.mod h1:qHo4/W75cA3bX0QQoSvDjbJa4R8mAyyFjbWAj63XElc= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -2528,22 +2762,20 @@ 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.3.2 h1:ytYb4rOqyp1TSa2EPvNVwtPQJctSELKaMyLfqNP4+34= honnef.co/go/tools v0.3.2/go.mod h1:jzwdWgg7Jdq75wlfblQxO4neNaFFSvgc1tD5Wv8U0Yw= -k8s.io/api v0.28.6 h1:yy6u9CuIhmg55YvF/BavPBBXB+5QicB64njJXxVnzLo= -k8s.io/api v0.28.6/go.mod h1:AM6Ys6g9MY3dl/XNaNfg/GePI0FT7WBGu8efU/lirAo= -k8s.io/apiextensions-apiserver v0.28.6 h1:myB3iG/3v3jqCg28JDbOefu4sH2/erNEXgytRzJKBOo= -k8s.io/apiextensions-apiserver v0.28.6/go.mod h1:qlp6xRKBgyRhe5AYc81TQpLx4kLNK8/sGQUOwMkVjRk= -k8s.io/apimachinery v0.28.6 h1:RsTeR4z6S07srPg6XYrwXpTJVMXsjPXn0ODakMytSW0= -k8s.io/apimachinery v0.28.6/go.mod h1:QFNX/kCl/EMT2WTSz8k4WLCv2XnkOLMaL8GAVRMdpsA= -k8s.io/apiserver v0.28.6 h1:SfS5v4I5UGvh0q/1rzvNwLFsK+r7YzcsixnUc0NwoEk= -k8s.io/apiserver v0.28.6/go.mod h1:8n0aerS3kPm9usyB8B+an6/BZ5+Fa9fNqlASFdDDVwk= +k8s.io/api v0.27.6 h1:PBWu/lywJe2qQcshMjubzcBg7+XDZOo7O8JJAWuYtUo= +k8s.io/api v0.27.6/go.mod h1:AQYj0UsFCp3qJE7bOVnUuy4orCsXVkvHefnbYQiNWgk= +k8s.io/apiextensions-apiserver v0.29.0 h1:0VuspFG7Hj+SxyF/Z/2T0uFbI5gb5LRgEyUVE3Q4lV0= +k8s.io/apiextensions-apiserver v0.29.0/go.mod h1:TKmpy3bTS0mr9pylH0nOt/QzQRrW7/h7yLdRForMZwc= +k8s.io/apimachinery v0.27.6 h1:mGU8jmBq5o8mWBov+mLjdTBcU+etTE19waies4AQ6NE= +k8s.io/apimachinery v0.27.6/go.mod h1:XNfZ6xklnMCOGGFNqXG7bUrQCoR04dh/E7FprV6pb+E= +k8s.io/apiserver v0.27.6 h1:r/eHN8r3lG2buggHrVMy++kKhHlHn1HWSX1dqDtes54= +k8s.io/apiserver v0.27.6/go.mod h1:Xeo9OEXn2kDLK5pqspjdXQx7YKgDyKSpwIB4p0BmpAQ= k8s.io/autoscaler/vertical-pod-autoscaler v0.13.0 h1:pH6AsxeBZcyX6KBqcnl7SPIJqbN1d59RrEBuIE6Rq6c= k8s.io/autoscaler/vertical-pod-autoscaler v0.13.0/go.mod h1:LraL5kR2xX7jb4VMCG6/tUH4I75uRHlnzC0VWQHcyWk= -k8s.io/cli-runtime v0.25.3 h1:Zs7P7l7db/5J+KDePOVtDlArAa9pZXaDinGWGZl0aM8= -k8s.io/cli-runtime v0.25.3/go.mod h1:InHHsjkyW5hQsILJGpGjeruiDZT/R0OkROQgD6GzxO4= -k8s.io/client-go v0.28.6 h1:Gge6ziyIdafRchfoBKcpaARuz7jfrK1R1azuwORIsQI= -k8s.io/client-go v0.28.6/go.mod h1:+nu0Yp21Oeo/cBCsprNVXB2BfJTV51lFfe5tXl2rUL8= -k8s.io/component-base v0.28.6 h1:G4T8VrcQ7xZou3by/fY5NU5mfxOBlWaivS2lPrEltAo= -k8s.io/component-base v0.28.6/go.mod h1:Dg62OOG3ALu2P4nAG00UdsuHoNLQJ5VsUZKQlLDcS+E= +k8s.io/client-go v0.27.6 h1:vzI8804gpUtpMCNaFjIFyJrifH7u//LJCJPy8fQuYQg= +k8s.io/client-go v0.27.6/go.mod h1:PMsXcDKiJTW7PHJ64oEsIUJF319wm+EFlCj76oE5QXM= +k8s.io/component-base v0.27.6 h1:hF5WxX7Tpi9/dXAbLjPVkIA6CA6Pi6r9JOHyo0uCDYI= +k8s.io/component-base v0.27.6/go.mod h1:NvjLtaneUeb0GgMPpCBF+4LNB9GuhDHi16uUTjBhQfU= k8s.io/cri-api v0.25.5 h1:k/VYZpkDI4VEb5nI4uWE/ZHO08b1D/m5/EXv1weXgtM= k8s.io/cri-api v0.25.5/go.mod h1:fg+6ctfBFAUYnKfjmYqUVXwq6A788L0ZvNooI405Nek= k8s.io/gengo v0.0.0-20230829151522-9cce18d56c01 h1:pWEwq4Asjm4vjW7vcsmijwBhOr1/shsbSYiWXmNGlks= @@ -2551,74 +2783,65 @@ k8s.io/gengo v0.0.0-20230829151522-9cce18d56c01/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAE k8s.io/klog v1.0.1-0.20200310124935-4ad0115ba9e4 h1:PbZJplYddJmSutLN9divJ0qU2nwGuY9ce++qhcsjqU0= k8s.io/klog v1.0.1-0.20200310124935-4ad0115ba9e4/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= -k8s.io/klog/v2 v2.100.1 h1:7WCHKK6K8fNhTqfBhISHQ97KrnJNFZMcQvKp7gP/tmg= -k8s.io/klog/v2 v2.100.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/kms v0.28.6 h1:WfpL9iSiB012zPUtPGT+OGv4yncdcvwH1ce/UYv4RjQ= -k8s.io/kms v0.28.6/go.mod h1:ONhtDMHoDgKQ/QzN6WiqJlmnpE9iyMQg1pLock4zug8= +k8s.io/klog/v2 v2.120.0 h1:z+q5mfovBj1fKFxiRzsa2DsJLPIVMk/KFL81LMOfK+8= +k8s.io/klog/v2 v2.120.0/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= +k8s.io/kms v0.29.0 h1:KJ1zaZt74CgvgV3NR7tnURJ/mJOKC5X3nwon/WdwgxI= +k8s.io/kms v0.29.0/go.mod h1:mB0f9HLxRXeXUfHfn1A7rpwOlzXI1gIWu86z6buNoYA= k8s.io/kube-aggregator v0.28.6 h1:opRVDw+inLPIyAqG9Fu3+EYWcmbTHOHJNrmuKoeuzQM= k8s.io/kube-aggregator v0.28.6/go.mod h1:NXzqtkCuAfv/modgRbAkPdfUZF+koazCy8Qrs8L+WyE= -k8s.io/kube-openapi v0.0.0-20230901164831-6c774f458599 h1:nVKRi5eItf3x9kkIMfdT4D1/LqPzj0bLjxLYWbdUtV0= -k8s.io/kube-openapi v0.0.0-20230901164831-6c774f458599/go.mod h1:AsvuZPBlUDVuCdzJ87iajxtXuR9oktsTctW/R9wwouA= k8s.io/kube-state-metrics/v2 v2.8.2 h1:P/9wJF26kkCF3Iy52e+MFijjeCAFtqNLFvpKJW5+CR8= k8s.io/kube-state-metrics/v2 v2.8.2/go.mod h1:kulGw0iSIvo1cjWdDExkeGW1muV/OV4C2TZOaHxqvyc= -k8s.io/kubectl v0.25.3 h1:HnWJziEtmsm4JaJiKT33kG0kadx68MXxUE8UEbXnN4U= -k8s.io/kubectl v0.25.3/go.mod h1:glU7PiVj/R6Ud4A9FJdTcJjyzOtCJyc0eO7Mrbh3jlI= k8s.io/kubelet v0.28.6 h1:Ofn26Lr/4MCApqNPbRHEALIx5YTnKjNxC1CfEgwbrUA= k8s.io/kubelet v0.28.6/go.mod h1:ANu5Pa5P4beDu2BGTW588WsFPfjmkgKbikiUvatdzAo= k8s.io/metrics v0.28.6 h1:7BZqPSl356LG98AaoOqTcPKbl5aloXNrThj2AtS15Rg= k8s.io/metrics v0.28.6/go.mod h1:eeqj1hFqI14iSsKVfa8Vu/+OIfi7s8lxpnCJOA7teLg= -k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI= -k8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +k8s.io/utils v0.0.0-20231127182322-b307cd553661 h1:FepOBzJ0GXm8t0su67ln2wAZjbQ6RxQGZDnzuLcrUTI= +k8s.io/utils v0.0.0-20231127182322-b307cd553661/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= lukechampine.com/uint128 v1.2.0 h1:mBi/5l91vocEN8otkC5bDLhi2KdCticRiwbdB0O+rjI= lukechampine.com/uint128 v1.2.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= mellium.im/sasl v0.3.1 h1:wE0LW6g7U83vhvxjC1IY8DnXM+EU095yeo8XClvCdfo= mellium.im/sasl v0.3.1/go.mod h1:xm59PUYpZHhgQ9ZqoJ5QaCqzWMi8IeS49dhp6plPCzw= modernc.org/cc/v3 v3.40.0 h1:P3g79IUS/93SYhtoeaHW+kRCIrYaxJ27MFPv+7kaTOw= modernc.org/cc/v3 v3.40.0/go.mod h1:/bTg4dnWkSXowUO6ssQKnOV0yMVxDYNIsIrzqTFDGH0= -modernc.org/ccgo/v3 v3.16.13-0.20221017192402-261537637ce8 h1:0+dsXf0zeLx9ixj4nilg6jKe5Bg1ilzBwSFq4kJmIUc= -modernc.org/ccgo/v3 v3.16.13-0.20221017192402-261537637ce8/go.mod h1:fUB3Vn0nVPReA+7IG7yZDfjv1TMWjhQP8gCxrFAtL5g= +modernc.org/ccgo/v3 v3.16.13 h1:Mkgdzl46i5F/CNR/Kj80Ri59hC8TKAhZrYSaqvkwzUw= +modernc.org/ccgo/v3 v3.16.13/go.mod h1:2Quk+5YgpImhPjv2Qsob1DnZ/4som1lJTodubIcoUkY= modernc.org/ccorpus v1.11.6 h1:J16RXiiqiCgua6+ZvQot4yUuUy8zxgqbqEEUuGPlISk= modernc.org/ccorpus v1.11.6/go.mod h1:2gEUTrWqdpH2pXsmTM1ZkjeSrUWDpjMu2T6m29L/ErQ= modernc.org/httpfs v1.0.6 h1:AAgIpFZRXuYnkjftxTAZwMIiwEqAfk8aVB2/oA6nAeM= modernc.org/httpfs v1.0.6/go.mod h1:7dosgurJGp0sPaRanU53W4xZYKh14wfzX420oZADeHM= -modernc.org/libc v1.21.2 h1:V053DgNSpAY+IPrO3XlWqrFKUiQqHyPqG4dsx42Ulck= -modernc.org/libc v1.21.2/go.mod h1:przBsL5RDOZajTVslkugzLBj1evTue36jEomFQOoYuI= -modernc.org/mathutil v1.5.0 h1:rV0Ko/6SfM+8G+yKiyI830l3Wuz1zRutdslNoQ0kfiQ= -modernc.org/mathutil v1.5.0/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= -modernc.org/memory v1.4.0 h1:crykUfNSnMAXaOJnnxcSzbUGMqkLWjklJKkBK2nwZwk= -modernc.org/memory v1.4.0/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU= +modernc.org/libc v1.29.0 h1:tTFRFq69YKCF2QyGNuRUQxKBm1uZZLubf6Cjh/pVHXs= +modernc.org/libc v1.29.0/go.mod h1:DaG/4Q3LRRdqpiLyP0C2m1B8ZMGkQ+cCgOIjEtQlYhQ= +modernc.org/mathutil v1.6.0 h1:fRe9+AmYlaej+64JsEEhoWuAYBkOtQiMEU7n/XgfYi4= +modernc.org/mathutil v1.6.0/go.mod h1:Ui5Q9q1TR2gFm0AQRqQUaBWFLAhQpCwNcuhBOSedWPo= +modernc.org/memory v1.7.2 h1:Klh90S215mmH8c9gO98QxQFsY+W451E8AnzjoE2ee1E= +modernc.org/memory v1.7.2/go.mod h1:NO4NVCQy0N7ln+T9ngWqOQfi7ley4vpwvARR+Hjw95E= modernc.org/opt v0.1.3 h1:3XOZf2yznlhC+ibLltsDGzABUGVx8J6pnFMS3E4dcq4= modernc.org/opt v0.1.3/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= -modernc.org/sqlite v1.19.3 h1:dIoagx6yIQT3V/zOSeAyZ8OqQyEr17YTgETOXTZNJMA= -modernc.org/sqlite v1.19.3/go.mod h1:xiyJD7FY8mTZXnQwE/gEL1STtFrrnDx03V8KhVQmcr8= +modernc.org/sqlite v1.28.0 h1:Zx+LyDDmXczNnEQdvPuEfcFVA2ZPyaD7UCZDjef3BHQ= +modernc.org/sqlite v1.28.0/go.mod h1:Qxpazz0zH8Z1xCFyi5GSL3FzbtZ3fvbjmywNogldEW0= modernc.org/strutil v1.1.3 h1:fNMm+oJklMGYfU9Ylcywl0CO5O6nTfaowNsh2wpPjzY= modernc.org/strutil v1.1.3/go.mod h1:MEHNA7PdEnEwLvspRMtWTNnp2nnyvMfkimT1NKNAGbw= -modernc.org/tcl v1.15.0 h1:oY+JeD11qVVSgVvodMJsu7Edf8tr5E/7tuhF5cNYz34= -modernc.org/tcl v1.15.0/go.mod h1:xRoGotBZ6dU+Zo2tca+2EqVEeMmOUBzHnhIwq4YrVnE= -modernc.org/token v1.0.1 h1:A3qvTqOwexpfZZeyI0FeGPDlSWX5pjZu9hF4lU+EKWg= -modernc.org/token v1.0.1/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= -modernc.org/z v1.7.0 h1:xkDw/KepgEjeizO2sNco+hqYkU12taxQFqPEmgm1GWE= -modernc.org/z v1.7.0/go.mod h1:hVdgNMh8ggTuRG1rGU8x+xGRFfiQUIAw0ZqlPy8+HyQ= -oras.land/oras-go v1.1.1 h1:gI00ftziRivKXaw1BdMeEoIA4uBgga33iVlOsEwefFs= -oras.land/oras-go v1.1.1/go.mod h1:n2TE1ummt9MUyprGhT+Q7kGZUF4kVUpYysPFxeV2IpQ= +modernc.org/tcl v1.15.2 h1:C4ybAYCGJw968e+Me18oW55kD/FexcHbqH2xak1ROSY= +modernc.org/tcl v1.15.2/go.mod h1:3+k/ZaEbKrC8ePv8zJWPtBSW0V7Gg9g8rkmhI1Kfs3c= +modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y= +modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= +modernc.org/z v1.7.3 h1:zDJf6iHjrnB+WRD88stbXokugjyc0/pB91ri1gO6LZY= +modernc.org/z v1.7.3/go.mod h1:Ipv4tsdxZRbQyLq9Q1M6gdbkxYzdlrciF2Hi/lS7nWE= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= -sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.1.2 h1:trsWhjU5jZrx6UvFu4WzQDrN7Pga4a7Qg+zcfcj64PA= -sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.1.2/go.mod h1:+qG7ISXqCDVVcyO8hLn12AKVYYUjM7ftlqsqmrhMZE0= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.28.0 h1:TgtAeesdhpm2SGwkQasmbeqDo8th5wOBA5h/AjTKA4I= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.28.0/go.mod h1:VHVDI/KrK4fjnV61bE2g3sA7tiETLn8sooImelsCx3Y= sigs.k8s.io/controller-runtime v0.15.0 h1:ML+5Adt3qZnMSYxZ7gAverBLNPSMQEibtzAgp0UPojU= sigs.k8s.io/controller-runtime v0.15.0/go.mod h1:7ngYvp1MLT+9GeZ+6lH3LOlcHkp/+tzA/fmHa4iq9kk= sigs.k8s.io/custom-metrics-apiserver v1.28.0 h1:3bfFCBTKP4X620UKkWWI9TvI4ABD86DfU7fa9hOSSeE= sigs.k8s.io/custom-metrics-apiserver v1.28.0/go.mod h1:1XFzUze/gMahODitr56KKM4iDee51ChVu9cTvJ5EEVI= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= -sigs.k8s.io/kustomize/api v0.12.1 h1:7YM7gW3kYBwtKvoY216ZzY+8hM+lV53LUayghNRJ0vM= -sigs.k8s.io/kustomize/api v0.12.1/go.mod h1:y3JUhimkZkR6sbLNwfJHxvo1TCLwuwm14sCYnkH6S1s= -sigs.k8s.io/kustomize/kyaml v0.13.9 h1:Qz53EAaFFANyNgyOEJbT/yoIHygK40/ZcvU3rgry2Tk= -sigs.k8s.io/kustomize/kyaml v0.13.9/go.mod h1:QsRbD0/KcU+wdk0/L0fIp2KLnohkVzs6fQ85/nOXac4= -sigs.k8s.io/structured-merge-diff/v4 v4.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kFxnAMREiWFE= -sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E= +sigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4= +sigs.k8s.io/structured-merge-diff/v4 v4.4.1/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08= 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= +sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= +sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= diff --git a/pkg/collector/corechecks/sbom/convert.go b/pkg/collector/corechecks/sbom/convert.go index 6c23b2b5022e2b..c7bff562248b05 100644 --- a/pkg/collector/corechecks/sbom/convert.go +++ b/pkg/collector/corechecks/sbom/convert.go @@ -55,6 +55,7 @@ type inArrayElement interface { cyclonedx.Patch | cyclonedx.Property | cyclonedx.Service | + //nolint:staticcheck cyclonedx.Tool | cyclonedx.Vulnerability | cyclonedx.VulnerabilityRating | @@ -606,7 +607,7 @@ func convertMetadata(in *cyclonedx.Metadata) *cyclonedx_v1_4.Metadata { return &cyclonedx_v1_4.Metadata{ Timestamp: convertTimestamp(in.Timestamp), - Tools: convertArray(in.Tools, convertTool), + Tools: convertArray(in.Tools.Tools, convertTool), Authors: convertArray(in.Authors, convertOrganizationalContact), Component: convertComponent(in.Component), Manufacture: convertOrganizationalEntity(in.Manufacture), @@ -856,7 +857,7 @@ func convertDuration(in time.Duration) *durationpb.Duration { return durationpb.New(in) } -func convertTool(in *cyclonedx.Tool) *cyclonedx_v1_4.Tool { +func convertTool(in *cyclonedx.Tool) *cyclonedx_v1_4.Tool { //nolint:staticcheck if in == nil { return nil } @@ -898,7 +899,7 @@ func convertVulnerability(in *cyclonedx.Vulnerability) *cyclonedx_v1_4.Vulnerabi Published: convertTimestamp(in.Published), Updated: convertTimestamp(in.Updated), Credits: convertVulnerabilityCredits(in.Credits), - Tools: convertArray(in.Tools, convertTool), + Tools: convertArray(in.Tools.Tools, convertTool), Analysis: convertVulnerabilityAnalysis(in.Analysis), Affects: convertArray(in.Affects, convertVulnerabilityAffects), Properties: convertArray(in.Properties, convertProperty), diff --git a/pkg/sbom/collectors/host/host.go b/pkg/sbom/collectors/host/host.go index e9a8a56626fbb7..ceb1eb16f286e3 100644 --- a/pkg/sbom/collectors/host/host.go +++ b/pkg/sbom/collectors/host/host.go @@ -68,7 +68,7 @@ func (c *Collector) Init(cfg config.Config) error { } c.trivyCollector = trivyCollector if flavor.GetFlavor() == flavor.SecurityAgent { - c.opts = sbom.ScanOptions{Analyzers: []string{trivy.OSAnalyzers}, Fast: true} + c.opts = sbom.ScanOptions{Analyzers: []string{trivy.OSAnalyzers}, Fast: true, CollectFiles: true} } else { c.opts = sbom.ScanOptionsFromConfig(config.Datadog, false) } diff --git a/pkg/sbom/sbom.go b/pkg/sbom/sbom.go index d711ed050d75eb..4d15263385ec8c 100644 --- a/pkg/sbom/sbom.go +++ b/pkg/sbom/sbom.go @@ -34,6 +34,7 @@ type ScanOptions struct { WaitAfter time.Duration Fast bool NoCache bool // Caching doesn't really provide any value when scanning filesystem as the filesystem has to be walked to compute the keys + CollectFiles bool } // ScanOptionsFromConfig loads the scanning options from the configuration diff --git a/pkg/security/resolvers/sbom/resolver.go b/pkg/security/resolvers/sbom/resolver.go index 14fb761165bc40..b423782be1e9d4 100644 --- a/pkg/security/resolvers/sbom/resolver.go +++ b/pkg/security/resolvers/sbom/resolver.go @@ -322,7 +322,7 @@ func (r *Resolver) analyzeWorkload(sbom *SBOM) error { Version: resultPkg.Version, SrcVersion: resultPkg.SrcVersion, } - for _, file := range resultPkg.SystemInstalledFiles { + for _, file := range resultPkg.InstalledFiles { seclog.Tracef("indexing %s as %+v", file, pkg) sbom.files[murmur3.StringSum64(file)] = pkg } diff --git a/pkg/util/trivy/cache.go b/pkg/util/trivy/cache.go index 8515808b7ce551..b3a38793b105f1 100644 --- a/pkg/util/trivy/cache.go +++ b/pkg/util/trivy/cache.go @@ -12,6 +12,8 @@ import ( "encoding/json" "errors" "fmt" + "os" + "path/filepath" "sync" "time" @@ -21,7 +23,6 @@ import ( "github.com/aquasecurity/trivy/pkg/fanal/cache" "github.com/aquasecurity/trivy/pkg/fanal/types" - "github.com/aquasecurity/trivy/pkg/utils" "github.com/hashicorp/golang-lru/v2/simplelru" ) @@ -35,11 +36,20 @@ var telemetryTick = 1 * time.Minute // and a cache cleaner type CacheProvider func() (cache.Cache, CacheCleaner, error) +// defaultCacheDir returns/creates the default cache-dir to be used for trivy operations +func defaultCacheDir() string { + tmpDir, err := os.UserCacheDir() + if err != nil { + tmpDir = os.TempDir() + } + return filepath.Join(tmpDir, "trivy") +} + // NewCustomBoltCache is a CacheProvider. It returns a custom implementation of a BoltDB cache using an LRU algorithm with a // maximum number of cache entries, maximum disk size and garbage collection of unused images with its custom cleaner. func NewCustomBoltCache(cacheDir string, maxDiskSize int) (cache.Cache, CacheCleaner, error) { if cacheDir == "" { - cacheDir = utils.DefaultCacheDir() + cacheDir = defaultCacheDir() } db, err := NewBoltDB(cacheDir) if err != nil { @@ -59,7 +69,7 @@ func NewCustomBoltCache(cacheDir string, maxDiskSize int) (cache.Cache, CacheCle // NewBoltCache is a CacheProvider. It returns a BoltDB cache provided by Trivy and an empty cleaner. func NewBoltCache(cacheDir string) (cache.Cache, CacheCleaner, error) { if cacheDir == "" { - cacheDir = utils.DefaultCacheDir() + cacheDir = defaultCacheDir() } cache, err := cache.NewFSCache(cacheDir) return cache, &StubCacheCleaner{}, err diff --git a/pkg/util/trivy/report.go b/pkg/util/trivy/report.go index 520be325a674f7..dd53cd058bba07 100644 --- a/pkg/util/trivy/report.go +++ b/pkg/util/trivy/report.go @@ -10,6 +10,8 @@ package trivy import ( + "context" + cyclonedxgo "github.com/CycloneDX/cyclonedx-go" "github.com/aquasecurity/trivy/pkg/sbom/cyclonedx" "github.com/aquasecurity/trivy/pkg/types" @@ -24,7 +26,7 @@ type Report struct { // ToCycloneDX returns the report as a CycloneDX SBOM func (r *Report) ToCycloneDX() (*cyclonedxgo.BOM, error) { - bom, err := r.marshaler.Marshal(*r.Report) + bom, err := r.marshaler.Marshal(context.TODO(), *r.Report) if err != nil { return nil, err } diff --git a/pkg/util/trivy/trivy.go b/pkg/util/trivy/trivy.go index d1f044a1bbccf4..caa3d9683e71a2 100644 --- a/pkg/util/trivy/trivy.go +++ b/pkg/util/trivy/trivy.go @@ -13,6 +13,7 @@ import ( "fmt" "os" "path/filepath" + "runtime" "sort" "sync" "time" @@ -24,7 +25,6 @@ import ( "github.com/DataDog/datadog-agent/pkg/util/log" "github.com/aquasecurity/trivy-db/pkg/db" - "github.com/aquasecurity/trivy/pkg/detector/ospkg" "github.com/aquasecurity/trivy/pkg/fanal/analyzer" "github.com/aquasecurity/trivy/pkg/fanal/applier" "github.com/aquasecurity/trivy/pkg/fanal/artifact" @@ -34,7 +34,9 @@ import ( ftypes "github.com/aquasecurity/trivy/pkg/fanal/types" "github.com/aquasecurity/trivy/pkg/sbom/cyclonedx" "github.com/aquasecurity/trivy/pkg/scanner" + "github.com/aquasecurity/trivy/pkg/scanner/langpkg" "github.com/aquasecurity/trivy/pkg/scanner/local" + "github.com/aquasecurity/trivy/pkg/scanner/ospkg" "github.com/aquasecurity/trivy/pkg/types" "github.com/aquasecurity/trivy/pkg/vulnerability" "github.com/containerd/containerd" @@ -69,7 +71,8 @@ type Collector struct { cacheInitialized sync.Once cache cache.Cache cacheCleaner CacheCleaner - detector local.OspkgDetector + osScanner ospkg.Scanner + langScanner langpkg.Scanner vulnClient vulnerability.Client marshaler *cyclonedx.Marshaler } @@ -77,17 +80,29 @@ type Collector struct { var globalCollector *Collector func getDefaultArtifactOption(root string, opts sbom.ScanOptions) artifact.Option { + parallel := 1 + if opts.Fast { + parallel = runtime.NumCPU() + } + option := artifact.Option{ Offline: true, NoProgress: true, DisabledAnalyzers: DefaultDisabledCollectors(opts.Analyzers), - Slow: !opts.Fast, + Parallel: parallel, SBOMSources: []string{}, DisabledHandlers: DefaultDisabledHandlers(), } if len(opts.Analyzers) == 1 && opts.Analyzers[0] == OSAnalyzers { - option.OnlyDirs = []string{"etc", "var/lib/dpkg", "var/lib/rpm", "lib/apk"} + option.OnlyDirs = []string{ + "/etc/*", + "/lib/apk/*", + "/usr/lib/*", + "/usr/lib/sysimage/*", + "/var/lib/dpkg/**", + "/var/lib/rpm/*", + } if root != "" { // OnlyDirs is handled differently for image than for filesystem. // This needs to be fixed properly but in the meantime, use absolute @@ -167,10 +182,11 @@ func NewCollector(cfg config.Config) (*Collector, error) { config.ClearCacheOnClose = cfg.GetBool("sbom.clear_cache_on_exit") return &Collector{ - config: config, - detector: ospkg.Detector{}, - vulnClient: vulnerability.NewClient(db.Config{}), - marshaler: cyclonedx.NewMarshaler(""), + config: config, + osScanner: ospkg.NewScanner(), + langScanner: langpkg.NewScanner(), + vulnClient: vulnerability.NewClient(db.Config{}), + marshaler: cyclonedx.NewMarshaler(""), }, nil } @@ -329,10 +345,9 @@ func (c *Collector) scan(ctx context.Context, artifact artifact.Artifact, applie c.cacheCleaner.setKeysForEntity(imgMeta.EntityID.ID, append(artifactReference.BlobIDs, artifactReference.ID)) } - s := scanner.NewScanner(local.NewScanner(applier, c.detector, c.vulnClient), artifact) + s := scanner.NewScanner(local.NewScanner(applier, c.osScanner, c.langScanner, c.vulnClient), artifact) trivyReport, err := s.ScanArtifact(ctx, types.ScanOptions{ VulnType: []string{}, - SecurityChecks: []string{}, ScanRemovedPackages: false, ListAllPackages: true, }) diff --git a/tasks/dogstatsd.py b/tasks/dogstatsd.py index eb2aa65b6667f0..084c8cf76fa763 100644 --- a/tasks/dogstatsd.py +++ b/tasks/dogstatsd.py @@ -20,7 +20,7 @@ # constants DOGSTATSD_BIN_PATH = os.path.join(".", "bin", "dogstatsd") STATIC_BIN_PATH = os.path.join(".", "bin", "static") -MAX_BINARY_SIZE = 38 * 1024 +MAX_BINARY_SIZE = 39 * 1024 DOGSTATSD_TAG = "datadog/dogstatsd:master" From 2e369313255e0941a37fb32d6b512fdf5aa796ac Mon Sep 17 00:00:00 2001 From: Spencer Gilbert Date: Tue, 5 Mar 2024 16:53:22 -0500 Subject: [PATCH 016/155] chore: Update version of pr-commentor used in regression detector job (#23457) --- .gitlab/functional_test/regression_detector.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab/functional_test/regression_detector.yml b/.gitlab/functional_test/regression_detector.yml index 0d33089e118450..e9d0a268e12a41 100644 --- a/.gitlab/functional_test/regression_detector.yml +++ b/.gitlab/functional_test/regression_detector.yml @@ -119,8 +119,8 @@ single-machine-performance-regression_detector: - "# beneath the error message in the GitLab CI logs #" - "#################################################################################" - echo "" - # Pinned version of pr-commenter taken from https://github.com/DataDog/dogweb/blob/b2a891c2a2186b8fecd27ca9b13ebabe5f289a4a/tasks/gitlab/k8s-diff-helper.sh#L22 - - dd-package --bucket binaries.ddbuild.io --package devtools/pr-commenter --distribution "20.04" --version "14692290-a6440fd1" + # Pinned version of pr-commenter taken from https://github.com/DataDog/dogweb/blob/b249c0815f70e71e07846f5e42fb6504c17a7c3e/tasks/gitlab/k8s-diff-helper.sh#L22 + - dd-package --bucket binaries.ddbuild.io --package devtools/pr-commenter --distribution "20.04" --version "16841676-368d2e2d" # Post HTML report to GitHub - cat outputs/report.md | /usr/local/bin/pr-commenter --for-pr="$CI_COMMIT_REF_NAME" # Finally, exit 1 if the job signals a regression else 0. From 9d8763305878ed517d2e0cdcd04a8ba1bfde5a8b Mon Sep 17 00:00:00 2001 From: Hasan Mahmood <6599778+hmahmood@users.noreply.github.com> Date: Tue, 5 Mar 2024 17:15:55 -0600 Subject: [PATCH 017/155] [NPM-3219] Kill server process if port is not used for test (#23347) * Rewrite TestReadInitialState to use os assigned ports * Fix lint errors * Try to ensure UDP and TCP don't have the same port * Kill server process if port is not used for test --- pkg/network/port_test.go | 92 +++++++++++++++++----------------------- 1 file changed, 40 insertions(+), 52 deletions(-) diff --git a/pkg/network/port_test.go b/pkg/network/port_test.go index 2d1a422b86c85b..e52c80829cecb8 100644 --- a/pkg/network/port_test.go +++ b/pkg/network/port_test.go @@ -16,7 +16,6 @@ import ( "slices" "strconv" "testing" - "time" "github.com/cihub/seelog" "github.com/stretchr/testify/assert" @@ -28,20 +27,7 @@ import ( "github.com/DataDog/datadog-agent/pkg/util/log" ) -var testRootNs uint32 - func TestMain(m *testing.M) { - rootNs, err := kernel.GetRootNetNamespace("/proc") - if err != nil { - log.Critical(err) - os.Exit(1) - } - testRootNs, err = kernel.GetInoForNs(rootNs) - if err != nil { - log.Critical(err) - os.Exit(1) - } - logLevel := os.Getenv("DD_LOG_LEVEL") if logLevel == "" { logLevel = "warn" @@ -60,7 +46,7 @@ var ( // // `proto` can be "tcp4", "tcp6", "udp4", or "udp6" // `port` can be `0` in which case the os assigned port is returned -func runServerProcess(t *testing.T, proto string, port uint16, ns netns.NsHandle) uint16 { +func runServerProcess(t *testing.T, proto string, port uint16, ns netns.NsHandle) (uint16, *os.Process) { var re *regexp.Regexp address := fmt.Sprintf("%s-listen:%d", proto, port) switch proto { @@ -72,12 +58,13 @@ func runServerProcess(t *testing.T, proto string, port uint16, ns netns.NsHandle require.FailNow(t, "unrecognized protocol") } + var proc *os.Process kernel.WithNS(ns, func() error { cmd := exec.Command("socat", "-d", "-d", "STDIO", address) stderr, err := cmd.StderrPipe() require.NoError(t, err, "error getting stderr pipe for command %s", cmd) require.NoError(t, cmd.Start()) - t.Cleanup(func() { cmd.Process.Kill() }) + proc = cmd.Process if port != 0 { return nil } @@ -99,7 +86,7 @@ func runServerProcess(t *testing.T, proto string, port uint16, ns netns.NsHandle return nil }) - return port + return port, proc } func TestReadInitialState(t *testing.T) { @@ -134,11 +121,14 @@ func testReadInitialState(t *testing.T, proto string) { for _, proto := range protos { i := 0 for ; i < 5; i++ { - p := runServerProcess(t, proto, 0, rootNs) - if !slices.Contains(ports, p) { - ports = append(ports, p) + port, proc := runServerProcess(t, proto, 0, rootNs) + if !slices.Contains(ports, port) { + t.Cleanup(func() { proc.Kill() }) + ports = append(ports, port) break } + + require.NoError(t, proc.Kill()) } require.Less(t, i, 5, "failed to find unique port for proto %s", proto) } @@ -146,11 +136,14 @@ func testReadInitialState(t *testing.T, proto string) { for _, proto := range protos { i := 0 for ; i < 5; i++ { - p := runServerProcess(t, proto, 0, ns) - if !slices.Contains(ports, p) { - ports = append(ports, p) + port, proc := runServerProcess(t, proto, 0, ns) + if !slices.Contains(ports, port) { + t.Cleanup(func() { proc.Kill() }) + ports = append(ports, port) break } + + require.NoError(t, proc.Kill()) } require.Less(t, i, 5, "failed to find unique port for proto %s", proto) } @@ -166,37 +159,32 @@ func testReadInitialState(t *testing.T, proto string) { connType, otherConnType = otherConnType, connType } - require.EventuallyWithT(t, func(collect *assert.CollectT) { - initialPorts, err := ReadInitialState("/proc", connType, true) - if !assert.NoError(collect, err) { - return - } - - // check ports corresponding to proto in root ns - for _, p := range ports[:2] { - assert.Containsf(collect, initialPorts, PortMapping{rootNsIno, p}, "PortMapping should exist for %s port %d in root ns", connType, p) - assert.NotContainsf(collect, initialPorts, PortMapping{nsIno, p}, "PortMapping should not exist for %s port %d in test ns", connType, p) - } + initialPorts, err := ReadInitialState("/proc", connType, true) + if !assert.NoError(t, err) { + return + } - // check ports not corresponding to proto in root ns - for _, p := range ports[2:4] { - assert.NotContainsf(collect, initialPorts, PortMapping{rootNsIno, p}, "PortMapping should not exist for %s port %d in root ns", otherConnType, p) - assert.NotContainsf(collect, initialPorts, PortMapping{nsIno, p}, "PortMapping should not exist for %s port %d in root ns", otherConnType, p) - } + // check ports corresponding to proto in root ns + for _, p := range ports[:2] { + assert.Containsf(t, initialPorts, PortMapping{rootNsIno, p}, "PortMapping should exist for %s port %d in root ns", connType, p) + assert.NotContainsf(t, initialPorts, PortMapping{nsIno, p}, "PortMapping should not exist for %s port %d in test ns", connType, p) + } - // check ports corresponding to proto in test ns - for _, p := range ports[4:6] { - assert.Containsf(collect, initialPorts, PortMapping{nsIno, p}, "PortMapping should exist for %s port %d in root ns", connType, p) - assert.NotContainsf(collect, initialPorts, PortMapping{rootNsIno, p}, "PortMapping should not exist for %s port %d in test ns", connType, p) - } + // check ports not corresponding to proto in root ns + for _, p := range ports[2:4] { + assert.NotContainsf(t, initialPorts, PortMapping{rootNsIno, p}, "PortMapping should not exist for %s port %d in root ns", otherConnType, p) + assert.NotContainsf(t, initialPorts, PortMapping{nsIno, p}, "PortMapping should not exist for %s port %d in test ns", otherConnType, p) + } - // check ports not corresponding to proto in test ns - for _, p := range ports[6:8] { - assert.NotContainsf(collect, initialPorts, PortMapping{nsIno, p}, "PortMapping should not exist for %s port %d in root ns", otherConnType, p) - assert.NotContainsf(collect, initialPorts, PortMapping{testRootNs, p}, "PortMapping should not exist for %s port %d in root ns", otherConnType, p) - } + // check ports corresponding to proto in test ns + for _, p := range ports[4:6] { + assert.Containsf(t, initialPorts, PortMapping{nsIno, p}, "PortMapping should exist for %s port %d in test ns", connType, p) + assert.NotContainsf(t, initialPorts, PortMapping{rootNsIno, p}, "PortMapping should not exist for %s port %d in root ns", connType, p) + } - assert.NotContainsf(collect, initialPorts, PortMapping{testRootNs, 999}, "expected PortMapping(testRootNs, 999) to not be in the map for root ns, but it was") - assert.NotContainsf(collect, initialPorts, PortMapping{testRootNs, 999}, "expected PortMapping(nsIno, 999) to not be in the map for test ns, but it was") - }, 3*time.Second, time.Second, "tcp/tcp6 ports are listening") + // check ports not corresponding to proto in test ns + for _, p := range ports[6:8] { + assert.NotContainsf(t, initialPorts, PortMapping{nsIno, p}, "PortMapping should not exist for %s port %d in test ns", otherConnType, p) + assert.NotContainsf(t, initialPorts, PortMapping{rootNsIno, p}, "PortMapping should not exist for %s port %d in root ns", otherConnType, p) + } } From 75b6572a226596ffd1fca3af9905665277e38c1a Mon Sep 17 00:00:00 2001 From: Sylvain Baubeau Date: Wed, 6 Mar 2024 00:33:09 +0100 Subject: [PATCH 018/155] Build both core agent and single binary for Heroku (#23422) * Allow setting the binary name when building the agent * Build both core and single binary for Heroku * Set 'agent_bin' default to None --- omnibus/config/software/datadog-agent.rb | 3 +++ tasks/agent.py | 5 ++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/omnibus/config/software/datadog-agent.rb b/omnibus/config/software/datadog-agent.rb index 923eb12660d04b..601729e34a5b3f 100644 --- a/omnibus/config/software/datadog-agent.rb +++ b/omnibus/config/software/datadog-agent.rb @@ -82,6 +82,9 @@ command "inv -e rtloader.install" bundle_arg = bundled_agents ? bundled_agents.map { |k| "--bundle #{k}" }.join(" ") : "--bundle agent" command "inv -e agent.build --exclude-rtloader --python-runtimes #{py_runtimes_arg} --major-version #{major_version_arg} --rebuild --no-development --install-path=#{install_dir} --embedded-path=#{install_dir}/embedded --python-home-2=#{install_dir}/embedded --python-home-3=#{install_dir}/embedded --flavor #{flavor_arg} #{bundle_arg}", env: env + if heroku_target? + command "inv -e agent.build --exclude-rtloader --python-runtimes #{py_runtimes_arg} --major-version #{major_version_arg} --rebuild --no-development --install-path=#{install_dir} --embedded-path=#{install_dir}/embedded --python-home-2=#{install_dir}/embedded --python-home-3=#{install_dir}/embedded --flavor #{flavor_arg} --agent-bin=bin/agent/core-agent --bundle agent", env: env + end end if osx_target? diff --git a/tasks/agent.py b/tasks/agent.py index 3257fcd64d930b..0440c2595f7a5e 100644 --- a/tasks/agent.py +++ b/tasks/agent.py @@ -128,6 +128,7 @@ def build( cmake_options='', bundle=None, bundle_ebpf=False, + agent_bin=None, ): """ Build the agent. If the bits to include in the build are not specified, @@ -199,7 +200,9 @@ def build( cmd = "go build -mod={go_mod} {race_opt} {build_type} -tags \"{go_build_tags}\" " - agent_bin = os.path.join(BIN_PATH, bin_name("agent")) + if not agent_bin: + agent_bin = os.path.join(BIN_PATH, bin_name("agent")) + cmd += "-o {agent_bin} -gcflags=\"{gcflags}\" -ldflags=\"{ldflags}\" {REPO_PATH}/cmd/{flavor}" args = { "go_mod": go_mod, From 50e09c4179052808af669b00f80005d02ce51ef7 Mon Sep 17 00:00:00 2001 From: Bryce Kahle Date: Tue, 5 Mar 2024 16:00:15 -0800 Subject: [PATCH 019/155] fix usm panic on gRPC server (#23462) --- pkg/util/grpc/server.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkg/util/grpc/server.go b/pkg/util/grpc/server.go index 111694a7efb0ae..32ed9cc3540103 100644 --- a/pkg/util/grpc/server.go +++ b/pkg/util/grpc/server.go @@ -28,7 +28,9 @@ var ConnContextKey = &contextKey{"http-connection"} func NewMuxedGRPCServer(addr string, tlsConfig *tls.Config, grpcServer *grpc.Server, httpHandler http.Handler) *http.Server { // our gRPC clients do not handle protocol negotiation, so we need to force // HTTP/2 - tlsConfig.NextProtos = []string{"h2"} + if tlsConfig != nil { + tlsConfig.NextProtos = []string{"h2"} + } return &http.Server{ Addr: addr, From 24cfc446a37590257b474a24acc7ae42c39f2fd2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 6 Mar 2024 06:53:44 +0000 Subject: [PATCH 020/155] CWS: sync BTFhub constants (#23467) Co-authored-by: paulcacheux --- pkg/security/probe/constantfetch/btfhub/constants.json | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/pkg/security/probe/constantfetch/btfhub/constants.json b/pkg/security/probe/constantfetch/btfhub/constants.json index f9c409622e224a..ae38473b8336bc 100644 --- a/pkg/security/probe/constantfetch/btfhub/constants.json +++ b/pkg/security/probe/constantfetch/btfhub/constants.json @@ -1,5 +1,5 @@ { - "commit": "1f369f70ba160fc79cd9c8ac3e3b4de501474338", + "commit": "973bbc2195c238935e5858f624300eb278d94877", "constants": [ { "binprm_file_offset": 168, @@ -19769,6 +19769,13 @@ "uname_release": "4.14.35-2047.534.2.el7uek.x86_64", "cindex": 97 }, + { + "distrib": "ol", + "version": "7", + "arch": "x86_64", + "uname_release": "4.14.35-2047.535.1.el7uek.x86_64", + "cindex": 97 + }, { "distrib": "ol", "version": "7", From b4f0a172d309dc5b7689bc9674e0487e4fd0cf1b Mon Sep 17 00:00:00 2001 From: Paul Cacheux Date: Wed, 6 Mar 2024 09:17:54 +0100 Subject: [PATCH 021/155] improve OS gating of network event monitor common code (#23460) --- pkg/network/events/{monitor_windows.go => monitor_others.go} | 2 ++ .../{network_consumer_windows.go => network_consumer_others.go} | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) rename pkg/network/events/{monitor_windows.go => monitor_others.go} (95%) rename pkg/network/events/{network_consumer_windows.go => network_consumer_others.go} (98%) diff --git a/pkg/network/events/monitor_windows.go b/pkg/network/events/monitor_others.go similarity index 95% rename from pkg/network/events/monitor_windows.go rename to pkg/network/events/monitor_others.go index fdb86901366eab..1675a4e384e911 100644 --- a/pkg/network/events/monitor_windows.go +++ b/pkg/network/events/monitor_others.go @@ -3,6 +3,8 @@ // This product includes software developed at Datadog (https://www.datadoghq.com/). // Copyright 2016-present Datadog, Inc. +//go:build !linux + // Package events handles process events package events diff --git a/pkg/network/events/network_consumer_windows.go b/pkg/network/events/network_consumer_others.go similarity index 98% rename from pkg/network/events/network_consumer_windows.go rename to pkg/network/events/network_consumer_others.go index 13cdc916ffc2e1..c0c1288e53314a 100644 --- a/pkg/network/events/network_consumer_windows.go +++ b/pkg/network/events/network_consumer_others.go @@ -3,7 +3,7 @@ // This product includes software developed at Datadog (https://www.datadoghq.com/). // Copyright 2016-present Datadog, Inc. -//go:build windows +//go:build !linux // Package events handles process events package events From 4ea229ed427982134237eff00a87a58f12f2f3f2 Mon Sep 17 00:00:00 2001 From: Florent Clarret Date: Wed, 6 Mar 2024 08:23:09 +0000 Subject: [PATCH 022/155] Stop sending systemd metrics when they are not set (#23436) * Stop sending systemd metrics when they are not set * assert not called * Update releasenotes/notes/systemd-fix-max-value-0f60792f61ec34fd.yaml Co-authored-by: jhgilbert --------- Co-authored-by: jhgilbert --- pkg/collector/corechecks/systemd/systemd.go | 8 ++- .../corechecks/systemd/systemd_test.go | 56 +++++++++++++++++++ ...ystemd-fix-max-value-0f60792f61ec34fd.yaml | 11 ++++ 3 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 releasenotes/notes/systemd-fix-max-value-0f60792f61ec34fd.yaml diff --git a/pkg/collector/corechecks/systemd/systemd.go b/pkg/collector/corechecks/systemd/systemd.go index a40b8f2e9a0894..003d41b69abd9e 100644 --- a/pkg/collector/corechecks/systemd/systemd.go +++ b/pkg/collector/corechecks/systemd/systemd.go @@ -10,6 +10,7 @@ package systemd import ( "context" "fmt" + "math" "strings" "time" @@ -434,7 +435,12 @@ func sendServicePropertyAsGauge(sender sender.Sender, properties map[string]inte if err != nil { return fmt.Errorf("error getting property %s: %v", service.propertyName, err) } - sender.Gauge(service.metricName, float64(value), "", tags) + + // When the value is `[Not set]`, dbus returns MaxUint64 + if value != math.MaxUint64 { + sender.Gauge(service.metricName, float64(value), "", tags) + } + return nil } diff --git a/pkg/collector/corechecks/systemd/systemd_test.go b/pkg/collector/corechecks/systemd/systemd_test.go index 9b73895da82b66..4549b9962e76d6 100644 --- a/pkg/collector/corechecks/systemd/systemd_test.go +++ b/pkg/collector/corechecks/systemd/systemd_test.go @@ -9,6 +9,7 @@ package systemd import ( "fmt" + "math" "testing" "time" @@ -466,6 +467,61 @@ unit_names: mockSender.AssertNumberOfCalls(t, "ServiceCheck", 4) } +// When a value is not set (`[Not set]` when running `systemctl show my.service`), dbus returns MaxUint64 +func TestMetricValuesNotSet(t *testing.T) { + rawInstanceConfig := []byte(` +unit_names: + - unit1.service +`) + + stats := createDefaultMockSystemdStats() + stats.On("ListUnits", mock.Anything).Return([]dbus.UnitStatus{ + {Name: "unit1.service", ActiveState: "active", LoadState: "loaded"}, + }, nil) + stats.On("UnixNow").Return(int64(1000)) + stats.On("GetUnitTypeProperties", mock.Anything, "unit1.service", dbusTypeMap[typeService]).Return(getCreatePropertieWithDefaults(map[string]interface{}{ + "CPUUsageNSec": uint64(10), + "MemoryCurrent": uint64(math.MaxUint64), + "TasksCurrent": uint64(30), + "NRestarts": uint64(40), + }), nil) + stats.On("GetUnitTypeProperties", mock.Anything, "unit1.service", dbusTypeMap[typeUnit]).Return(map[string]interface{}{ + "ActiveEnterTimestamp": uint64(100 * 1000 * 1000), + }, nil) + + stats.On("GetVersion", mock.Anything).Return(systemdVersion) + + check := SystemdCheck{stats: stats} + senderManager := mocksender.CreateDefaultDemultiplexer() + check.Configure(senderManager, integration.FakeConfigHash, rawInstanceConfig, nil, "test") + + // setup expectation + mockSender := mocksender.NewMockSenderWithSenderManager(check.ID(), senderManager) + mockSender.On("Gauge", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return() + mockSender.On("ServiceCheck", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return() + mockSender.On("Commit").Return() + + // run + check.Run() + + // assertions + tags := []string{"unit:unit1.service"} + mockSender.AssertCalled(t, "Gauge", "systemd.unit.uptime", float64(900), "", tags) + mockSender.AssertCalled(t, "Gauge", "systemd.unit.monitored", float64(1), "", tags) + mockSender.AssertCalled(t, "Gauge", "systemd.unit.active", float64(1), "", tags) + mockSender.AssertCalled(t, "Gauge", "systemd.unit.loaded", float64(1), "", tags) + mockSender.AssertCalled(t, "Gauge", "systemd.service.cpu_time_consumed", float64(10), "", tags) + mockSender.AssertCalled(t, "Gauge", "systemd.service.task_count", float64(30), "", tags) + mockSender.AssertCalled(t, "Gauge", "systemd.service.restart_count", float64(40), "", tags) + mockSender.AssertNotCalled(t, "Gauge", "systemd.service.memory_usage", float64(math.MaxUint64), "", tags) + + expectedGaugeCalls := 8 /* overall metrics */ + expectedGaugeCalls += 7 /* unit/service metrics */ + mockSender.AssertNumberOfCalls(t, "Gauge", expectedGaugeCalls) + mockSender.AssertNumberOfCalls(t, "Commit", 1) + mockSender.AssertNumberOfCalls(t, "ServiceCheck", 3) +} + func TestSubmitMetricsConditionals(t *testing.T) { rawInstanceConfig := []byte(` unit_names: diff --git a/releasenotes/notes/systemd-fix-max-value-0f60792f61ec34fd.yaml b/releasenotes/notes/systemd-fix-max-value-0f60792f61ec34fd.yaml new file mode 100644 index 00000000000000..ff250ce2686c3b --- /dev/null +++ b/releasenotes/notes/systemd-fix-max-value-0f60792f61ec34fd.yaml @@ -0,0 +1,11 @@ +# Each section from every release note are combined when the +# CHANGELOG.rst is rendered. So the text needs to be worded so that +# it does not depend on any information only available in another +# section. This may mean repeating some details, but each section +# must be readable independently of the other. +# +# Each section note must be formatted as reStructuredText. +--- +fixes: + - | + Stop sending ``systemd`` metrics when they are not set From 9f48b379f6a28d66cc45181ecc0b43b25556a07f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20Beauz=C3=A9e-Luyssen?= Date: Wed, 6 Mar 2024 10:07:07 +0100 Subject: [PATCH 023/155] use conductor to drive our nightly pipelines (#23131) * use conductor to drive our nightly pipelines * add service.datadog.yaml to CODEOWNERS * fix cron expression * assign BARX instead of APL as service.datadog.yaml codeowner --- .github/CODEOWNERS | 1 + service.datadog.yaml | 15 +++++++++++++++ 2 files changed, 16 insertions(+) create mode 100644 service.datadog.yaml diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 16aaafd8a195d9..fd6ad8ee0653a4 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -34,6 +34,7 @@ /setup.cfg @DataDog/agent-platform /repository.datadog.yml @DataDog/agent-platform /generate_tools.go @DataDog/agent-platform +/service.datadog.yaml @DataDog/agent-build-and-releases /.circleci/ @DataDog/agent-platform diff --git a/service.datadog.yaml b/service.datadog.yaml new file mode 100644 index 00000000000000..2e9123783c6847 --- /dev/null +++ b/service.datadog.yaml @@ -0,0 +1,15 @@ +--- +schema-version: v2 +dd-service: datadog-agent-nightly + +extensions: + datadoghq.com/sdp: + workday_team: "Agent Platform" + conductor: + slack: "datadog-agent-pipelines" + schedule: "0 3 * * 1-5" + parameterized_deployment: + workflow_generator: "" + env: + - name: "staging" + branch: "chouquette/conductor" From 4666ca6225a49fbb7fbc8a9f9bc6b23770565586 Mon Sep 17 00:00:00 2001 From: Marethyu <45374460+Pythyu@users.noreply.github.com> Date: Wed, 6 Mar 2024 10:30:38 +0100 Subject: [PATCH 024/155] [macOS] Fix gui app that wasn't unloaded once loaded (#23439) --- omnibus/package-scripts/agent-dmg/preinst | 30 +++++++++-------------- 1 file changed, 11 insertions(+), 19 deletions(-) diff --git a/omnibus/package-scripts/agent-dmg/preinst b/omnibus/package-scripts/agent-dmg/preinst index 097ed90c905bef..5f89c84cc0e9ae 100755 --- a/omnibus/package-scripts/agent-dmg/preinst +++ b/omnibus/package-scripts/agent-dmg/preinst @@ -64,6 +64,16 @@ echo "INSTALL_USER: $INSTALL_USER" USER_HOME=$(sudo -Hu "$INSTALL_USER" sh -c 'echo $HOME') +user_uid=$(id -u) +if sudo -u "$INSTALL_USER" launchctl print "gui/$user_uid/com.datadoghq.agent" 1>/dev/null 2>/dev/null; then + echo "# Disabling the login launch of the app" + user_agent_version=$(datadog-agent version | grep -Eo '[6-7]\.[0-9]+\.[0-9]+' | head -1) + if ! printf '7.52.0\n%s\n' "$user_agent_version" | sort -V -C; then + # version is older than 7.52.0 + sudo -u "$INSTALL_USER" osascript -e 'tell application "System Events" to delete every login item whose name is "Datadog Agent"' + fi +fi + if [ -e "$CONF_DIR/datadog.conf" ] || [ -e "$CONF_DIR/datadog.yaml" ]; then echo "# State at the beginning" echo "## Agent version" @@ -84,6 +94,7 @@ if [ -e "$CONF_DIR/datadog.conf" ] || [ -e "$CONF_DIR/datadog.yaml" ]; then echo '## Trying to unload agent 6 launchd service' sudo -Hu "$INSTALL_USER" launchctl unload -w "$USER_HOME/Library/LaunchAgents/com.datadoghq.agent.plist" || true + sudo -Hu "$INSTALL_USER" launchctl unload -w "$USER_HOME/Library/LaunchAgents/com.datadoghq.gui.plist" || true # Save old conf rm -rvf /tmp/checks.d /tmp/conf.d /tmp/datadog.conf /tmp/datadog.yaml @@ -103,25 +114,6 @@ echo '# Deleting old datadog-agent files' rm -rf $INSTALL_DIR/agent || true rm -rf $INSTALL_DIR/checks.d || true -user_uid=$(id -u) -install_user_home=$(echo "$HOME") -user_plist_file=${install_user_home}/Library/LaunchAgents/com.datadoghq.agent.plist -gui_user_plist_file=${install_user_home}/Library/LaunchAgents/com.datadoghq.gui.plist -if sudo -u "$INSTALL_USER" launchctl print "gui/$user_uid/com.datadoghq.agent" 1>/dev/null 2>/dev/null; then - echo "# Disabling the login launch of the app" - user_agent_version=$(datadog-agent version | grep -Eo '[6-7]\.[0-9]+\.[0-9]+' | head -1) - if ! printf '7.52.0\n%s\n' "$user_agent_version" | sort -V -C; then - # version is older than 7.52.0 - sudo -u "$INSTALL_USER" osascript -e 'tell application "System Events" to delete every login item whose name is "Datadog Agent"' - else - # version is at least 7.52.0 - sudo -u "$INSTALL_USER" launchctl stop "com.datadoghq.gui" - sudo -u "$INSTALL_USER" launchctl unload "$gui_user_plist_file" - fi - - sudo -u "$INSTALL_USER" launchctl stop "com.datadoghq.agent" - sudo -u "$INSTALL_USER" launchctl unload "$user_plist_file" -fi # Debriefing time echo "# State at the end" echo "## Agent version" From f6f76d904587f66412980ec24fea877be308cbb1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20Beauz=C3=A9e-Luyssen?= Date: Wed, 6 Mar 2024 11:21:47 +0100 Subject: [PATCH 025/155] release.json: bump last stable version (#23470) --- release.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/release.json b/release.json index c5f374fda3886a..f3c80aadda838e 100644 --- a/release.json +++ b/release.json @@ -2,8 +2,8 @@ "base_branch": "main", "current_milestone": "7.53.0", "last_stable": { - "6": "6.51.0", - "7": "7.51.0" + "6": "6.51.1", + "7": "7.51.1" }, "nightly": { "INTEGRATIONS_CORE_VERSION": "master", @@ -103,4 +103,4 @@ "dca-1.9.0": { "SECURITY_AGENT_POLICIES_VERSION": "v0.3" } -} \ No newline at end of file +} From 484e8a39ae6913fb21e8ba18ac55498c9847e2f4 Mon Sep 17 00:00:00 2001 From: Paul Cacheux Date: Wed, 6 Mar 2024 11:22:30 +0100 Subject: [PATCH 026/155] [CWS] move common process code outside of linux specific files (#23459) --- pkg/security/utils/proc.go | 84 ---------------------------- pkg/security/utils/proc_common.go | 93 +++++++++++++++++++++++++++++++ 2 files changed, 93 insertions(+), 84 deletions(-) create mode 100644 pkg/security/utils/proc_common.go diff --git a/pkg/security/utils/proc.go b/pkg/security/utils/proc.go index 44bbe99a10038d..f136d080cf1d25 100644 --- a/pkg/security/utils/proc.go +++ b/pkg/security/utils/proc.go @@ -20,8 +20,6 @@ import ( "strings" "sync" - "github.com/shirou/gopsutil/v3/process" - "github.com/DataDog/datadog-agent/pkg/util/kernel" ) @@ -184,88 +182,6 @@ func PidTTY(pid uint32) string { return "" } -// GetProcesses returns list of active processes -func GetProcesses() ([]*process.Process, error) { - pids, err := process.Pids() - if err != nil { - return nil, err - } - - var processes []*process.Process - for _, pid := range pids { - var proc *process.Process - proc, err = process.NewProcess(pid) - if err != nil { - // the process does not exist anymore, continue - continue - } - processes = append(processes, proc) - } - - return processes, nil -} - -// FilledProcess defines a filled process -type FilledProcess struct { - Pid int32 - Ppid int32 - CreateTime int64 - Name string - Uids []int32 - Gids []int32 - MemInfo *process.MemoryInfoStat - Cmdline []string -} - -// GetFilledProcess returns a FilledProcess from a Process input -func GetFilledProcess(p *process.Process) (*FilledProcess, error) { - ppid, err := p.Ppid() - if err != nil { - return nil, err - } - - createTime, err := p.CreateTime() - if err != nil { - return nil, err - } - - uids, err := p.Uids() - if err != nil { - return nil, err - } - - gids, err := p.Gids() - if err != nil { - return nil, err - } - - name, err := p.Name() - if err != nil { - return nil, err - } - - memInfo, err := p.MemoryInfo() - if err != nil { - return nil, err - } - - cmdLine, err := p.CmdlineSlice() - if err != nil { - return nil, err - } - - return &FilledProcess{ - Pid: p.Pid, - Ppid: ppid, - CreateTime: createTime, - Name: name, - Uids: uids, - Gids: gids, - MemInfo: memInfo, - Cmdline: cmdLine, - }, nil -} - // MaxEnvVarsCollected defines the max env vars collected const MaxEnvVarsCollected = 256 diff --git a/pkg/security/utils/proc_common.go b/pkg/security/utils/proc_common.go new file mode 100644 index 00000000000000..755221d676f208 --- /dev/null +++ b/pkg/security/utils/proc_common.go @@ -0,0 +1,93 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +// Package utils holds utils related files +package utils + +import ( + "github.com/shirou/gopsutil/v3/process" +) + +// GetProcesses returns list of active processes +func GetProcesses() ([]*process.Process, error) { + pids, err := process.Pids() + if err != nil { + return nil, err + } + + var processes []*process.Process + for _, pid := range pids { + var proc *process.Process + proc, err = process.NewProcess(pid) + if err != nil { + // the process does not exist anymore, continue + continue + } + processes = append(processes, proc) + } + + return processes, nil +} + +// FilledProcess defines a filled process +type FilledProcess struct { + Pid int32 + Ppid int32 + CreateTime int64 + Name string + Uids []int32 + Gids []int32 + MemInfo *process.MemoryInfoStat + Cmdline []string +} + +// GetFilledProcess returns a FilledProcess from a Process input +func GetFilledProcess(p *process.Process) (*FilledProcess, error) { + ppid, err := p.Ppid() + if err != nil { + return nil, err + } + + createTime, err := p.CreateTime() + if err != nil { + return nil, err + } + + uids, err := p.Uids() + if err != nil { + return nil, err + } + + gids, err := p.Gids() + if err != nil { + return nil, err + } + + name, err := p.Name() + if err != nil { + return nil, err + } + + memInfo, err := p.MemoryInfo() + if err != nil { + return nil, err + } + + cmdLine, err := p.CmdlineSlice() + if err != nil { + return nil, err + } + + return &FilledProcess{ + Pid: p.Pid, + Ppid: ppid, + CreateTime: createTime, + Name: name, + Uids: uids, + Gids: gids, + MemInfo: memInfo, + Cmdline: cmdLine, + }, nil +} From cbb39b7eeb80f5377e54a574a23eb13e56f8db77 Mon Sep 17 00:00:00 2001 From: Ahmed Mezghani <38987709+ahmed-mez@users.noreply.github.com> Date: Wed, 6 Mar 2024 11:42:13 +0100 Subject: [PATCH 027/155] test/fakeintake/client: flush apm fake intakes in FlushServerAndResetAggregators (#23471) --- test/fakeintake/client/client.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/fakeintake/client/client.go b/test/fakeintake/client/client.go index f56ee1283b2e06..12f48459e2515c 100644 --- a/test/fakeintake/client/client.go +++ b/test/fakeintake/client/client.go @@ -512,6 +512,8 @@ func (c *Client) FlushServerAndResetAggregators() error { c.connectionAggregator.Reset() c.metricAggregator.Reset() c.logAggregator.Reset() + c.apmStatsAggregator.Reset() + c.traceAggregator.Reset() return nil } From ddc39b34ec2b8d7c5ea0c834e5d6fe8bf63da2b5 Mon Sep 17 00:00:00 2001 From: Gustavo Caso Date: Wed, 6 Mar 2024 12:16:57 +0100 Subject: [PATCH 028/155] [ASCII-1226] Add flare information from the status component (#23398) * add flare information from the status component * Ensure the Remote Configuration client component is a pure component. Do not register any Fx providers. Ensuirng a component in the Fx graph is a pure component avoids having a dependency clycle issue Example error: func(statusimpl.dependencies) statusimpl.provides provided by "github.com/DataDog/datadog-agent/comp/core/status/statusimpl".newStatus (/Users/runner/go/src/github.com/DataDog/datadog-agent/comp/core/status/statusimpl/status.go:70) depends on func(rcclientimpl.dependencies) (rcclientimpl.provides, error) provided by "github.com/DataDog/datadog-agent/comp/remote-config/rcclient/rcclientimpl".newRemoteConfigClient (/Users/runner/go/src/github.com/DataDog/datadog-agent/comp/remote-config/rcclient/rcclientimpl/rcclient.go:75) depends on func(flare.dependencies) (flare.Component, types.TaskListenerProvider) provided by "github.com/DataDog/datadog-agent/comp/core/flare".newFlare (/Users/runner/go/src/github.com/DataDog/datadog-agent/comp/core/flare/flare.go:53) * add test to make sure status component always return flare provider * improve comment * add rcstatus package docstring --- cmd/agent/subcommands/run/command.go | 4 +- cmd/process-agent/command/main_common.go | 6 +- comp/README.md | 4 + comp/core/flare/flare.go | 6 +- comp/core/flare/flare_test.go | 2 - comp/core/status/statusimpl/go.mod | 1 + comp/core/status/statusimpl/status.go | 26 +++- comp/core/status/statusimpl/status_test.go | 60 ++++++---- comp/remote-config/bundle.go | 2 + .../rcclient/rcclientimpl/rcclient.go | 25 ++-- .../rcclient/rcclientimpl/rcclient_test.go | 46 ------- .../rcclient/rcclientimpl/status.go | 74 ------------ comp/remote-config/rcstatus/component.go | 13 ++ .../rcstatus/rcstatusimpl/status.go | 113 ++++++++++++++++++ .../status_templates/remoteconfiguration.tmpl | 0 .../remoteconfigurationHTML.tmpl | 0 .../rcstatus/rcstatusimpl/status_test.go | 60 ++++++++++ pkg/flare/archive.go | 5 +- 18 files changed, 271 insertions(+), 176 deletions(-) delete mode 100644 comp/remote-config/rcclient/rcclientimpl/status.go create mode 100644 comp/remote-config/rcstatus/component.go create mode 100644 comp/remote-config/rcstatus/rcstatusimpl/status.go rename comp/remote-config/{rcclient/rcclientimpl => rcstatus/rcstatusimpl}/status_templates/remoteconfiguration.tmpl (100%) rename comp/remote-config/{rcclient/rcclientimpl => rcstatus/rcstatusimpl}/status_templates/remoteconfigurationHTML.tmpl (100%) create mode 100644 comp/remote-config/rcstatus/rcstatusimpl/status_test.go diff --git a/cmd/agent/subcommands/run/command.go b/cmd/agent/subcommands/run/command.go index dc4bf8801ddbe7..5b9ecd5724750e 100644 --- a/cmd/agent/subcommands/run/command.go +++ b/cmd/agent/subcommands/run/command.go @@ -84,8 +84,8 @@ import ( "github.com/DataDog/datadog-agent/comp/otelcol" otelcollector "github.com/DataDog/datadog-agent/comp/otelcol/collector" processagentStatusImpl "github.com/DataDog/datadog-agent/comp/process/status/statusimpl" + remoteconfig "github.com/DataDog/datadog-agent/comp/remote-config" "github.com/DataDog/datadog-agent/comp/remote-config/rcclient" - "github.com/DataDog/datadog-agent/comp/remote-config/rcclient/rcclientimpl" "github.com/DataDog/datadog-agent/comp/remote-config/rcservice/rcserviceimpl" "github.com/DataDog/datadog-agent/comp/remote-config/rcserviceha/rcservicehaimpl" "github.com/DataDog/datadog-agent/comp/remote-config/rctelemetryreporter/rctelemetryreporterimpl" @@ -339,7 +339,7 @@ func getSharedFxOption() fx.Option { rctelemetryreporterimpl.Module(), rcserviceimpl.Module(), rcservicehaimpl.Module(), - rcclientimpl.Module(), + remoteconfig.Bundle(), fx.Provide(tagger.NewTaggerParamsForCoreAgent), tagger.Module(), diff --git a/cmd/process-agent/command/main_common.go b/cmd/process-agent/command/main_common.go index bca0a78aa0cd1b..d9c62499e4dd58 100644 --- a/cmd/process-agent/command/main_common.go +++ b/cmd/process-agent/command/main_common.go @@ -33,8 +33,8 @@ import ( "github.com/DataDog/datadog-agent/comp/process/profiler" "github.com/DataDog/datadog-agent/comp/process/runner" "github.com/DataDog/datadog-agent/comp/process/types" + remoteconfig "github.com/DataDog/datadog-agent/comp/remote-config" "github.com/DataDog/datadog-agent/comp/remote-config/rcclient" - "github.com/DataDog/datadog-agent/comp/remote-config/rcclient/rcclientimpl" ddconfig "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/pidfile" "github.com/DataDog/datadog-agent/pkg/process/metadata/workloadmeta/collector" @@ -117,8 +117,8 @@ func runApp(ctx context.Context, globalParams *GlobalParams) error { // Provide process agent bundle so fx knows where to find components process.Bundle(), - // Provide remote config client module - rcclientimpl.Module(), + // Provide remote config client bundle + remoteconfig.Bundle(), // Provide workloadmeta module workloadmeta.Module(), diff --git a/comp/README.md b/comp/README.md index ae2fa7a7dd6d4e..d5dca450900e4c 100644 --- a/comp/README.md +++ b/comp/README.md @@ -364,6 +364,10 @@ Package rcservice is a remote config service that can run within the agent to re Package rcserviceha is a remote config service that can run in the Agent to receive remote config updates from the DD failover DC backend. +### [comp/remote-config/rcstatus](https://pkg.go.dev/github.com/DataDog/datadog-agent/comp/remote-config/rcstatus) + +Package rcstatus implements the core status component information provider interface + ### [comp/remote-config/rctelemetryreporter](https://pkg.go.dev/github.com/DataDog/datadog-agent/comp/remote-config/rctelemetryreporter) Package rctelemetryreporter provides a component that sends RC-specific metrics to the DD backend. diff --git a/comp/core/flare/flare.go b/comp/core/flare/flare.go index fb7d3d4142b968..4a8227dd33a51c 100644 --- a/comp/core/flare/flare.go +++ b/comp/core/flare/flare.go @@ -20,7 +20,6 @@ import ( "github.com/DataDog/datadog-agent/comp/core/flare/types" "github.com/DataDog/datadog-agent/comp/core/log" "github.com/DataDog/datadog-agent/comp/core/secrets" - "github.com/DataDog/datadog-agent/comp/metadata/inventoryagent" rcclienttypes "github.com/DataDog/datadog-agent/comp/remote-config/rcclient/types" "github.com/DataDog/datadog-agent/pkg/config/utils" "github.com/DataDog/datadog-agent/pkg/diagnose" @@ -38,7 +37,6 @@ type dependencies struct { Log log.Component Config config.Component Diagnosesendermanager diagnosesendermanager.Component - InvAgent inventoryagent.Component // TODO: (components) - Temporary dependencies until the status page is a Component and we don't need to call it in 'CompleteFlare'. Params Params Providers []types.FlareCallback `group:"flare"` Collector optional.Option[collector.Component] @@ -47,7 +45,6 @@ type dependencies struct { type flare struct { log log.Component config config.Component - invAgent inventoryagent.Component params Params providers []types.FlareCallback diagnoseDeps diagnose.SuitesDeps @@ -62,7 +59,6 @@ func newFlare(deps dependencies) (Component, rcclienttypes.TaskListenerProvider) config: deps.Config, params: deps.Params, providers: fxutil.GetAndFilterGroup(deps.Providers), - invAgent: deps.InvAgent, diagnoseDeps: diagnoseDeps, } @@ -125,7 +121,7 @@ func (f *flare) Create(pdata ProfileData, ipcError error) (string, error) { providers := append( f.providers, func(fb types.FlareBuilder) error { - return pkgFlare.CompleteFlare(fb, f.invAgent, f.diagnoseDeps) + return pkgFlare.CompleteFlare(fb, f.diagnoseDeps) }, f.collectLogsFiles, f.collectConfigFiles, diff --git a/comp/core/flare/flare_test.go b/comp/core/flare/flare_test.go index c712a3e52d377e..9f4e430566fcdc 100644 --- a/comp/core/flare/flare_test.go +++ b/comp/core/flare/flare_test.go @@ -13,7 +13,6 @@ import ( "github.com/DataDog/datadog-agent/comp/core/config" "github.com/DataDog/datadog-agent/comp/core/flare/types" "github.com/DataDog/datadog-agent/comp/core/log/logimpl" - "github.com/DataDog/datadog-agent/comp/metadata/inventoryagent/inventoryagentimpl" "github.com/DataDog/datadog-agent/pkg/util/fxutil" "github.com/stretchr/testify/assert" "go.uber.org/fx" @@ -28,7 +27,6 @@ func TestFlareCreation(t *testing.T) { logimpl.MockModule(), config.MockModule(), fx.Provide(func() diagnosesendermanager.Component { return nil }), - inventoryagentimpl.MockModule(), fx.Provide(func() Params { return Params{} }), collector.NoneModule(), diff --git a/comp/core/status/statusimpl/go.mod b/comp/core/status/statusimpl/go.mod index 34fc9a9c6e189e..d80bbf62d2d7ac 100644 --- a/comp/core/status/statusimpl/go.mod +++ b/comp/core/status/statusimpl/go.mod @@ -32,6 +32,7 @@ replace ( require ( github.com/DataDog/datadog-agent/comp/core/config v0.52.0-rc.3 + github.com/DataDog/datadog-agent/comp/core/flare/types v0.52.0-rc.3 github.com/DataDog/datadog-agent/comp/core/status v0.52.0-rc.3 github.com/DataDog/datadog-agent/pkg/config/setup v0.52.0-rc.3 github.com/DataDog/datadog-agent/pkg/util/flavor v0.52.0-rc.3 diff --git a/comp/core/status/statusimpl/status.go b/comp/core/status/statusimpl/status.go index 21dd3bf0c3a91f..2ca6e391583b5d 100644 --- a/comp/core/status/statusimpl/status.go +++ b/comp/core/status/statusimpl/status.go @@ -22,6 +22,7 @@ import ( "golang.org/x/text/language" "github.com/DataDog/datadog-agent/comp/core/config" + flaretypes "github.com/DataDog/datadog-agent/comp/core/flare/types" "github.com/DataDog/datadog-agent/comp/core/status" "github.com/DataDog/datadog-agent/pkg/util/fxutil" ) @@ -38,6 +39,13 @@ type dependencies struct { HeaderProviders []status.HeaderProvider `group:"header_status"` } +type provides struct { + fx.Out + + Comp status.Component + FlareProvider flaretypes.Provider +} + type statusImplementation struct { sortedHeaderProviders []status.HeaderProvider sortedSectionNames []string @@ -59,7 +67,7 @@ func sortByName(providers []status.Provider) []status.Provider { return providers } -func newStatus(deps dependencies) (status.Component, error) { +func newStatus(deps dependencies) provides { // Sections are sorted by name // The exception is the collector section. We want that to be the first section to be displayed // We manually insert the collector section in the first place after sorting them alphabetically @@ -105,11 +113,17 @@ func newStatus(deps dependencies) (status.Component, error) { sortedHeaderProviders = append([]status.HeaderProvider{newCommonHeaderProvider(deps.Params, deps.Config)}, sortedHeaderProviders...) - return &statusImplementation{ + c := &statusImplementation{ sortedSectionNames: sortedSectionNames, sortedProvidersBySection: sortedProvidersBySection, sortedHeaderProviders: sortedHeaderProviders, - }, nil + } + + return provides{ + Comp: c, + FlareProvider: flaretypes.NewProvider(c.fillFlare), + } + } func (s *statusImplementation) GetStatus(format string, verbose bool, excludeSections ...string) ([]byte, error) { @@ -355,6 +369,12 @@ func (s *statusImplementation) GetStatusBySection(section string, format string, } } +// fillFlare add the inventory payload to flares. +func (s *statusImplementation) fillFlare(fb flaretypes.FlareBuilder) error { + fb.AddFileFromFunc("status.log", func() ([]byte, error) { return s.GetStatus("text", true) }) + return nil +} + func present(value string, container []string) bool { for _, v := range container { if v == value { diff --git a/comp/core/status/statusimpl/status_test.go b/comp/core/status/statusimpl/status_test.go index b6c3dad56010fa..980d2d893cc3cb 100644 --- a/comp/core/status/statusimpl/status_test.go +++ b/comp/core/status/statusimpl/status_test.go @@ -221,9 +221,8 @@ func TestGetStatus(t *testing.T) { ), )) - statusComponent, err := newStatus(deps) - - assert.NoError(t, err) + provides := newStatus(deps) + statusComponent := provides.Comp testCases := []struct { name string @@ -236,7 +235,7 @@ func TestGetStatus(t *testing.T) { format: "json", assertFunc: func(t *testing.T, bytes []byte) { result := map[string]interface{}{} - err = json.Unmarshal(bytes, &result) + err := json.Unmarshal(bytes, &result) assert.NoError(t, err) @@ -250,7 +249,7 @@ func TestGetStatus(t *testing.T) { excludeSections: []string{status.CollectorSection}, assertFunc: func(t *testing.T, bytes []byte) { result := map[string]interface{}{} - err = json.Unmarshal(bytes, &result) + err := json.Unmarshal(bytes, &result) assert.NoError(t, err) @@ -497,9 +496,8 @@ func TestGetStatusDoNotRenderHeaderIfNoProviders(t *testing.T) { ), )) - statusComponent, err := newStatus(deps) - - assert.NoError(t, err) + provides := newStatus(deps) + statusComponent := provides.Comp bytesResult, err := statusComponent.GetStatus("text", false) @@ -567,9 +565,8 @@ func TestGetStatusWithErrors(t *testing.T) { ), )) - statusComponent, err := newStatus(deps) - - assert.NoError(t, err) + provides := newStatus(deps) + statusComponent := provides.Comp testCases := []struct { name string @@ -581,7 +578,7 @@ func TestGetStatusWithErrors(t *testing.T) { format: "json", assertFunc: func(t *testing.T, bytes []byte) { result := map[string]interface{}{} - err = json.Unmarshal(bytes, &result) + err := json.Unmarshal(bytes, &result) assert.NoError(t, err) @@ -715,9 +712,8 @@ func TestGetStatusBySection(t *testing.T) { ), )) - statusComponent, err := newStatus(deps) - - assert.NoError(t, err) + provides := newStatus(deps) + statusComponent := provides.Comp testCases := []struct { name string @@ -731,7 +727,7 @@ func TestGetStatusBySection(t *testing.T) { format: "json", assertFunc: func(t *testing.T, bytes []byte) { result := map[string]interface{}{} - err = json.Unmarshal(bytes, &result) + err := json.Unmarshal(bytes, &result) assert.NoError(t, err) @@ -827,9 +823,8 @@ func TestGetStatusBySectionsWithErrors(t *testing.T) { ), )) - statusComponent, err := newStatus(deps) - - assert.NoError(t, err) + provides := newStatus(deps) + statusComponent := provides.Comp testCases := []struct { name string @@ -843,7 +838,7 @@ func TestGetStatusBySectionsWithErrors(t *testing.T) { section: "error section", assertFunc: func(t *testing.T, bytes []byte) { result := map[string]interface{}{} - err = json.Unmarshal(bytes, &result) + err := json.Unmarshal(bytes, &result) assert.NoError(t, err) @@ -878,7 +873,7 @@ Status render errors section: "header", assertFunc: func(t *testing.T, bytes []byte) { result := map[string]interface{}{} - err = json.Unmarshal(bytes, &result) + err := json.Unmarshal(bytes, &result) assert.NoError(t, err) @@ -933,3 +928,26 @@ Status render errors }) } } + +func TestFlareProvider(t *testing.T) { + nowFunc = func() time.Time { return time.Unix(1515151515, 0) } + startTimeProvider = time.Unix(1515151515, 0) + originalTZ := os.Getenv("TZ") + os.Setenv("TZ", "UTC") + + defer func() { + nowFunc = time.Now + startTimeProvider = pkgconfigsetup.StartTime + os.Setenv("TZ", originalTZ) + }() + + deps := fxutil.Test[dependencies](t, fx.Options( + config.MockModule(), + fx.Supply(agentParams), + )) + + provides := newStatus(deps) + flareProvider := provides.FlareProvider.Provider + + assert.NotNil(t, flareProvider) +} diff --git a/comp/remote-config/bundle.go b/comp/remote-config/bundle.go index fa0154b2ffcf07..335d6b859d9a93 100644 --- a/comp/remote-config/bundle.go +++ b/comp/remote-config/bundle.go @@ -8,6 +8,7 @@ package remoteconfig import ( "github.com/DataDog/datadog-agent/comp/remote-config/rcclient/rcclientimpl" + "github.com/DataDog/datadog-agent/comp/remote-config/rcstatus/rcstatusimpl" "github.com/DataDog/datadog-agent/pkg/util/fxutil" ) @@ -17,5 +18,6 @@ import ( func Bundle() fxutil.BundleOptions { return fxutil.Bundle( rcclientimpl.Module(), + rcstatusimpl.Module(), ) } diff --git a/comp/remote-config/rcclient/rcclientimpl/rcclient.go b/comp/remote-config/rcclient/rcclientimpl/rcclient.go index c694349404dea4..9b7a295ee4a6b7 100644 --- a/comp/remote-config/rcclient/rcclientimpl/rcclient.go +++ b/comp/remote-config/rcclient/rcclientimpl/rcclient.go @@ -15,7 +15,6 @@ import ( "go.uber.org/fx" "github.com/DataDog/datadog-agent/comp/core/log" - "github.com/DataDog/datadog-agent/comp/core/status" "github.com/DataDog/datadog-agent/comp/remote-config/rcclient" "github.com/DataDog/datadog-agent/comp/remote-config/rcclient/types" "github.com/DataDog/datadog-agent/pkg/api/security" @@ -65,17 +64,14 @@ type dependencies struct { TaskListeners []types.RCAgentTaskListener `group:"rCAgentTaskListener"` // <-- Fill automatically by Fx } -type provides struct { - fx.Out - - Comp rcclient.Component - StatusProvider status.InformationProvider -} - -func newRemoteConfigClient(deps dependencies) (provides, error) { +// newRemoteConfigClient must not populate any Fx groups or return any types that would be consumed as dependencies by +// other components. To avoid dependency cycles between our components we need to have "pure leaf" components (i.e. +// components that are instantiated last). Remote configuration client is a good candidate for this since it must be +// able to interact with any other components (i.e. be at the end of the dependency graph). +func newRemoteConfigClient(deps dependencies) (rcclient.Component, error) { ipcAddress, err := config.GetIPCAddress() if err != nil { - return provides{}, err + return nil, err } // We have to create the client in the constructor and set its name later @@ -87,7 +83,7 @@ func newRemoteConfigClient(deps dependencies) (provides, error) { client.WithPollInterval(5*time.Second), ) if err != nil { - return provides{}, err + return nil, err } var clientHA *client.Client @@ -100,7 +96,7 @@ func newRemoteConfigClient(deps dependencies) (provides, error) { client.WithPollInterval(5*time.Second), ) if err != nil { - return provides{}, err + return nil, err } } @@ -112,10 +108,7 @@ func newRemoteConfigClient(deps dependencies) (provides, error) { clientHA: clientHA, } - return provides{ - Comp: rc, - StatusProvider: status.NewInformationProvider(rc), - }, nil + return rc, nil } // Start subscribes to AGENT_CONFIG configurations and start the remote config client diff --git a/comp/remote-config/rcclient/rcclientimpl/rcclient_test.go b/comp/remote-config/rcclient/rcclientimpl/rcclient_test.go index e31004c7310f5c..9729feaaa2e402 100644 --- a/comp/remote-config/rcclient/rcclientimpl/rcclient_test.go +++ b/comp/remote-config/rcclient/rcclientimpl/rcclient_test.go @@ -6,7 +6,6 @@ package rcclientimpl import ( - "bytes" "testing" "time" @@ -134,48 +133,3 @@ func TestAgentConfigCallback(t *testing.T) { assert.Equal(t, "debug", config.Datadog.Get("log_level")) assert.Equal(t, model.SourceCLI, config.Datadog.GetSource("log_level")) } - -func TestStatusOuput(t *testing.T) { - deps := fxutil.Test[dependencies](t, fx.Options( - logimpl.MockModule(), - )) - - provides, err := newRemoteConfigClient(deps) - assert.NoError(t, err) - - headerProvider := provides.StatusProvider.Provider - - tests := []struct { - name string - assertFunc func(t *testing.T) - }{ - {"JSON", func(t *testing.T) { - stats := make(map[string]interface{}) - headerProvider.JSON(false, stats) - - assert.NotEmpty(t, stats) - }}, - {"Text", func(t *testing.T) { - b := new(bytes.Buffer) - err := headerProvider.Text(false, b) - - assert.NoError(t, err) - - assert.NotEmpty(t, b.String()) - }}, - {"HTML", func(t *testing.T) { - b := new(bytes.Buffer) - err := headerProvider.HTML(false, b) - - assert.NoError(t, err) - - assert.NotEmpty(t, b.String()) - }}, - } - - for _, test := range tests { - t.Run(test.name, func(t *testing.T) { - test.assertFunc(t) - }) - } -} diff --git a/comp/remote-config/rcclient/rcclientimpl/status.go b/comp/remote-config/rcclient/rcclientimpl/status.go deleted file mode 100644 index 334db1f80aca57..00000000000000 --- a/comp/remote-config/rcclient/rcclientimpl/status.go +++ /dev/null @@ -1,74 +0,0 @@ -// Unless explicitly stated otherwise all files in this repository are licensed -// under the Apache License Version 2.0. -// This product includes software developed at Datadog (https://www.datadoghq.com/). -// Copyright 2016-present Datadog, Inc. - -package rcclientimpl - -import ( - "embed" - "encoding/json" - "expvar" - "io" - - "github.com/DataDog/datadog-agent/comp/core/status" - "github.com/DataDog/datadog-agent/pkg/config" -) - -// PopulateStatus populates the status stats -func PopulateStatus(stats map[string]interface{}) { - status := make(map[string]interface{}) - - if config.IsRemoteConfigEnabled(config.Datadog) && expvar.Get("remoteConfigStatus") != nil { - remoteConfigStatusJSON := expvar.Get("remoteConfigStatus").String() - json.Unmarshal([]byte(remoteConfigStatusJSON), &status) //nolint:errcheck - } else { - if !config.Datadog.GetBool("remote_configuration.enabled") { - status["disabledReason"] = "it is explicitly disabled in the agent configuration. (`remote_configuration.enabled: false`)" - } else if config.Datadog.GetBool("fips.enabled") { - status["disabledReason"] = "it is not supported when FIPS is enabled. (`fips.enabled: true`)" - } else if config.Datadog.GetString("site") == "ddog-gov.com" { - status["disabledReason"] = "it is not supported on GovCloud. (`site: \"ddog-gov.com\"`)" - } - } - - stats["remoteConfiguration"] = status -} - -//go:embed status_templates -var templatesFS embed.FS - -func (rc rcClient) getStatusInfo() map[string]interface{} { - stats := make(map[string]interface{}) - - PopulateStatus(stats) - - return stats -} - -// Name returns the name -func (rc rcClient) Name() string { - return "Remote Configuration" -} - -// Section return the section -func (rc rcClient) Section() string { - return "Remote Configuration" -} - -// JSON populates the status map -func (rc rcClient) JSON(_ bool, stats map[string]interface{}) error { - PopulateStatus(stats) - - return nil -} - -// Text renders the text output -func (rc rcClient) Text(_ bool, buffer io.Writer) error { - return status.RenderText(templatesFS, "remoteconfiguration.tmpl", buffer, rc.getStatusInfo()) -} - -// HTML renders the html output -func (rc rcClient) HTML(_ bool, buffer io.Writer) error { - return status.RenderHTML(templatesFS, "remoteconfigurationHTML.tmpl", buffer, rc.getStatusInfo()) -} diff --git a/comp/remote-config/rcstatus/component.go b/comp/remote-config/rcstatus/component.go new file mode 100644 index 00000000000000..3ce62f629e20ec --- /dev/null +++ b/comp/remote-config/rcstatus/component.go @@ -0,0 +1,13 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2023-present Datadog, Inc. + +// Package rcstatus implements the core status component information provider interface +package rcstatus + +// team: remote-config + +// Component is the component type. +type Component interface { +} diff --git a/comp/remote-config/rcstatus/rcstatusimpl/status.go b/comp/remote-config/rcstatus/rcstatusimpl/status.go new file mode 100644 index 00000000000000..d954775d25e415 --- /dev/null +++ b/comp/remote-config/rcstatus/rcstatusimpl/status.go @@ -0,0 +1,113 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +package rcstatusimpl //nolint:revive // TODO(RC) Fix revive linter + +import ( + "embed" + "encoding/json" + "expvar" + "io" + + "github.com/DataDog/datadog-agent/comp/core/config" + "github.com/DataDog/datadog-agent/comp/core/status" + "github.com/DataDog/datadog-agent/pkg/util/fxutil" + "go.uber.org/fx" +) + +//go:embed status_templates +var templatesFS embed.FS + +type dependencies struct { + fx.In + + Config config.Component +} + +type provides struct { + fx.Out + + StatusProvider status.InformationProvider +} + +// Module defines the fx options for the status component. +func Module() fxutil.Module { + return fxutil.Component( + fx.Provide(newStatus)) +} + +type statusProvider struct { + Config config.Component +} + +func newStatus(deps dependencies) provides { + return provides{ + StatusProvider: status.NewInformationProvider(statusProvider{ + Config: deps.Config, + }), + } +} + +func (rc statusProvider) getStatusInfo() map[string]interface{} { + stats := make(map[string]interface{}) + + rc.populateStatus(stats) + + return stats +} + +// Name returns the name +func (rc statusProvider) Name() string { + return "Remote Configuration" +} + +// Section return the section +func (rc statusProvider) Section() string { + return "Remote Configuration" +} + +// JSON populates the status map +func (rc statusProvider) JSON(_ bool, stats map[string]interface{}) error { + rc.populateStatus(stats) + + return nil +} + +// Text renders the text output +func (rc statusProvider) Text(_ bool, buffer io.Writer) error { + return status.RenderText(templatesFS, "remoteconfiguration.tmpl", buffer, rc.getStatusInfo()) +} + +// HTML renders the html output +func (rc statusProvider) HTML(_ bool, buffer io.Writer) error { + return status.RenderHTML(templatesFS, "remoteconfigurationHTML.tmpl", buffer, rc.getStatusInfo()) +} + +func (rc statusProvider) populateStatus(stats map[string]interface{}) { + status := make(map[string]interface{}) + + if isRemoteConfigEnabled(rc.Config) && expvar.Get("remoteConfigStatus") != nil { + remoteConfigStatusJSON := expvar.Get("remoteConfigStatus").String() + json.Unmarshal([]byte(remoteConfigStatusJSON), &status) //nolint:errcheck + } else { + if !rc.Config.GetBool("remote_configuration.enabled") { + status["disabledReason"] = "it is explicitly disabled in the agent configuration. (`remote_configuration.enabled: false`)" + } else if rc.Config.GetBool("fips.enabled") { + status["disabledReason"] = "it is not supported when FIPS is enabled. (`fips.enabled: true`)" + } else if rc.Config.GetString("site") == "ddog-gov.com" { + status["disabledReason"] = "it is not supported on GovCloud. (`site: \"ddog-gov.com\"`)" + } + } + + stats["remoteConfiguration"] = status +} + +func isRemoteConfigEnabled(conf config.Component) bool { + // Disable Remote Config for GovCloud + if conf.GetBool("fips.enabled") || conf.GetString("site") == "ddog-gov.com" { + return false + } + return conf.GetBool("remote_configuration.enabled") +} diff --git a/comp/remote-config/rcclient/rcclientimpl/status_templates/remoteconfiguration.tmpl b/comp/remote-config/rcstatus/rcstatusimpl/status_templates/remoteconfiguration.tmpl similarity index 100% rename from comp/remote-config/rcclient/rcclientimpl/status_templates/remoteconfiguration.tmpl rename to comp/remote-config/rcstatus/rcstatusimpl/status_templates/remoteconfiguration.tmpl diff --git a/comp/remote-config/rcclient/rcclientimpl/status_templates/remoteconfigurationHTML.tmpl b/comp/remote-config/rcstatus/rcstatusimpl/status_templates/remoteconfigurationHTML.tmpl similarity index 100% rename from comp/remote-config/rcclient/rcclientimpl/status_templates/remoteconfigurationHTML.tmpl rename to comp/remote-config/rcstatus/rcstatusimpl/status_templates/remoteconfigurationHTML.tmpl diff --git a/comp/remote-config/rcstatus/rcstatusimpl/status_test.go b/comp/remote-config/rcstatus/rcstatusimpl/status_test.go new file mode 100644 index 00000000000000..21fb1b6a0fe018 --- /dev/null +++ b/comp/remote-config/rcstatus/rcstatusimpl/status_test.go @@ -0,0 +1,60 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +package rcstatusimpl + +import ( + "bytes" + "testing" + + "github.com/DataDog/datadog-agent/comp/core/config" + "github.com/DataDog/datadog-agent/pkg/util/fxutil" + "github.com/stretchr/testify/assert" + "go.uber.org/fx" +) + +func TestStatusOuput(t *testing.T) { + deps := fxutil.Test[dependencies](t, fx.Options( + config.MockModule(), + )) + + provides := newStatus(deps) + + statusProvider := provides.StatusProvider.Provider + + tests := []struct { + name string + assertFunc func(t *testing.T) + }{ + {"JSON", func(t *testing.T) { + stats := make(map[string]interface{}) + statusProvider.JSON(false, stats) + + assert.NotEmpty(t, stats) + }}, + {"Text", func(t *testing.T) { + b := new(bytes.Buffer) + err := statusProvider.Text(false, b) + + assert.NoError(t, err) + + assert.NotEmpty(t, b.String()) + }}, + {"HTML", func(t *testing.T) { + b := new(bytes.Buffer) + err := statusProvider.HTML(false, b) + + assert.NoError(t, err) + + assert.NotEmpty(t, b.String()) + }}, + } + + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + test.assertFunc(t) + }) + } +} diff --git a/pkg/flare/archive.go b/pkg/flare/archive.go index 5ac2a8678fd0a9..5d2e9a22b5acb2 100644 --- a/pkg/flare/archive.go +++ b/pkg/flare/archive.go @@ -23,13 +23,11 @@ import ( flaretypes "github.com/DataDog/datadog-agent/comp/core/flare/types" "github.com/DataDog/datadog-agent/comp/core/workloadmeta" - "github.com/DataDog/datadog-agent/comp/metadata/inventoryagent" "github.com/DataDog/datadog-agent/pkg/api/security" apiutil "github.com/DataDog/datadog-agent/pkg/api/util" "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/diagnose" "github.com/DataDog/datadog-agent/pkg/diagnose/diagnosis" - "github.com/DataDog/datadog-agent/pkg/status" "github.com/DataDog/datadog-agent/pkg/status/health" processagentStatus "github.com/DataDog/datadog-agent/pkg/status/processagent" systemprobeStatus "github.com/DataDog/datadog-agent/pkg/status/systemprobe" @@ -49,7 +47,7 @@ type searchPaths map[string]string // CompleteFlare packages up the files with an already created builder. This is aimed to be used by the flare // component while we migrate to a component architecture. -func CompleteFlare(fb flaretypes.FlareBuilder, invAgent inventoryagent.Component, diagnoseDeps diagnose.SuitesDeps) error { +func CompleteFlare(fb flaretypes.FlareBuilder, diagnoseDeps diagnose.SuitesDeps) error { /** WARNING * * When adding data to flares, carefully analyze what is being added and ensure that it contains no credentials @@ -61,7 +59,6 @@ func CompleteFlare(fb flaretypes.FlareBuilder, invAgent inventoryagent.Component fb.AddFile("status.log", []byte("unable to get the status of the agent, is it running?")) fb.AddFile("config-check.log", []byte("unable to get loaded checks config, is the agent running?")) } else { - fb.AddFileFromFunc("status.log", func() ([]byte, error) { return status.GetAndFormatStatus(invAgent) }) fb.AddFileFromFunc("config-check.log", getConfigCheck) fb.AddFileFromFunc("tagger-list.json", getAgentTaggerList) fb.AddFileFromFunc("workload-list.log", getAgentWorkloadList) From f79cc10ffe6ad178a6b15a1b322b9942862741ec Mon Sep 17 00:00:00 2001 From: Andrea Marziali Date: Wed, 6 Mar 2024 12:31:40 +0100 Subject: [PATCH 029/155] processes: Autodetect service name for a spring boot application jar (#22768) * Autodetect service name for a spring boot application jar fix licenses handle backslashes in windows use a feature flag for java advanced guess reformat imports adapt to refactored method after rebase Apply suggestions from code review Co-authored-by: Guy Arbitman fix suggestions review * limit max parsing file size * Update pkg/process/metadata/parser/service.go Co-authored-by: Guy Arbitman * Update pkg/process/metadata/parser/java/spring.go Co-authored-by: Guy Arbitman * Apply suggestions from code review Co-authored-by: Guy Arbitman * review * removing unneded logs + simplify * review * use full path for jar argument --------- Co-authored-by: Guy Arbitman --- LICENSE-3rdparty.csv | 3 + go.mod | 2 + go.sum | 4 + pkg/process/metadata/parser/java/spring.go | 202 ++++++++++++++++++ .../metadata/parser/java/spring_test.go | 172 +++++++++++++++ .../java/testdata/application-fs.properties | 1 + pkg/process/metadata/parser/java/util.go | 146 +++++++++++++ pkg/process/metadata/parser/java/util_test.go | 124 +++++++++++ pkg/process/metadata/parser/java/yaml.go | 61 ++++++ pkg/process/metadata/parser/java/yaml_test.go | 53 +++++ pkg/process/metadata/parser/service.go | 25 ++- 11 files changed, 792 insertions(+), 1 deletion(-) create mode 100644 pkg/process/metadata/parser/java/spring.go create mode 100644 pkg/process/metadata/parser/java/spring_test.go create mode 100644 pkg/process/metadata/parser/java/testdata/application-fs.properties create mode 100644 pkg/process/metadata/parser/java/util.go create mode 100644 pkg/process/metadata/parser/java/util_test.go create mode 100644 pkg/process/metadata/parser/java/yaml.go create mode 100644 pkg/process/metadata/parser/java/yaml_test.go diff --git a/LICENSE-3rdparty.csv b/LICENSE-3rdparty.csv index 997d084a838580..e4ad85b0229134 100644 --- a/LICENSE-3rdparty.csv +++ b/LICENSE-3rdparty.csv @@ -1662,6 +1662,7 @@ core,github.com/remyoudompheng/bigfft,BSD-3-Clause,Copyright (c) 2012 The Go Aut core,github.com/richardartoul/molecule,MIT,Copyright (c) 2020 Richard Artoul core,github.com/richardartoul/molecule/src/codec,Apache-2.0,Copyright (c) 2020 Richard Artoul core,github.com/richardartoul/molecule/src/protowire,BSD-3-Clause,Copyright (c) 2018 The Go Authors. All rights reserved | Copyright (c) 2020 Richard Artoul +core,github.com/rickar/props,BSD-3-Clause,Copyright (c) 2013 Rick Arnold. All rights reserved core,github.com/rivo/uniseg,MIT,Copyright (c) 2019 Oliver Kuederle core,github.com/robfig/cron/v3,MIT,Copyright (C) 2012 Rob Figueiredo core,github.com/rogpeppe/go-internal/fmtsort,BSD-3-Clause,Copyright (c) 2018 The Go Authors. All rights reserved @@ -1852,6 +1853,8 @@ core,github.com/uptrace/bun/internal/tagparser,BSD-2-Clause,Copyright (c) 2021 V core,github.com/uptrace/bun/schema,BSD-2-Clause,Copyright (c) 2021 Vladimir Mihailenco. All rights reserved core,github.com/urfave/negroni,MIT,Copyright (c) 2014 Jeremy Saenz core,github.com/vbatts/tar-split/archive/tar,BSD-3-Clause,"Copyright (c) 2015 Vincent Batts, Raleigh, NC, USA" +core,github.com/vibrantbyte/go-antpath/antpath,Apache-2.0,UNKNOWN +core,github.com/vibrantbyte/go-antpath/extend,Apache-2.0,UNKNOWN core,github.com/vishvananda/netlink,Apache-2.0,"Copyright 2014 Docker, Inc | Copyright 2014 Vishvananda Ishaya" core,github.com/vishvananda/netlink/nl,Apache-2.0,"Copyright 2014 Docker, Inc | Copyright 2014 Vishvananda Ishaya" core,github.com/vishvananda/netns,Apache-2.0,"Copyright 2014 Docker, Inc | Copyright 2014 Vishvananda Ishaya" diff --git a/go.mod b/go.mod index 5ee4e3306b11b6..76a84c02801a07 100644 --- a/go.mod +++ b/go.mod @@ -661,9 +661,11 @@ require ( github.com/kr/pretty v0.3.1 github.com/planetscale/vtprotobuf v0.6.0 github.com/prometheus-community/pro-bing v0.3.0 + github.com/rickar/props v1.0.0 github.com/sijms/go-ora/v2 v2.8.6 github.com/stormcat24/protodep v0.1.8 github.com/swaggest/jsonschema-go v0.3.64 + github.com/vibrantbyte/go-antpath v1.1.1 go.opentelemetry.io/collector/extension v0.91.0 go.opentelemetry.io/collector/otelcol v0.91.0 go.opentelemetry.io/collector/processor v0.91.0 diff --git a/go.sum b/go.sum index 50ff1b98eac345..fb871f138ff4a9 100644 --- a/go.sum +++ b/go.sum @@ -1593,6 +1593,8 @@ github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qq github.com/rhnvrm/simples3 v0.6.1/go.mod h1:Y+3vYm2V7Y4VijFoJHHTrja6OgPrJ2cBti8dPGkC3sA= github.com/richardartoul/molecule v1.0.1-0.20221107223329-32cfee06a052 h1:Qp27Idfgi6ACvFQat5+VJvlYToylpM/hcyLBI3WaKPA= github.com/richardartoul/molecule v1.0.1-0.20221107223329-32cfee06a052/go.mod h1:uvX/8buq8uVeiZiFht+0lqSLBHF+uGV8BrTv8W/SIwk= +github.com/rickar/props v1.0.0 h1:3C3j+wF2/XbQ/sCGRK8DkCLwuRvzqToMvDzmdxHwCsg= +github.com/rickar/props v1.0.0/go.mod h1:VVywBJXdOY3IwDtBmgAMIZs/XM/CtMKSJzu5dsHYwEY= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= @@ -1805,6 +1807,8 @@ github.com/urfave/negroni v1.0.0 h1:kIimOitoypq34K7TG7DUaJ9kq/N4Ofuwi1sjz0KipXc= github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4= github.com/vbatts/tar-split v0.11.5 h1:3bHCTIheBm1qFTcgh9oPu+nNBtX+XJIupG/vacinCts= github.com/vbatts/tar-split v0.11.5/go.mod h1:yZbwRsSeGjusneWgA781EKej9HF8vme8okylkAeNKLk= +github.com/vibrantbyte/go-antpath v1.1.1 h1:SWDIMx4pSjyo7QoAsgTkpNU7QD0X9O0JAgr5O3TsYKk= +github.com/vibrantbyte/go-antpath v1.1.1/go.mod h1:ZqMGIk+no3BL2o6OdEZ3ZDiWfIteuastNSaTFv7kgUY= github.com/vishvananda/netns v0.0.0-20200728191858-db3c7e526aae/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0= github.com/vishvananda/netns v0.0.4 h1:Oeaw1EM2JMxD51g9uhtC0D7erkIjgmj8+JZc26m1YX8= github.com/vishvananda/netns v0.0.4/go.mod h1:SpkAiCQRtJ6TvvxPnOSyH3BMl6unz3xZlaprSwhNNJM= diff --git a/pkg/process/metadata/parser/java/spring.go b/pkg/process/metadata/parser/java/spring.go new file mode 100644 index 00000000000000..a34bd062d89c28 --- /dev/null +++ b/pkg/process/metadata/parser/java/spring.go @@ -0,0 +1,202 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +// Package javaparser contains functions to autodetect service name for java applications +package javaparser + +import ( + "archive/zip" + "os" + "path/filepath" + "strings" + + "github.com/rickar/props" + "github.com/vibrantbyte/go-antpath/antpath" + + "github.com/DataDog/datadog-agent/pkg/util/log" +) + +const ( + bootInfJarPath = "BOOT-INF/classes/" + + defaultLocations = "optional:classpath:/;optional:classpath:/config/;optional:file:./;optional:file:./config/;optional:file:./config/*/" + defaultConfigName = "application" + locationPropName = "spring.config.locations" + configPropName = "spring.config.name" + activeProfilesPropName = "spring.profiles.active" + + appnamePropName = "spring.application.name" +) + +// parseURI parses locations (usually specified by the property locationPropName) given the list of active profiles (specified by activeProfilesPropName) +// and the current directory cwd. +// It returns a couple of maps each having as key the profile name ("" stands for default one) and as value the ant patterns where the properties should be found +// The first map returned is the locations to be found in fs while the second map contains locations on the classpath (usually inside the application jar) +func parseURI(locations []string, name string, profiles []string, cwd string) (map[string][]string, map[string][]string) { + classpaths := make(map[string][]string) + files := make(map[string][]string) + for _, current := range locations { + parts := strings.Split(current, ":") + pl := len(parts) + + isClasspath := false + if pl > 1 && parts[pl-2] == "classpath" { + parts[pl-1] = bootInfJarPath + parts[pl-1] + isClasspath = true + } + + doAppend := func(name string, profile string) { + name = filepath.Clean(name) + if isClasspath { + classpaths[profile] = append(classpaths[profile], filepath.ToSlash(name)) + } else { + files[profile] = append(files[profile], filepath.ToSlash(abs(name, cwd))) + } + } + if strings.HasSuffix(parts[pl-1], "/") { + // we have a path: add all the possible filenames + tmp := parts[pl-1] + name + // there is an extension based priority also: first properties then yaml + for _, profile := range profiles { + tmp2 := tmp + "-" + profile + for _, ext := range []string{".properties", ".yaml", ".yml"} { + doAppend(tmp2+ext, profile) + } + } + for _, ext := range []string{".properties", ".yaml", ".yml"} { + doAppend(tmp+ext, "") + } + } else { + // just add it since it's a direct file + doAppend(parts[pl-1], "") + } + } + return files, classpaths +} + +// abs returns the absolute path resolved from cws if not already absolute +// it slightly differs from the golang built in version because on windows the built-in considers absolute a path only +// if the volume name is specified. This one only requires a path to begin with os.PathSeparator to be absolute +func abs(path string, cwd string) string { + // on windows IsAbs likely returns false when the drive is missing + // hence, since we accept also paths, we test if the first char is a path separator + if !(filepath.IsAbs(path) || path[0] == os.PathSeparator) && len(cwd) > 0 { + return filepath.Join(cwd, path) + } + return path +} + +// newPropertySourceFromInnerJarFile opens a file inside a zip archive and returns a PropertyGetter or error if unable to handle the file +func newPropertySourceFromInnerJarFile(f *zip.File) (props.PropertyGetter, error) { + rc, err := f.Open() + if err != nil { + return nil, err + } + defer rc.Close() + return newPropertySourceFromStream(rc, f.Name, f.UncompressedSize64) +} + +// newSpringBootArchiveSourceFromReader return a PropertyGetter combined source with properties sources from the jar application. +func newSpringBootArchiveSourceFromReader(reader *zip.Reader, patternMap map[string][]string) map[string]*props.Combined { + ret := make(map[string]*props.Combined) + matcher := antpath.New() + for _, f := range reader.File { + name := f.Name + // the generalized approach implies visiting also jar in BOOT-INF/lib but here we skip it + // to minimize the scanning time given that the general habit is to package config + // directly into the application and not in a lib embedded into the app + if !strings.HasPrefix(name, bootInfJarPath) { + continue + } + for profile, patterns := range patternMap { + for _, pattern := range patterns { + if matcher.Match(pattern, name) { + source, err := newPropertySourceFromInnerJarFile(f) + if err != nil { + log.Tracef("Error while reading properties from %q: %v", name, err) + break + } + val, ok := ret[profile] + if !ok { + val = &props.Combined{Sources: []props.PropertyGetter{}} + ret[profile] = val + } + val.Sources = append(val.Sources, source) + break + } + } + } + } + return ret +} + +// GetSpringBootAppName tries to autodetect the name of a spring boot application given its working dir, +// the jar path and the application arguments. +// When resolving properties, it supports placeholder resolution (a = ${b} -> will lookup then b) +func GetSpringBootAppName(cwd string, jarname string, args []string) (string, error) { + absName := abs(jarname, cwd) + archive, err := zip.OpenReader(absName) + if err != nil { + return "", err + } + defer archive.Close() + if !IsSpringBootArchive(&archive.Reader) { + return "", nil + } + + combined := &props.Combined{Sources: []props.PropertyGetter{ + newArgumentSource(args, "--"), + newArgumentSource(args, "-D"), + // TODO: add the env variable of the process being introspected + // I did not found in the agent packages something to do it cross os. + // On linux one trivial way is to look in the proc fs + //&props.Environment{Normalize: true}, + }} + + // resolved properties referring to other properties (thanks to the Expander) + conf := &props.Configuration{Props: props.NewExpander(combined)} + // Looking in the environment (sysprops, arguments) first + appname, ok := conf.Get(appnamePropName) + if ok { + return appname, nil + } + // otherwise look in the fs and inside the jar + locations := strings.Split(combined.GetDefault(locationPropName, defaultLocations), ";") + confname := combined.GetDefault(configPropName, defaultConfigName) + var profiles []string + rawProfile, ok := combined.Get(activeProfilesPropName) + if ok && len(rawProfile) > 0 { + profiles = strings.Split(rawProfile, ",") + } + files, classpaths := parseURI(locations, confname, profiles, cwd) + fileSources := scanSourcesFromFileSystem(files) + classpathSources := newSpringBootArchiveSourceFromReader(&archive.Reader, classpaths) + //assemble by profile + for _, profile := range append(profiles, "") { + if val, ok := fileSources[profile]; ok { + combined.Sources = append(combined.Sources, val) + } + if val, ok := classpathSources[profile]; ok { + combined.Sources = append(combined.Sources, val) + } + } + + if err != nil { + return "", err + } + + appname, _ = conf.Get(appnamePropName) + return appname, nil +} + +// IsSpringBootArchive heuristically determines if a jar archive is a spring boot packaged jar +func IsSpringBootArchive(reader *zip.Reader) bool { + for _, f := range reader.File { + if f.Name == "BOOT-INF/" { + return true + } + } + return false +} diff --git a/pkg/process/metadata/parser/java/spring_test.go b/pkg/process/metadata/parser/java/spring_test.go new file mode 100644 index 00000000000000..cb3265fdd9e4e6 --- /dev/null +++ b/pkg/process/metadata/parser/java/spring_test.go @@ -0,0 +1,172 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +package javaparser + +import ( + "archive/zip" + "bytes" + "path/filepath" + "strings" + "testing" + + "github.com/stretchr/testify/require" +) + +func TestIsSpringBootArchive(t *testing.T) { + tests := []struct { + name string + files []*zip.File + expected bool + }{ + { + name: "contains a BOOT-INF directory on top level", + files: []*zip.File{ + {FileHeader: zip.FileHeader{Name: "MANIFEST.MF"}}, + {FileHeader: zip.FileHeader{Name: "BOOT-INF/"}}, + }, + expected: true, + }, + { + name: "contains a BOOT-INF file on top level", + files: []*zip.File{ + {FileHeader: zip.FileHeader{Name: "BOOT-INF"}}, + }, + expected: false, + }, + { + name: "contains a BOOT-INF directory on a nested level", + files: []*zip.File{ + {FileHeader: zip.FileHeader{Name: "MANIFEST.MF"}}, + {FileHeader: zip.FileHeader{Name: "META-INF/BOOT-INF/"}}, + }, + expected: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + reader := &zip.Reader{File: tt.files} + require.Equal(t, tt.expected, IsSpringBootArchive(reader)) + }) + } +} + +func TestParseUri(t *testing.T) { + tests := []struct { + name string + locations string + configName string + profiles []string + cwd string + expectedFileSystemLocations map[string][]string + expectedClassPathLocations map[string][]string + }{ + { + name: "should parse the spring boot defaults", + locations: defaultLocations, + configName: defaultConfigName, + profiles: nil, + cwd: filepath.FromSlash("/opt/somewhere/"), + expectedFileSystemLocations: map[string][]string{ + "": { + "/opt/somewhere/application.properties", + "/opt/somewhere/application.yaml", + "/opt/somewhere/application.yml", + "/opt/somewhere/config/application.properties", + "/opt/somewhere/config/application.yaml", + "/opt/somewhere/config/application.yml", + "/opt/somewhere/config/*/application.properties", + "/opt/somewhere/config/*/application.yaml", + "/opt/somewhere/config/*/application.yml", + }, + }, + expectedClassPathLocations: map[string][]string{ + "": { + "BOOT-INF/classes/application.properties", + "BOOT-INF/classes/application.yaml", + "BOOT-INF/classes/application.yml", + "BOOT-INF/classes/config/application.properties", + "BOOT-INF/classes/config/application.yaml", + "BOOT-INF/classes/config/application.yml", + }, + }, + }, + { + name: "should handle profiles and direct files", + locations: "file:/opt/anotherdir/anotherfile.properties;file:./", + configName: "custom", + profiles: []string{"prod"}, + cwd: filepath.FromSlash("/opt/somewhere/"), + expectedFileSystemLocations: map[string][]string{ + "prod": { + "/opt/somewhere/custom-prod.properties", + "/opt/somewhere/custom-prod.yaml", + "/opt/somewhere/custom-prod.yml", + }, + "": { + "/opt/anotherdir/anotherfile.properties", + "/opt/somewhere/custom.properties", + "/opt/somewhere/custom.yaml", + "/opt/somewhere/custom.yml", + }, + }, + expectedClassPathLocations: map[string][]string{}, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + fsLocs, cpLocs := parseURI(strings.Split(tt.locations, ";"), tt.configName, tt.profiles, tt.cwd) + require.Equal(t, tt.expectedFileSystemLocations, fsLocs) + require.Equal(t, tt.expectedClassPathLocations, cpLocs) + }) + } +} + +func writeFile(writer *zip.Writer, name string, content string) error { + w, err := writer.Create(name) + if err != nil { + return err + } + _, err = w.Write([]byte(content)) + return err +} + +func TestNewSpringBootArchiveSourceFromReader(t *testing.T) { + // create a test jar + buf := bytes.NewBuffer([]byte{}) + writer := zip.NewWriter(buf) + require.NoError(t, writeFile(writer, "BOOT-INF/classes/application.properties", "spring.application.name=default")) + require.NoError(t, writeFile(writer, "BOOT-INF/classes/config/prod/application-prod.properties", "spring.application.name=prod")) + require.NoError(t, writer.Close()) + tests := []struct { + name string + patterns []string + expected string + }{ + { + name: "should find default application.properties", + patterns: []string{"BOOT-INF/classes/application.properties", "BOOT-INF/classes/config/*/application.properties"}, + expected: "default", + }, + { + name: "should find prod application.properties", + patterns: []string{ + "BOOT-INF/classes/application-prod.properties", + "BOOT-INF/classes/config/*/application-prod.properties", + }, + expected: "prod", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + reader, err := zip.NewReader(bytes.NewReader(buf.Bytes()), int64(buf.Len())) + require.NoError(t, err) + props := newSpringBootArchiveSourceFromReader(reader, map[string][]string{"": tt.patterns}) + require.Len(t, props, 1) + require.NotNil(t, props[""]) + require.Equal(t, tt.expected, props[""].GetDefault("spring.application.name", "unknown")) + }) + } +} diff --git a/pkg/process/metadata/parser/java/testdata/application-fs.properties b/pkg/process/metadata/parser/java/testdata/application-fs.properties new file mode 100644 index 00000000000000..80347256e9cecd --- /dev/null +++ b/pkg/process/metadata/parser/java/testdata/application-fs.properties @@ -0,0 +1 @@ +spring.application.name=from-fs diff --git a/pkg/process/metadata/parser/java/util.go b/pkg/process/metadata/parser/java/util.go new file mode 100644 index 00000000000000..8fbe60a26ea93e --- /dev/null +++ b/pkg/process/metadata/parser/java/util.go @@ -0,0 +1,146 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +package javaparser + +import ( + "fmt" + "io" + "io/fs" + "os" + "path/filepath" + "strings" + + "github.com/rickar/props" + "github.com/vibrantbyte/go-antpath/antpath" +) + +const ( + // maxParseFileSize is the maximum file size in bytes the parser will accept. + maxParseFileSize = 1024 * 1024 +) + +// mapSource is a type holding properties stored as map. It implements PropertyGetter +type mapSource struct { + m map[string]string +} + +// Get the value for the supplied key +func (y *mapSource) Get(key string) (string, bool) { + val, ok := y.m[key] + return val, ok +} + +// GetDefault gets the value for the supplied key or the defVal if missing +func (y *mapSource) GetDefault(key string, defVal string) string { + val, ok := y.m[key] + if !ok { + return defVal + } + return val +} + +// newArgumentSource a PropertyGetter that is taking key=value from the list of arguments provided +// it can be done to parse both java system properties (the prefix is `-D`) or spring boot property args (the prefix is `--`) +func newArgumentSource(arguments []string, prefix string) props.PropertyGetter { + parsed := make(map[string]string) + for _, val := range arguments { + if !strings.HasPrefix(val, prefix) { + continue + } + parts := strings.SplitN(val[len(prefix):], "=", 2) + if len(parts) == 1 { + parsed[parts[0]] = "" + } else { + parsed[parts[0]] = parts[1] + } + } + return &mapSource{parsed} +} + +// newPropertySourceFromStream create a PropertyGetter by selecting the most appropriate parser giving the file extension. +// An error will be returned if the filesize is greater than maxParseFileSize +func newPropertySourceFromStream(rc io.Reader, filename string, filesize uint64) (props.PropertyGetter, error) { + if filesize > maxParseFileSize { + return nil, fmt.Errorf("unable to parse %q. max file size exceeded(actual: %d, max: %d)", filename, filesize, maxParseFileSize) + } + var properties props.PropertyGetter + var err error + ext := strings.ToLower(filepath.Ext(filename)) + switch ext { + case ".properties": + properties, err = props.Read(rc) + case ".yaml", ".yml": + properties, err = newYamlSource(rc) + default: + return nil, fmt.Errorf("unhandled file type for %q", filename) + } + return properties, err +} + +// newPropertySourceFromFile wraps filename opening and closing, delegating the rest of the logic to newPropertySourceFromStream +func newPropertySourceFromFile(filename string) (props.PropertyGetter, error) { + f, err := os.Open(filename) + if err != nil { + return nil, err + } + defer f.Close() + fi, err := f.Stat() + if err != nil { + return nil, err + } + return newPropertySourceFromStream(f, filename, uint64(fi.Size())) +} + +// longestPathPrefix extracts the longest path's portion that's not a pattern (i.e. /test/**/*.xml will return /test/) +func longestPathPrefix(pattern string) string { + idx := strings.IndexAny(pattern, "?*") + if idx < 0 { + return pattern + } + idx = strings.LastIndex(pattern[:idx], "/") + if idx < 0 { + return "" + } + return pattern[:idx] +} + +// scanSourcesFromFileSystem returns all the PropertyGetter sources built from files matching profilePatterns. +// profilePatterns is a map that has for key the name of the spring profile and for key the values of patterns to be evaluated to find those files +func scanSourcesFromFileSystem(profilePatterns map[string][]string) map[string]*props.Combined { + ret := make(map[string]*props.Combined) + matcher := antpath.New() + for profile, pp := range profilePatterns { + for _, pattern := range pp { + startPath := longestPathPrefix(pattern) + _ = filepath.WalkDir(filepath.FromSlash(startPath), func(p string, d fs.DirEntry, err error) error { + if err != nil { + return err + } + path := filepath.ToSlash(p) + if !matcher.MatchStart(pattern, path) { + if d.IsDir() { + // skip the whole directory subtree since the prefix does not match + return filepath.SkipDir + } + // skip the current file + return nil + } + // a match is found + value, _ := newPropertySourceFromFile(path) + if value != nil { + arr, ok := ret[profile] + if !ok { + arr = &props.Combined{Sources: []props.PropertyGetter{}} + ret[profile] = arr + } + arr.Sources = append(arr.Sources, value) + } + return nil + }) + } + } + return ret +} diff --git a/pkg/process/metadata/parser/java/util_test.go b/pkg/process/metadata/parser/java/util_test.go new file mode 100644 index 00000000000000..98c4c9096f14c1 --- /dev/null +++ b/pkg/process/metadata/parser/java/util_test.go @@ -0,0 +1,124 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +package javaparser + +import ( + "os" + "path/filepath" + "strings" + "testing" + + "github.com/stretchr/testify/require" +) + +func TestArgumentPropertySource(t *testing.T) { + argSlice := []string{"-c", + "-Dspring.application.name=test", + "--spring.profiles.active=prod", + "--d", + "-Ddefined.something", + } + tests := []struct { + name string + prefix string + args []string + expected map[string]string + }{ + { + name: "should parse spring boot app args", + prefix: "--", + args: argSlice, + expected: map[string]string{ + "spring.profiles.active": "prod", + "d": "", + }, + }, + { + name: "should parse system properties", + prefix: "-D", + args: argSlice, + expected: map[string]string{ + "spring.application.name": "test", + "defined.something": "", + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + argSource := newArgumentSource(tt.args, tt.prefix) + for key, expected := range tt.expected { + value, ok := argSource.Get(key) + require.True(t, ok) + require.Equal(t, expected, value) + } + }) + } +} +func TestScanSourcesFromFileSystem(t *testing.T) { + cwd, err := os.Getwd() + require.NoError(t, err) + fileSources := scanSourcesFromFileSystem(map[string][]string{ + "fs": { + filepath.ToSlash(abs("./application-fs.properties", cwd)), + filepath.ToSlash(abs("./*/application-fs.properties", cwd)), + }, + }) + require.Len(t, fileSources, 1) + val, ok := fileSources["fs"] + if !ok { + require.Fail(t, "Expecting property source for fs profile") + } else { + require.Equal(t, "from-fs", val.GetDefault("spring.application.name", "notfound")) + } +} + +func TestNewPropertySourceFromStream(t *testing.T) { + tests := []struct { + name string + filename string + errorExpected bool + filesize uint64 + }{ + { + name: "should not be case sensitive to file extensions", + filename: "test.YAmL", + errorExpected: false, + }, + { + name: "should allow properties files", + filename: "test.properties", + errorExpected: false, + filesize: maxParseFileSize, + }, + { + name: "should allow also yml files", + filename: "TEST.YML", + errorExpected: false, + }, + { + name: "should return an error for unhandled file formats", + filename: "unknown.extension", + errorExpected: true, + }, + { + name: "should not parse files larger than MiB", + filename: "large.yaml", + errorExpected: true, + filesize: maxParseFileSize + 1, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + value, err := newPropertySourceFromStream(strings.NewReader(" "), tt.filename, tt.filesize) + if tt.errorExpected { + require.Error(t, err) + } else { + require.NoError(t, err) + require.NotNil(t, value) + } + }) + } +} diff --git a/pkg/process/metadata/parser/java/yaml.go b/pkg/process/metadata/parser/java/yaml.go new file mode 100644 index 00000000000000..4fa5a7922f24f7 --- /dev/null +++ b/pkg/process/metadata/parser/java/yaml.go @@ -0,0 +1,61 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +package javaparser + +import ( + "io" + "strings" + + "github.com/rickar/props" + + "gopkg.in/yaml.v3" +) + +// flattener is a type used to custom unmarshal a yaml document to a map flat keys +type flattener struct { + props map[string]string +} + +// visit the current node recursively to convert to flattened properties. +// The function will only recurse yaml.MappingNode and handle yaml.ScalarNode values. +// This because this method is tailored to extract simple scalar values only like `spring.application.name` +func (f *flattener) visit(path []string, node *yaml.Node) { + if len(node.Content)%2 != 0 { + return + } + for i := 0; i < len(node.Content); i += 2 { + current := node.Content[i] + next := node.Content[i+1] + if current.Kind != yaml.ScalarNode || !(next.Kind == yaml.ScalarNode || next.Kind == yaml.MappingNode) { + continue + } + path = append(path, current.Value) + + if next.Kind == yaml.MappingNode { + f.visit(path, next) + } else { + f.props[strings.Join(path, ".")] = next.Value // no need to decode... only support primitives not array + } + path = path[:len(path)-1] + + } +} + +// UnmarshalYAML custom yaml unmarshal +func (f *flattener) UnmarshalYAML(value *yaml.Node) error { + f.visit([]string{}, value) + return nil +} + +// newYamlSource creates a mapSource property getter by parsing the content accessed by the reader +func newYamlSource(reader io.Reader) (props.PropertyGetter, error) { + f := flattener{props: map[string]string{}} + err := yaml.NewDecoder(reader).Decode(&f) + if err != nil && err != io.EOF { + return nil, err + } + return &mapSource{m: f.props}, nil +} diff --git a/pkg/process/metadata/parser/java/yaml_test.go b/pkg/process/metadata/parser/java/yaml_test.go new file mode 100644 index 00000000000000..5f9bbb9e7cbc81 --- /dev/null +++ b/pkg/process/metadata/parser/java/yaml_test.go @@ -0,0 +1,53 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +package javaparser + +import ( + "strings" + "testing" + + "github.com/stretchr/testify/require" +) + +func TestNewYamlSource(t *testing.T) { + reader := strings.NewReader(`logging: + level: + org.springframework: ERROR + com.mkyong: DEBUG + +spring: + profiles: + active: dev + main: + banner-mode: off + +email: yaml@mkyong.com +thread-pool: 10 + +wordpress: + menus: + - title: Home + name: Home + path: / + - title: About + name: About + path: /about + themes: + default-folder: /wp-content/themes/mkyong + servers: + - ip: 127.0.0.1 + path: /dev1 + - ip: 127.0.0.2 + path: /dev2 + - ip: 127.0.0.3 + path: /dev3 +`) + source, err := newYamlSource(reader) + require.NoError(t, err) + val, ok := source.Get("logging.level.org.springframework") + require.True(t, ok) + require.Equal(t, val, "ERROR") +} diff --git a/pkg/process/metadata/parser/service.go b/pkg/process/metadata/parser/service.go index edb882a164df91..a2ef465a410a79 100644 --- a/pkg/process/metadata/parser/service.go +++ b/pkg/process/metadata/parser/service.go @@ -17,6 +17,7 @@ import ( "github.com/cihub/seelog" "github.com/DataDog/datadog-agent/pkg/process/metadata" + javaparser "github.com/DataDog/datadog-agent/pkg/process/metadata/parser/java" nodejsparser "github.com/DataDog/datadog-agent/pkg/process/metadata/parser/nodejs" "github.com/DataDog/datadog-agent/pkg/process/procutil" "github.com/DataDog/datadog-agent/pkg/util/log" @@ -336,7 +337,7 @@ func parseCommandContextPython(se *ServiceExtractor, _ *procutil.Process, args [ return "" } -func parseCommandContextJava(_ *ServiceExtractor, _ *procutil.Process, args []string) string { +func parseCommandContextJava(se *ServiceExtractor, process *procutil.Process, args []string) string { prevArgIsFlag := false // Look for dd.service @@ -356,6 +357,11 @@ func parseCommandContextJava(_ *ServiceExtractor, _ *procutil.Process, args []st if arg = trimColonRight(arg); isRuneLetterAt(arg, 0) { if strings.HasSuffix(arg, javaJarExtension) { + value, ok := advancedGuessJavaServiceName(se, process, args, a) + if ok { + return value + } + // return the jar jarName := arg[:len(arg)-len(javaJarExtension)] if !strings.HasSuffix(jarName, javaSnapshotSuffix) { return jarName @@ -393,6 +399,23 @@ func parseCommandContextJava(_ *ServiceExtractor, _ *procutil.Process, args []st return "java" } +// advancedGuessJavaServiceName inspects a jvm process to extract framework specific metadata that could be used as service name +// if found the function will return the service name and true. Otherwise, "",false +func advancedGuessJavaServiceName(se *ServiceExtractor, process *procutil.Process, args []string, jarname string) (string, bool) { + if !se.useImprovedAlgorithm { + return "", false + } + // try to introspect the jar to get service name from spring application name + // TODO: pass process envs + springAppName, err := javaparser.GetSpringBootAppName(process.Cwd, jarname, args) + if err == nil { + return springAppName, true + } + log.Tracef("Error while trying to extract properties from potential spring boot application: %v", err) + + return "", false +} + func parseCommandContextNodeJs(se *ServiceExtractor, process *procutil.Process, args []string) string { if !se.useImprovedAlgorithm { return "node" From e94aa21ec7188d99e852b07dbd65ded9a4a24637 Mon Sep 17 00:00:00 2001 From: Gustavo Caso Date: Wed, 6 Mar 2024 12:54:48 +0100 Subject: [PATCH 030/155] [ASCII-1225] Use the status component to populate cluster agent flare status log (#23472) * use the status component to populate cluster agent flare status log * fix typo --- cmd/cluster-agent/api/agent/agent.go | 6 +++--- pkg/cli/subcommands/dcaflare/command.go | 2 +- pkg/flare/archive_dca.go | 10 +++++----- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/cmd/cluster-agent/api/agent/agent.go b/cmd/cluster-agent/api/agent/agent.go index cf41f8d6b39e9b..edb859ba0ed487 100644 --- a/cmd/cluster-agent/api/agent/agent.go +++ b/cmd/cluster-agent/api/agent/agent.go @@ -45,7 +45,7 @@ func SetupHandlers(r *mux.Router, wmeta workloadmeta.Component, senderManager se r.HandleFunc("/version", getVersion).Methods("GET") r.HandleFunc("/hostname", getHostname).Methods("GET") r.HandleFunc("/flare", func(w http.ResponseWriter, r *http.Request) { - makeFlare(w, r, senderManager, collector, secretResolver) + makeFlare(w, r, senderManager, collector, secretResolver, statusComponent) }).Methods("POST") r.HandleFunc("/stop", stopAgent).Methods("POST") r.HandleFunc("/status", func(w http.ResponseWriter, r *http.Request) { getStatus(w, r, statusComponent) }).Methods("GET") @@ -132,7 +132,7 @@ func getHostname(w http.ResponseWriter, r *http.Request) { w.Write(j) } -func makeFlare(w http.ResponseWriter, r *http.Request, senderManager sender.DiagnoseSenderManager, collector optional.Option[collector.Component], secretResolver secrets.Component) { +func makeFlare(w http.ResponseWriter, r *http.Request, senderManager sender.DiagnoseSenderManager, collector optional.Option[collector.Component], secretResolver secrets.Component, statusComponent status.Component) { log.Infof("Making a flare") w.Header().Set("Content-Type", "application/json") @@ -156,7 +156,7 @@ func makeFlare(w http.ResponseWriter, r *http.Request, senderManager sender.Diag logFile = path.DefaultDCALogFile } diagnoseDeps := diagnose.NewSuitesDeps(senderManager, collector, secretResolver) - filePath, err := flare.CreateDCAArchive(false, path.GetDistPath(), logFile, profile, diagnoseDeps) + filePath, err := flare.CreateDCAArchive(false, path.GetDistPath(), logFile, profile, diagnoseDeps, statusComponent) if err != nil || filePath == "" { if err != nil { log.Errorf("The flare failed to be created: %s", err) diff --git a/pkg/cli/subcommands/dcaflare/command.go b/pkg/cli/subcommands/dcaflare/command.go index 0c278e66195d46..ece40b27b07a0f 100644 --- a/pkg/cli/subcommands/dcaflare/command.go +++ b/pkg/cli/subcommands/dcaflare/command.go @@ -214,7 +214,7 @@ func run(cliParams *cliParams, diagnoseSenderManager diagnosesendermanager.Compo } fmt.Fprintln(color.Output, color.YellowString("Initiating flare locally, some logs will be missing.")) diagnoseDeps := diagnose.NewSuitesDeps(diagnoseSenderManager, collector, secretResolver) - filePath, e = flare.CreateDCAArchive(true, path.GetDistPath(), logFile, profile, diagnoseDeps) + filePath, e = flare.CreateDCAArchive(true, path.GetDistPath(), logFile, profile, diagnoseDeps, nil) if e != nil { fmt.Printf("The flare zipfile failed to be created: %s\n", e) return e diff --git a/pkg/flare/archive_dca.go b/pkg/flare/archive_dca.go index a73c0c9ab2b8f4..4f99b9e8e0b7c6 100644 --- a/pkg/flare/archive_dca.go +++ b/pkg/flare/archive_dca.go @@ -16,11 +16,11 @@ import ( flarehelpers "github.com/DataDog/datadog-agent/comp/core/flare/helpers" flaretypes "github.com/DataDog/datadog-agent/comp/core/flare/types" + "github.com/DataDog/datadog-agent/comp/core/status" apiv1 "github.com/DataDog/datadog-agent/pkg/clusteragent/api/v1" "github.com/DataDog/datadog-agent/pkg/clusteragent/custommetrics" "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/diagnose" - clusteragentStatus "github.com/DataDog/datadog-agent/pkg/status/clusteragent" "github.com/DataDog/datadog-agent/pkg/status/render" "github.com/DataDog/datadog-agent/pkg/util/kubernetes/apiserver" "github.com/DataDog/datadog-agent/pkg/util/log" @@ -30,7 +30,7 @@ import ( type ProfileData map[string][]byte // CreateDCAArchive packages up the files -func CreateDCAArchive(local bool, distPath, logFilePath string, pdata ProfileData, diagnoseDeps diagnose.SuitesDeps) (string, error) { +func CreateDCAArchive(local bool, distPath, logFilePath string, pdata ProfileData, diagnoseDeps diagnose.SuitesDeps, statusComponent status.Component) (string, error) { fb, err := flarehelpers.NewFlareBuilder(local) if err != nil { return "", err @@ -41,18 +41,18 @@ func CreateDCAArchive(local bool, distPath, logFilePath string, pdata ProfileDat "dist": filepath.Join(distPath, "conf.d"), } - createDCAArchive(fb, confSearchPaths, logFilePath, pdata, diagnoseDeps) + createDCAArchive(fb, confSearchPaths, logFilePath, pdata, diagnoseDeps, statusComponent) return fb.Save() } -func createDCAArchive(fb flaretypes.FlareBuilder, confSearchPaths map[string]string, logFilePath string, pdata ProfileData, diagnoseDeps diagnose.SuitesDeps) { +func createDCAArchive(fb flaretypes.FlareBuilder, confSearchPaths map[string]string, logFilePath string, pdata ProfileData, diagnoseDeps diagnose.SuitesDeps, statusComponent status.Component) { // If the request against the API does not go through we don't collect the status log. if fb.IsLocal() { fb.AddFile("local", nil) } else { // The Status will be unavailable unless the agent is running. // Only zip it up if the agent is running - err := fb.AddFileFromFunc("cluster-agent-status.log", clusteragentStatus.GetAndFormatStatus) + err := fb.AddFileFromFunc("cluster-agent-status.log", func() ([]byte, error) { return statusComponent.GetStatus("text", true) }) if err != nil { log.Errorf("Error getting the status of the DCA, %q", err) return From 7a13dd7e1391a18b3b27cc0b74e58675eded71af Mon Sep 17 00:00:00 2001 From: AliDatadog <125997632+AliDatadog@users.noreply.github.com> Date: Wed, 6 Mar 2024 13:30:13 +0100 Subject: [PATCH 031/155] [CONTINT-3759] Add a retry mechanism in the SBOM scanner for container images (#23323) * replace the main for loop by a workqueue * check that the image still exists before scanning * reorganize function orders with simpler functions first and more complex at the end * add cache cleaner goroutine in its own goroutine * split functions and add config options for the retry mechanism * releasenotes * move the shutdown in the startScanRequestHandler --- pkg/config/setup/config.go | 2 + pkg/sbom/scanner/scanner.go | 331 +++++++++++------- ...tion-container-image-c741bf991c27cd06.yaml | 4 + 3 files changed, 219 insertions(+), 118 deletions(-) create mode 100644 releasenotes/notes/add-retry-mechanism-sbom-collection-container-image-c741bf991c27cd06.yaml diff --git a/pkg/config/setup/config.go b/pkg/config/setup/config.go index 7e02bcf85b856e..469aa1238b15e3 100644 --- a/pkg/config/setup/config.go +++ b/pkg/config/setup/config.go @@ -1166,6 +1166,8 @@ func InitConfig(config pkgconfigmodel.Config) { config.BindEnvAndSetDefault("sbom.cache.enabled", true) config.BindEnvAndSetDefault("sbom.cache.max_disk_size", 1000*1000*100) // used by custom cache: max disk space used by cached objects. Not equal to max disk usage config.BindEnvAndSetDefault("sbom.cache.clean_interval", "1h") // used by custom cache. + config.BindEnvAndSetDefault("sbom.scan_queue.base_backoff", "5m") + config.BindEnvAndSetDefault("sbom.scan_queue.max_backoff", "1h") // Container SBOM configuration config.BindEnvAndSetDefault("sbom.container_image.enabled", false) diff --git a/pkg/sbom/scanner/scanner.go b/pkg/sbom/scanner/scanner.go index 16477b9ca06b68..03666b8d426fb6 100644 --- a/pkg/sbom/scanner/scanner.go +++ b/pkg/sbom/scanner/scanner.go @@ -13,6 +13,8 @@ import ( "sync" "time" + "k8s.io/client-go/util/workqueue" + "github.com/DataDog/datadog-agent/comp/core/workloadmeta" "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/sbom" @@ -23,50 +25,83 @@ import ( ) const ( - defaultScanTimeout = time.Second * 30 + defaultScanTimeout = 30 * time.Second ) var ( globalScanner *Scanner ) -type scanRequest struct { - sbom.ScanRequest - collector collectors.Collector -} - -// sendResult sends a ScanResult to the channel associated with the scan request. -// This function should not be blocking -func (request *scanRequest) sendResult(result *sbom.ScanResult) { - select { - case request.collector.Channel() <- *result: - default: - _ = log.Errorf("Failed to push scanner result for '%s' into channel", request.ID()) - } -} - // Scanner defines the scanner type Scanner struct { startOnce sync.Once running bool - scanQueue chan scanRequest disk filesystem.Disk + + // scanQueue is the workqueue used to process scan requests + scanQueue workqueue.RateLimitingInterface + // cacheMutex is used to protect the cache from concurrent access + // It cannot be cleaned when a scan is running + cacheMutex sync.Mutex } -// Scan performs a scan -func (s *Scanner) Scan(request sbom.ScanRequest) error { - collectorName := request.Collector() - collector := collectors.Collectors[collectorName] - if collector == nil { - return fmt.Errorf("invalid collector '%s'", collectorName) +// NewScanner creates a new SBOM scanner. Call Start to start the store and its +// collectors. +func NewScanner(cfg config.Config) *Scanner { + return &Scanner{ + scanQueue: workqueue.NewRateLimitingQueue( + workqueue.NewItemExponentialFailureRateLimiter( + cfg.GetDuration("sbom.scan_queue.base_backoff"), + cfg.GetDuration("sbom.scan_queue.max_backoff"), + ), + ), + disk: filesystem.NewDisk(), } +} - select { - case s.scanQueue <- scanRequest{ScanRequest: request, collector: collector}: - return nil - default: - return fmt.Errorf("collector queue for '%s' is full", collectorName) +// CreateGlobalScanner creates a SBOM scanner, sets it as the default +// global one, and returns it. Start() needs to be called before any data +// collection happens. +func CreateGlobalScanner(cfg config.Config) (*Scanner, error) { + if !cfg.GetBool("sbom.host.enabled") && !cfg.GetBool("sbom.container_image.enabled") && !cfg.GetBool("runtime_security_config.sbom.enabled") { + return nil, nil + } + + if globalScanner != nil { + return nil, errors.New("global SBOM scanner already set, should only happen once") + } + + for name, collector := range collectors.Collectors { + if err := collector.Init(cfg); err != nil { + return nil, fmt.Errorf("failed to initialize SBOM collector '%s': %w", name, err) + } } + + globalScanner = NewScanner(cfg) + return globalScanner, nil +} + +// GetGlobalScanner returns a global instance of the SBOM scanner. It does +// not create one if it's not already set (see CreateGlobalScanner) and returns +// nil in that case. +func GetGlobalScanner() *Scanner { + return globalScanner +} + +// Start starts the scanner +func (s *Scanner) Start(ctx context.Context) { + s.startOnce.Do(func() { + s.start(ctx) + }) +} + +// Scan enqueues a scan request to the scanner +func (s *Scanner) Scan(request sbom.ScanRequest) error { + if s.scanQueue == nil { + return errors.New("scanner not started") + } + s.scanQueue.Add(request) + return nil } func (s *Scanner) enoughDiskSpace(opts sbom.ScanOptions) error { @@ -86,129 +121,189 @@ func (s *Scanner) enoughDiskSpace(opts sbom.ScanOptions) error { return nil } -func (s *Scanner) start(ctx context.Context) { - if s.running { - return +// sendResult sends a ScanResult to the channel associated with the scan request. +// This function should not be blocking +func sendResult(requestID string, result *sbom.ScanResult, collector collectors.Collector) { + select { + case collector.Channel() <- *result: + default: + _ = log.Errorf("Failed to push scanner result for '%s' into channel", requestID) } +} + +// startCacheCleaner periodically cleans the SBOM cache of all collectors +func (s *Scanner) startCacheCleaner(ctx context.Context) { + cleanTicker := time.NewTicker(config.Datadog.GetDuration("sbom.cache.clean_interval")) + defer func() { + cleanTicker.Stop() + s.running = false + }() go func() { - cleanTicker := time.NewTicker(config.Datadog.GetDuration("sbom.cache.clean_interval")) - defer cleanTicker.Stop() - s.running = true - defer func() { s.running = false }() - loop: for { select { - // We don't want to keep scanning if image channel is not empty but context is expired case <-ctx.Done(): - break loop + return case <-cleanTicker.C: + s.cacheMutex.Lock() + log.Debug("cleaning SBOM cache") for _, collector := range collectors.Collectors { if err := collector.CleanCache(); err != nil { _ = log.Warnf("could not clean SBOM cache: %v", err) } } - case request, ok := <-s.scanQueue: - // Channel has been closed we should exit - if !ok { - break loop - } - telemetry.SBOMAttempts.Inc(request.Collector(), request.Type()) - - collector := request.collector - if err := s.enoughDiskSpace(request.collector.Options()); err != nil { - var imgMeta *workloadmeta.ContainerImageMetadata - if store := workloadmeta.GetGlobalStore(); store != nil { - img, err := store.GetImage(request.ID()) - if err != nil { - imgMeta = img - } - } - - result := sbom.ScanResult{ - ImgMeta: imgMeta, - Error: fmt.Errorf("failed to check current disk usage: %w", err), - } - request.sendResult(&result) - telemetry.SBOMFailures.Inc(request.Collector(), request.Type(), "disk_space") - continue - } + s.cacheMutex.Unlock() + } + } + }() +} - scanTimeout := request.collector.Options().Timeout - if scanTimeout == 0 { - scanTimeout = defaultScanTimeout - } +func (s *Scanner) start(ctx context.Context) { + if s.running { + return + } + s.running = true + s.startCacheCleaner(ctx) + s.startScanRequestHandler(ctx) +} - scanContext, cancel := context.WithTimeout(ctx, scanTimeout) - createdAt := time.Now() - scanResult := collector.Scan(scanContext, request.ScanRequest) - generationDuration := time.Since(createdAt) - scanResult.CreatedAt = createdAt - scanResult.Duration = generationDuration - if scanResult.Error != nil { - telemetry.SBOMFailures.Inc(request.Collector(), request.Type(), "scan") - } else { - telemetry.SBOMGenerationDuration.Observe(generationDuration.Seconds(), request.Collector(), request.Type()) - } - cancel() - request.sendResult(&scanResult) - if request.collector.Options().WaitAfter != 0 { - t := time.NewTimer(request.collector.Options().WaitAfter) - select { - case <-ctx.Done(): - case <-t.C: - } - t.Stop() - } +func (s *Scanner) startScanRequestHandler(ctx context.Context) { + go func() { + <-ctx.Done() + s.scanQueue.ShutDown() + }() + go func() { + for { + r, shutdown := s.scanQueue.Get() + if shutdown { + break } + handleScanRequest(ctx, r, s) } - for _, collector := range collectors.Collectors { collector.Shutdown() } }() } -// Start starts the scanner -func (s *Scanner) Start(ctx context.Context) { - s.startOnce.Do(func() { - s.start(ctx) - }) +func handleScanRequest(ctx context.Context, r interface{}, s *Scanner) { + request, ok := r.(sbom.ScanRequest) + if !ok { + _ = log.Errorf("invalid scan request type '%T'", r) + s.scanQueue.Forget(r) + s.scanQueue.Done(r) + return + } + telemetry.SBOMAttempts.Inc(request.Collector(), request.Type()) + collector, ok := collectors.Collectors[request.Collector()] + if !ok { + _ = log.Errorf("invalid collector '%s'", request.Collector()) + s.scanQueue.Forget(request) + s.scanQueue.Done(request) + return + } + + var imgMeta *workloadmeta.ContainerImageMetadata + if collector.Type() != collectors.ContainerImageScanType { + imgMeta = s.getImageMetadata(request) + if imgMeta == nil { + return + } + } + s.processScan(ctx, request, imgMeta, collector) } -// NewScanner creates a new SBOM scanner. Call Start to start the store and its -// collectors. -func NewScanner() *Scanner { - return &Scanner{ - scanQueue: make(chan scanRequest, 2000), - disk: filesystem.NewDisk(), +// getImageMetadata returns the image metadata if the collector is a container image collector +// and the metadata is found in the store. +func (s *Scanner) getImageMetadata(request sbom.ScanRequest) *workloadmeta.ContainerImageMetadata { + store := workloadmeta.GetGlobalStore() + if store == nil { + _ = log.Errorf("workloadmeta store is not initialized") + s.scanQueue.AddRateLimited(request) + s.scanQueue.Done(request) + return nil } + img, err := store.GetImage(request.ID()) + if err != nil || img == nil { + log.Debugf("image metadata not found for image id %s: %s", request.ID(), err) + s.scanQueue.Forget(request) + s.scanQueue.Done(request) + return nil + } + return img } -// CreateGlobalScanner creates a SBOM scanner, sets it as the default -// global one, and returns it. Start() needs to be called before any data -// collection happens. -func CreateGlobalScanner(cfg config.Config) (*Scanner, error) { - if !cfg.GetBool("sbom.host.enabled") && !cfg.GetBool("sbom.container_image.enabled") && !cfg.GetBool("runtime_security_config.sbom.enabled") { - return nil, nil +func (s *Scanner) processScan(ctx context.Context, request sbom.ScanRequest, imgMeta *workloadmeta.ContainerImageMetadata, collector collectors.Collector) { + if !s.checkDiskSpace(request, imgMeta, collector) { + return } + scanContext, cancel := context.WithTimeout(ctx, timeout(collector)) + defer cancel() + scanResult := s.performScan(scanContext, request, collector) + sendResult(request.ID(), &scanResult, collector) + s.handleScanResult(scanResult, request, collector) + waitAfterScanIfNecessary(ctx, collector) +} - if globalScanner != nil { - return nil, errors.New("global SBOM scanner already set, should only happen once") +// checkDiskSpace checks if there is enough disk space to perform the scan +// It sends an error result to the collector if there is not enough space +// It returns a boolean indicating if the scan should be pursued +func (s *Scanner) checkDiskSpace(request sbom.ScanRequest, imgMeta *workloadmeta.ContainerImageMetadata, collector collectors.Collector) bool { + if err := s.enoughDiskSpace(collector.Options()); err != nil { + result := sbom.ScanResult{ + ImgMeta: imgMeta, + Error: fmt.Errorf("failed to check current disk usage: %w", err), + } + sendResult(request.ID(), &result, collector) + telemetry.SBOMFailures.Inc(request.Collector(), request.Type(), "disk_space") + return false } + return true +} - for name, collector := range collectors.Collectors { - if err := collector.Init(cfg); err != nil { - return nil, fmt.Errorf("failed to initialize SBOM collector '%s': %w", name, err) +func (s *Scanner) performScan(ctx context.Context, request sbom.ScanRequest, collector collectors.Collector) sbom.ScanResult { + createdAt := time.Now() + + s.cacheMutex.Lock() + scanResult := collector.Scan(ctx, request) + s.cacheMutex.Unlock() + + generationDuration := time.Since(createdAt) + + scanResult.CreatedAt = createdAt + scanResult.Duration = generationDuration + return scanResult +} + +func (s *Scanner) handleScanResult(scanResult sbom.ScanResult, request sbom.ScanRequest, collector collectors.Collector) { + if scanResult.Error != nil { + telemetry.SBOMFailures.Inc(request.Collector(), request.Type(), "scan") + if collector.Type() == collectors.ContainerImageScanType { + s.scanQueue.AddRateLimited(request) } + } else { + telemetry.SBOMGenerationDuration.Observe(scanResult.Duration.Seconds(), request.Collector(), request.Type()) + s.scanQueue.Forget(request) } + s.scanQueue.Done(request) +} - globalScanner = NewScanner() - return globalScanner, nil +func waitAfterScanIfNecessary(ctx context.Context, collector collectors.Collector) { + wait := collector.Options().WaitAfter + if wait == 0 { + return + } + t := time.NewTimer(wait) + defer t.Stop() + select { + case <-ctx.Done(): + case <-t.C: + } } -// GetGlobalScanner returns a global instance of the SBOM scanner. It does -// not create one if it's not already set (see CreateGlobalScanner) and returns -// nil in that case. -func GetGlobalScanner() *Scanner { - return globalScanner +func timeout(collector collectors.Collector) time.Duration { + scanTimeout := collector.Options().Timeout + if scanTimeout == 0 { + scanTimeout = defaultScanTimeout + } + return scanTimeout } diff --git a/releasenotes/notes/add-retry-mechanism-sbom-collection-container-image-c741bf991c27cd06.yaml b/releasenotes/notes/add-retry-mechanism-sbom-collection-container-image-c741bf991c27cd06.yaml new file mode 100644 index 00000000000000..0de1e3f6f934d0 --- /dev/null +++ b/releasenotes/notes/add-retry-mechanism-sbom-collection-container-image-c741bf991c27cd06.yaml @@ -0,0 +1,4 @@ +enhancements: + - | + Add a retry mechanism to Software Bill of Materials (SBOM) collection for container images. + This will help to avoid intermittent failures during the collection process. From 8d1670709c028c8403f091c102638de038c62360 Mon Sep 17 00:00:00 2001 From: Guy Arbitman Date: Wed, 6 Mar 2024 14:49:51 +0200 Subject: [PATCH 032/155] usm: tests: Fixed context deadline in test (#23475) * usm: tests: Fixed context deadline in test * Fixed license and go mod --- LICENSE-3rdparty.csv | 1 + pkg/util/grpc/go.mod | 2 +- pkg/util/grpc/server.go | 9 ++++++++- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/LICENSE-3rdparty.csv b/LICENSE-3rdparty.csv index e4ad85b0229134..46a4347d6d6685 100644 --- a/LICENSE-3rdparty.csv +++ b/LICENSE-3rdparty.csv @@ -2222,6 +2222,7 @@ core,golang.org/x/net/html/charset,BSD-3-Clause,Copyright (c) 2009 The Go Author core,golang.org/x/net/http/httpguts,BSD-3-Clause,Copyright (c) 2009 The Go Authors. All rights reserved core,golang.org/x/net/http/httpproxy,BSD-3-Clause,Copyright (c) 2009 The Go Authors. All rights reserved core,golang.org/x/net/http2,BSD-3-Clause,Copyright (c) 2009 The Go Authors. All rights reserved +core,golang.org/x/net/http2/h2c,BSD-3-Clause,Copyright (c) 2009 The Go Authors. All rights reserved core,golang.org/x/net/http2/hpack,BSD-3-Clause,Copyright (c) 2009 The Go Authors. All rights reserved core,golang.org/x/net/icmp,BSD-3-Clause,Copyright (c) 2009 The Go Authors. All rights reserved core,golang.org/x/net/idna,BSD-3-Clause,Copyright (c) 2009 The Go Authors. All rights reserved diff --git a/pkg/util/grpc/go.mod b/pkg/util/grpc/go.mod index 5470b218254b46..926bc3fdd9aeab 100644 --- a/pkg/util/grpc/go.mod +++ b/pkg/util/grpc/go.mod @@ -14,6 +14,7 @@ require ( github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575 github.com/grpc-ecosystem/go-grpc-middleware v1.2.0 github.com/stretchr/testify v1.8.4 + golang.org/x/net v0.19.0 google.golang.org/grpc v1.59.0 ) @@ -27,7 +28,6 @@ require ( github.com/pmezard/go-difflib v1.0.0 // indirect github.com/tinylib/msgp v1.1.8 // indirect go.uber.org/atomic v1.11.0 // indirect - golang.org/x/net v0.19.0 // indirect golang.org/x/sys v0.15.0 // indirect golang.org/x/text v0.14.0 // indirect google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d // indirect diff --git a/pkg/util/grpc/server.go b/pkg/util/grpc/server.go index 32ed9cc3540103..fa2ccbec460bc4 100644 --- a/pkg/util/grpc/server.go +++ b/pkg/util/grpc/server.go @@ -13,6 +13,8 @@ import ( "strings" "time" + "golang.org/x/net/http2" + "golang.org/x/net/http2/h2c" "google.golang.org/grpc" ) @@ -28,13 +30,18 @@ var ConnContextKey = &contextKey{"http-connection"} func NewMuxedGRPCServer(addr string, tlsConfig *tls.Config, grpcServer *grpc.Server, httpHandler http.Handler) *http.Server { // our gRPC clients do not handle protocol negotiation, so we need to force // HTTP/2 + var handler http.Handler + // when HTTP/2 traffic that is not TLS being sent we need to create a new handler which + // is able to handle the pre fix magic sent + handler = h2c.NewHandler(handlerWithFallback(grpcServer, httpHandler), &http2.Server{}) if tlsConfig != nil { tlsConfig.NextProtos = []string{"h2"} + handler = handlerWithFallback(grpcServer, httpHandler) } return &http.Server{ Addr: addr, - Handler: handlerWithFallback(grpcServer, httpHandler), + Handler: handler, TLSConfig: tlsConfig, ConnContext: func(ctx context.Context, c net.Conn) context.Context { // Store the connection in the context so requests can reference it if needed From 81857b16a071576e33caf1297749092ea1bf1c6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guillermo=20Juli=C3=A1n?= Date: Wed, 6 Mar 2024 13:50:22 +0100 Subject: [PATCH 033/155] Ensure the ioctl call only responds to our test (#23477) --- pkg/ebpf/printk_patcher_test.go | 2 +- pkg/ebpf/testdata/c/logdebug-test.c | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/pkg/ebpf/printk_patcher_test.go b/pkg/ebpf/printk_patcher_test.go index 23433c2702eb29..af13f38849e080 100644 --- a/pkg/ebpf/printk_patcher_test.go +++ b/pkg/ebpf/printk_patcher_test.go @@ -89,7 +89,7 @@ func TestPatchPrintkNewline(t *testing.T) { // The logdebugtest program is a kprobe on do_vfs_ioctl, so we can use that to trigger the // it and check that the output is correct. We do not actually care about the arguments. - if _, _, errno := syscall.Syscall(syscall.SYS_IOCTL, uintptr(0), 0, uintptr(0)); errno != 0 { + if _, _, errno := syscall.Syscall(syscall.SYS_IOCTL, uintptr(0), 0xfafafefe, uintptr(0)); errno != 0 { // Only valid return value is ENOTTY (invalid ioctl for device) because indeed we // are not doing any valid ioctl, we just want to trigger the kprobe require.Equal(t, syscall.ENOTTY, errno) diff --git a/pkg/ebpf/testdata/c/logdebug-test.c b/pkg/ebpf/testdata/c/logdebug-test.c index 8e3e06c32206bd..6d953a171650f5 100644 --- a/pkg/ebpf/testdata/c/logdebug-test.c +++ b/pkg/ebpf/testdata/c/logdebug-test.c @@ -1,4 +1,7 @@ +#include "kconfig.h" #include "ktypes.h" +#include +#include "bpf_tracing.h" #include "bpf_helpers.h" #include "bpf_helpers_custom.h" #include @@ -41,8 +44,17 @@ int somefunc(unsigned int number) { return pid + number; } +static int __always_inline is_logdebug_call(struct pt_regs *ctx) { + u32 cmd = PT_REGS_PARM3(ctx); + return cmd == 0xfafafefe; +}; + SEC("kprobe/do_vfs_ioctl") int logdebugtest(struct pt_regs *ctx) { + if (!is_logdebug_call(ctx)) { + return 0; + } + log_debug("hi"); // small word, should get a single MovImm instruction log_debug("123456"); // Small word, single movImm instruction on 64-bit boundary (add 2 bytes for newline and null character) log_debug("1234567"); // null character has to go on next 64b word From 013d489a474178d12af1394ac8905b156ae4e3c5 Mon Sep 17 00:00:00 2001 From: Vickenty Fesunov Date: Wed, 6 Mar 2024 13:53:37 +0100 Subject: [PATCH 034/155] AMLII-1528 Fix handling of empty datagrams (#23341) * Split tests for stream and datagram socket options * Fix handling of empty datagrams For datagram socket, an empty payload does not indicate end of file. The socket is shared between multiple applications and must continue accepting payloads even if an incorrect one is sent by one of the clients. * Add changelog * Update releasenotes/notes/uds-empty-payload-1e0b5dcce2d7898a.yaml Co-authored-by: cecilia saixue watt --------- Co-authored-by: cecilia saixue watt --- comp/dogstatsd/listeners/uds_common.go | 2 +- comp/dogstatsd/listeners/uds_common_test.go | 57 ------------------- comp/dogstatsd/listeners/uds_datagram_test.go | 57 ++++++++++++++++++- comp/dogstatsd/listeners/uds_stream_test.go | 54 +++++++++++++++++- .../uds-empty-payload-1e0b5dcce2d7898a.yaml | 2 + 5 files changed, 112 insertions(+), 60 deletions(-) create mode 100644 releasenotes/notes/uds-empty-payload-1e0b5dcce2d7898a.yaml diff --git a/comp/dogstatsd/listeners/uds_common.go b/comp/dogstatsd/listeners/uds_common.go index 4d2a63b46e8585..9ab6d33ebb1060 100644 --- a/comp/dogstatsd/listeners/uds_common.go +++ b/comp/dogstatsd/listeners/uds_common.go @@ -269,7 +269,7 @@ func (l *UDSListener) handleConnection(conn *net.UnixConn, closeFunc CloseFuncti } else { n, _, err = conn.ReadFromUnix(packet.Buffer[n:maxPacketLength]) } - if n == 0 && oobn == 0 { + if n == 0 && oobn == 0 && l.transport == "unix" { log.Debugf("dogstatsd-uds: %s connection closed", l.transport) return nil } diff --git a/comp/dogstatsd/listeners/uds_common_test.go b/comp/dogstatsd/listeners/uds_common_test.go index 4bd6734fc05a0e..d51ec3f68bbe0d 100644 --- a/comp/dogstatsd/listeners/uds_common_test.go +++ b/comp/dogstatsd/listeners/uds_common_test.go @@ -10,11 +10,9 @@ package listeners import ( - "encoding/binary" "net" "os" "testing" - "time" "golang.org/x/net/nettest" @@ -116,58 +114,3 @@ func testStartStopUDSListener(t *testing.T, listenerFactory udsListenerFactory, _, err = net.Dial(transport, socketPath) assert.NotNil(t, err) } - -func testUDSReceive(t *testing.T, listenerFactory udsListenerFactory, transport string) { - socketPath := testSocketPath(t) - - mockConfig := map[string]interface{}{} - mockConfig[socketPathConfKey(transport)] = socketPath - mockConfig["dogstatsd_origin_detection"] = false - - var contents0 = []byte("daemon:666|g|#sometag1:somevalue1,sometag2:somevalue2") - var contents1 = []byte("daemon:999|g|#sometag1:somevalue1") - - packetsChannel := make(chan packets.Packets) - - config := fulfillDepsWithConfig(t, mockConfig) - s, err := listenerFactory(packetsChannel, newPacketPoolManagerUDS(config), config) - assert.Nil(t, err) - assert.NotNil(t, s) - - s.Listen() - defer s.Stop() - conn, err := net.Dial(transport, socketPath) - assert.Nil(t, err) - defer conn.Close() - - if transport == "unix" { - binary.Write(conn, binary.LittleEndian, int32(len(contents0))) - } - conn.Write(contents0) - - if transport == "unix" { - binary.Write(conn, binary.LittleEndian, int32(len(contents1))) - } - conn.Write(contents1) - - select { - case pkts := <-packetsChannel: - assert.Equal(t, 2, len(pkts)) - - packet := pkts[0] - assert.NotNil(t, packet) - assert.Equal(t, packet.Contents, contents0) - assert.Equal(t, packet.Origin, "") - assert.Equal(t, packet.Source, packets.UDS) - - packet = pkts[1] - assert.NotNil(t, packet) - assert.Equal(t, packet.Contents, contents1) - assert.Equal(t, packet.Origin, "") - assert.Equal(t, packet.Source, packets.UDS) - - case <-time.After(2 * time.Second): - assert.FailNow(t, "Timeout on receive channel") - } - -} diff --git a/comp/dogstatsd/listeners/uds_datagram_test.go b/comp/dogstatsd/listeners/uds_datagram_test.go index bb14407fb96aa5..148b28ba758baa 100644 --- a/comp/dogstatsd/listeners/uds_datagram_test.go +++ b/comp/dogstatsd/listeners/uds_datagram_test.go @@ -10,7 +10,11 @@ package listeners import ( + "net" "testing" + "time" + + "github.com/stretchr/testify/assert" "github.com/DataDog/datadog-agent/comp/core/config" "github.com/DataDog/datadog-agent/comp/dogstatsd/packets" @@ -29,5 +33,56 @@ func TestStartStopUDSDatagramListener(t *testing.T) { } func TestUDSDatagramReceive(t *testing.T) { - testUDSReceive(t, udsDatagramListenerFactory, "unixgram") + socketPath := testSocketPath(t) + + mockConfig := map[string]interface{}{} + mockConfig[socketPathConfKey("unixgram")] = socketPath + mockConfig["dogstatsd_origin_detection"] = false + + var contents0 = []byte("daemon:666|g|#sometag1:somevalue1,sometag2:somevalue2") + var contents1 = []byte("daemon:999|g|#sometag1:somevalue1") + + packetsChannel := make(chan packets.Packets) + + config := fulfillDepsWithConfig(t, mockConfig) + s, err := udsDatagramListenerFactory(packetsChannel, newPacketPoolManagerUDS(config), config) + assert.Nil(t, err) + assert.NotNil(t, s) + + s.Listen() + defer s.Stop() + conn, err := net.Dial("unixgram", socketPath) + assert.Nil(t, err) + defer conn.Close() + + conn.Write([]byte{}) + conn.Write(contents0) + conn.Write(contents1) + + select { + case pkts := <-packetsChannel: + assert.Equal(t, 3, len(pkts)) + + packet := pkts[0] + assert.NotNil(t, packet) + assert.Equal(t, packet.Contents, []byte{}) + assert.Equal(t, packet.Origin, "") + assert.Equal(t, packet.Source, packets.UDS) + + packet = pkts[1] + assert.NotNil(t, packet) + assert.Equal(t, packet.Contents, contents0) + assert.Equal(t, packet.Origin, "") + assert.Equal(t, packet.Source, packets.UDS) + + packet = pkts[2] + assert.NotNil(t, packet) + assert.Equal(t, packet.Contents, contents1) + assert.Equal(t, packet.Origin, "") + assert.Equal(t, packet.Source, packets.UDS) + + case <-time.After(2 * time.Second): + assert.FailNow(t, "Timeout on receive channel") + } + } diff --git a/comp/dogstatsd/listeners/uds_stream_test.go b/comp/dogstatsd/listeners/uds_stream_test.go index 8a97939055d678..495845fb645f51 100644 --- a/comp/dogstatsd/listeners/uds_stream_test.go +++ b/comp/dogstatsd/listeners/uds_stream_test.go @@ -10,7 +10,12 @@ package listeners import ( + "encoding/binary" + "net" "testing" + "time" + + "github.com/stretchr/testify/assert" "github.com/DataDog/datadog-agent/comp/core/config" "github.com/DataDog/datadog-agent/comp/dogstatsd/packets" @@ -29,5 +34,52 @@ func TestStartStopUDSStreamListener(t *testing.T) { } func TestUDSStreamReceive(t *testing.T) { - testUDSReceive(t, udsStreamListenerFactory, "unix") + socketPath := testSocketPath(t) + + mockConfig := map[string]interface{}{} + mockConfig[socketPathConfKey("unix")] = socketPath + mockConfig["dogstatsd_origin_detection"] = false + + var contents0 = []byte("daemon:666|g|#sometag1:somevalue1,sometag2:somevalue2") + var contents1 = []byte("daemon:999|g|#sometag1:somevalue1") + + packetsChannel := make(chan packets.Packets) + + config := fulfillDepsWithConfig(t, mockConfig) + s, err := udsStreamListenerFactory(packetsChannel, newPacketPoolManagerUDS(config), config) + assert.Nil(t, err) + assert.NotNil(t, s) + + s.Listen() + defer s.Stop() + conn, err := net.Dial("unix", socketPath) + assert.Nil(t, err) + defer conn.Close() + + binary.Write(conn, binary.LittleEndian, int32(len(contents0))) + conn.Write(contents0) + + binary.Write(conn, binary.LittleEndian, int32(len(contents1))) + conn.Write(contents1) + + select { + case pkts := <-packetsChannel: + assert.Equal(t, 2, len(pkts)) + + packet := pkts[0] + assert.NotNil(t, packet) + assert.Equal(t, packet.Contents, contents0) + assert.Equal(t, packet.Origin, "") + assert.Equal(t, packet.Source, packets.UDS) + + packet = pkts[1] + assert.NotNil(t, packet) + assert.Equal(t, packet.Contents, contents1) + assert.Equal(t, packet.Origin, "") + assert.Equal(t, packet.Source, packets.UDS) + + case <-time.After(2 * time.Second): + assert.FailNow(t, "Timeout on receive channel") + } + } diff --git a/releasenotes/notes/uds-empty-payload-1e0b5dcce2d7898a.yaml b/releasenotes/notes/uds-empty-payload-1e0b5dcce2d7898a.yaml new file mode 100644 index 00000000000000..d7ed7c77da0d5e --- /dev/null +++ b/releasenotes/notes/uds-empty-payload-1e0b5dcce2d7898a.yaml @@ -0,0 +1,2 @@ +fixes: + - Empty UDS payloads no longer cause the DogStatsD server to close the socket. From e86f34b7da37ffe837fcce757f93fe95436e8afc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guillermo=20Juli=C3=A1n?= Date: Wed, 6 Mar 2024 13:56:48 +0100 Subject: [PATCH 035/155] Use common base URL for KMT images (#23441) * Always use the base URL in platforms.json * Allow using branch names per distro --- tasks/kernel_matrix_testing/download.py | 21 +++++++++++++-------- tasks/kernel_matrix_testing/init_kmt.py | 2 +- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/tasks/kernel_matrix_testing/download.py b/tasks/kernel_matrix_testing/download.py index c8da727b5da25f..669c8f9147aec4 100644 --- a/tasks/kernel_matrix_testing/download.py +++ b/tasks/kernel_matrix_testing/download.py @@ -27,18 +27,18 @@ def get_vmconfig_file(template="system-probe"): } -def requires_update(url_base, rootfs_dir, image): - sum_url = os.path.join(url_base, "master", image + ".sum") +def requires_update(url_base, rootfs_dir, image, branch): + sum_url = os.path.join(url_base, branch, image + ".sum") r = requests.get(sum_url) new_sum = r.text.rstrip().split(' ')[0] - debug(f"[debug] new_sum: {new_sum}") + debug(f"[debug] {branch}/{image} new_sum: {new_sum}") if not os.path.exists(os.path.join(rootfs_dir, f"{image}.sum")): return True with open(os.path.join(rootfs_dir, f"{image}.sum")) as f: original_sum = f.read().rstrip().split(' ')[0] - debug(f"[debug] original_sum: {original_sum}") + debug(f"[debug] {image} original_sum: {original_sum}") if new_sum != original_sum: return True return False @@ -56,11 +56,14 @@ def download_rootfs(ctx, rootfs_dir, vmconfig_template): arch = arch_mapping[platform.machine()] to_download = list() file_ls = list() + branch_mapping: dict[str, str] = dict() + for tag in platforms[arch]: path = os.path.basename(platforms[arch][tag]) if path.endswith(".xz"): path = path[: -len(".xz")] + branch_mapping[path] = os.path.dirname(platforms[arch][tag]) or "master" file_ls.append(os.path.basename(path)) # if file does not exist download it. @@ -82,7 +85,7 @@ def download_rootfs(ctx, rootfs_dir, vmconfig_template): # download and compare hash sums present_files = list(set(file_ls) - set(to_download)) + disks_to_download for f in present_files: - if requires_update(url_base, rootfs_dir, f): + if requires_update(url_base, rootfs_dir, f, branch_mapping.get(f, "master")): debug(f"[debug] updating {f} from S3.") ctx.run(f"rm -f {f}") ctx.run(f"rm -f {f}.sum") @@ -97,19 +100,21 @@ def download_rootfs(ctx, rootfs_dir, vmconfig_template): try: with os.fdopen(fd, 'w') as tmp: for f in to_download: - info(f"[+] {f} needs to be downloaded") + branch = branch_mapping.get(f, "master") + info(f"[+] {f} needs to be downloaded, using branch {branch}") xz = ".xz" if f not in disks_to_download else "" filename = f"{f}{xz}" sum_file = f"{f}.sum" # remove this file and sum ctx.run(f"rm -f {os.path.join(rootfs_dir, filename)}") ctx.run(f"rm -f {os.path.join(rootfs_dir, sum_file)}") + ctx.run(f"rm -f {os.path.join(rootfs_dir, f)} || true") # remove old file if it exists # download package entry - tmp.write(os.path.join(url_base, "master", filename) + "\n") + tmp.write(os.path.join(url_base, branch, filename) + "\n") tmp.write(f" dir={rootfs_dir}\n") tmp.write(f" out={filename}\n") # download sum entry - tmp.write(os.path.join(url_base, "master", f"{sum_file}") + "\n") + tmp.write(os.path.join(url_base, branch, f"{sum_file}") + "\n") tmp.write(f" dir={rootfs_dir}\n") tmp.write(f" out={sum_file}\n") tmp.write("\n") diff --git a/tasks/kernel_matrix_testing/init_kmt.py b/tasks/kernel_matrix_testing/init_kmt.py index ab56eb60fb3d53..b0ed55f8dc97d0 100644 --- a/tasks/kernel_matrix_testing/init_kmt.py +++ b/tasks/kernel_matrix_testing/init_kmt.py @@ -63,7 +63,7 @@ def init_kernel_matrix_testing_system(ctx, lite): # download dependencies if not lite: - download_rootfs(ctx, kmt_os.rootfs_dir) + download_rootfs(ctx, kmt_os.rootfs_dir, "system-probe") gen_ssh_key(ctx, kmt_os.kmt_dir) # build docker compile image From c6477f277ad9514041504b9eecccaaae1d279403 Mon Sep 17 00:00:00 2001 From: Cedric Lamoriniere Date: Wed, 6 Mar 2024 14:09:38 +0100 Subject: [PATCH 036/155] Fix: force k8s.io packages version to v0.28.6 (#23479) --- LICENSE-3rdparty.csv | 35 +++++++++++-------- go.mod | 40 +++++++++++----------- go.sum | 80 ++++++++++++++++++++++---------------------- 3 files changed, 80 insertions(+), 75 deletions(-) diff --git a/LICENSE-3rdparty.csv b/LICENSE-3rdparty.csv index 46a4347d6d6685..9b1723ece3ad98 100644 --- a/LICENSE-3rdparty.csv +++ b/LICENSE-3rdparty.csv @@ -1214,11 +1214,11 @@ core,github.com/google/cel-go/interpreter,Apache-2.0,Copyright (c) 2018 The Go A core,github.com/google/cel-go/interpreter/functions,Apache-2.0,Copyright (c) 2018 The Go Authors. All rights reserved core,github.com/google/cel-go/parser,Apache-2.0,Copyright (c) 2018 The Go Authors. All rights reserved core,github.com/google/cel-go/parser/gen,Apache-2.0,Copyright (c) 2018 The Go Authors. All rights reserved -core,github.com/google/gnostic/compiler,Apache-2.0,"Copyright 2017-2020, Google LLC." -core,github.com/google/gnostic/extensions,Apache-2.0,"Copyright 2017-2020, Google LLC." -core,github.com/google/gnostic/jsonschema,Apache-2.0,"Copyright 2017-2020, Google LLC." -core,github.com/google/gnostic/openapiv2,Apache-2.0,"Copyright 2017-2020, Google LLC." -core,github.com/google/gnostic/openapiv3,Apache-2.0,"Copyright 2017-2020, Google LLC." +core,github.com/google/gnostic-models/compiler,Apache-2.0,"Copyright 2017-2022, Google LLC." +core,github.com/google/gnostic-models/extensions,Apache-2.0,"Copyright 2017-2022, Google LLC" +core,github.com/google/gnostic-models/jsonschema,Apache-2.0,"Copyright 2017-2022, Google LLC" +core,github.com/google/gnostic-models/openapiv2,Apache-2.0,"Copyright 2017-2022, Google LLC" +core,github.com/google/gnostic-models/openapiv3,Apache-2.0,"Copyright 2017-2022, Google LLC" core,github.com/google/go-cmp/cmp,BSD-3-Clause,Copyright (c) 2017 The Go Authors. All rights reserved. core,github.com/google/go-cmp/cmp/internal/diff,BSD-3-Clause,Copyright (c) 2017 The Go Authors. All rights reserved. core,github.com/google/go-cmp/cmp/internal/flags,BSD-3-Clause,Copyright (c) 2017 The Go Authors. All rights reserved. @@ -1462,12 +1462,12 @@ core,github.com/mitchellh/hashstructure/v2,MIT,Copyright (c) 2016 Mitchell Hashi core,github.com/mitchellh/mapstructure,MIT,Copyright (c) 2013 Mitchell Hashimoto core,github.com/mitchellh/reflectwalk,MIT,Copyright (c) 2013 Mitchell Hashimoto core,github.com/mkrautz/goar,BSD-3-Clause,Copyright (c) 2011 Mikkel Krautz -core,github.com/moby/buildkit/frontend/dockerfile/command,Apache-2.0,Aaron L. Xu | Aaron Lehmann | Akihiro Suda | Alexander Morozov | Alice Frosi | Allen Sun | Anda Xu | Anthony Sottile | Arnaud Bailly | Bin Liu | Brian Goff | Daniel Nephin | Dave Chen | David Calavera | Dennis Chen | Derek McGowan | Doug Davis | Edgar Lee | Eli Uriegas | Fernando Miguel | Hao Hu | Helen Xie | Himanshu Pandey | Hiromu Nakamura | Ian Campbell | Iskander (Alex) Sharipov | Jean-Pierre Huynh | Jessica Frazelle | John Howard | Jonathan Stoppani | Justas Brazauskas | Justin Cormack | Kunal Kushwaha | Lajos Papp | Matt Rickard | Michael Crosby | Miyachi Katsuya | Nao YONASHIRO | Natasha Jarus | Noel Georgi <18496730+frezbo@users.noreply.github.com> | Ondrej Fabry | Patrick Van Stee | Ri Xu | Sebastiaan van Stijn | Shev Yan | Simon Ferquel | Stefan Weil | Thomas Leonard | Thomas Shaw | Tibor Vass | Tiffany Jernigan | Tino Rusch | Tobias Klauser | Tomas Tomecek | Tomohiro Kusumoto | Tõnis Tiigi | Vincent Demeester | Wei Fu | Yong Tang | Yuichiro Kaneko | Ziv Tsarfati | f0 | 郑泽宇 -core,github.com/moby/buildkit/frontend/dockerfile/instructions,Apache-2.0,Aaron L. Xu | Aaron Lehmann | Akihiro Suda | Alexander Morozov | Alice Frosi | Allen Sun | Anda Xu | Anthony Sottile | Arnaud Bailly | Bin Liu | Brian Goff | Daniel Nephin | Dave Chen | David Calavera | Dennis Chen | Derek McGowan | Doug Davis | Edgar Lee | Eli Uriegas | Fernando Miguel | Hao Hu | Helen Xie | Himanshu Pandey | Hiromu Nakamura | Ian Campbell | Iskander (Alex) Sharipov | Jean-Pierre Huynh | Jessica Frazelle | John Howard | Jonathan Stoppani | Justas Brazauskas | Justin Cormack | Kunal Kushwaha | Lajos Papp | Matt Rickard | Michael Crosby | Miyachi Katsuya | Nao YONASHIRO | Natasha Jarus | Noel Georgi <18496730+frezbo@users.noreply.github.com> | Ondrej Fabry | Patrick Van Stee | Ri Xu | Sebastiaan van Stijn | Shev Yan | Simon Ferquel | Stefan Weil | Thomas Leonard | Thomas Shaw | Tibor Vass | Tiffany Jernigan | Tino Rusch | Tobias Klauser | Tomas Tomecek | Tomohiro Kusumoto | Tõnis Tiigi | Vincent Demeester | Wei Fu | Yong Tang | Yuichiro Kaneko | Ziv Tsarfati | f0 | 郑泽宇 -core,github.com/moby/buildkit/frontend/dockerfile/parser,Apache-2.0,Aaron L. Xu | Aaron Lehmann | Akihiro Suda | Alexander Morozov | Alice Frosi | Allen Sun | Anda Xu | Anthony Sottile | Arnaud Bailly | Bin Liu | Brian Goff | Daniel Nephin | Dave Chen | David Calavera | Dennis Chen | Derek McGowan | Doug Davis | Edgar Lee | Eli Uriegas | Fernando Miguel | Hao Hu | Helen Xie | Himanshu Pandey | Hiromu Nakamura | Ian Campbell | Iskander (Alex) Sharipov | Jean-Pierre Huynh | Jessica Frazelle | John Howard | Jonathan Stoppani | Justas Brazauskas | Justin Cormack | Kunal Kushwaha | Lajos Papp | Matt Rickard | Michael Crosby | Miyachi Katsuya | Nao YONASHIRO | Natasha Jarus | Noel Georgi <18496730+frezbo@users.noreply.github.com> | Ondrej Fabry | Patrick Van Stee | Ri Xu | Sebastiaan van Stijn | Shev Yan | Simon Ferquel | Stefan Weil | Thomas Leonard | Thomas Shaw | Tibor Vass | Tiffany Jernigan | Tino Rusch | Tobias Klauser | Tomas Tomecek | Tomohiro Kusumoto | Tõnis Tiigi | Vincent Demeester | Wei Fu | Yong Tang | Yuichiro Kaneko | Ziv Tsarfati | f0 | 郑泽宇 -core,github.com/moby/buildkit/frontend/dockerfile/shell,Apache-2.0,Aaron L. Xu | Aaron Lehmann | Akihiro Suda | Alexander Morozov | Alice Frosi | Allen Sun | Anda Xu | Anthony Sottile | Arnaud Bailly | Bin Liu | Brian Goff | Daniel Nephin | Dave Chen | David Calavera | Dennis Chen | Derek McGowan | Doug Davis | Edgar Lee | Eli Uriegas | Fernando Miguel | Hao Hu | Helen Xie | Himanshu Pandey | Hiromu Nakamura | Ian Campbell | Iskander (Alex) Sharipov | Jean-Pierre Huynh | Jessica Frazelle | John Howard | Jonathan Stoppani | Justas Brazauskas | Justin Cormack | Kunal Kushwaha | Lajos Papp | Matt Rickard | Michael Crosby | Miyachi Katsuya | Nao YONASHIRO | Natasha Jarus | Noel Georgi <18496730+frezbo@users.noreply.github.com> | Ondrej Fabry | Patrick Van Stee | Ri Xu | Sebastiaan van Stijn | Shev Yan | Simon Ferquel | Stefan Weil | Thomas Leonard | Thomas Shaw | Tibor Vass | Tiffany Jernigan | Tino Rusch | Tobias Klauser | Tomas Tomecek | Tomohiro Kusumoto | Tõnis Tiigi | Vincent Demeester | Wei Fu | Yong Tang | Yuichiro Kaneko | Ziv Tsarfati | f0 | 郑泽宇 -core,github.com/moby/buildkit/util/stack,Apache-2.0,Aaron L. Xu | Aaron Lehmann | Akihiro Suda | Alexander Morozov | Alice Frosi | Allen Sun | Anda Xu | Anthony Sottile | Arnaud Bailly | Bin Liu | Brian Goff | Daniel Nephin | Dave Chen | David Calavera | Dennis Chen | Derek McGowan | Doug Davis | Edgar Lee | Eli Uriegas | Fernando Miguel | Hao Hu | Helen Xie | Himanshu Pandey | Hiromu Nakamura | Ian Campbell | Iskander (Alex) Sharipov | Jean-Pierre Huynh | Jessica Frazelle | John Howard | Jonathan Stoppani | Justas Brazauskas | Justin Cormack | Kunal Kushwaha | Lajos Papp | Matt Rickard | Michael Crosby | Miyachi Katsuya | Nao YONASHIRO | Natasha Jarus | Noel Georgi <18496730+frezbo@users.noreply.github.com> | Ondrej Fabry | Patrick Van Stee | Ri Xu | Sebastiaan van Stijn | Shev Yan | Simon Ferquel | Stefan Weil | Thomas Leonard | Thomas Shaw | Tibor Vass | Tiffany Jernigan | Tino Rusch | Tobias Klauser | Tomas Tomecek | Tomohiro Kusumoto | Tõnis Tiigi | Vincent Demeester | Wei Fu | Yong Tang | Yuichiro Kaneko | Ziv Tsarfati | f0 | 郑泽宇 -core,github.com/moby/buildkit/util/suggest,Apache-2.0,Aaron L. Xu | Aaron Lehmann | Akihiro Suda | Alexander Morozov | Alice Frosi | Allen Sun | Anda Xu | Anthony Sottile | Arnaud Bailly | Bin Liu | Brian Goff | Daniel Nephin | Dave Chen | David Calavera | Dennis Chen | Derek McGowan | Doug Davis | Edgar Lee | Eli Uriegas | Fernando Miguel | Hao Hu | Helen Xie | Himanshu Pandey | Hiromu Nakamura | Ian Campbell | Iskander (Alex) Sharipov | Jean-Pierre Huynh | Jessica Frazelle | John Howard | Jonathan Stoppani | Justas Brazauskas | Justin Cormack | Kunal Kushwaha | Lajos Papp | Matt Rickard | Michael Crosby | Miyachi Katsuya | Nao YONASHIRO | Natasha Jarus | Noel Georgi <18496730+frezbo@users.noreply.github.com> | Ondrej Fabry | Patrick Van Stee | Ri Xu | Sebastiaan van Stijn | Shev Yan | Simon Ferquel | Stefan Weil | Thomas Leonard | Thomas Shaw | Tibor Vass | Tiffany Jernigan | Tino Rusch | Tobias Klauser | Tomas Tomecek | Tomohiro Kusumoto | Tõnis Tiigi | Vincent Demeester | Wei Fu | Yong Tang | Yuichiro Kaneko | Ziv Tsarfati | f0 | 郑泽宇 +core,github.com/moby/buildkit/frontend/dockerfile/command,Apache-2.0,"Aaron L. Xu | Aaron Lehmann | Aaron Lehmann | Abdur Rehman | Addam Hardy | Adrian Plata | Aidan Hobson Sayers | Akihiro Suda | Alan Fregtman <941331+darkvertex@users.noreply.github.com> | Alex Couture-Beil | Alex Mayer | Alex Suraci | Alexander Morozov | Alexis Murzeau | Alice Frosi | Allen Sun | Amen Belayneh | Anca Iordache | Anda Xu | Anders F Björklund | Andrea Bolognani | Andrea Luzzardi | Andrew Chang | Andrey Smirnov | Andy Alt | Andy Caldwell | Ankush Agarwal | Anthony Sottile | Anurag Goel | Anusha Ragunathan | Arnaud Bailly | Avi Deitcher | Bastiaan Bakker | Ben Longo | Bertrand Paquet | Bin Liu | Brandon Mitchell | Brian Goff | Ce Gao | Chaerim Yeo | Changwei Ge | Chanhun Jeong | ChaosGramer | Charles Chan | Charles Korn | Charles Law | Chenbin | Chris Goller | Chris McKinnel | Christian Höltje | Christian Weichel | Ciro S. Costa | Claudiu Belu | Colin Chartier | Corey Larson | Cory Bennett | Cory Snider | CrazyMax | Csaba Apagyi | Dan Duvall | Daniel Cassidy | Daniel Nephin | Darren Shepherd | Dave Chen | Dave Henderson | Dave Tucker | David Calavera | David Dooling | David Gageot | David Karlsson | Davis Schirmer | Dennis Chen | Derek McGowan | Dharmit Shah | Ding Fei | Doug Davis | Edgar Lee | Eli Uriegas | Elias Faxö | Eng Zer Jun | Eric Engestrom | Erik Sipsma | Fernando Miguel | Fiona Klute | Foysal Iqbal | Fred Cox | Frieder Bluemle | Gabriel | Gabriel Adrian Samfira | Gaetan de Villele | Gahl Saraf | George | Govind Rai | Grant Reaber | Guilhem C | Hans van den Bogert | Hao Hu | Hector S | Helen Xie | Himanshu Pandey | Hiromu Nakamura | HowJMay | Hugo Santos | Ian Campbell | Ilya Dmitrichenko | Iskander (Alex) Sharipov | Jacob Gillespie | Jacob MacElroy | Jean-Pierre Huynh | Jeffrey Huang | Jesse Rittner | Jessica Frazelle | Jitender Kumar | John Howard | John Maguire | John Mulhausen | John Tims | Jon Zeolla | Jonathan Azoff | Jonathan Giannuzzi | Jonathan Stoppani | Jonny Stoten | JordanGoasdoue | Julian Goede | Justas Brazauskas | Justin Chadwell | Justin Cormack | Justin Garrison | Jörg Franke <359489+NewJorg@users.noreply.github.com> | Kang, Matthew | Kees Cook | Kevin Burke | Kir Kolyshkin | Kohei Tokunaga | Koichi Shiraishi | Kris-Mikael Krister | Kunal Kushwaha | Kyle | Lajos Papp | Levi Harrison | Lu Jingxiao | Luca Visentin | Maciej Kalisz | Madhav Puri | Manu Gupta | Marcus Comstedt | Mark Gordon | Marko Kohtala | Mary Anthony | Matias Insaurralde | Matt Kang | Matt Rickard | Maxime Lagresle | Michael Crosby | Michael Friis | Michael Irwin | Miguel Ángel Jimeno | Mihai Borobocea | Mike Brown | Mikhail Vasin | Misty Stanley-Jones | Miyachi Katsuya | Morgan Bauer | Morlay | Nao YONASHIRO | Natasha Jarus | Nathan Sullivan | Nick Miyake | Nick Santos | Nikhil Pandeti | Noel Georgi <18496730+frezbo@users.noreply.github.com> | Oliver Bristow | Omer Duchovne <79370724+od-cyera@users.noreply.github.com> | Omer Mizrahi | Ondrej Fabry | Otto Kekäläinen | Pablo Chico de Guzman | Patrick Hemmer | Patrick Lang | Patrick Van Stee | Paul ""TBBle"" Hampson | Paweł Gronowski | Peter Dave Hello | Petr Fedchenkov | Phil Estes | Pierre Fenoll | Pranav Pandit | Pratik Raj | Prayag Verma | Qiang Huang | Remy Suen | Ri Xu | Rob Taylor | Robert Estelle | Rubens Figueiredo | Sam Whited | Sascha Schwarze | Sean P. Kane | Sebastiaan van Stijn | Seiya Miyata | Serhat Gülçiçek | Sertac Ozercan | Shev Yan | Shijiang Wei | Shingo Omura | Shiwei Zhang | Siebe Schaap | Silvin Lubecki <31478878+silvin-lubecki@users.noreply.github.com> | Simon Ferquel | Slava Semushin | Solomon Hykes | Stefan Scherer | Stefan Weil | StefanSchoof | Stepan Blyshchak | Steve Lohr | Sven Dowideit | Takuya Noguchi | Thomas Leonard | Thomas Riccardi | Thomas Shaw | Tianon Gravi | Tibor Vass | Tiffany Jernigan | Tim Waugh | Tim Wraight | Tino Rusch | Tobias Klauser | Tomas Tomecek | Tomasz Kopczynski | Tomohiro Kusumoto | Troels Liebe Bentsen | Tõnis Tiigi | Valentin Lorentz | Vasek - Tom C | Victor Vieux | Victoria Bialas | Vincent Demeester | Vlad A. Ionescu | Vladislav Ivanov | Wang Yumu <37442693@qq.com> | Wei Fu | Wei Zhang | Xiaofan Zhang | Ximo Guanter | Yamazaki Masashi | Yan Song | Yong Tang | Yuichiro Kaneko | Yurii Rashkovskii | Zach Badgett | Ziv Tsarfati | a-palchikov | coryb | dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> | dito | eyherabh | f0 | genglu.gl | ggjulio | jgeiger | jlecordier | joey | jroenf | kevinmeredith | l00397676 | lalyos | liwenqi | lixiaobing10051267 | lomot | masibw | mikelinjie <294893458@qq.com> | msg | pieterdd | squeegels <1674195+squeegels@users.noreply.github.com> | sunchunming | wingkwong | zhangwenlong | 岁丰 | 沈陵 | 郑泽宇 " +core,github.com/moby/buildkit/frontend/dockerfile/instructions,Apache-2.0,"Aaron L. Xu | Aaron Lehmann | Aaron Lehmann | Abdur Rehman | Addam Hardy | Adrian Plata | Aidan Hobson Sayers | Akihiro Suda | Alan Fregtman <941331+darkvertex@users.noreply.github.com> | Alex Couture-Beil | Alex Mayer | Alex Suraci | Alexander Morozov | Alexis Murzeau | Alice Frosi | Allen Sun | Amen Belayneh | Anca Iordache | Anda Xu | Anders F Björklund | Andrea Bolognani | Andrea Luzzardi | Andrew Chang | Andrey Smirnov | Andy Alt | Andy Caldwell | Ankush Agarwal | Anthony Sottile | Anurag Goel | Anusha Ragunathan | Arnaud Bailly | Avi Deitcher | Bastiaan Bakker | Ben Longo | Bertrand Paquet | Bin Liu | Brandon Mitchell | Brian Goff | Ce Gao | Chaerim Yeo | Changwei Ge | Chanhun Jeong | ChaosGramer | Charles Chan | Charles Korn | Charles Law | Chenbin | Chris Goller | Chris McKinnel | Christian Höltje | Christian Weichel | Ciro S. Costa | Claudiu Belu | Colin Chartier | Corey Larson | Cory Bennett | Cory Snider | CrazyMax | Csaba Apagyi | Dan Duvall | Daniel Cassidy | Daniel Nephin | Darren Shepherd | Dave Chen | Dave Henderson | Dave Tucker | David Calavera | David Dooling | David Gageot | David Karlsson | Davis Schirmer | Dennis Chen | Derek McGowan | Dharmit Shah | Ding Fei | Doug Davis | Edgar Lee | Eli Uriegas | Elias Faxö | Eng Zer Jun | Eric Engestrom | Erik Sipsma | Fernando Miguel | Fiona Klute | Foysal Iqbal | Fred Cox | Frieder Bluemle | Gabriel | Gabriel Adrian Samfira | Gaetan de Villele | Gahl Saraf | George | Govind Rai | Grant Reaber | Guilhem C | Hans van den Bogert | Hao Hu | Hector S | Helen Xie | Himanshu Pandey | Hiromu Nakamura | HowJMay | Hugo Santos | Ian Campbell | Ilya Dmitrichenko | Iskander (Alex) Sharipov | Jacob Gillespie | Jacob MacElroy | Jean-Pierre Huynh | Jeffrey Huang | Jesse Rittner | Jessica Frazelle | Jitender Kumar | John Howard | John Maguire | John Mulhausen | John Tims | Jon Zeolla | Jonathan Azoff | Jonathan Giannuzzi | Jonathan Stoppani | Jonny Stoten | JordanGoasdoue | Julian Goede | Justas Brazauskas | Justin Chadwell | Justin Cormack | Justin Garrison | Jörg Franke <359489+NewJorg@users.noreply.github.com> | Kang, Matthew | Kees Cook | Kevin Burke | Kir Kolyshkin | Kohei Tokunaga | Koichi Shiraishi | Kris-Mikael Krister | Kunal Kushwaha | Kyle | Lajos Papp | Levi Harrison | Lu Jingxiao | Luca Visentin | Maciej Kalisz | Madhav Puri | Manu Gupta | Marcus Comstedt | Mark Gordon | Marko Kohtala | Mary Anthony | Matias Insaurralde | Matt Kang | Matt Rickard | Maxime Lagresle | Michael Crosby | Michael Friis | Michael Irwin | Miguel Ángel Jimeno | Mihai Borobocea | Mike Brown | Mikhail Vasin | Misty Stanley-Jones | Miyachi Katsuya | Morgan Bauer | Morlay | Nao YONASHIRO | Natasha Jarus | Nathan Sullivan | Nick Miyake | Nick Santos | Nikhil Pandeti | Noel Georgi <18496730+frezbo@users.noreply.github.com> | Oliver Bristow | Omer Duchovne <79370724+od-cyera@users.noreply.github.com> | Omer Mizrahi | Ondrej Fabry | Otto Kekäläinen | Pablo Chico de Guzman | Patrick Hemmer | Patrick Lang | Patrick Van Stee | Paul ""TBBle"" Hampson | Paweł Gronowski | Peter Dave Hello | Petr Fedchenkov | Phil Estes | Pierre Fenoll | Pranav Pandit | Pratik Raj | Prayag Verma | Qiang Huang | Remy Suen | Ri Xu | Rob Taylor | Robert Estelle | Rubens Figueiredo | Sam Whited | Sascha Schwarze | Sean P. Kane | Sebastiaan van Stijn | Seiya Miyata | Serhat Gülçiçek | Sertac Ozercan | Shev Yan | Shijiang Wei | Shingo Omura | Shiwei Zhang | Siebe Schaap | Silvin Lubecki <31478878+silvin-lubecki@users.noreply.github.com> | Simon Ferquel | Slava Semushin | Solomon Hykes | Stefan Scherer | Stefan Weil | StefanSchoof | Stepan Blyshchak | Steve Lohr | Sven Dowideit | Takuya Noguchi | Thomas Leonard | Thomas Riccardi | Thomas Shaw | Tianon Gravi | Tibor Vass | Tiffany Jernigan | Tim Waugh | Tim Wraight | Tino Rusch | Tobias Klauser | Tomas Tomecek | Tomasz Kopczynski | Tomohiro Kusumoto | Troels Liebe Bentsen | Tõnis Tiigi | Valentin Lorentz | Vasek - Tom C | Victor Vieux | Victoria Bialas | Vincent Demeester | Vlad A. Ionescu | Vladislav Ivanov | Wang Yumu <37442693@qq.com> | Wei Fu | Wei Zhang | Xiaofan Zhang | Ximo Guanter | Yamazaki Masashi | Yan Song | Yong Tang | Yuichiro Kaneko | Yurii Rashkovskii | Zach Badgett | Ziv Tsarfati | a-palchikov | coryb | dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> | dito | eyherabh | f0 | genglu.gl | ggjulio | jgeiger | jlecordier | joey | jroenf | kevinmeredith | l00397676 | lalyos | liwenqi | lixiaobing10051267 | lomot | masibw | mikelinjie <294893458@qq.com> | msg | pieterdd | squeegels <1674195+squeegels@users.noreply.github.com> | sunchunming | wingkwong | zhangwenlong | 岁丰 | 沈陵 | 郑泽宇 " +core,github.com/moby/buildkit/frontend/dockerfile/parser,Apache-2.0,"Aaron L. Xu | Aaron Lehmann | Aaron Lehmann | Abdur Rehman | Addam Hardy | Adrian Plata | Aidan Hobson Sayers | Akihiro Suda | Alan Fregtman <941331+darkvertex@users.noreply.github.com> | Alex Couture-Beil | Alex Mayer | Alex Suraci | Alexander Morozov | Alexis Murzeau | Alice Frosi | Allen Sun | Amen Belayneh | Anca Iordache | Anda Xu | Anders F Björklund | Andrea Bolognani | Andrea Luzzardi | Andrew Chang | Andrey Smirnov | Andy Alt | Andy Caldwell | Ankush Agarwal | Anthony Sottile | Anurag Goel | Anusha Ragunathan | Arnaud Bailly | Avi Deitcher | Bastiaan Bakker | Ben Longo | Bertrand Paquet | Bin Liu | Brandon Mitchell | Brian Goff | Ce Gao | Chaerim Yeo | Changwei Ge | Chanhun Jeong | ChaosGramer | Charles Chan | Charles Korn | Charles Law | Chenbin | Chris Goller | Chris McKinnel | Christian Höltje | Christian Weichel | Ciro S. Costa | Claudiu Belu | Colin Chartier | Corey Larson | Cory Bennett | Cory Snider | CrazyMax | Csaba Apagyi | Dan Duvall | Daniel Cassidy | Daniel Nephin | Darren Shepherd | Dave Chen | Dave Henderson | Dave Tucker | David Calavera | David Dooling | David Gageot | David Karlsson | Davis Schirmer | Dennis Chen | Derek McGowan | Dharmit Shah | Ding Fei | Doug Davis | Edgar Lee | Eli Uriegas | Elias Faxö | Eng Zer Jun | Eric Engestrom | Erik Sipsma | Fernando Miguel | Fiona Klute | Foysal Iqbal | Fred Cox | Frieder Bluemle | Gabriel | Gabriel Adrian Samfira | Gaetan de Villele | Gahl Saraf | George | Govind Rai | Grant Reaber | Guilhem C | Hans van den Bogert | Hao Hu | Hector S | Helen Xie | Himanshu Pandey | Hiromu Nakamura | HowJMay | Hugo Santos | Ian Campbell | Ilya Dmitrichenko | Iskander (Alex) Sharipov | Jacob Gillespie | Jacob MacElroy | Jean-Pierre Huynh | Jeffrey Huang | Jesse Rittner | Jessica Frazelle | Jitender Kumar | John Howard | John Maguire | John Mulhausen | John Tims | Jon Zeolla | Jonathan Azoff | Jonathan Giannuzzi | Jonathan Stoppani | Jonny Stoten | JordanGoasdoue | Julian Goede | Justas Brazauskas | Justin Chadwell | Justin Cormack | Justin Garrison | Jörg Franke <359489+NewJorg@users.noreply.github.com> | Kang, Matthew | Kees Cook | Kevin Burke | Kir Kolyshkin | Kohei Tokunaga | Koichi Shiraishi | Kris-Mikael Krister | Kunal Kushwaha | Kyle | Lajos Papp | Levi Harrison | Lu Jingxiao | Luca Visentin | Maciej Kalisz | Madhav Puri | Manu Gupta | Marcus Comstedt | Mark Gordon | Marko Kohtala | Mary Anthony | Matias Insaurralde | Matt Kang | Matt Rickard | Maxime Lagresle | Michael Crosby | Michael Friis | Michael Irwin | Miguel Ángel Jimeno | Mihai Borobocea | Mike Brown | Mikhail Vasin | Misty Stanley-Jones | Miyachi Katsuya | Morgan Bauer | Morlay | Nao YONASHIRO | Natasha Jarus | Nathan Sullivan | Nick Miyake | Nick Santos | Nikhil Pandeti | Noel Georgi <18496730+frezbo@users.noreply.github.com> | Oliver Bristow | Omer Duchovne <79370724+od-cyera@users.noreply.github.com> | Omer Mizrahi | Ondrej Fabry | Otto Kekäläinen | Pablo Chico de Guzman | Patrick Hemmer | Patrick Lang | Patrick Van Stee | Paul ""TBBle"" Hampson | Paweł Gronowski | Peter Dave Hello | Petr Fedchenkov | Phil Estes | Pierre Fenoll | Pranav Pandit | Pratik Raj | Prayag Verma | Qiang Huang | Remy Suen | Ri Xu | Rob Taylor | Robert Estelle | Rubens Figueiredo | Sam Whited | Sascha Schwarze | Sean P. Kane | Sebastiaan van Stijn | Seiya Miyata | Serhat Gülçiçek | Sertac Ozercan | Shev Yan | Shijiang Wei | Shingo Omura | Shiwei Zhang | Siebe Schaap | Silvin Lubecki <31478878+silvin-lubecki@users.noreply.github.com> | Simon Ferquel | Slava Semushin | Solomon Hykes | Stefan Scherer | Stefan Weil | StefanSchoof | Stepan Blyshchak | Steve Lohr | Sven Dowideit | Takuya Noguchi | Thomas Leonard | Thomas Riccardi | Thomas Shaw | Tianon Gravi | Tibor Vass | Tiffany Jernigan | Tim Waugh | Tim Wraight | Tino Rusch | Tobias Klauser | Tomas Tomecek | Tomasz Kopczynski | Tomohiro Kusumoto | Troels Liebe Bentsen | Tõnis Tiigi | Valentin Lorentz | Vasek - Tom C | Victor Vieux | Victoria Bialas | Vincent Demeester | Vlad A. Ionescu | Vladislav Ivanov | Wang Yumu <37442693@qq.com> | Wei Fu | Wei Zhang | Xiaofan Zhang | Ximo Guanter | Yamazaki Masashi | Yan Song | Yong Tang | Yuichiro Kaneko | Yurii Rashkovskii | Zach Badgett | Ziv Tsarfati | a-palchikov | coryb | dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> | dito | eyherabh | f0 | genglu.gl | ggjulio | jgeiger | jlecordier | joey | jroenf | kevinmeredith | l00397676 | lalyos | liwenqi | lixiaobing10051267 | lomot | masibw | mikelinjie <294893458@qq.com> | msg | pieterdd | squeegels <1674195+squeegels@users.noreply.github.com> | sunchunming | wingkwong | zhangwenlong | 岁丰 | 沈陵 | 郑泽宇 " +core,github.com/moby/buildkit/frontend/dockerfile/shell,Apache-2.0,"Aaron L. Xu | Aaron Lehmann | Aaron Lehmann | Abdur Rehman | Addam Hardy | Adrian Plata | Aidan Hobson Sayers | Akihiro Suda | Alan Fregtman <941331+darkvertex@users.noreply.github.com> | Alex Couture-Beil | Alex Mayer | Alex Suraci | Alexander Morozov | Alexis Murzeau | Alice Frosi | Allen Sun | Amen Belayneh | Anca Iordache | Anda Xu | Anders F Björklund | Andrea Bolognani | Andrea Luzzardi | Andrew Chang | Andrey Smirnov | Andy Alt | Andy Caldwell | Ankush Agarwal | Anthony Sottile | Anurag Goel | Anusha Ragunathan | Arnaud Bailly | Avi Deitcher | Bastiaan Bakker | Ben Longo | Bertrand Paquet | Bin Liu | Brandon Mitchell | Brian Goff | Ce Gao | Chaerim Yeo | Changwei Ge | Chanhun Jeong | ChaosGramer | Charles Chan | Charles Korn | Charles Law | Chenbin | Chris Goller | Chris McKinnel | Christian Höltje | Christian Weichel | Ciro S. Costa | Claudiu Belu | Colin Chartier | Corey Larson | Cory Bennett | Cory Snider | CrazyMax | Csaba Apagyi | Dan Duvall | Daniel Cassidy | Daniel Nephin | Darren Shepherd | Dave Chen | Dave Henderson | Dave Tucker | David Calavera | David Dooling | David Gageot | David Karlsson | Davis Schirmer | Dennis Chen | Derek McGowan | Dharmit Shah | Ding Fei | Doug Davis | Edgar Lee | Eli Uriegas | Elias Faxö | Eng Zer Jun | Eric Engestrom | Erik Sipsma | Fernando Miguel | Fiona Klute | Foysal Iqbal | Fred Cox | Frieder Bluemle | Gabriel | Gabriel Adrian Samfira | Gaetan de Villele | Gahl Saraf | George | Govind Rai | Grant Reaber | Guilhem C | Hans van den Bogert | Hao Hu | Hector S | Helen Xie | Himanshu Pandey | Hiromu Nakamura | HowJMay | Hugo Santos | Ian Campbell | Ilya Dmitrichenko | Iskander (Alex) Sharipov | Jacob Gillespie | Jacob MacElroy | Jean-Pierre Huynh | Jeffrey Huang | Jesse Rittner | Jessica Frazelle | Jitender Kumar | John Howard | John Maguire | John Mulhausen | John Tims | Jon Zeolla | Jonathan Azoff | Jonathan Giannuzzi | Jonathan Stoppani | Jonny Stoten | JordanGoasdoue | Julian Goede | Justas Brazauskas | Justin Chadwell | Justin Cormack | Justin Garrison | Jörg Franke <359489+NewJorg@users.noreply.github.com> | Kang, Matthew | Kees Cook | Kevin Burke | Kir Kolyshkin | Kohei Tokunaga | Koichi Shiraishi | Kris-Mikael Krister | Kunal Kushwaha | Kyle | Lajos Papp | Levi Harrison | Lu Jingxiao | Luca Visentin | Maciej Kalisz | Madhav Puri | Manu Gupta | Marcus Comstedt | Mark Gordon | Marko Kohtala | Mary Anthony | Matias Insaurralde | Matt Kang | Matt Rickard | Maxime Lagresle | Michael Crosby | Michael Friis | Michael Irwin | Miguel Ángel Jimeno | Mihai Borobocea | Mike Brown | Mikhail Vasin | Misty Stanley-Jones | Miyachi Katsuya | Morgan Bauer | Morlay | Nao YONASHIRO | Natasha Jarus | Nathan Sullivan | Nick Miyake | Nick Santos | Nikhil Pandeti | Noel Georgi <18496730+frezbo@users.noreply.github.com> | Oliver Bristow | Omer Duchovne <79370724+od-cyera@users.noreply.github.com> | Omer Mizrahi | Ondrej Fabry | Otto Kekäläinen | Pablo Chico de Guzman | Patrick Hemmer | Patrick Lang | Patrick Van Stee | Paul ""TBBle"" Hampson | Paweł Gronowski | Peter Dave Hello | Petr Fedchenkov | Phil Estes | Pierre Fenoll | Pranav Pandit | Pratik Raj | Prayag Verma | Qiang Huang | Remy Suen | Ri Xu | Rob Taylor | Robert Estelle | Rubens Figueiredo | Sam Whited | Sascha Schwarze | Sean P. Kane | Sebastiaan van Stijn | Seiya Miyata | Serhat Gülçiçek | Sertac Ozercan | Shev Yan | Shijiang Wei | Shingo Omura | Shiwei Zhang | Siebe Schaap | Silvin Lubecki <31478878+silvin-lubecki@users.noreply.github.com> | Simon Ferquel | Slava Semushin | Solomon Hykes | Stefan Scherer | Stefan Weil | StefanSchoof | Stepan Blyshchak | Steve Lohr | Sven Dowideit | Takuya Noguchi | Thomas Leonard | Thomas Riccardi | Thomas Shaw | Tianon Gravi | Tibor Vass | Tiffany Jernigan | Tim Waugh | Tim Wraight | Tino Rusch | Tobias Klauser | Tomas Tomecek | Tomasz Kopczynski | Tomohiro Kusumoto | Troels Liebe Bentsen | Tõnis Tiigi | Valentin Lorentz | Vasek - Tom C | Victor Vieux | Victoria Bialas | Vincent Demeester | Vlad A. Ionescu | Vladislav Ivanov | Wang Yumu <37442693@qq.com> | Wei Fu | Wei Zhang | Xiaofan Zhang | Ximo Guanter | Yamazaki Masashi | Yan Song | Yong Tang | Yuichiro Kaneko | Yurii Rashkovskii | Zach Badgett | Ziv Tsarfati | a-palchikov | coryb | dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> | dito | eyherabh | f0 | genglu.gl | ggjulio | jgeiger | jlecordier | joey | jroenf | kevinmeredith | l00397676 | lalyos | liwenqi | lixiaobing10051267 | lomot | masibw | mikelinjie <294893458@qq.com> | msg | pieterdd | squeegels <1674195+squeegels@users.noreply.github.com> | sunchunming | wingkwong | zhangwenlong | 岁丰 | 沈陵 | 郑泽宇 " +core,github.com/moby/buildkit/util/stack,Apache-2.0,"Aaron L. Xu | Aaron Lehmann | Aaron Lehmann | Abdur Rehman | Addam Hardy | Adrian Plata | Aidan Hobson Sayers | Akihiro Suda | Alan Fregtman <941331+darkvertex@users.noreply.github.com> | Alex Couture-Beil | Alex Mayer | Alex Suraci | Alexander Morozov | Alexis Murzeau | Alice Frosi | Allen Sun | Amen Belayneh | Anca Iordache | Anda Xu | Anders F Björklund | Andrea Bolognani | Andrea Luzzardi | Andrew Chang | Andrey Smirnov | Andy Alt | Andy Caldwell | Ankush Agarwal | Anthony Sottile | Anurag Goel | Anusha Ragunathan | Arnaud Bailly | Avi Deitcher | Bastiaan Bakker | Ben Longo | Bertrand Paquet | Bin Liu | Brandon Mitchell | Brian Goff | Ce Gao | Chaerim Yeo | Changwei Ge | Chanhun Jeong | ChaosGramer | Charles Chan | Charles Korn | Charles Law | Chenbin | Chris Goller | Chris McKinnel | Christian Höltje | Christian Weichel | Ciro S. Costa | Claudiu Belu | Colin Chartier | Corey Larson | Cory Bennett | Cory Snider | CrazyMax | Csaba Apagyi | Dan Duvall | Daniel Cassidy | Daniel Nephin | Darren Shepherd | Dave Chen | Dave Henderson | Dave Tucker | David Calavera | David Dooling | David Gageot | David Karlsson | Davis Schirmer | Dennis Chen | Derek McGowan | Dharmit Shah | Ding Fei | Doug Davis | Edgar Lee | Eli Uriegas | Elias Faxö | Eng Zer Jun | Eric Engestrom | Erik Sipsma | Fernando Miguel | Fiona Klute | Foysal Iqbal | Fred Cox | Frieder Bluemle | Gabriel | Gabriel Adrian Samfira | Gaetan de Villele | Gahl Saraf | George | Govind Rai | Grant Reaber | Guilhem C | Hans van den Bogert | Hao Hu | Hector S | Helen Xie | Himanshu Pandey | Hiromu Nakamura | HowJMay | Hugo Santos | Ian Campbell | Ilya Dmitrichenko | Iskander (Alex) Sharipov | Jacob Gillespie | Jacob MacElroy | Jean-Pierre Huynh | Jeffrey Huang | Jesse Rittner | Jessica Frazelle | Jitender Kumar | John Howard | John Maguire | John Mulhausen | John Tims | Jon Zeolla | Jonathan Azoff | Jonathan Giannuzzi | Jonathan Stoppani | Jonny Stoten | JordanGoasdoue | Julian Goede | Justas Brazauskas | Justin Chadwell | Justin Cormack | Justin Garrison | Jörg Franke <359489+NewJorg@users.noreply.github.com> | Kang, Matthew | Kees Cook | Kevin Burke | Kir Kolyshkin | Kohei Tokunaga | Koichi Shiraishi | Kris-Mikael Krister | Kunal Kushwaha | Kyle | Lajos Papp | Levi Harrison | Lu Jingxiao | Luca Visentin | Maciej Kalisz | Madhav Puri | Manu Gupta | Marcus Comstedt | Mark Gordon | Marko Kohtala | Mary Anthony | Matias Insaurralde | Matt Kang | Matt Rickard | Maxime Lagresle | Michael Crosby | Michael Friis | Michael Irwin | Miguel Ángel Jimeno | Mihai Borobocea | Mike Brown | Mikhail Vasin | Misty Stanley-Jones | Miyachi Katsuya | Morgan Bauer | Morlay | Nao YONASHIRO | Natasha Jarus | Nathan Sullivan | Nick Miyake | Nick Santos | Nikhil Pandeti | Noel Georgi <18496730+frezbo@users.noreply.github.com> | Oliver Bristow | Omer Duchovne <79370724+od-cyera@users.noreply.github.com> | Omer Mizrahi | Ondrej Fabry | Otto Kekäläinen | Pablo Chico de Guzman | Patrick Hemmer | Patrick Lang | Patrick Van Stee | Paul ""TBBle"" Hampson | Paweł Gronowski | Peter Dave Hello | Petr Fedchenkov | Phil Estes | Pierre Fenoll | Pranav Pandit | Pratik Raj | Prayag Verma | Qiang Huang | Remy Suen | Ri Xu | Rob Taylor | Robert Estelle | Rubens Figueiredo | Sam Whited | Sascha Schwarze | Sean P. Kane | Sebastiaan van Stijn | Seiya Miyata | Serhat Gülçiçek | Sertac Ozercan | Shev Yan | Shijiang Wei | Shingo Omura | Shiwei Zhang | Siebe Schaap | Silvin Lubecki <31478878+silvin-lubecki@users.noreply.github.com> | Simon Ferquel | Slava Semushin | Solomon Hykes | Stefan Scherer | Stefan Weil | StefanSchoof | Stepan Blyshchak | Steve Lohr | Sven Dowideit | Takuya Noguchi | Thomas Leonard | Thomas Riccardi | Thomas Shaw | Tianon Gravi | Tibor Vass | Tiffany Jernigan | Tim Waugh | Tim Wraight | Tino Rusch | Tobias Klauser | Tomas Tomecek | Tomasz Kopczynski | Tomohiro Kusumoto | Troels Liebe Bentsen | Tõnis Tiigi | Valentin Lorentz | Vasek - Tom C | Victor Vieux | Victoria Bialas | Vincent Demeester | Vlad A. Ionescu | Vladislav Ivanov | Wang Yumu <37442693@qq.com> | Wei Fu | Wei Zhang | Xiaofan Zhang | Ximo Guanter | Yamazaki Masashi | Yan Song | Yong Tang | Yuichiro Kaneko | Yurii Rashkovskii | Zach Badgett | Ziv Tsarfati | a-palchikov | coryb | dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> | dito | eyherabh | f0 | genglu.gl | ggjulio | jgeiger | jlecordier | joey | jroenf | kevinmeredith | l00397676 | lalyos | liwenqi | lixiaobing10051267 | lomot | masibw | mikelinjie <294893458@qq.com> | msg | pieterdd | squeegels <1674195+squeegels@users.noreply.github.com> | sunchunming | wingkwong | zhangwenlong | 岁丰 | 沈陵 | 郑泽宇 " +core,github.com/moby/buildkit/util/suggest,Apache-2.0,"Aaron L. Xu | Aaron Lehmann | Aaron Lehmann | Abdur Rehman | Addam Hardy | Adrian Plata | Aidan Hobson Sayers | Akihiro Suda | Alan Fregtman <941331+darkvertex@users.noreply.github.com> | Alex Couture-Beil | Alex Mayer | Alex Suraci | Alexander Morozov | Alexis Murzeau | Alice Frosi | Allen Sun | Amen Belayneh | Anca Iordache | Anda Xu | Anders F Björklund | Andrea Bolognani | Andrea Luzzardi | Andrew Chang | Andrey Smirnov | Andy Alt | Andy Caldwell | Ankush Agarwal | Anthony Sottile | Anurag Goel | Anusha Ragunathan | Arnaud Bailly | Avi Deitcher | Bastiaan Bakker | Ben Longo | Bertrand Paquet | Bin Liu | Brandon Mitchell | Brian Goff | Ce Gao | Chaerim Yeo | Changwei Ge | Chanhun Jeong | ChaosGramer | Charles Chan | Charles Korn | Charles Law | Chenbin | Chris Goller | Chris McKinnel | Christian Höltje | Christian Weichel | Ciro S. Costa | Claudiu Belu | Colin Chartier | Corey Larson | Cory Bennett | Cory Snider | CrazyMax | Csaba Apagyi | Dan Duvall | Daniel Cassidy | Daniel Nephin | Darren Shepherd | Dave Chen | Dave Henderson | Dave Tucker | David Calavera | David Dooling | David Gageot | David Karlsson | Davis Schirmer | Dennis Chen | Derek McGowan | Dharmit Shah | Ding Fei | Doug Davis | Edgar Lee | Eli Uriegas | Elias Faxö | Eng Zer Jun | Eric Engestrom | Erik Sipsma | Fernando Miguel | Fiona Klute | Foysal Iqbal | Fred Cox | Frieder Bluemle | Gabriel | Gabriel Adrian Samfira | Gaetan de Villele | Gahl Saraf | George | Govind Rai | Grant Reaber | Guilhem C | Hans van den Bogert | Hao Hu | Hector S | Helen Xie | Himanshu Pandey | Hiromu Nakamura | HowJMay | Hugo Santos | Ian Campbell | Ilya Dmitrichenko | Iskander (Alex) Sharipov | Jacob Gillespie | Jacob MacElroy | Jean-Pierre Huynh | Jeffrey Huang | Jesse Rittner | Jessica Frazelle | Jitender Kumar | John Howard | John Maguire | John Mulhausen | John Tims | Jon Zeolla | Jonathan Azoff | Jonathan Giannuzzi | Jonathan Stoppani | Jonny Stoten | JordanGoasdoue | Julian Goede | Justas Brazauskas | Justin Chadwell | Justin Cormack | Justin Garrison | Jörg Franke <359489+NewJorg@users.noreply.github.com> | Kang, Matthew | Kees Cook | Kevin Burke | Kir Kolyshkin | Kohei Tokunaga | Koichi Shiraishi | Kris-Mikael Krister | Kunal Kushwaha | Kyle | Lajos Papp | Levi Harrison | Lu Jingxiao | Luca Visentin | Maciej Kalisz | Madhav Puri | Manu Gupta | Marcus Comstedt | Mark Gordon | Marko Kohtala | Mary Anthony | Matias Insaurralde | Matt Kang | Matt Rickard | Maxime Lagresle | Michael Crosby | Michael Friis | Michael Irwin | Miguel Ángel Jimeno | Mihai Borobocea | Mike Brown | Mikhail Vasin | Misty Stanley-Jones | Miyachi Katsuya | Morgan Bauer | Morlay | Nao YONASHIRO | Natasha Jarus | Nathan Sullivan | Nick Miyake | Nick Santos | Nikhil Pandeti | Noel Georgi <18496730+frezbo@users.noreply.github.com> | Oliver Bristow | Omer Duchovne <79370724+od-cyera@users.noreply.github.com> | Omer Mizrahi | Ondrej Fabry | Otto Kekäläinen | Pablo Chico de Guzman | Patrick Hemmer | Patrick Lang | Patrick Van Stee | Paul ""TBBle"" Hampson | Paweł Gronowski | Peter Dave Hello | Petr Fedchenkov | Phil Estes | Pierre Fenoll | Pranav Pandit | Pratik Raj | Prayag Verma | Qiang Huang | Remy Suen | Ri Xu | Rob Taylor | Robert Estelle | Rubens Figueiredo | Sam Whited | Sascha Schwarze | Sean P. Kane | Sebastiaan van Stijn | Seiya Miyata | Serhat Gülçiçek | Sertac Ozercan | Shev Yan | Shijiang Wei | Shingo Omura | Shiwei Zhang | Siebe Schaap | Silvin Lubecki <31478878+silvin-lubecki@users.noreply.github.com> | Simon Ferquel | Slava Semushin | Solomon Hykes | Stefan Scherer | Stefan Weil | StefanSchoof | Stepan Blyshchak | Steve Lohr | Sven Dowideit | Takuya Noguchi | Thomas Leonard | Thomas Riccardi | Thomas Shaw | Tianon Gravi | Tibor Vass | Tiffany Jernigan | Tim Waugh | Tim Wraight | Tino Rusch | Tobias Klauser | Tomas Tomecek | Tomasz Kopczynski | Tomohiro Kusumoto | Troels Liebe Bentsen | Tõnis Tiigi | Valentin Lorentz | Vasek - Tom C | Victor Vieux | Victoria Bialas | Vincent Demeester | Vlad A. Ionescu | Vladislav Ivanov | Wang Yumu <37442693@qq.com> | Wei Fu | Wei Zhang | Xiaofan Zhang | Ximo Guanter | Yamazaki Masashi | Yan Song | Yong Tang | Yuichiro Kaneko | Yurii Rashkovskii | Zach Badgett | Ziv Tsarfati | a-palchikov | coryb | dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> | dito | eyherabh | f0 | genglu.gl | ggjulio | jgeiger | jlecordier | joey | jroenf | kevinmeredith | l00397676 | lalyos | liwenqi | lixiaobing10051267 | lomot | masibw | mikelinjie <294893458@qq.com> | msg | pieterdd | squeegels <1674195+squeegels@users.noreply.github.com> | sunchunming | wingkwong | zhangwenlong | 岁丰 | 沈陵 | 郑泽宇 " core,github.com/moby/locker,Apache-2.0,"Copyright 2013-2018 Docker, Inc" core,github.com/moby/sys/mountinfo,Apache-2.0,Copyright (c) 2014-2018 The Docker & Go Authors. All rights reserved. core,github.com/moby/sys/sequential,Apache-2.0,Kir Kolyshkin |Sebastiaan van Stijn |Sebastiaan van Stijn |Tibor Vass |Brian Goff |John Howard |Victor Vieux |Michael Crosby |Daniel Nephin |Tianon Gravi |Vincent Batts |Akihiro Suda |Michael Crosby |Yong Tang |Kir Kolyshkin |Christopher Jones |Guillaume J. Charmes |Kato Kazuyoshi |Manu Gupta |Michael Crosby |Vincent Demeester |Aleksa Sarai |Amit Krishnan |Arnaud Porterie |Brian Goff |Brian Goff |Dan Walsh |Michael Crosby |Phil Estes |Shengjing Zhu |Solomon Hykes |Tobias Klauser |lalyos |unclejack |Akihiro Suda |Alexander Morozov |Jessica Frazelle |Jessica Frazelle |Jessie Frazelle |Justas Brazauskas |Justin Cormack |Kazuyoshi Kato |Naveed Jamil |Vincent Demeester |shuai-z |Ahmet Alp Balkan |Aleksa Sarai |Alexander Larsson |Alexander Morozov |Alexandr Morozov |Alexandr Morozov |Antonio Murdaca |Antonio Murdaca |Antonio Murdaca |Artem Khramov |Cezar Sa Espinola |Chen Hanxiao |Darren Stahl |David Calavera |Derek McGowan |Eng Zer Jun |Erik Dubbelboer |Fabian Kramm |Guillaume Dufour |Guillaume J. Charmes |Hajime Tazaki |Jamie Hannaford |Jason A. Donenfeld |Jhon Honce |Josh Soref |Kasper Fabæch Brandt |Kathryn Baldauf |Kenfe-Mickael Laventure |Kirill Kolyshkin |Muhammad Kaisar Arkhan |Oli |Olli Janatuinen |Paul Nasrat |Peter Bourgon |Peter Waller |Phil Estes |Samuel Karp |Stefan J. Wernli |Steven Hartland |Stig Larsson |Tim Wang |Victor Vieux |Victor Vieux |Yan Feng |jhowardmsft |liuxiaodong |phineas |unclejack |yuexiao-wang |谢致邦 (XIE Zhibang) @@ -2654,8 +2654,10 @@ core,k8s.io/apimachinery/pkg/selection,Apache-2.0,Copyright 2014 The Kubernetes core,k8s.io/apimachinery/pkg/types,Apache-2.0,Copyright 2014 The Kubernetes Authors. core,k8s.io/apimachinery/pkg/util/cache,Apache-2.0,Copyright 2014 The Kubernetes Authors. core,k8s.io/apimachinery/pkg/util/diff,Apache-2.0,Copyright 2014 The Kubernetes Authors. +core,k8s.io/apimachinery/pkg/util/dump,Apache-2.0,Copyright 2014 The Kubernetes Authors. core,k8s.io/apimachinery/pkg/util/errors,Apache-2.0,Copyright 2014 The Kubernetes Authors. core,k8s.io/apimachinery/pkg/util/framer,Apache-2.0,Copyright 2014 The Kubernetes Authors. +core,k8s.io/apimachinery/pkg/util/httpstream/wsstream,Apache-2.0,Copyright 2014 The Kubernetes Authors. core,k8s.io/apimachinery/pkg/util/intstr,Apache-2.0,Copyright 2014 The Kubernetes Authors. core,k8s.io/apimachinery/pkg/util/json,Apache-2.0,Copyright 2014 The Kubernetes Authors. core,k8s.io/apimachinery/pkg/util/managedfields,Apache-2.0,Copyright 2014 The Kubernetes Authors. @@ -2670,6 +2672,7 @@ core,k8s.io/apimachinery/pkg/util/strategicpatch,Apache-2.0,Copyright 2014 The K core,k8s.io/apimachinery/pkg/util/uuid,Apache-2.0,Copyright 2014 The Kubernetes Authors. core,k8s.io/apimachinery/pkg/util/validation,Apache-2.0,Copyright 2014 The Kubernetes Authors. core,k8s.io/apimachinery/pkg/util/validation/field,Apache-2.0,Copyright 2014 The Kubernetes Authors. +core,k8s.io/apimachinery/pkg/util/version,Apache-2.0,Copyright 2014 The Kubernetes Authors. core,k8s.io/apimachinery/pkg/util/wait,Apache-2.0,Copyright 2014 The Kubernetes Authors. core,k8s.io/apimachinery/pkg/util/waitgroup,Apache-2.0,Copyright 2014 The Kubernetes Authors. core,k8s.io/apimachinery/pkg/util/yaml,Apache-2.0,Copyright 2014 The Kubernetes Authors. @@ -2736,6 +2739,8 @@ core,k8s.io/apiserver/pkg/authorization/path,Apache-2.0,Copyright 2014 The Kuber core,k8s.io/apiserver/pkg/authorization/union,Apache-2.0,Copyright 2014 The Kubernetes Authors. core,k8s.io/apiserver/pkg/cel,Apache-2.0,Copyright 2014 The Kubernetes Authors. core,k8s.io/apiserver/pkg/cel/common,Apache-2.0,Copyright 2014 The Kubernetes Authors. +core,k8s.io/apiserver/pkg/cel/environment,Apache-2.0,Copyright 2014 The Kubernetes Authors. +core,k8s.io/apiserver/pkg/cel/lazy,Apache-2.0,Copyright 2014 The Kubernetes Authors. core,k8s.io/apiserver/pkg/cel/library,Apache-2.0,Copyright 2014 The Kubernetes Authors. core,k8s.io/apiserver/pkg/cel/openapi,Apache-2.0,Copyright 2014 The Kubernetes Authors. core,k8s.io/apiserver/pkg/cel/openapi/resolver,Apache-2.0,Copyright 2014 The Kubernetes Authors. @@ -2772,6 +2777,7 @@ core,k8s.io/apiserver/pkg/server/mux,Apache-2.0,Copyright 2014 The Kubernetes Au core,k8s.io/apiserver/pkg/server/options,Apache-2.0,Copyright 2014 The Kubernetes Authors. core,k8s.io/apiserver/pkg/server/options/encryptionconfig,Apache-2.0,Copyright 2014 The Kubernetes Authors. core,k8s.io/apiserver/pkg/server/options/encryptionconfig/controller,Apache-2.0,Copyright 2014 The Kubernetes Authors. +core,k8s.io/apiserver/pkg/server/options/encryptionconfig/metrics,Apache-2.0,Copyright 2014 The Kubernetes Authors. core,k8s.io/apiserver/pkg/server/resourceconfig,Apache-2.0,Copyright 2014 The Kubernetes Authors. core,k8s.io/apiserver/pkg/server/routes,Apache-2.0,Copyright 2014 The Kubernetes Authors. core,k8s.io/apiserver/pkg/server/storage,Apache-2.0,Copyright 2014 The Kubernetes Authors. @@ -2806,9 +2812,9 @@ core,k8s.io/apiserver/pkg/util/flowcontrol/format,Apache-2.0,Copyright 2014 The core,k8s.io/apiserver/pkg/util/flowcontrol/metrics,Apache-2.0,Copyright 2014 The Kubernetes Authors. core,k8s.io/apiserver/pkg/util/flowcontrol/request,Apache-2.0,Copyright 2014 The Kubernetes Authors. core,k8s.io/apiserver/pkg/util/flushwriter,Apache-2.0,Copyright 2014 The Kubernetes Authors. +core,k8s.io/apiserver/pkg/util/peerproxy/metrics,Apache-2.0,Copyright 2014 The Kubernetes Authors. core,k8s.io/apiserver/pkg/util/shufflesharding,Apache-2.0,Copyright 2014 The Kubernetes Authors. core,k8s.io/apiserver/pkg/util/webhook,Apache-2.0,Copyright 2014 The Kubernetes Authors. -core,k8s.io/apiserver/pkg/util/wsstream,Apache-2.0,Copyright 2014 The Kubernetes Authors. core,k8s.io/apiserver/pkg/util/x509metrics,Apache-2.0,Copyright 2014 The Kubernetes Authors. core,k8s.io/apiserver/pkg/warning,Apache-2.0,Copyright 2014 The Kubernetes Authors. core,k8s.io/apiserver/plugin/pkg/audit/buffered,Apache-2.0,Copyright 2014 The Kubernetes Authors. @@ -3173,6 +3179,7 @@ core,k8s.io/cri-api/pkg/apis/runtime/v1,Apache-2.0,Copyright 2014 The Kubernetes core,k8s.io/cri-api/pkg/apis/runtime/v1alpha2,Apache-2.0,Copyright 2014 The Kubernetes Authors. core,k8s.io/cri-api/pkg/apis/testing,Apache-2.0,Copyright 2014 The Kubernetes Authors. core,k8s.io/gengo/args,Apache-2.0,Copyright 2014 The Kubernetes Authors. +core,k8s.io/gengo/examples/defaulter-gen/generators,Apache-2.0,Copyright 2014 The Kubernetes Authors. core,k8s.io/gengo/examples/set-gen/sets,Apache-2.0,Copyright 2014 The Kubernetes Authors. core,k8s.io/gengo/generator,Apache-2.0,Copyright 2014 The Kubernetes Authors. core,k8s.io/gengo/namer,Apache-2.0,Copyright 2014 The Kubernetes Authors. @@ -3287,8 +3294,8 @@ core,modernc.org/libc/wctype,BSD-3-Clause,Copyright (c) 2017 The Libc Authors. A core,modernc.org/mathutil,BSD-3-Clause,Bodecker DellaMaria | CZ.NIC z.s.p.o. | Copyright (c) 2014 The mathutil Authors. All rights reserved | Edward Betts | Faiz Abbasi | Gary Burd | Jan Mercl <0xjnml@gmail.com> | Muhammad Surya | Santiago De la Cruz core,modernc.org/memory,BSD-3-Clause,Anup Kodlekere | Copyright (c) 2017 The Memory Authors. All rights reserved | Gleb Sakhnov | Jan Mercl <0xjnml@gmail.com> | Steffen Butzer | ZHU Zijia core,modernc.org/opt,BSD-3-Clause,Copyright (c) 2019 The Opt Authors. All rights reserved | Jan Mercl <0xjnml@gmail.com> -core,modernc.org/sqlite,BSD-3-Clause,Alexander Menzhinsky | Alexey Palazhchenko | Angus Dippenaar | Artyom Pervukhin | Copyright (c) 2017 The Sqlite Authors. All rights reserved | Dan Kortschak | Dan Peterson | David Skinner | David Walton | Davsk Ltd Co | Elle Mouton | FerretDB Inc. | FlyingOnion <731677080@qq.com> | Gleb Sakhnov | Jaap Aarts | Jan Mercl <0xjnml@gmail.com> | Josh Bleecher Snyder | Josh Klein | Logan Snow | Mark Summerfield | Matthew Gabeler-Lee | Michael Hoffmann | Michael Rykov | Romain Le Disez | Ross Light | Saed SayedAhmed | Sean McGivern | Steffen Butzer | W. Michael Petullo | Yaacov Akiba Slama -core,modernc.org/sqlite/lib,BSD-3-Clause,Alexander Menzhinsky | Alexey Palazhchenko | Angus Dippenaar | Artyom Pervukhin | Copyright (c) 2017 The Sqlite Authors. All rights reserved | Dan Kortschak | Dan Peterson | David Skinner | David Walton | Davsk Ltd Co | Elle Mouton | FerretDB Inc. | FlyingOnion <731677080@qq.com> | Gleb Sakhnov | Jaap Aarts | Jan Mercl <0xjnml@gmail.com> | Josh Bleecher Snyder | Josh Klein | Logan Snow | Mark Summerfield | Matthew Gabeler-Lee | Michael Hoffmann | Michael Rykov | Romain Le Disez | Ross Light | Saed SayedAhmed | Sean McGivern | Steffen Butzer | W. Michael Petullo | Yaacov Akiba Slama +core,modernc.org/sqlite,BSD-3-Clause,Alexander Menzhinsky | Artyom Pervukhin | Copyright (c) 2017 The Sqlite Authors. All rights reserved | Dan Peterson | David Skinner | David Walton | Davsk Ltd Co | FlyingOnion <731677080@qq.com> | Gleb Sakhnov | Jaap Aarts | Jan Mercl <0xjnml@gmail.com> | Logan Snow | Matthew Gabeler-Lee | Michael Hoffmann | Ross Light | Saed SayedAhmed | Steffen Butzer | Yaacov Akiba Slama +core,modernc.org/sqlite/lib,BSD-3-Clause,Alexander Menzhinsky | Artyom Pervukhin | Copyright (c) 2017 The Sqlite Authors. All rights reserved | Dan Peterson | David Skinner | David Walton | Davsk Ltd Co | FlyingOnion <731677080@qq.com> | Gleb Sakhnov | Jaap Aarts | Jan Mercl <0xjnml@gmail.com> | Logan Snow | Matthew Gabeler-Lee | Michael Hoffmann | Ross Light | Saed SayedAhmed | Steffen Butzer | Yaacov Akiba Slama core,modernc.org/strutil,BSD-3-Clause,CZ.NIC z.s.p.o. | Copyright (c) 2014 The strutil Authors. All rights reserved | Jan Mercl <0xjnml@gmail.com> core,modernc.org/token,BSD-3-Clause,Copyright (c) 2009 The Go Authors. All rights reserved core,sigs.k8s.io/apiserver-network-proxy/konnectivity-client/pkg/client,Apache-2.0,Copyright 2017 The Kubernetes Authors. diff --git a/go.mod b/go.mod index 76a84c02801a07..e76edfb7430f99 100644 --- a/go.mod +++ b/go.mod @@ -145,7 +145,7 @@ require ( github.com/cri-o/ocicni v0.4.0 github.com/cyphar/filepath-securejoin v0.2.4 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc - github.com/docker/docker v25.0.2+incompatible + github.com/docker/docker v25.0.3+incompatible github.com/docker/go-connections v0.5.0 github.com/dustin/go-humanize v1.0.1 github.com/elastic/go-libaudit/v2 v2.5.0 @@ -234,7 +234,7 @@ require ( github.com/vmihailenco/msgpack/v4 v4.3.12 github.com/wI2L/jsondiff v0.4.0 github.com/xeipuuv/gojsonschema v1.2.0 - go.etcd.io/bbolt v1.3.8 + go.etcd.io/bbolt v1.3.9 go.etcd.io/etcd/client/v2 v2.306.0-alpha.0 go.mongodb.org/mongo-driver v1.13.1 go.opentelemetry.io/collector v0.91.0 // indirect @@ -362,16 +362,16 @@ require ( github.com/briandowns/spinner v1.23.0 // indirect github.com/cavaliergopher/grab/v3 v3.0.1 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect - github.com/containerd/continuity v0.4.2 // indirect + github.com/containerd/continuity v0.4.3 // indirect github.com/containerd/fifo v1.1.0 // indirect - github.com/containerd/stargz-snapshotter/estargz v0.14.3 // indirect + github.com/containerd/stargz-snapshotter/estargz v0.15.1 // indirect github.com/containerd/ttrpc v1.2.2 // indirect github.com/containernetworking/plugins v1.4.0 // indirect github.com/coreos/go-systemd/v22 v22.5.0 github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f // indirect github.com/dgryski/go-jump v0.0.0-20211018200510-ba001c3ffce0 // indirect github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect - github.com/docker/cli v25.0.1+incompatible // indirect + github.com/docker/cli v25.0.3+incompatible // indirect github.com/docker/distribution v2.8.3+incompatible // indirect github.com/docker/docker-credential-helpers v0.8.0 // indirect github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c // indirect @@ -723,7 +723,7 @@ require ( github.com/godror/knownpb v0.1.0 // indirect github.com/golang-jwt/jwt/v5 v5.0.0 // indirect github.com/google/cel-go v0.17.7 // indirect - github.com/google/gnostic v0.6.9 // indirect + github.com/google/gnostic-models v0.6.8 // indirect github.com/google/s2a-go v0.1.7 // indirect github.com/hashicorp/go-getter v1.7.3 // indirect github.com/hashicorp/go-safetemp v1.0.0 // indirect @@ -810,19 +810,19 @@ replace ( replace github.com/aquasecurity/trivy-db => github.com/datadog/trivy-db v0.0.0-20240228172000-42caffdaee3f // Use a version of cel-go compatible with k8s.io/kubeapiserver 0.27.6 -replace github.com/google/cel-go v0.17.7 => github.com/google/cel-go v0.16.1 +replace github.com/google/cel-go => github.com/google/cel-go v0.16.1 // Waiting for datadog-operator kube version bump -replace sigs.k8s.io/controller-runtime v0.11.2 => sigs.k8s.io/controller-runtime v0.15.0 +replace sigs.k8s.io/controller-runtime => sigs.k8s.io/controller-runtime v0.15.0 // Fixes CVE-2023-1732, imported by nikos -replace github.com/cloudflare/circl v1.1.0 => github.com/cloudflare/circl v1.3.7 +replace github.com/cloudflare/circl => github.com/cloudflare/circl v1.3.7 // Fixes CVE-2023-26054, imported by trivy -replace github.com/moby/buildkit v0.11.0 => github.com/moby/buildkit v0.13.0-beta3 +replace github.com/moby/buildkit => github.com/moby/buildkit v0.13.0 // Fixes a panic in trivy, see gitlab.com/cznic/libc/-/issues/25 -replace modernc.org/sqlite v1.17.3 => modernc.org/sqlite v1.19.3 +replace modernc.org/sqlite => modernc.org/sqlite v1.19.3 // Exclude specific versions of knadh/koanf to fix building with a `go.work`, following // https://github.com/open-telemetry/opentelemetry-collector/issues/8127 @@ -832,15 +832,13 @@ exclude ( ) replace ( - // Stick to v0.27.6 as bumping client-go to 0.28.x breaks cluster agent leader election - k8s.io/api => k8s.io/api v0.27.6 - k8s.io/apimachinery => k8s.io/apimachinery v0.27.6 - k8s.io/apiserver => k8s.io/apiserver v0.27.6 - k8s.io/cli-runtime => k8s.io/cli-runtime v0.27.6 - k8s.io/client-go => k8s.io/client-go v0.27.6 - k8s.io/component-base => k8s.io/component-base v0.27.6 - // Small compilation fixes so that k8s.io/apiserver can compile against kube-openapi - k8s.io/kube-openapi => github.com/datadog/kube-openapi v0.0.0-20231101162351-39b249f0ed92 - k8s.io/kubectl => k8s.io/kubectl v0.27.6 + // Stick to v0.28.6 even if trivy want v0.29.x, the way we use trivy shouldn't require any k8s.io packages + k8s.io/api => k8s.io/api v0.28.6 + k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.28.6 + k8s.io/apimachinery => k8s.io/apimachinery v0.28.6 + k8s.io/apiserver => k8s.io/apiserver v0.28.6 + k8s.io/client-go => k8s.io/client-go v0.28.6 + k8s.io/component-base => k8s.io/component-base v0.28.6 + k8s.io/kube-openapi => k8s.io/kube-openapi v0.0.0-20230901164831-6c774f458599 sigs.k8s.io/kustomize/kyaml => sigs.k8s.io/kustomize/kyaml v0.14.3-0.20230526173653-cf3e81b590ab ) diff --git a/go.sum b/go.sum index fb871f138ff4a9..5f19d41d3a95a5 100644 --- a/go.sum +++ b/go.sum @@ -603,7 +603,6 @@ github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp github.com/clbanning/mxj v1.8.4 h1:HuhwZtbyvyOw+3Z1AowPkU87JkJUSv751ELWaiTpj8I= github.com/clbanning/mxj v1.8.4/go.mod h1:BVjHeAH+rl9rs6f+QIpeRl0tfu10SXn1pUSa5PVGJng= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= github.com/cloudfoundry-community/go-cfclient/v2 v2.0.1-0.20230503155151-3d15366c5820 h1:ixkQUDJYG6eSxgUEl6LLE2l2TD2C5AYmlm+fVhsr6Zs= @@ -627,14 +626,14 @@ github.com/containerd/cgroups/v3 v3.0.2 h1:f5WFqIVSgo5IZmtTT3qVBo6TzI1ON6sycSBKk github.com/containerd/cgroups/v3 v3.0.2/go.mod h1:JUgITrzdFqp42uI2ryGA+ge0ap/nxzYgkGmIcetmErE= github.com/containerd/containerd v1.7.13 h1:wPYKIeGMN8vaggSKuV1X0wZulpMz4CrgEsZdaCyB6Is= github.com/containerd/containerd v1.7.13/go.mod h1:zT3up6yTRfEUa6+GsITYIJNgSVL9NQ4x4h1RPzk0Wu4= -github.com/containerd/continuity v0.4.2 h1:v3y/4Yz5jwnvqPKJJ+7Wf93fyWoCB3F5EclWG023MDM= -github.com/containerd/continuity v0.4.2/go.mod h1:F6PTNCKepoxEaXLQp3wDAjygEnImnZ/7o4JzpodfroQ= +github.com/containerd/continuity v0.4.3 h1:6HVkalIp+2u1ZLH1J/pYX2oBVXlJZvh1X1A7bEZ9Su8= +github.com/containerd/continuity v0.4.3/go.mod h1:F6PTNCKepoxEaXLQp3wDAjygEnImnZ/7o4JzpodfroQ= github.com/containerd/fifo v1.1.0 h1:4I2mbh5stb1u6ycIABlBw9zgtlK8viPI9QkQNRQEEmY= github.com/containerd/fifo v1.1.0/go.mod h1:bmC4NWMbXlt2EZ0Hc7Fx7QzTFxgPID13eH0Qu+MAb2o= github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= -github.com/containerd/stargz-snapshotter/estargz v0.14.3 h1:OqlDCK3ZVUO6C3B/5FSkDwbkEETK84kQgEeFwDC+62k= -github.com/containerd/stargz-snapshotter/estargz v0.14.3/go.mod h1:KY//uOCIkSuNAHhJogcZtrNHdKrA99/FCCRjE3HD36o= +github.com/containerd/stargz-snapshotter/estargz v0.15.1 h1:eXJjw9RbkLFgioVaTG+G/ZW/0kEe2oEKCdS/ZxIyoCU= +github.com/containerd/stargz-snapshotter/estargz v0.15.1/go.mod h1:gr2RNwukQ/S9Nv33Lt6UC7xEx58C+LHRdoqbEKjz1Kk= github.com/containerd/ttrpc v1.2.2 h1:9vqZr0pxwOF5koz6N0N3kJ0zDHokrcPxIR/ZR2YFtOs= github.com/containerd/ttrpc v1.2.2/go.mod h1:sIT6l32Ph/H9cvnJsfXM5drIVzTr5A2flTf1G5tYZak= github.com/containerd/typeurl/v2 v2.1.1 h1:3Q4Pt7i8nYwy2KmQWIw2+1hTvwTE/6w9FqcttATPO/4= @@ -671,8 +670,6 @@ github.com/csaf-poc/csaf_distribution/v3 v3.0.0 h1:ob9+Fmpff0YWgTP3dYaw7G2hKQ9ce github.com/csaf-poc/csaf_distribution/v3 v3.0.0/go.mod h1:uilCTiNKivq+6zrDvjtZaUeLk70oe21iwKivo6ILwlQ= github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= -github.com/datadog/kube-openapi v0.0.0-20231101162351-39b249f0ed92 h1:yD8+tBuU9fnZfX5lyCvDL0Qq92s5SwA/kSPyg27n1rM= -github.com/datadog/kube-openapi v0.0.0-20231101162351-39b249f0ed92/go.mod h1:lpeO0N0x//2YZfE7dY/Vs9b7a03vixYPSjdD/sQSZSc= github.com/datadog/trivy-db v0.0.0-20240228172000-42caffdaee3f h1:IFB3J+f0m2e7nZjPTqvzLrrb6dVU6BQrsGx/7Tmm8Xk= github.com/datadog/trivy-db v0.0.0-20240228172000-42caffdaee3f/go.mod h1:cj9/QmD9N3OZnKQMp+/DvdV+ym3HyIkd4e+F0ZM3ZGs= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -700,12 +697,12 @@ github.com/dlclark/regexp2 v1.4.0 h1:F1rxgk7p4uKjwIQxBs9oAXe5CqrXlCduYEJvrF4u93E github.com/dlclark/regexp2 v1.4.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= 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/docker/cli v25.0.1+incompatible h1:mFpqnrS6Hsm3v1k7Wa/BO23oz0k121MTbTO1lpcGSkU= -github.com/docker/cli v25.0.1+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/cli v25.0.3+incompatible h1:KLeNs7zws74oFuVhgZQ5ONGZiXUUdgsdy6/EsX/6284= +github.com/docker/cli v25.0.3+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk= github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v25.0.2+incompatible h1:/OaKeauroa10K4Nqavw4zlhcDq/WBcPMc5DbjOGgozY= -github.com/docker/docker v25.0.2+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v25.0.3+incompatible h1:D5fy/lYmY7bvZa0XTZ5/UJPljor41F+vdyJG5luQLfQ= +github.com/docker/docker v25.0.3+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker-credential-helpers v0.8.0 h1:YQFtbBQb4VrpoPxhFuzEBPQ9E16qz5SpHLS+uswaCp8= github.com/docker/docker-credential-helpers v0.8.0/go.mod h1:UGFXcuoQ5TxPiB54nHOZ32AWRqQdECoh/Mg0AlEYb40= github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= @@ -714,7 +711,6 @@ github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c h1:+pKlWGMw7gf6bQ github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= github.com/dsnet/compress v0.0.2-0.20210315054119-f66993602bf5 h1:iFaUwBSo5Svw6L7HYpRu/0lE3e0BaElwnNO1qkNQxBY= github.com/dsnet/compress v0.0.2-0.20210315054119-f66993602bf5/go.mod h1:qssHWj60/X5sZFNxpG4HBPDHVqxNm4DfnCKgrbZOT+s= github.com/dsnet/golib v0.0.0-20171103203638-1ea166775780/go.mod h1:Lj+Z9rebOhdfkVLjJ8T6VcRQv3SXugXy999NBtR9aFY= @@ -759,7 +755,6 @@ github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4Nij github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/flowstack/go-jsonschema v0.1.1/go.mod h1:yL7fNggx1o8rm9RlgXv7hTBWxdBM0rVwpMwimd3F3N0= github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= @@ -954,8 +949,8 @@ github.com/google/cel-go v0.16.1 h1:3hZfSNiAU3KOiNtxuFXVp5WFy4hf/Ly3Sa4/7F8SXNo= github.com/google/cel-go v0.16.1/go.mod h1:HXZKzB0LXqer5lHHgfWAnlYwJaQBDKMjxjulNQzhwhY= github.com/google/flatbuffers v2.0.8+incompatible h1:ivUb1cGomAB101ZM1T0nOiWz9pSrTMoa9+EiY7igmkM= github.com/google/flatbuffers v2.0.8+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= -github.com/google/gnostic v0.6.9 h1:ZK/5VhkoX835RikCHpSUJV9a+S3e1zLh59YnyWeBW+0= -github.com/google/gnostic v0.6.9/go.mod h1:Nm8234We1lq6iB9OmlgNv3nH91XLLVZHCDayfA3xq+E= +github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I= +github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U= 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= @@ -1386,8 +1381,8 @@ github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zx github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/mkrautz/goar v0.0.0-20150919110319-282caa8bd9da h1:Iu5QFXIMK/YrHJ0NgUnK0rqYTTyb0ldt/rqNenAj39U= github.com/mkrautz/goar v0.0.0-20150919110319-282caa8bd9da/go.mod h1:NfnmoBY0gGkr3/NmI+DP/UXbZvOCurCUYAzOdYJjlOc= -github.com/moby/buildkit v0.12.5 h1:RNHH1l3HDhYyZafr5EgstEu8aGNCwyfvMtrQDtjH9T0= -github.com/moby/buildkit v0.12.5/go.mod h1:YGwjA2loqyiYfZeEo8FtI7z4x5XponAaIWsWcSjWwso= +github.com/moby/buildkit v0.13.0 h1:reVR1Y+rbNIUQ9jf0Q1YZVH5a/nhOixZsl+HJ9qQEGI= +github.com/moby/buildkit v0.13.0/go.mod h1:aNmNQKLBFYAOFuzQjR3VA27/FijlvtBD1pjNwTSN37k= github.com/moby/locker v1.0.1 h1:fOXqR41zeveg4fFODix+1Ch4mj/gT0NE1XJbp/epuBg= github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= github.com/moby/sys/mountinfo v0.7.1 h1:/tTvQaSJRr2FshkhXiIpux6fQ2Zvc4j7tAhMTStAG2g= @@ -1878,8 +1873,8 @@ github.com/zclconf/go-cty v1.13.0/go.mod h1:YKQzy/7pZ7iq2jNFzy5go57xdxdWoLLpaEp4 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.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.8 h1:xs88BrvEv273UsB79e0hcVrlUWmS0a8upikMFhSyAtA= -go.etcd.io/bbolt v1.3.8/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw= +go.etcd.io/bbolt v1.3.9 h1:8x7aARPEXiXbHmtUwAIv7eV2fQFHrLLavdiJ3uzJXoI= +go.etcd.io/bbolt v1.3.9/go.mod h1:zaO32+Ti0PK1ivdPtgMESzuzL2VPoIG1PCQNvOdo/dE= go.etcd.io/etcd/api/v3 v3.5.4/go.mod h1:5GB2vv4A4AOn3yk7MftYGHkUfGtDHnEraIjym4dYz5A= go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 h1:se+XckWlVTTfwjZSsAZJ2zGPzmIMq3j7fKBCmHoB9UA= go.etcd.io/etcd/api/v3 v3.6.0-alpha.0/go.mod h1:z13pg39zewDLZeXIKeM0xELOeFKcqjLocfwl5M820+w= @@ -2063,9 +2058,9 @@ golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= -golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= +golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -2184,6 +2179,7 @@ golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -2352,6 +2348,7 @@ golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= @@ -2363,6 +2360,8 @@ golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= golang.org/x/term v0.17.0 h1:mkTF7LCd6WGJNL3K1Ad7kwxNfYAW6a8a8QqtMblp/4U= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -2380,6 +2379,7 @@ golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -2595,7 +2595,6 @@ google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/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-20220107163113-42d7afdf6368/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= @@ -2745,7 +2744,6 @@ 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-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= @@ -2766,20 +2764,20 @@ 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.3.2 h1:ytYb4rOqyp1TSa2EPvNVwtPQJctSELKaMyLfqNP4+34= honnef.co/go/tools v0.3.2/go.mod h1:jzwdWgg7Jdq75wlfblQxO4neNaFFSvgc1tD5Wv8U0Yw= -k8s.io/api v0.27.6 h1:PBWu/lywJe2qQcshMjubzcBg7+XDZOo7O8JJAWuYtUo= -k8s.io/api v0.27.6/go.mod h1:AQYj0UsFCp3qJE7bOVnUuy4orCsXVkvHefnbYQiNWgk= -k8s.io/apiextensions-apiserver v0.29.0 h1:0VuspFG7Hj+SxyF/Z/2T0uFbI5gb5LRgEyUVE3Q4lV0= -k8s.io/apiextensions-apiserver v0.29.0/go.mod h1:TKmpy3bTS0mr9pylH0nOt/QzQRrW7/h7yLdRForMZwc= -k8s.io/apimachinery v0.27.6 h1:mGU8jmBq5o8mWBov+mLjdTBcU+etTE19waies4AQ6NE= -k8s.io/apimachinery v0.27.6/go.mod h1:XNfZ6xklnMCOGGFNqXG7bUrQCoR04dh/E7FprV6pb+E= -k8s.io/apiserver v0.27.6 h1:r/eHN8r3lG2buggHrVMy++kKhHlHn1HWSX1dqDtes54= -k8s.io/apiserver v0.27.6/go.mod h1:Xeo9OEXn2kDLK5pqspjdXQx7YKgDyKSpwIB4p0BmpAQ= +k8s.io/api v0.28.6 h1:yy6u9CuIhmg55YvF/BavPBBXB+5QicB64njJXxVnzLo= +k8s.io/api v0.28.6/go.mod h1:AM6Ys6g9MY3dl/XNaNfg/GePI0FT7WBGu8efU/lirAo= +k8s.io/apiextensions-apiserver v0.28.6 h1:myB3iG/3v3jqCg28JDbOefu4sH2/erNEXgytRzJKBOo= +k8s.io/apiextensions-apiserver v0.28.6/go.mod h1:qlp6xRKBgyRhe5AYc81TQpLx4kLNK8/sGQUOwMkVjRk= +k8s.io/apimachinery v0.28.6 h1:RsTeR4z6S07srPg6XYrwXpTJVMXsjPXn0ODakMytSW0= +k8s.io/apimachinery v0.28.6/go.mod h1:QFNX/kCl/EMT2WTSz8k4WLCv2XnkOLMaL8GAVRMdpsA= +k8s.io/apiserver v0.28.6 h1:SfS5v4I5UGvh0q/1rzvNwLFsK+r7YzcsixnUc0NwoEk= +k8s.io/apiserver v0.28.6/go.mod h1:8n0aerS3kPm9usyB8B+an6/BZ5+Fa9fNqlASFdDDVwk= k8s.io/autoscaler/vertical-pod-autoscaler v0.13.0 h1:pH6AsxeBZcyX6KBqcnl7SPIJqbN1d59RrEBuIE6Rq6c= k8s.io/autoscaler/vertical-pod-autoscaler v0.13.0/go.mod h1:LraL5kR2xX7jb4VMCG6/tUH4I75uRHlnzC0VWQHcyWk= -k8s.io/client-go v0.27.6 h1:vzI8804gpUtpMCNaFjIFyJrifH7u//LJCJPy8fQuYQg= -k8s.io/client-go v0.27.6/go.mod h1:PMsXcDKiJTW7PHJ64oEsIUJF319wm+EFlCj76oE5QXM= -k8s.io/component-base v0.27.6 h1:hF5WxX7Tpi9/dXAbLjPVkIA6CA6Pi6r9JOHyo0uCDYI= -k8s.io/component-base v0.27.6/go.mod h1:NvjLtaneUeb0GgMPpCBF+4LNB9GuhDHi16uUTjBhQfU= +k8s.io/client-go v0.28.6 h1:Gge6ziyIdafRchfoBKcpaARuz7jfrK1R1azuwORIsQI= +k8s.io/client-go v0.28.6/go.mod h1:+nu0Yp21Oeo/cBCsprNVXB2BfJTV51lFfe5tXl2rUL8= +k8s.io/component-base v0.28.6 h1:G4T8VrcQ7xZou3by/fY5NU5mfxOBlWaivS2lPrEltAo= +k8s.io/component-base v0.28.6/go.mod h1:Dg62OOG3ALu2P4nAG00UdsuHoNLQJ5VsUZKQlLDcS+E= k8s.io/cri-api v0.25.5 h1:k/VYZpkDI4VEb5nI4uWE/ZHO08b1D/m5/EXv1weXgtM= k8s.io/cri-api v0.25.5/go.mod h1:fg+6ctfBFAUYnKfjmYqUVXwq6A788L0ZvNooI405Nek= k8s.io/gengo v0.0.0-20230829151522-9cce18d56c01 h1:pWEwq4Asjm4vjW7vcsmijwBhOr1/shsbSYiWXmNGlks= @@ -2793,6 +2791,8 @@ k8s.io/kms v0.29.0 h1:KJ1zaZt74CgvgV3NR7tnURJ/mJOKC5X3nwon/WdwgxI= k8s.io/kms v0.29.0/go.mod h1:mB0f9HLxRXeXUfHfn1A7rpwOlzXI1gIWu86z6buNoYA= k8s.io/kube-aggregator v0.28.6 h1:opRVDw+inLPIyAqG9Fu3+EYWcmbTHOHJNrmuKoeuzQM= k8s.io/kube-aggregator v0.28.6/go.mod h1:NXzqtkCuAfv/modgRbAkPdfUZF+koazCy8Qrs8L+WyE= +k8s.io/kube-openapi v0.0.0-20230901164831-6c774f458599 h1:nVKRi5eItf3x9kkIMfdT4D1/LqPzj0bLjxLYWbdUtV0= +k8s.io/kube-openapi v0.0.0-20230901164831-6c774f458599/go.mod h1:AsvuZPBlUDVuCdzJ87iajxtXuR9oktsTctW/R9wwouA= k8s.io/kube-state-metrics/v2 v2.8.2 h1:P/9wJF26kkCF3Iy52e+MFijjeCAFtqNLFvpKJW5+CR8= k8s.io/kube-state-metrics/v2 v2.8.2/go.mod h1:kulGw0iSIvo1cjWdDExkeGW1muV/OV4C2TZOaHxqvyc= k8s.io/kubelet v0.28.6 h1:Ofn26Lr/4MCApqNPbRHEALIx5YTnKjNxC1CfEgwbrUA= @@ -2821,16 +2821,16 @@ modernc.org/memory v1.7.2 h1:Klh90S215mmH8c9gO98QxQFsY+W451E8AnzjoE2ee1E= modernc.org/memory v1.7.2/go.mod h1:NO4NVCQy0N7ln+T9ngWqOQfi7ley4vpwvARR+Hjw95E= modernc.org/opt v0.1.3 h1:3XOZf2yznlhC+ibLltsDGzABUGVx8J6pnFMS3E4dcq4= modernc.org/opt v0.1.3/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= -modernc.org/sqlite v1.28.0 h1:Zx+LyDDmXczNnEQdvPuEfcFVA2ZPyaD7UCZDjef3BHQ= -modernc.org/sqlite v1.28.0/go.mod h1:Qxpazz0zH8Z1xCFyi5GSL3FzbtZ3fvbjmywNogldEW0= +modernc.org/sqlite v1.19.3 h1:dIoagx6yIQT3V/zOSeAyZ8OqQyEr17YTgETOXTZNJMA= +modernc.org/sqlite v1.19.3/go.mod h1:xiyJD7FY8mTZXnQwE/gEL1STtFrrnDx03V8KhVQmcr8= modernc.org/strutil v1.1.3 h1:fNMm+oJklMGYfU9Ylcywl0CO5O6nTfaowNsh2wpPjzY= modernc.org/strutil v1.1.3/go.mod h1:MEHNA7PdEnEwLvspRMtWTNnp2nnyvMfkimT1NKNAGbw= -modernc.org/tcl v1.15.2 h1:C4ybAYCGJw968e+Me18oW55kD/FexcHbqH2xak1ROSY= -modernc.org/tcl v1.15.2/go.mod h1:3+k/ZaEbKrC8ePv8zJWPtBSW0V7Gg9g8rkmhI1Kfs3c= +modernc.org/tcl v1.15.0 h1:oY+JeD11qVVSgVvodMJsu7Edf8tr5E/7tuhF5cNYz34= +modernc.org/tcl v1.15.0/go.mod h1:xRoGotBZ6dU+Zo2tca+2EqVEeMmOUBzHnhIwq4YrVnE= modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y= modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= -modernc.org/z v1.7.3 h1:zDJf6iHjrnB+WRD88stbXokugjyc0/pB91ri1gO6LZY= -modernc.org/z v1.7.3/go.mod h1:Ipv4tsdxZRbQyLq9Q1M6gdbkxYzdlrciF2Hi/lS7nWE= +modernc.org/z v1.7.0 h1:xkDw/KepgEjeizO2sNco+hqYkU12taxQFqPEmgm1GWE= +modernc.org/z v1.7.0/go.mod h1:hVdgNMh8ggTuRG1rGU8x+xGRFfiQUIAw0ZqlPy8+HyQ= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= From 497350e3be4bae909803fdc2c63871da53978398 Mon Sep 17 00:00:00 2001 From: Paul Cacheux Date: Wed, 6 Mar 2024 15:09:38 +0100 Subject: [PATCH 037/155] event monitor: fix process event monitor build tag (#23461) --- .../{events_consumer_unix.go => events_consumer_linux.go} | 2 -- 1 file changed, 2 deletions(-) rename pkg/process/events/consumer/{events_consumer_unix.go => events_consumer_linux.go} (98%) diff --git a/pkg/process/events/consumer/events_consumer_unix.go b/pkg/process/events/consumer/events_consumer_linux.go similarity index 98% rename from pkg/process/events/consumer/events_consumer_unix.go rename to pkg/process/events/consumer/events_consumer_linux.go index 6389c5e361722b..1f5a6f8e242a1c 100644 --- a/pkg/process/events/consumer/events_consumer_unix.go +++ b/pkg/process/events/consumer/events_consumer_linux.go @@ -3,8 +3,6 @@ // This product includes software developed at Datadog (https://www.datadoghq.com/). // Copyright 2016-present Datadog, Inc. -//go:build unix - package consumer import ( From 1e0efc6acfad4f385a0838b922e9be33049c7953 Mon Sep 17 00:00:00 2001 From: Brian Floersch Date: Wed, 6 Mar 2024 09:25:50 -0500 Subject: [PATCH 038/155] Support expected_tags_duration for journald logs (#23455) * Support expected_tags_duration for journald logs * add back missing build tag * Update releasenotes/notes/journald-expected-tags-duration-053b0a54f2624ebf.yaml Co-authored-by: jhgilbert --------- Co-authored-by: jhgilbert --- pkg/logs/tailers/journald/tailer.go | 8 +++++- pkg/logs/tailers/journald/tailer_test.go | 26 +++++++++++++++++++ ...pected-tags-duration-053b0a54f2624ebf.yaml | 11 ++++++++ 3 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 releasenotes/notes/journald-expected-tags-duration-053b0a54f2624ebf.yaml diff --git a/pkg/logs/tailers/journald/tailer.go b/pkg/logs/tailers/journald/tailer.go index 9586fd712b6b19..d484e5d1f5b231 100644 --- a/pkg/logs/tailers/journald/tailer.go +++ b/pkg/logs/tailers/journald/tailer.go @@ -22,6 +22,7 @@ import ( "github.com/DataDog/datadog-agent/pkg/logs/internal/parsers/noop" "github.com/DataDog/datadog-agent/pkg/logs/internal/processor" "github.com/DataDog/datadog-agent/pkg/logs/internal/status" + "github.com/DataDog/datadog-agent/pkg/logs/internal/tag" "github.com/DataDog/datadog-agent/pkg/logs/message" "github.com/DataDog/datadog-agent/pkg/logs/sources" "github.com/DataDog/datadog-agent/pkg/telemetry" @@ -50,6 +51,10 @@ type Tailer struct { // processRawMessage indicates if we want to process and send the whole structured log message // instead of on the logs content. processRawMessage bool + + // tagProvider provides additional tags to be attached to each log message. It + // is called once for each log message. + tagProvider tag.Provider } // NewTailer returns a new tailer. @@ -69,6 +74,7 @@ func NewTailer(source *sources.LogSource, outputChan chan *message.Message, jour stop: make(chan struct{}, 1), done: make(chan struct{}, 1), processRawMessage: processRawMessage, + tagProvider: tag.NewLocalProvider([]string{}), } } @@ -394,7 +400,7 @@ func (t *Tailer) getOrigin(entry *sdjournal.JournalEntry) *message.Origin { applicationName := t.getApplicationName(entry, tags) origin.SetSource(applicationName) origin.SetService(applicationName) - origin.SetTags(tags) + origin.SetTags(append(tags, t.tagProvider.GetTags()...)) return origin } diff --git a/pkg/logs/tailers/journald/tailer_test.go b/pkg/logs/tailers/journald/tailer_test.go index c6f5582d96fa4a..f2578a30f6f2c6 100644 --- a/pkg/logs/tailers/journald/tailer_test.go +++ b/pkg/logs/tailers/journald/tailer_test.go @@ -17,6 +17,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/DataDog/datadog-agent/comp/logs/agent/config" + coreConfig "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/logs/message" "github.com/DataDog/datadog-agent/pkg/logs/sources" "github.com/DataDog/datadog-agent/pkg/util/cache" @@ -583,3 +584,28 @@ func TestTailerCompareUnstructuredAndStructured(t *testing.T) { assert.Equal(v1, v2) } + +func TestExpectedTagDuration(t *testing.T) { + + mockConfig := coreConfig.Mock(t) + + tags := []string{"tag1:value1"} + + mockConfig.SetWithoutSource("tags", tags) + defer mockConfig.SetWithoutSource("tags", nil) + + mockConfig.SetWithoutSource("logs_config.expected_tags_duration", "5s") + defer mockConfig.SetWithoutSource("logs_config.expected_tags_duration", "0") + + mockJournal := &MockJournal{m: &sync.Mutex{}} + source := sources.NewLogSource("", &config.LogsConfig{}) + tailer := NewTailer(source, make(chan *message.Message, 1), mockJournal, true) + + mockJournal.entries = append(mockJournal.entries, &sdjournal.JournalEntry{Fields: map[string]string{"MESSAGE": "foobar"}}) + + tailer.Start("") + assert.Equal(t, tags, (<-tailer.outputChan).Origin.Tags()) + + tailer.Stop() + +} diff --git a/releasenotes/notes/journald-expected-tags-duration-053b0a54f2624ebf.yaml b/releasenotes/notes/journald-expected-tags-duration-053b0a54f2624ebf.yaml new file mode 100644 index 00000000000000..de330fa0ec528b --- /dev/null +++ b/releasenotes/notes/journald-expected-tags-duration-053b0a54f2624ebf.yaml @@ -0,0 +1,11 @@ +# Each section from every release note are combined when the +# CHANGELOG.rst is rendered. So the text needs to be worded so that +# it does not depend on any information only available in another +# section. This may mean repeating some details, but each section +# must be readable independently of the other. +# +# Each section note must be formatted as reStructuredText. +--- +enhancements: + - | + ``logs_config.expected_tags_duration`` now works for ``journald`` logs. From 6e139a3b2981eecd36d3c00d42b9a871218eff51 Mon Sep 17 00:00:00 2001 From: Nenad Noveljic <18366081+nenadnoveljic@users.noreply.github.com> Date: Wed, 6 Mar 2024 15:46:00 +0100 Subject: [PATCH 039/155] [oracle] Only custom query (DBMON-3655) (#23468) * custom queries only * only custom queries * pkg/collector/corechecks/oracle-dbm/oracle.go --- .../corechecks/oracle-dbm/config/config.go | 1 + pkg/collector/corechecks/oracle-dbm/oracle.go | 18 ++++++++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/pkg/collector/corechecks/oracle-dbm/config/config.go b/pkg/collector/corechecks/oracle-dbm/config/config.go index 6616e28eb4f9ef..b9eb977e296dbe 100644 --- a/pkg/collector/corechecks/oracle-dbm/config/config.go +++ b/pkg/collector/corechecks/oracle-dbm/config/config.go @@ -146,6 +146,7 @@ type InstanceConfig struct { Asm asmConfig `yaml:"asm"` ResourceManager resourceManagerConfig `yaml:"resource_manager"` Locks locksConfig `yaml:"locks"` + OnlyCustomQueries bool `yaml:"only_custom_queries"` } // CheckConfig holds the config needed for an integration instance to run. diff --git a/pkg/collector/corechecks/oracle-dbm/oracle.go b/pkg/collector/corechecks/oracle-dbm/oracle.go index 68ac65ab930fec..fe79754d48fb25 100644 --- a/pkg/collector/corechecks/oracle-dbm/oracle.go +++ b/pkg/collector/corechecks/oracle-dbm/oracle.go @@ -162,6 +162,21 @@ func (c *Check) Run() error { c.db = db } + // Backward compatibility with the old Python integration + if c.config.OnlyCustomQueries { + copy(c.tags, c.configTags) + } + + metricIntervalExpired := checkIntervalExpired(&c.metricLastRun, c.config.MetricCollectionInterval) + + if c.config.OnlyCustomQueries { + var err error + if metricIntervalExpired && (len(c.config.InstanceConfig.CustomQueries) > 0 || len(c.config.InitConfig.CustomQueries) > 0) { + err = c.CustomQueries() + } + return err + } + if !c.initialized { err := c.init() if err != nil { @@ -186,7 +201,6 @@ func (c *Check) Run() error { } } - metricIntervalExpired := checkIntervalExpired(&c.metricLastRun, c.config.MetricCollectionInterval) if metricIntervalExpired { if c.dbmEnabled { err := c.dataGuard() @@ -231,7 +245,7 @@ func (c *Check) Run() error { allErrors = errors.Join(allErrors, fmt.Errorf("%s failed to collect process memory %w", c.logPrompt, err)) } } - if len(c.config.InstanceConfig.CustomQueries) > 0 || len(c.config.InitConfig.CustomQueries) > 0 { + if metricIntervalExpired && (len(c.config.InstanceConfig.CustomQueries) > 0 || len(c.config.InitConfig.CustomQueries) > 0) { err := c.CustomQueries() if err != nil { allErrors = errors.Join(allErrors, fmt.Errorf("%s failed to execute custom queries %w", c.logPrompt, err)) From 3edc357af04d6ca389bdaac6de140e83ddce135f Mon Sep 17 00:00:00 2001 From: Cedric Lamoriniere Date: Wed, 6 Mar 2024 15:51:04 +0100 Subject: [PATCH 040/155] fix: simplify how entry status is updated in the GlobalScanner.scanQueue (#23483) --- pkg/sbom/scanner/scanner.go | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/pkg/sbom/scanner/scanner.go b/pkg/sbom/scanner/scanner.go index 03666b8d426fb6..2abfe9e7800bcc 100644 --- a/pkg/sbom/scanner/scanner.go +++ b/pkg/sbom/scanner/scanner.go @@ -177,7 +177,8 @@ func (s *Scanner) startScanRequestHandler(ctx context.Context) { if shutdown { break } - handleScanRequest(ctx, r, s) + s.handleScanRequest(ctx, r) + s.scanQueue.Done(r) } for _, collector := range collectors.Collectors { collector.Shutdown() @@ -185,20 +186,19 @@ func (s *Scanner) startScanRequestHandler(ctx context.Context) { }() } -func handleScanRequest(ctx context.Context, r interface{}, s *Scanner) { +func (s *Scanner) handleScanRequest(ctx context.Context, r interface{}) { request, ok := r.(sbom.ScanRequest) if !ok { _ = log.Errorf("invalid scan request type '%T'", r) s.scanQueue.Forget(r) - s.scanQueue.Done(r) return } + telemetry.SBOMAttempts.Inc(request.Collector(), request.Type()) collector, ok := collectors.Collectors[request.Collector()] if !ok { _ = log.Errorf("invalid collector '%s'", request.Collector()) s.scanQueue.Forget(request) - s.scanQueue.Done(request) return } @@ -219,14 +219,12 @@ func (s *Scanner) getImageMetadata(request sbom.ScanRequest) *workloadmeta.Conta if store == nil { _ = log.Errorf("workloadmeta store is not initialized") s.scanQueue.AddRateLimited(request) - s.scanQueue.Done(request) return nil } img, err := store.GetImage(request.ID()) if err != nil || img == nil { log.Debugf("image metadata not found for image id %s: %s", request.ID(), err) s.scanQueue.Forget(request) - s.scanQueue.Done(request) return nil } return img @@ -284,7 +282,6 @@ func (s *Scanner) handleScanResult(scanResult sbom.ScanResult, request sbom.Scan telemetry.SBOMGenerationDuration.Observe(scanResult.Duration.Seconds(), request.Collector(), request.Type()) s.scanQueue.Forget(request) } - s.scanQueue.Done(request) } func waitAfterScanIfNecessary(ctx context.Context, collector collectors.Collector) { From ec0ca3940d04fe8a0b6d24e6f9f302bd128366ae Mon Sep 17 00:00:00 2001 From: Kacper <89013263+kacper-murzyn@users.noreply.github.com> Date: Wed, 6 Mar 2024 16:38:28 +0100 Subject: [PATCH 041/155] [AGNTR-171] Fix the issue with RC PR generation script setting wrong references (#23487) * Changed version matching regex * Remove printout --- tasks/release.py | 2 +- tasks/unit-tests/release_tests.py | 29 ++++++++++++++++++++++++++--- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/tasks/release.py b/tasks/release.py index c0fe68ab097296..2cd09a3f2604f3 100644 --- a/tasks/release.py +++ b/tasks/release.py @@ -419,7 +419,7 @@ def build_compatible_version_re(allowed_major_versions, minor_version): the provided minor version. """ return re.compile( - r'(v)?({})[.]({})([.](\d+))?(-devel)?(-rc\.(\d+))?'.format( # noqa: FS002 + r'(v)?({})[.]({})([.](\d+))+(-devel)?(-rc\.(\d+))?(?!-\w)'.format( # noqa: FS002 "|".join(allowed_major_versions), minor_version ) ) diff --git a/tasks/unit-tests/release_tests.py b/tasks/unit-tests/release_tests.py index 96766f6e5ad132..08acd00f86d01f 100644 --- a/tasks/unit-tests/release_tests.py +++ b/tasks/unit-tests/release_tests.py @@ -9,10 +9,11 @@ from tasks.libs.version import Version -def mocked_github_requests_get(*args, **_kwargs): - def fake_tag(value): - return SimpleNamespace(name=value) +def fake_tag(value): + return SimpleNamespace(name=value) + +def mocked_github_requests_get(*args, **_kwargs): if args[0][-1] == "6": return [ fake_tag("6.28.0-rc.1"), @@ -49,7 +50,29 @@ def fake_tag(value): ] +def mocked_github_requests_incorrect_get(*_args, **_kwargs): + return [ + fake_tag("7.28.0-test"), + fake_tag("7.28.0-rc.1"), + fake_tag("7.28.0-rc.2"), + fake_tag("7.28.0-beta"), + ] + + class TestGetHighestRepoVersion(unittest.TestCase): + @mock.patch('tasks.release.GithubAPI') + def test_ignore_incorrect_tag(self, gh_mock): + gh_instance = mock.MagicMock() + gh_instance.get_tags.side_effect = mocked_github_requests_incorrect_get + gh_mock.return_value = gh_instance + version = release._get_highest_repo_version( + "target-repo", + "", + release.build_compatible_version_re(release.COMPATIBLE_MAJOR_VERSIONS[7], 28), + release.COMPATIBLE_MAJOR_VERSIONS[7], + ) + self.assertEqual(version, Version(major=7, minor=28, patch=0, rc=2)) + @mock.patch('tasks.release.GithubAPI') def test_one_allowed_major_multiple_entries(self, gh_mock): gh_instance = mock.MagicMock() From 9f092671932f42cbf5b925369b5543ac67921c35 Mon Sep 17 00:00:00 2001 From: AliDatadog <125997632+AliDatadog@users.noreply.github.com> Date: Wed, 6 Mar 2024 16:39:39 +0100 Subject: [PATCH 042/155] fix panic on shutdown in long running checks (#23371) --- .../corechecks/containerlifecycle/check.go | 4 +- pkg/collector/corechecks/longrunning.go | 22 ++++++- pkg/collector/corechecks/longrunning_test.go | 61 ++++++++++++++++--- pkg/collector/corechecks/sbom/check.go | 11 ++-- 4 files changed, 81 insertions(+), 17 deletions(-) diff --git a/pkg/collector/corechecks/containerlifecycle/check.go b/pkg/collector/corechecks/containerlifecycle/check.go index 1f65687bac8597..b37271610be649 100644 --- a/pkg/collector/corechecks/containerlifecycle/check.go +++ b/pkg/collector/corechecks/containerlifecycle/check.go @@ -138,8 +138,8 @@ func (c *Check) Run() error { } } -// Stop stops the container_lifecycle check -func (c *Check) Stop() { close(c.stopCh) } +// Cancel stops the container_lifecycle check +func (c *Check) Cancel() { close(c.stopCh) } // Interval returns 0, it makes container_lifecycle a long-running check func (c *Check) Interval() time.Duration { return 0 } diff --git a/pkg/collector/corechecks/longrunning.go b/pkg/collector/corechecks/longrunning.go index ab184945f03cc4..289f35605e5b86 100644 --- a/pkg/collector/corechecks/longrunning.go +++ b/pkg/collector/corechecks/longrunning.go @@ -31,6 +31,8 @@ type LongRunningCheckWrapper struct { LongRunningCheck running bool mutex sync.Mutex + + stopped bool } // NewLongRunningCheckWrapper returns a new LongRunningCheckWrapper @@ -47,6 +49,10 @@ func (cw *LongRunningCheckWrapper) Run() error { cw.mutex.Lock() defer cw.mutex.Unlock() + if cw.stopped { + return fmt.Errorf("check already stopped") + } + if cw.running { s, err := cw.LongRunningCheck.GetSender() if err != nil { @@ -61,9 +67,7 @@ func (cw *LongRunningCheckWrapper) Run() error { if err := cw.LongRunningCheck.Run(); err != nil { fmt.Printf("Error running check: %v\n", err) } - cw.mutex.Lock() - cw.running = false - cw.mutex.Unlock() + // Long running checks are not meant to be restarted. Thus we never reset the running flag. }() return nil @@ -89,3 +93,15 @@ func (cw *LongRunningCheckWrapper) GetSenderStats() (stats.SenderStats, error) { s.LongRunningCheck = true return s, nil } + +// Cancel calls the cancel method of the check. +// It makes sure it is called only once. +func (cw *LongRunningCheckWrapper) Cancel() { + cw.mutex.Lock() + defer cw.mutex.Unlock() + if cw.stopped { + return + } + cw.LongRunningCheck.Cancel() + cw.stopped = true +} diff --git a/pkg/collector/corechecks/longrunning_test.go b/pkg/collector/corechecks/longrunning_test.go index b1bbb427706f20..cc053c39152bf1 100644 --- a/pkg/collector/corechecks/longrunning_test.go +++ b/pkg/collector/corechecks/longrunning_test.go @@ -9,15 +9,16 @@ package corechecks import ( "fmt" - "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" - checkid "github.com/DataDog/datadog-agent/pkg/collector/check/id" - "github.com/DataDog/datadog-agent/pkg/diagnose/diagnosis" "testing" "time" "github.com/DataDog/datadog-agent/pkg/aggregator/mocksender" + "github.com/DataDog/datadog-agent/pkg/aggregator/sender" + "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + checkid "github.com/DataDog/datadog-agent/pkg/collector/check/id" "github.com/DataDog/datadog-agent/pkg/collector/check/stats" + "github.com/DataDog/datadog-agent/pkg/diagnose/diagnosis" + "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" ) @@ -26,7 +27,8 @@ import ( type mockLongRunningCheck struct { mock.Mock - stopCh chan struct{} + stopCh chan struct{} + runningCh chan struct{} } func (m *mockLongRunningCheck) Stop() { @@ -99,19 +101,28 @@ func (m *mockLongRunningCheck) GetSender() (sender.Sender, error) { func newMockLongRunningCheck() *mockLongRunningCheck { return &mockLongRunningCheck{ - stopCh: make(chan struct{}), + stopCh: make(chan struct{}), + runningCh: make(chan struct{}, 1), } } func (m *mockLongRunningCheck) Run() error { args := m.Called() + m.runningCh <- struct{}{} <-m.stopCh return args.Error(0) } func (m *mockLongRunningCheck) Cancel() { m.Called() - m.stopCh <- struct{}{} + select { + case m.stopCh <- struct{}{}: + default: + } +} + +func (m *mockLongRunningCheck) waitUntilRun() { + <-m.runningCh } // TestLongRunningCheckWrapperRun tests the Run function for different scenarios. @@ -123,8 +134,9 @@ func TestLongRunningCheckWrapperRun(t *testing.T) { wrapper := NewLongRunningCheckWrapper(mockCheck) err := wrapper.Run() - assert.Nil(t, err) + mockCheck.waitUntilRun() + mockCheck.Cancel() mockCheck.AssertExpectations(t) }) @@ -159,6 +171,39 @@ func TestLongRunningCheckWrapperRun(t *testing.T) { assert.EqualError(t, err, "error getting sender: failed to get sender") mockCheck.AssertExpectations(t) }) + + t.Run("Make sure innerCheck.Cancel is called only once", func(t *testing.T) { + mockCheck := newMockLongRunningCheck() + mockCheck.On("Run").Return(nil) + mockCheck.On("Cancel").Return() + + wrapper := NewLongRunningCheckWrapper(mockCheck) + err := wrapper.Run() + mockCheck.waitUntilRun() + + assert.Nil(t, err) + wrapper.Cancel() + wrapper.Cancel() + mockCheck.AssertNumberOfCalls(t, "Cancel", 1) + }) + + t.Run("Make sure innerCheck.Run can't be called after a cancel", func(t *testing.T) { + mockCheck := newMockLongRunningCheck() + mockCheck.On("Run").Return(nil) + mockCheck.On("Cancel").Return() + + wrapper := NewLongRunningCheckWrapper(mockCheck) + err := wrapper.Run() + assert.Nil(t, err) + + wrapper.Cancel() + err = wrapper.Run() + assert.Error(t, err) + mockCheck.waitUntilRun() + + mockCheck.AssertExpectations(t) + mockCheck.AssertNumberOfCalls(t, "Run", 1) + }) } // TestLongRunningCheckWrapperGetSenderStats tests the GetSenderStats function. diff --git a/pkg/collector/corechecks/sbom/check.go b/pkg/collector/corechecks/sbom/check.go index 5a33e1dc73c7e6..68b02094fcb14c 100644 --- a/pkg/collector/corechecks/sbom/check.go +++ b/pkg/collector/corechecks/sbom/check.go @@ -209,12 +209,15 @@ func (c *Check) Run() error { return nil } c.processor.processContainerImagesEvents(eventBundle) + case scanResult, ok := <-hostSbomChan: + if !ok { + return nil + } + c.processor.processHostScanResult(scanResult) case <-containerPeriodicRefreshTicker.C: c.processor.processContainerImagesRefresh(c.workloadmetaStore.ListImages()) case <-hostPeriodicRefreshTicker.C: c.processor.triggerHostScan() - case scanResult := <-hostSbomChan: - c.processor.processHostScanResult(scanResult) case <-metricTicker.C: c.sendUsageMetrics() case <-c.stopCh: @@ -233,8 +236,8 @@ func (c *Check) sendUsageMetrics() { c.sender.Commit() } -// Stop stops the sbom check -func (c *Check) Stop() { +// Cancel stops the sbom check +func (c *Check) Cancel() { close(c.stopCh) } From e23d246adb5194fd1102baad78fcfccb3d390e15 Mon Sep 17 00:00:00 2001 From: Andrea Marziali Date: Wed, 6 Mar 2024 17:16:07 +0100 Subject: [PATCH 043/155] fix copyright for go-antpath (#23489) --- .copyright-overrides.yml | 4 ++++ LICENSE-3rdparty.csv | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.copyright-overrides.yml b/.copyright-overrides.yml index 9c1b6e1cf27aab..27351e3ce77d53 100644 --- a/.copyright-overrides.yml +++ b/.copyright-overrides.yml @@ -309,3 +309,7 @@ github.com/pjbgf/sha1cd: Copyright 2023 pjbgf # Copyright information is in the source headers github.com/csaf-poc/csaf_distribution: Copyright 2021-2023 German Federal Office for Information Security (BSI) + +github.com/vibrantbyte/go-antpath/antpath: vibrantbyte |suchao +github.com/vibrantbyte/go-antpath/extend: vibrantbyte |suchao + diff --git a/LICENSE-3rdparty.csv b/LICENSE-3rdparty.csv index 9b1723ece3ad98..b1303684eb2882 100644 --- a/LICENSE-3rdparty.csv +++ b/LICENSE-3rdparty.csv @@ -1853,8 +1853,8 @@ core,github.com/uptrace/bun/internal/tagparser,BSD-2-Clause,Copyright (c) 2021 V core,github.com/uptrace/bun/schema,BSD-2-Clause,Copyright (c) 2021 Vladimir Mihailenco. All rights reserved core,github.com/urfave/negroni,MIT,Copyright (c) 2014 Jeremy Saenz core,github.com/vbatts/tar-split/archive/tar,BSD-3-Clause,"Copyright (c) 2015 Vincent Batts, Raleigh, NC, USA" -core,github.com/vibrantbyte/go-antpath/antpath,Apache-2.0,UNKNOWN -core,github.com/vibrantbyte/go-antpath/extend,Apache-2.0,UNKNOWN +core,github.com/vibrantbyte/go-antpath/antpath,Apache-2.0,vibrantbyte |suchao +core,github.com/vibrantbyte/go-antpath/extend,Apache-2.0,vibrantbyte |suchao core,github.com/vishvananda/netlink,Apache-2.0,"Copyright 2014 Docker, Inc | Copyright 2014 Vishvananda Ishaya" core,github.com/vishvananda/netlink/nl,Apache-2.0,"Copyright 2014 Docker, Inc | Copyright 2014 Vishvananda Ishaya" core,github.com/vishvananda/netns,Apache-2.0,"Copyright 2014 Docker, Inc | Copyright 2014 Vishvananda Ishaya" From dc461d73fba81949d676ea5d68ddbfc05ff7ca92 Mon Sep 17 00:00:00 2001 From: Gustavo Caso Date: Wed, 6 Mar 2024 17:47:35 +0100 Subject: [PATCH 044/155] provide initialize secrets component to flare (#23481) * provide initialize secrets component to flare * fix tests * remove comments --- comp/core/flare/flare.go | 5 ++--- comp/core/flare/flare_test.go | 7 +++++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/comp/core/flare/flare.go b/comp/core/flare/flare.go index 4a8227dd33a51c..5e39934f0b8246 100644 --- a/comp/core/flare/flare.go +++ b/comp/core/flare/flare.go @@ -40,6 +40,7 @@ type dependencies struct { Params Params Providers []types.FlareCallback `group:"flare"` Collector optional.Option[collector.Component] + Secrets secrets.Component } type flare struct { @@ -51,9 +52,7 @@ type flare struct { } func newFlare(deps dependencies) (Component, rcclienttypes.TaskListenerProvider) { - // TODO FIX this uninitialize variable. - var secretResolver secrets.Component - diagnoseDeps := diagnose.NewSuitesDeps(deps.Diagnosesendermanager, deps.Collector, secretResolver) + diagnoseDeps := diagnose.NewSuitesDeps(deps.Diagnosesendermanager, deps.Collector, deps.Secrets) f := &flare{ log: deps.Log, config: deps.Config, diff --git a/comp/core/flare/flare_test.go b/comp/core/flare/flare_test.go index 9f4e430566fcdc..5c7966b1eaa196 100644 --- a/comp/core/flare/flare_test.go +++ b/comp/core/flare/flare_test.go @@ -13,6 +13,8 @@ import ( "github.com/DataDog/datadog-agent/comp/core/config" "github.com/DataDog/datadog-agent/comp/core/flare/types" "github.com/DataDog/datadog-agent/comp/core/log/logimpl" + "github.com/DataDog/datadog-agent/comp/core/secrets" + "github.com/DataDog/datadog-agent/comp/core/secrets/secretsimpl" "github.com/DataDog/datadog-agent/pkg/util/fxutil" "github.com/stretchr/testify/assert" "go.uber.org/fx" @@ -26,6 +28,11 @@ func TestFlareCreation(t *testing.T) { t, logimpl.MockModule(), config.MockModule(), + secretsimpl.MockModule(), + fx.Provide(func(secretMock secrets.Mock) secrets.Component { + component := secretMock.(secrets.Component) + return component + }), fx.Provide(func() diagnosesendermanager.Component { return nil }), fx.Provide(func() Params { return Params{} }), collector.NoneModule(), From 931861ad66225802eb55753275862683d06b3ee0 Mon Sep 17 00:00:00 2001 From: Arthur Bellal Date: Wed, 6 Mar 2024 17:55:21 +0100 Subject: [PATCH 045/155] (fleet) multi-package state tracking (#23450) * (fleet) multi-package state tracking This PR adds multi-package state tracking. I had to resort to using a `context.Context` to keep the remote request data we want to include as part of the state reported to RC. The pattern is an expected use of contexts but I would rather have keept this more simple to be honest. The alternative was to pass around all the request state in the top level method of the updater. This was problematic for the local API and the local bootstrap were we'd have to "fake" requests and I was worried this would potentially lead to confusing the backend. commit-id:8951cff1 * (fleet) multi-package state tracking This PR adds multi-package state tracking. I had to resort to using a `context.Context` to keep the remote request data we want to include as part of the state reported to RC. The pattern is an expected use of contexts but I would rather have keept this more simple to be honest. The alternative was to pass around all the request state in the top level method of the updater. This was problematic for the local API and the local bootstrap were we'd have to "fake" requests and I was worried this would potentially lead to confusing the backend. commit-id:8951cff1 --- pkg/updater/local_api.go | 15 +-- pkg/updater/remote_config.go | 27 +--- pkg/updater/updater.go | 245 +++++++++++++++++------------------ pkg/updater/updater_test.go | 15 +-- 4 files changed, 132 insertions(+), 170 deletions(-) diff --git a/pkg/updater/local_api.go b/pkg/updater/local_api.go index 39075e4d89d97e..0fe7db5975da31 100644 --- a/pkg/updater/local_api.go +++ b/pkg/updater/local_api.go @@ -14,7 +14,6 @@ import ( "net/http" "os" - "github.com/google/uuid" "github.com/gorilla/mux" "github.com/DataDog/datadog-agent/pkg/updater/repository" @@ -138,8 +137,7 @@ func (l *localAPIImpl) startExperiment(w http.ResponseWriter, r *http.Request) { return } log.Infof("Received local request to start experiment for package %s version %s", pkg, request.Version) - taskID := uuid.New().String() - err = l.updater.StartExperiment(r.Context(), pkg, request.Version, taskID) + err = l.updater.StartExperiment(r.Context(), pkg, request.Version) if err != nil { w.WriteHeader(http.StatusInternalServerError) response.Error = &APIError{Message: err.Error()} @@ -156,8 +154,7 @@ func (l *localAPIImpl) stopExperiment(w http.ResponseWriter, r *http.Request) { _ = json.NewEncoder(w).Encode(response) }() log.Infof("Received local request to stop experiment for package %s", pkg) - taskID := uuid.New().String() - err := l.updater.StopExperiment(pkg, taskID) + err := l.updater.StopExperiment(r.Context(), pkg) if err != nil { w.WriteHeader(http.StatusInternalServerError) response.Error = &APIError{Message: err.Error()} @@ -174,8 +171,7 @@ func (l *localAPIImpl) promoteExperiment(w http.ResponseWriter, r *http.Request) _ = json.NewEncoder(w).Encode(response) }() log.Infof("Received local request to promote experiment for package %s", pkg) - taskID := uuid.New().String() - err := l.updater.PromoteExperiment(pkg, taskID) + err := l.updater.PromoteExperiment(r.Context(), pkg) if err != nil { w.WriteHeader(http.StatusInternalServerError) response.Error = &APIError{Message: err.Error()} @@ -201,13 +197,12 @@ func (l *localAPIImpl) bootstrap(w http.ResponseWriter, r *http.Request) { return } } - taskID := uuid.New().String() if request.Version != "" { log.Infof("Received local request to bootstrap package %s version %s", pkg, request.Version) - err = l.updater.BootstrapVersion(r.Context(), pkg, request.Version, taskID) + err = l.updater.BootstrapVersion(r.Context(), pkg, request.Version) } else { log.Infof("Received local request to bootstrap package %s", pkg) - err = l.updater.Bootstrap(r.Context(), pkg, taskID) + err = l.updater.Bootstrap(r.Context(), pkg) } if err != nil { diff --git a/pkg/updater/remote_config.go b/pkg/updater/remote_config.go index 18fa8c323270f4..1aaadd8a339a8c 100644 --- a/pkg/updater/remote_config.go +++ b/pkg/updater/remote_config.go @@ -12,7 +12,6 @@ import ( "github.com/DataDog/datadog-agent/pkg/config/remote/client" pbgo "github.com/DataDog/datadog-agent/pkg/proto/pbgo/core" "github.com/DataDog/datadog-agent/pkg/remoteconfig/state" - "github.com/DataDog/datadog-agent/pkg/updater/repository" "github.com/DataDog/datadog-agent/pkg/util/log" ) @@ -63,31 +62,11 @@ func (rc *remoteConfig) Close() { } // SetState sets the state of the given package. -func (rc *remoteConfig) SetState(pkg string, repoState repository.State, taskState TaskState) { +func (rc *remoteConfig) SetState(packages []*pbgo.PackageState) { if rc.client == nil { return } - - var taskErr *pbgo.TaskError - if taskState.Err != nil { - taskErr = &pbgo.TaskError{ - Code: uint64(taskState.Err.Code()), - Message: taskState.Err.Error(), - } - } - - rc.client.SetUpdaterPackagesState([]*pbgo.PackageState{ - { - Package: pkg, - StableVersion: repoState.Stable, - ExperimentVersion: repoState.Experiment, - Task: &pbgo.PackageStateTask{ - Id: taskState.ID, - State: taskState.State, - Error: taskErr, - }, - }, - }) + rc.client.SetUpdaterPackagesState(packages) } // Package represents a downloadable package. @@ -162,7 +141,7 @@ const ( type remoteAPIRequest struct { ID string `json:"id"` - Package string `json:"package"` + Package string `json:"package_name"` ExpectedState expectedState `json:"expected_state"` Method string `json:"method"` Params json.RawMessage `json:"params"` diff --git a/pkg/updater/updater.go b/pkg/updater/updater.go index 2e952767437b78..780a9a113c707f 100644 --- a/pkg/updater/updater.go +++ b/pkg/updater/updater.go @@ -23,7 +23,6 @@ import ( "github.com/DataDog/datadog-agent/pkg/updater/repository" "github.com/DataDog/datadog-agent/pkg/util/filesystem" "github.com/DataDog/datadog-agent/pkg/util/log" - "github.com/google/uuid" ) const ( @@ -47,11 +46,11 @@ type Updater interface { Start(ctx context.Context) error Stop(ctx context.Context) error - Bootstrap(ctx context.Context, pkg string, taskID string) error - BootstrapVersion(ctx context.Context, pkg string, version string, taskID string) error - StartExperiment(ctx context.Context, pkg string, version string, taskID string) error - StopExperiment(pkg string, taskID string) error - PromoteExperiment(pkg string, taskID string) error + Bootstrap(ctx context.Context, pkg string) error + BootstrapVersion(ctx context.Context, pkg string, version string) error + StartExperiment(ctx context.Context, pkg string, version string) error + StopExperiment(ctx context.Context, pkg string) error + PromoteExperiment(ctx context.Context, pkg string) error GetState() (map[string]repository.State, error) } @@ -71,13 +70,6 @@ type updaterImpl struct { bootstrapVersions bootstrapVersions } -// TaskState represents the state of a task. -type TaskState struct { - ID string - State pbgo.TaskState - Err *updaterErrors.UpdaterError -} - type disk interface { GetUsage(path string) (*filesystem.DiskUsage, error) } @@ -85,12 +77,8 @@ type disk interface { // Bootstrap bootstraps the default version for the given package. func Bootstrap(ctx context.Context, pkg string) error { rc := newNoopRemoteConfig() - u, err := newUpdater(rc, defaultRepositoriesPath, defaultLocksPath) - if err != nil { - return err - } - taskID := uuid.New().String() - return u.Bootstrap(ctx, pkg, taskID) + u := newUpdater(rc, defaultRepositoriesPath, defaultLocksPath) + return u.Bootstrap(ctx, pkg) } // NewUpdater returns a new Updater. @@ -99,10 +87,10 @@ func NewUpdater(rcFetcher client.ConfigFetcher) (Updater, error) { if err != nil { return nil, fmt.Errorf("could not create remote config client: %w", err) } - return newUpdater(rc, defaultRepositoriesPath, defaultLocksPath) + return newUpdater(rc, defaultRepositoriesPath, defaultLocksPath), nil } -func newUpdater(rc *remoteConfig, repositoriesPath string, locksPath string) (*updaterImpl, error) { +func newUpdater(rc *remoteConfig, repositoriesPath string, locksPath string) *updaterImpl { repositories := repository.NewRepositories(repositoriesPath, locksPath) u := &updaterImpl{ rc: rc, @@ -114,17 +102,8 @@ func newUpdater(rc *remoteConfig, repositoriesPath string, locksPath string) (*u bootstrapVersions: defaultBootstrapVersions, stopChan: make(chan struct{}), } - state, err := u.GetState() - if err != nil { - return nil, fmt.Errorf("could not get updater state: %w", err) - } - initTaskState := TaskState{ - State: pbgo.TaskState_IDLE, - } - for pkg, s := range state { - u.rc.SetState(pkg, s, initTaskState) - } - return u, nil + u.refreshState(context.Background()) + return u } // GetState returns the state. @@ -168,36 +147,36 @@ func (u *updaterImpl) Stop(_ context.Context) error { } // Bootstrap installs the stable version of the package. -func (u *updaterImpl) Bootstrap(ctx context.Context, pkg string, taskID string) error { +func (u *updaterImpl) Bootstrap(ctx context.Context, pkg string) error { u.m.Lock() defer u.m.Unlock() + u.refreshState(ctx) + defer u.refreshState(ctx) + stablePackage, ok := u.catalog.getDefaultPackage(u.bootstrapVersions, pkg, runtime.GOARCH, runtime.GOOS) if !ok { return fmt.Errorf("could not get default package %s for %s, %s", pkg, runtime.GOARCH, runtime.GOOS) } - return u.boostrapPackage(ctx, stablePackage, taskID) + return u.boostrapPackage(ctx, stablePackage) } // Bootstrap installs the stable version of the package. -func (u *updaterImpl) BootstrapVersion(ctx context.Context, pkg string, version string, taskID string) error { +func (u *updaterImpl) BootstrapVersion(ctx context.Context, pkg string, version string) error { u.m.Lock() defer u.m.Unlock() + u.refreshState(ctx) + defer u.refreshState(ctx) + stablePackage, ok := u.catalog.getPackage(pkg, version, runtime.GOARCH, runtime.GOOS) if !ok { return fmt.Errorf("could not get package %s version %s for %s, %s", pkg, version, runtime.GOARCH, runtime.GOOS) } - return u.boostrapPackage(ctx, stablePackage, taskID) + return u.boostrapPackage(ctx, stablePackage) } -func (u *updaterImpl) boostrapPackage(ctx context.Context, stablePackage Package, taskID string) error { - var err error - u.setPackagesStateTaskRunning(stablePackage.Name, taskID) - defer func() { - u.setPackagesStateTaskFinished(stablePackage.Name, taskID, err) - }() - +func (u *updaterImpl) boostrapPackage(ctx context.Context, stablePackage Package) error { // both tmp and repository paths are checked for available disk space in case they are on different partitions - err = checkAvailableDiskSpace(fsDisk, defaultRepositoriesPath, os.TempDir()) + err := checkAvailableDiskSpace(fsDisk, defaultRepositoriesPath, os.TempDir()) if err != nil { return fmt.Errorf("not enough disk space to install package: %w", err) } @@ -220,19 +199,15 @@ func (u *updaterImpl) boostrapPackage(ctx context.Context, stablePackage Package } // StartExperiment starts an experiment with the given package. -func (u *updaterImpl) StartExperiment(ctx context.Context, pkg string, version string, taskID string) error { +func (u *updaterImpl) StartExperiment(ctx context.Context, pkg string, version string) error { u.m.Lock() defer u.m.Unlock() - - var err error - u.setPackagesStateTaskRunning(pkg, taskID) - defer func() { - u.setPackagesStateTaskFinished(pkg, taskID, err) - }() + u.refreshState(ctx) + defer u.refreshState(ctx) log.Infof("Updater: Starting experiment for package %s version %s", pkg, version) // both tmp and repository paths are checked for available disk space in case they are on different partitions - err = checkAvailableDiskSpace(fsDisk, defaultRepositoriesPath, os.TempDir()) + err := checkAvailableDiskSpace(fsDisk, defaultRepositoriesPath, os.TempDir()) if err != nil { return fmt.Errorf("not enough disk space to install package: %w", err) } @@ -258,18 +233,14 @@ func (u *updaterImpl) StartExperiment(ctx context.Context, pkg string, version s } // PromoteExperiment promotes the experiment to stable. -func (u *updaterImpl) PromoteExperiment(pkg string, taskID string) error { +func (u *updaterImpl) PromoteExperiment(ctx context.Context, pkg string) error { u.m.Lock() defer u.m.Unlock() - - var err error - u.setPackagesStateTaskRunning(pkg, taskID) - defer func() { - u.setPackagesStateTaskFinished(pkg, taskID, err) - }() + u.refreshState(ctx) + defer u.refreshState(ctx) log.Infof("Updater: Promoting experiment for package %s", pkg) - err = u.installer.promoteExperiment(pkg) + err := u.installer.promoteExperiment(pkg) if err != nil { return fmt.Errorf("could not promote experiment: %w", err) } @@ -278,18 +249,14 @@ func (u *updaterImpl) PromoteExperiment(pkg string, taskID string) error { } // StopExperiment stops the experiment. -func (u *updaterImpl) StopExperiment(pkg string, taskID string) error { +func (u *updaterImpl) StopExperiment(ctx context.Context, pkg string) error { u.m.Lock() defer u.m.Unlock() + u.refreshState(ctx) + defer u.refreshState(ctx) - var err error - u.setPackagesStateTaskRunning(pkg, taskID) - defer func() { - u.setPackagesStateTaskFinished(pkg, taskID, err) - }() - - log.Infof("Updater: Stopping experiment for package %s", pkg) - err = u.installer.uninstallExperiment(pkg) + defer log.Infof("Updater: Stopping experiment for package %s", pkg) + err := u.installer.uninstallExperiment(pkg) if err != nil { return fmt.Errorf("could not stop experiment: %w", err) } @@ -311,18 +278,24 @@ func (u *updaterImpl) scheduleRemoteAPIRequest(request remoteAPIRequest) error { return nil } -func (u *updaterImpl) handleRemoteAPIRequest(request remoteAPIRequest) error { +func (u *updaterImpl) handleRemoteAPIRequest(request remoteAPIRequest) (err error) { defer u.requestsWG.Done() + ctx := newRequestContext(request) + u.refreshState(ctx) + defer u.refreshState(ctx) + s, err := u.repositories.GetPackageState(request.Package) if err != nil { return fmt.Errorf("could not get updater state: %w", err) } if s.Stable != request.ExpectedState.Stable || s.Experiment != request.ExpectedState.Experiment { - u.setPackagesStateInvalid(request.Package, request.ID) log.Infof("remote request %s not executed as state does not match: expected %v, got %v", request.ID, request.ExpectedState, s) + setRequestInvalid(ctx) + u.refreshState(ctx) return nil } + defer func() { setRequestDone(ctx, err) }() switch request.Method { case methodStartExperiment: log.Infof("Updater: Received remote request %s to start experiment for package %s version %s", request.ID, request.Package, request.Params) @@ -331,13 +304,13 @@ func (u *updaterImpl) handleRemoteAPIRequest(request remoteAPIRequest) error { if err != nil { return fmt.Errorf("could not unmarshal start experiment params: %w", err) } - return u.StartExperiment(context.Background(), request.Package, params.Version, request.ID) + return u.StartExperiment(context.Background(), request.Package, params.Version) case methodStopExperiment: log.Infof("Updater: Received remote request %s to stop experiment for package %s", request.ID, request.Package) - return u.StopExperiment(request.Package, request.ID) + return u.StopExperiment(ctx, request.Package) case methodPromoteExperiment: log.Infof("Updater: Received remote request %s to promote experiment for package %s", request.ID, request.Package) - return u.PromoteExperiment(request.Package, request.ID) + return u.PromoteExperiment(ctx, request.Package) case methodBootstrap: var params taskWithVersionParams err := json.Unmarshal(request.Params, ¶ms) @@ -346,66 +319,14 @@ func (u *updaterImpl) handleRemoteAPIRequest(request remoteAPIRequest) error { } log.Infof("Updater: Received remote request %s to bootstrap package %s version %s", request.ID, request.Package, params.Version) if params.Version == "" { - return u.Bootstrap(context.Background(), request.Package, request.ID) + return u.Bootstrap(context.Background(), request.Package) } - return u.BootstrapVersion(context.Background(), request.Package, params.Version, request.ID) + return u.BootstrapVersion(context.Background(), request.Package, params.Version) default: return fmt.Errorf("unknown method: %s", request.Method) } } -// setPackagesStateTaskRunning sets the packages state to RUNNING. -// and is called before a task starts -func (u *updaterImpl) setPackagesStateTaskRunning(pkg string, taskID string) { - taskState := TaskState{ - ID: taskID, - State: pbgo.TaskState_RUNNING, - } - - repoState, err := u.repositories.GetPackageState(pkg) - if err != nil { - log.Warnf("could not update packages state: %s", err) - return - } - u.rc.SetState(pkg, repoState, taskState) -} - -// setPackagesStateTaskFinished sets the packages state once a task is done -// depending on the taskErr, the state will be set to DONE or ERROR -func (u *updaterImpl) setPackagesStateTaskFinished(pkg string, taskID string, taskErr error) { - taskState := TaskState{ - ID: taskID, - State: pbgo.TaskState_DONE, - Err: updaterErrors.From(taskErr), - } - if taskErr != nil { - taskState.State = pbgo.TaskState_ERROR - } - - repoState, err := u.repositories.GetPackageState(pkg) - if err != nil { - log.Warnf("could not update packages state: %s", err) - return - } - u.rc.SetState(pkg, repoState, taskState) -} - -// setPackagesStateInvalid sets the packages state to INVALID, -// if the stable or experiment version does not match the expected state -func (u *updaterImpl) setPackagesStateInvalid(pkg string, taskID string) { - taskState := TaskState{ - ID: taskID, - State: pbgo.TaskState_INVALID_STATE, - } - - repoState, err := u.repositories.GetPackageState(pkg) - if err != nil { - log.Warnf("could not update packages state: %s", err) - return - } - u.rc.SetState(pkg, repoState, taskState) -} - // checkAvailableDiskSpace checks if there is enough disk space to download and extract a package in the given paths. // This will check the underlying partition of the given path. Note that the path must be an existing dir. // @@ -432,3 +353,71 @@ func checkAvailableDiskSpace(fsDisk disk, paths ...string) error { } return nil } + +type requestKey int + +var requestStateKey requestKey + +// requestState represents the state of a task. +type requestState struct { + Package string + ID string + State pbgo.TaskState + Err *updaterErrors.UpdaterError +} + +func newRequestContext(request remoteAPIRequest) context.Context { + return context.WithValue(context.Background(), requestStateKey, &requestState{ + Package: request.Package, + ID: request.ID, + State: pbgo.TaskState_RUNNING, + }) +} + +func setRequestInvalid(ctx context.Context) { + state := ctx.Value(requestStateKey).(*requestState) + state.State = pbgo.TaskState_INVALID_STATE +} + +func setRequestDone(ctx context.Context, err error) { + state := ctx.Value(requestStateKey).(*requestState) + state.State = pbgo.TaskState_DONE + if err != nil { + state.State = pbgo.TaskState_ERROR + state.Err = updaterErrors.From(err) + } +} + +func (u *updaterImpl) refreshState(ctx context.Context) { + state, err := u.GetState() + if err != nil { + // TODO: we should report this error through RC in some way + log.Errorf("could not get updater state: %v", err) + return + } + requestState, ok := ctx.Value(requestStateKey).(*requestState) + var packages []*pbgo.PackageState + for pkg, s := range state { + p := &pbgo.PackageState{ + Package: pkg, + StableVersion: s.Stable, + ExperimentVersion: s.Experiment, + } + if ok && pkg == requestState.Package { + var taskErr *pbgo.TaskError + if requestState.Err != nil { + taskErr = &pbgo.TaskError{ + Code: uint64(requestState.Err.Code()), + Message: requestState.Err.Error(), + } + } + p.Task = &pbgo.PackageStateTask{ + Id: requestState.ID, + State: requestState.State, + Error: taskErr, + } + } + packages = append(packages, p) + } + u.rc.SetState(packages) +} diff --git a/pkg/updater/updater_test.go b/pkg/updater/updater_test.go index b668c0943f8739..70703dc36b23f3 100644 --- a/pkg/updater/updater_test.go +++ b/pkg/updater/updater_test.go @@ -74,8 +74,7 @@ func (c *testRemoteConfigClient) SubmitRequest(request remoteAPIRequest) { func newTestUpdater(t *testing.T, s *testFixturesServer, rcc *testRemoteConfigClient, defaultFixture fixture) *updaterImpl { rc := &remoteConfig{client: rcc} - u, err := newUpdater(rc, t.TempDir(), t.TempDir()) - assert.NoError(t, err) + u := newUpdater(rc, t.TempDir(), t.TempDir()) u.catalog = s.Catalog() u.bootstrapVersions[defaultFixture.pkg] = defaultFixture.version u.Start(context.Background()) @@ -88,7 +87,7 @@ func TestUpdaterBootstrap(t *testing.T) { rc := newTestRemoteConfigClient() updater := newTestUpdater(t, s, rc, fixtureSimpleV1) - err := updater.Bootstrap(context.Background(), fixtureSimpleV1.pkg, uuid.New().String()) + err := updater.Bootstrap(context.Background(), fixtureSimpleV1.pkg) assert.NoError(t, err) r := updater.repositories.Get(fixtureSimpleV1.pkg) @@ -106,10 +105,10 @@ func TestUpdaterBootstrapCatalogUpdate(t *testing.T) { updater := newTestUpdater(t, s, rc, fixtureSimpleV1) updater.catalog = catalog{} - err := updater.Bootstrap(context.Background(), fixtureSimpleV1.pkg, uuid.New().String()) + err := updater.Bootstrap(context.Background(), fixtureSimpleV1.pkg) assert.Error(t, err) rc.SubmitCatalog(s.Catalog()) - err = updater.Bootstrap(context.Background(), fixtureSimpleV1.pkg, uuid.New().String()) + err = updater.Bootstrap(context.Background(), fixtureSimpleV1.pkg) assert.NoError(t, err) } @@ -119,7 +118,7 @@ func TestUpdaterStartExperiment(t *testing.T) { rc := newTestRemoteConfigClient() updater := newTestUpdater(t, s, rc, fixtureSimpleV1) - err := updater.Bootstrap(context.Background(), fixtureSimpleV1.pkg, uuid.New().String()) + err := updater.Bootstrap(context.Background(), fixtureSimpleV1.pkg) assert.NoError(t, err) rc.SubmitRequest(remoteAPIRequest{ ID: uuid.NewString(), @@ -147,7 +146,7 @@ func TestUpdaterPromoteExperiment(t *testing.T) { rc := newTestRemoteConfigClient() updater := newTestUpdater(t, s, rc, fixtureSimpleV1) - err := updater.Bootstrap(context.Background(), fixtureSimpleV1.pkg, uuid.New().String()) + err := updater.Bootstrap(context.Background(), fixtureSimpleV1.pkg) assert.NoError(t, err) rc.SubmitRequest(remoteAPIRequest{ ID: uuid.NewString(), @@ -184,7 +183,7 @@ func TestUpdaterStopExperiment(t *testing.T) { rc := newTestRemoteConfigClient() updater := newTestUpdater(t, s, rc, fixtureSimpleV1) - err := updater.Bootstrap(context.Background(), fixtureSimpleV1.pkg, uuid.New().String()) + err := updater.Bootstrap(context.Background(), fixtureSimpleV1.pkg) assert.NoError(t, err) rc.SubmitRequest(remoteAPIRequest{ ID: uuid.NewString(), From 788f72ded3a758954ada93c8160a3e1d5be1ed6f Mon Sep 17 00:00:00 2001 From: Branden Clark Date: Wed, 6 Mar 2024 12:01:48 -0500 Subject: [PATCH 046/155] fix domain test logfile (#23425) * fix domain test logfile * fix --- .../tests/windows/domain-test/domain_test.go | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/test/new-e2e/tests/windows/domain-test/domain_test.go b/test/new-e2e/tests/windows/domain-test/domain_test.go index c82967e1548acc..a992b37cf145f7 100644 --- a/test/new-e2e/tests/windows/domain-test/domain_test.go +++ b/test/new-e2e/tests/windows/domain-test/domain_test.go @@ -7,6 +7,11 @@ package domain import ( "fmt" + "path/filepath" + "reflect" + "testing" + "time" + "github.com/DataDog/datadog-agent/test/new-e2e/pkg/e2e" "github.com/DataDog/datadog-agent/test/new-e2e/pkg/environments/activedirectory" platformCommon "github.com/DataDog/datadog-agent/test/new-e2e/tests/agent-platform/common" @@ -15,9 +20,6 @@ import ( windowsAgent "github.com/DataDog/datadog-agent/test/new-e2e/tests/windows/common/agent" "github.com/DataDog/datadog-agent/test/new-e2e/tests/windows/install-test" "github.com/stretchr/testify/assert" - "reflect" - "testing" - "time" ) const ( @@ -59,7 +61,7 @@ func (suite *testInstallSuite) TestGivenDomainUserCanInstallAgent() { windowsAgent.WithAgentUserPassword(fmt.Sprintf("\"%s\"", TestPassword)), windowsAgent.WithValidAPIKey(), windowsAgent.WithFakeIntake(suite.Env().FakeIntake), - windowsAgent.WithInstallLogFile("TC-INS-DC-006_install.log")) + windowsAgent.WithInstallLogFile(filepath.Join(suite.OutputDir, "TC-INS-DC-006_install.log"))) suite.Require().NoError(err, "should succeed to install Agent on a Domain Controller with a valid domain account & password") @@ -91,7 +93,7 @@ func (suite *testUpgradeSuite) TestGivenDomainUserCanUpgradeAgent() { windowsAgent.WithAgentUserPassword(fmt.Sprintf("\"%s\"", TestPassword)), windowsAgent.WithValidAPIKey(), windowsAgent.WithFakeIntake(suite.Env().FakeIntake), - windowsAgent.WithInstallLogFile("TC-UPG-DC-001_install_last_stable.log")) + windowsAgent.WithInstallLogFile(filepath.Join(suite.OutputDir, "TC-UPG-DC-001_install_last_stable.log"))) suite.Require().NoError(err, "should succeed to install Agent on a Domain Controller with a valid domain account & password") @@ -100,7 +102,7 @@ func (suite *testUpgradeSuite) TestGivenDomainUserCanUpgradeAgent() { _, err = suite.InstallAgent(host, windowsAgent.WithPackage(suite.AgentPackage), - windowsAgent.WithInstallLogFile("TC-UPG-DC-001_upgrade.log")) + windowsAgent.WithInstallLogFile(filepath.Join(suite.OutputDir, "TC-UPG-DC-001_upgrade.log"))) suite.Require().NoError(err, "should succeed to upgrade an Agent on a Domain Controller") tc.CheckAgentVersion(suite.T(), suite.AgentPackage.AgentVersion()) From 0f6bd60adf9a1727196be5552b40c9b9a6a7c97d Mon Sep 17 00:00:00 2001 From: Nenad Noveljic <18366081+nenadnoveljic@users.noreply.github.com> Date: Wed, 6 Mar 2024 18:09:26 +0100 Subject: [PATCH 047/155] [oracle] Add user parameter (DBMON-3726) (#23469) * Add user parameter * deprecated warning --- .../corechecks/oracle-dbm/config/config.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/pkg/collector/corechecks/oracle-dbm/config/config.go b/pkg/collector/corechecks/oracle-dbm/config/config.go index b9eb977e296dbe..fab9fc3e541a8f 100644 --- a/pkg/collector/corechecks/oracle-dbm/config/config.go +++ b/pkg/collector/corechecks/oracle-dbm/config/config.go @@ -118,6 +118,7 @@ type InstanceConfig struct { Port int `yaml:"port"` ServiceName string `yaml:"service_name"` Username string `yaml:"username"` + User string `yaml:"user"` Password string `yaml:"password"` TnsAlias string `yaml:"tns_alias"` TnsAdmin string `yaml:"tns_admin"` @@ -236,6 +237,16 @@ func NewCheckConfig(rawInstance integration.Data, rawInitConfig integration.Data } } + if instance.Username == "" { + // For the backward compatibility with the Python integration + if instance.User != "" { + instance.Username = instance.User + warnDeprecated("user", "username") + } else { + return nil, fmt.Errorf("`username` is not configured") + } + } + /* * `instant_client` is deprecated but still supported to avoid a breaking change * `oracle_client` is a more appropriate naming because besides Instant Client @@ -282,3 +293,7 @@ func GetConnectData(c InstanceConfig) string { } return p } + +func warnDeprecated(old string, new string) { + log.Warnf("The config parameter %s is deprecated and will be removed in future versions. Please use %s instead.", old, new) +} From 88181b875f1b3d926cc6342e1b88fd923a449728 Mon Sep 17 00:00:00 2001 From: Wassim Dhif Date: Wed, 6 Mar 2024 18:10:28 +0100 Subject: [PATCH 048/155] feat(tagger): add types package (#23491) Signed-off-by: Wassim DHIF --- .github/CODEOWNERS | 1 + pkg/tagger/types/types.go | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 pkg/tagger/types/types.go diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index fd6ad8ee0653a4..e24c76b18d3d88 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -458,6 +458,7 @@ /pkg/security/ @DataDog/agent-security /pkg/networkdevice/ @DataDog/network-device-monitoring /pkg/snmp/ @DataDog/network-device-monitoring +/pkg/tagger/ @DataDog/container-integrations /pkg/windowsdriver/ @DataDog/windows-kernel-integrations /comp/core/workloadmeta/collectors/internal/cloudfoundry @DataDog/platform-integrations /pkg/sbom/ @DataDog/container-integrations @DataDog/agent-security diff --git a/pkg/tagger/types/types.go b/pkg/tagger/types/types.go new file mode 100644 index 00000000000000..cdf068c5cd9992 --- /dev/null +++ b/pkg/tagger/types/types.go @@ -0,0 +1,26 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +// Package types implements the types used by the Tagger for Origin Detection. +package types + +// ProductOrigin is the origin of the product that sent the entity. +type ProductOrigin string + +const ( + // ProductOriginDogStatsD is the ProductOrigin for DogStatsD. + ProductOriginDogStatsD ProductOrigin = "dogstatsd" + // ProductOriginAPM is the ProductOrigin for APM. + ProductOriginAPM ProductOrigin = "apm" +) + +// OriginInfo contains the Origin Detection information. +type OriginInfo struct { + FromUDS string + FromTag string + FromMsg string + Cardinality string + ProductOrigin ProductOrigin +} From bffa27b0311b7ad3c5c72cdc841503d04cc9a984 Mon Sep 17 00:00:00 2001 From: Pierre Gimalac Date: Wed, 6 Mar 2024 18:20:33 +0100 Subject: [PATCH 049/155] [ASCII-1219] Create a trace log component (#23004) * feat: move trace log component code to its own package * fix: imports and unexported fields * fix: go.mod * fix: rename component.go to module.go --- cmd/trace-agent/subcommands/run/command.go | 3 +- comp/core/log/logimpl/logger.go | 11 -- comp/core/log/logimpl/params.go | 25 ++++ comp/core/log/tracelogimpl/module.go | 20 ++++ .../{logimpl => tracelogimpl}/trace_logger.go | 24 ++-- comp/forwarder/defaultforwarder/go.mod | 29 +---- comp/forwarder/defaultforwarder/go.sum | 107 ------------------ .../orchestrator/orchestratorinterface/go.mod | 1 - .../orchestrator/orchestratorinterface/go.sum | 51 +-------- .../exporter/serializerexporter/go.sum | 11 -- pkg/serializer/go.mod | 1 - pkg/serializer/go.sum | 49 +------- 12 files changed, 65 insertions(+), 267 deletions(-) create mode 100644 comp/core/log/tracelogimpl/module.go rename comp/core/log/{logimpl => tracelogimpl}/trace_logger.go (82%) diff --git a/cmd/trace-agent/subcommands/run/command.go b/cmd/trace-agent/subcommands/run/command.go index e80ac1078ca6fb..999585a6c9b1eb 100644 --- a/cmd/trace-agent/subcommands/run/command.go +++ b/cmd/trace-agent/subcommands/run/command.go @@ -17,6 +17,7 @@ import ( "github.com/DataDog/datadog-agent/cmd/trace-agent/subcommands" coreconfig "github.com/DataDog/datadog-agent/comp/core/config" corelogimpl "github.com/DataDog/datadog-agent/comp/core/log/logimpl" + "github.com/DataDog/datadog-agent/comp/core/log/tracelogimpl" "github.com/DataDog/datadog-agent/comp/core/secrets" "github.com/DataDog/datadog-agent/comp/core/secrets/secretsimpl" "github.com/DataDog/datadog-agent/comp/core/tagger" @@ -74,7 +75,7 @@ func runTraceAgentProcess(ctx context.Context, cliParams *RunParams, defaultConf fx.Provide(func() corelogimpl.Params { return corelogimpl.ForDaemon("TRACE", "apm_config.log_file", config.DefaultLogFilePath) }), - corelogimpl.TraceModule(), + tracelogimpl.Module(), // setup workloadmeta collectors.GetCatalog(), fx.Supply(workloadmeta.Params{ diff --git a/comp/core/log/logimpl/logger.go b/comp/core/log/logimpl/logger.go index 238798bdd3123e..0844eb7b223f60 100644 --- a/comp/core/log/logimpl/logger.go +++ b/comp/core/log/logimpl/logger.go @@ -28,17 +28,6 @@ func Module() fxutil.Module { ) } -// TraceModule defines the fx options for this component in its Trace variant. -// -// TODO(components): move this comp/trace; that component shall implement the -// -// log.Component interface. -func TraceModule() fxutil.Module { - return fxutil.Component( - fx.Provide(newTraceLogger), - ) -} - // logger implements the component type logger struct { // this component is currently implementing a thin wrapper around diff --git a/comp/core/log/logimpl/params.go b/comp/core/log/logimpl/params.go index 9662c7b055f165..090282cb25c5bf 100644 --- a/comp/core/log/logimpl/params.go +++ b/comp/core/log/logimpl/params.go @@ -152,3 +152,28 @@ func (params Params) LogLevelFn(c configGetter) string { func (params Params) LogFileFn(c configGetter) string { return params.logFileFn(c) } + +// IsLogLevelFnSet returns whether the logLevelFn field is set +func (params Params) IsLogLevelFnSet() bool { + return params.logLevelFn != nil +} + +// LogSyslogURIFn returns the syslog URI +func (params Params) LogSyslogURIFn(c configGetter) string { + return params.logSyslogURIFn(c) +} + +// LogSyslogRFCFn returns a boolean determining whether to use syslog RFC 5424 +func (params Params) LogSyslogRFCFn(c configGetter) bool { + return params.logSyslogRFCFn(c) +} + +// LogToConsoleFn returns a boolean determining whether to write logs to the console +func (params Params) LogToConsoleFn(c configGetter) bool { + return params.logToConsoleFn(c) +} + +// LogFormatJSONFn returns a boolean determining whether logs should be written in JSON format +func (params Params) LogFormatJSONFn(c configGetter) bool { + return params.logFormatJSONFn(c) +} diff --git a/comp/core/log/tracelogimpl/module.go b/comp/core/log/tracelogimpl/module.go new file mode 100644 index 00000000000000..b1c99dffa8d971 --- /dev/null +++ b/comp/core/log/tracelogimpl/module.go @@ -0,0 +1,20 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +// Package tracelogimpl provides a component that implements the log.Component for the trace-agent logger +package tracelogimpl + +import ( + "go.uber.org/fx" + + "github.com/DataDog/datadog-agent/pkg/util/fxutil" +) + +// Module defines the fx options for the log component in its Trace variant. +func Module() fxutil.Module { + return fxutil.Component( + fx.Provide(newTraceLogger), + ) +} diff --git a/comp/core/log/logimpl/trace_logger.go b/comp/core/log/tracelogimpl/trace_logger.go similarity index 82% rename from comp/core/log/logimpl/trace_logger.go rename to comp/core/log/tracelogimpl/trace_logger.go index 932279fbead16a..3c0df72f5d0503 100644 --- a/comp/core/log/logimpl/trace_logger.go +++ b/comp/core/log/tracelogimpl/trace_logger.go @@ -3,7 +3,8 @@ // This product includes software developed at Datadog (https://www.datadoghq.com/). // Copyright 2016-present Datadog, Inc. -package logimpl +// Package tracelogimpl provides a component that implements the log.Component for the trace-agent logger +package tracelogimpl import ( "context" @@ -14,6 +15,7 @@ import ( "github.com/DataDog/datadog-agent/comp/core/config" "github.com/DataDog/datadog-agent/comp/core/log" + "github.com/DataDog/datadog-agent/comp/core/log/logimpl" pkgconfiglogs "github.com/DataDog/datadog-agent/pkg/config/logs" tracelog "github.com/DataDog/datadog-agent/pkg/trace/log" "github.com/DataDog/datadog-agent/pkg/trace/telemetry" @@ -86,24 +88,24 @@ func (*tracelogger) Criticalf(format string, params ...interface{}) error { // Flush implements Component#Flush. func (*tracelogger) Flush() { pkglog.Flush() } -func newTraceLogger(lc fx.Lifecycle, params Params, config config.Component, telemetryCollector telemetry.TelemetryCollector) (log.Component, error) { +func newTraceLogger(lc fx.Lifecycle, params logimpl.Params, config config.Component, telemetryCollector telemetry.TelemetryCollector) (log.Component, error) { return NewTraceLogger(lc, params, config, telemetryCollector) } // NewTraceLogger creates a pkglog.Component using the provided config.LogConfig -func NewTraceLogger(lc fx.Lifecycle, params Params, config config.LogConfig, telemetryCollector telemetry.TelemetryCollector) (log.Component, error) { - if params.logLevelFn == nil { +func NewTraceLogger(lc fx.Lifecycle, params logimpl.Params, config config.LogConfig, telemetryCollector telemetry.TelemetryCollector) (log.Component, error) { + if !params.IsLogLevelFnSet() { return nil, errors.New("must call one of core.BundleParams.ForOneShot or ForDaemon") } err := pkgconfiglogs.SetupLogger( - pkgconfiglogs.LoggerName(params.loggerName), - params.logLevelFn(config), - params.logFileFn(config), - params.logSyslogURIFn(config), - params.logSyslogRFCFn(config), - params.logToConsoleFn(config), - params.logFormatJSONFn(config), + pkgconfiglogs.LoggerName(params.LoggerName()), + params.LogLevelFn(config), + params.LogFileFn(config), + params.LogSyslogURIFn(config), + params.LogSyslogRFCFn(config), + params.LogToConsoleFn(config), + params.LogFormatJSONFn(config), config) if err != nil { telemetryCollector.SendStartupError(telemetry.CantCreateLogger, err) diff --git a/comp/forwarder/defaultforwarder/go.mod b/comp/forwarder/defaultforwarder/go.mod index 9388eae2992a1d..10f2c68bd8a985 100644 --- a/comp/forwarder/defaultforwarder/go.mod +++ b/comp/forwarder/defaultforwarder/go.mod @@ -73,10 +73,6 @@ require ( github.com/DataDog/datadog-agent/pkg/collector/check/defaults v0.52.0-rc.3 // indirect github.com/DataDog/datadog-agent/pkg/config/env v0.52.0-rc.3 // indirect github.com/DataDog/datadog-agent/pkg/config/logs v0.52.0-rc.3 // indirect - github.com/DataDog/datadog-agent/pkg/obfuscate v0.52.0-rc.3 // indirect - github.com/DataDog/datadog-agent/pkg/proto v0.52.0-rc.3 // indirect - github.com/DataDog/datadog-agent/pkg/remoteconfig/state v0.52.0-rc.3 // indirect - github.com/DataDog/datadog-agent/pkg/trace v0.52.0-rc.3 // indirect github.com/DataDog/datadog-agent/pkg/util/executable v0.52.0-rc.3 // indirect github.com/DataDog/datadog-agent/pkg/util/hostname/validate v0.52.0-rc.3 // indirect github.com/DataDog/datadog-agent/pkg/util/log v0.52.0-rc.3 // indirect @@ -85,10 +81,6 @@ require ( github.com/DataDog/datadog-agent/pkg/util/system v0.52.0-rc.3 // indirect github.com/DataDog/datadog-agent/pkg/util/system/socket v0.52.0-rc.3 // indirect github.com/DataDog/datadog-agent/pkg/util/winutil v0.52.0-rc.3 // indirect - github.com/DataDog/datadog-go/v5 v5.4.0 // indirect - github.com/DataDog/go-sqllexer v0.0.9 // indirect - github.com/DataDog/go-tuf v1.0.2-0.5.2 // indirect - github.com/DataDog/opentelemetry-mapping-go/pkg/otlp/attributes v0.13.3 // indirect github.com/DataDog/viper v1.12.0 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect github.com/beorn7/perks v1.0.1 // indirect @@ -101,35 +93,24 @@ require ( github.com/go-logr/logr v1.4.1 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-ole/go-ole v1.2.6 // indirect - github.com/gogo/protobuf v1.3.2 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect - github.com/hashicorp/go-version v1.6.0 // indirect github.com/hashicorp/hcl v1.0.1-vault-5 // indirect github.com/hectane/go-acl v0.0.0-20190604041725-da78bae5fc95 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 // indirect - github.com/knadh/koanf/maps v0.1.1 // indirect - github.com/knadh/koanf/providers/confmap v0.1.0 // indirect - github.com/knadh/koanf/v2 v2.0.1 // indirect github.com/lufia/plan9stats v0.0.0-20220913051719-115f729f3c8c // indirect github.com/magiconair/properties v1.8.7 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect - github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c // indirect - github.com/mitchellh/reflectwalk v1.0.2 // indirect - github.com/outcaste-io/ristretto v0.2.3 // indirect github.com/patrickmn/go-cache v2.1.0+incompatible // indirect github.com/pelletier/go-toml v1.9.5 // indirect - github.com/philhofer/fwd v1.1.2 // indirect - github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/power-devops/perfstat v0.0.0-20220216144756-c35f1ee13d7c // indirect github.com/prometheus/client_golang v1.18.0 // indirect github.com/prometheus/client_model v0.5.0 // indirect github.com/prometheus/common v0.46.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect - github.com/secure-systems-lab/go-securesystemslib v0.7.0 // indirect github.com/shirou/gopsutil/v3 v3.24.1 // indirect github.com/shoenig/go-m1cpu v0.1.6 // indirect github.com/spf13/afero v1.9.5 // indirect @@ -138,16 +119,9 @@ require ( github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/stretchr/objx v0.5.1 // indirect - github.com/tinylib/msgp v1.1.8 // indirect github.com/tklauser/go-sysconf v0.3.12 // indirect github.com/tklauser/numcpus v0.6.1 // indirect github.com/yusufpapurcu/wmi v1.2.3 // indirect - go.opentelemetry.io/collector/component v0.93.0 // indirect - go.opentelemetry.io/collector/config/configtelemetry v0.93.0 // indirect - go.opentelemetry.io/collector/confmap v0.93.0 // indirect - go.opentelemetry.io/collector/featuregate v1.0.1 // indirect - go.opentelemetry.io/collector/pdata v1.0.1 // indirect - go.opentelemetry.io/collector/semconv v0.93.0 // indirect go.opentelemetry.io/otel v1.22.0 // indirect go.opentelemetry.io/otel/exporters/prometheus v0.45.0 // indirect go.opentelemetry.io/otel/metric v1.22.0 // indirect @@ -155,6 +129,7 @@ require ( go.opentelemetry.io/otel/sdk/metric v1.22.0 // indirect go.opentelemetry.io/otel/trace v1.22.0 // indirect go.uber.org/dig v1.17.0 // indirect + go.uber.org/goleak v1.3.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.26.0 // indirect golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect @@ -162,8 +137,6 @@ require ( golang.org/x/net v0.21.0 // indirect golang.org/x/sys v0.17.0 // indirect golang.org/x/tools v0.18.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917 // indirect - google.golang.org/grpc v1.60.1 // indirect google.golang.org/protobuf v1.32.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/comp/forwarder/defaultforwarder/go.sum b/comp/forwarder/defaultforwarder/go.sum index 18eb564786329d..e465d80d872cc9 100644 --- a/comp/forwarder/defaultforwarder/go.sum +++ b/comp/forwarder/defaultforwarder/go.sum @@ -35,22 +35,11 @@ cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohl cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= -contrib.go.opencensus.io/exporter/prometheus v0.4.2 h1:sqfsYl5GIY/L570iT+l93ehxaWJs2/OwXtiWwew3oAg= -contrib.go.opencensus.io/exporter/prometheus v0.4.2/go.mod h1:dvEHbiKmgvbr5pjaF9fpw1KeYcjrnC1J8B+JKjsZyRQ= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/DataDog/datadog-go/v5 v5.4.0 h1:Ea3eXUVwrVV28F/fo3Dr3aa+TL/Z7Xi6SUPKW8L99aI= -github.com/DataDog/datadog-go/v5 v5.4.0/go.mod h1:K9kcYBlxkcPP8tvvjZZKs/m1edNAUFzBbdpTUKfCsuw= -github.com/DataDog/go-sqllexer v0.0.9 h1:Cx2Cu1S0hfj4coCCA8hzjM9+UNFRkcu1avIV//RU5Qw= -github.com/DataDog/go-sqllexer v0.0.9/go.mod h1:nB4Ea2YNsqMwtbWMc4Fm/oP98IIrSPapqwOwPioMspY= -github.com/DataDog/go-tuf v1.0.2-0.5.2 h1:EeZr937eKAWPxJ26IykAdWA4A0jQXJgkhUjqEI/w7+I= -github.com/DataDog/go-tuf v1.0.2-0.5.2/go.mod h1:zBcq6f654iVqmkk8n2Cx81E1JnNTMOAx1UEO/wZR+P0= -github.com/DataDog/opentelemetry-mapping-go/pkg/otlp/attributes v0.13.3 h1:hcYZMgGDMUz8Dz6PcOhgk6FF0yG4N7KErS5J3O/MpeU= -github.com/DataDog/opentelemetry-mapping-go/pkg/otlp/attributes v0.13.3/go.mod h1:Z2FPxYhi8GIFkS4WLC7RrRaGolyB9TqS2RMSwNcmczk= github.com/DataDog/viper v1.12.0 h1:FufyZpZPxyszafSV5B8Q8it75IhhuJwH0T7QpT6HnD0= github.com/DataDog/viper v1.12.0/go.mod h1:wDdUVJ2SHaMaPrCZrlRCObwkubsX8j5sme3LaR/SGTc= -github.com/Microsoft/go-winio v0.5.0/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= @@ -94,11 +83,7 @@ github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= -github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y= -github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= -github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= @@ -120,12 +105,8 @@ github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2 github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= -github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-logfmt/logfmt v0.5.1 h1:otpy5pqBCBZ1ng9RQ0dPu4PN7ba75Y/aA+UpowDyNVA= -github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= @@ -137,15 +118,11 @@ github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/me github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= 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/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= 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/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= @@ -153,7 +130,6 @@ github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= -github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= 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= @@ -188,8 +164,6 @@ github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeN github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= -github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= @@ -220,8 +194,6 @@ github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= -github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= -github.com/hashicorp/go-version v1.6.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/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= @@ -244,14 +216,7 @@ github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 h1:iQTw/8FWTuc7uia github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= -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/knadh/koanf/maps v0.1.1 h1:G5TjmUh2D7G2YWf5SQQqSiHRJEjaicvU0KpypqB3NIs= -github.com/knadh/koanf/maps v0.1.1/go.mod h1:npD/QZY3V6ghQDdcQzl1W4ICNVTkohC8E73eI2xW4yI= -github.com/knadh/koanf/providers/confmap v0.1.0 h1:gOkxhHkemwG4LezxxN8DMOFopOPghxRVp7JbIvdvqzU= -github.com/knadh/koanf/providers/confmap v0.1.0/go.mod h1:2uLhxQzJnyHKfxG927awZC7+fyHFdQkd697K4MdLnIU= -github.com/knadh/koanf/v2 v2.0.1 h1:1dYGITt1I23x8cfx8ZnldtezdyaZtfAuRtIFOiRzK7g= -github.com/knadh/koanf/v2 v2.0.1/go.mod h1:ZeiIlIDXTE7w1lMT6UVcNiRAS2/rCeLn/GdLNvY1Dus= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= @@ -274,13 +239,9 @@ github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/ github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -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/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c h1:cqn374mizHuIWj+OSJCajGr/phAmuMug9qIX3l9CflE= github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= -github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= @@ -288,18 +249,13 @@ github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3Rllmb github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/outcaste-io/ristretto v0.2.3 h1:AK4zt/fJ76kjlYObOeNwh4T3asEuaCmp26pOvUOL9w0= -github.com/outcaste-io/ristretto v0.2.3/go.mod h1:W8HywhmtlopSB1jeMg3JtdIhf+DYkLAr0VN/s4+MHac= github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc= github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= -github.com/philhofer/fwd v1.1.2 h1:bnDivRJ1EWPjUIRXV5KfORO897HTbpFAQddBdE8t7Gw= -github.com/philhofer/fwd v1.1.2/go.mod h1:qkPdfjR2SIEbspLqpe1tO4n5yICnr2DY7mqEx2tUTP0= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= 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/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= @@ -332,8 +288,6 @@ github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsT github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= -github.com/prometheus/statsd_exporter v0.22.7 h1:7Pji/i2GuhK6Lu7DHrtTkFmNBCudCPT1pX2CziuyQR0= -github.com/prometheus/statsd_exporter v0.22.7/go.mod h1:N/TevpjkIh9ccs6nuzY3jQn9dFqnUakOjnEuMPJJJnI= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= @@ -341,8 +295,6 @@ github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/secure-systems-lab/go-securesystemslib v0.7.0 h1:OwvJ5jQf9LnIAS83waAjPbcMsODrTQUpJ02eNLUoxBg= -github.com/secure-systems-lab/go-securesystemslib v0.7.0/go.mod h1:/2gYnlnHVQ6xeGtfIqFy7Do03K4cdCY0A/GlJLDKLHI= github.com/shirou/gopsutil/v3 v3.24.1 h1:R3t6ondCEvmARp3wxODhXMTLC/klMa87h2PHUw5m7QI= github.com/shirou/gopsutil/v3 v3.24.1/go.mod h1:UU7a2MSBQa+kW1uuDq8DeEBS8kmrnQwsv2b5O513rwU= github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM= @@ -351,7 +303,6 @@ github.com/shoenig/test v0.6.4 h1:kVTaSd7WLz5WZ2IaoM0RSzRsUD+m8wRR+5qvntpn4LU= github.com/shoenig/test v0.6.4/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= -github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= @@ -384,13 +335,10 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5 github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= -github.com/tinylib/msgp v1.1.8 h1:FCXC1xanKO4I8plpHGH2P7koL/RzZs12l/+r7vakfm0= -github.com/tinylib/msgp v1.1.8/go.mod h1:qkpG+2ldGg4xRFmx+jfTvZPxfGFhi64BcnL9vkCm/Tw= github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= @@ -400,18 +348,12 @@ github.com/tmc/grpc-websocket-proxy v0.0.0-20200122045848-3419fae592fc/go.mod h1 github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= -github.com/vmihailenco/msgpack/v4 v4.3.12 h1:07s4sz9IReOgdikxLTKNbBdqDMLsjPKXwvCazn8G65U= -github.com/vmihailenco/msgpack/v4 v4.3.12/go.mod h1:gborTTJjAo/GWTqqRjrLCn9pgNN+NXzzngzBKDPIqw4= -github.com/vmihailenco/tagparser v0.1.2 h1:gnjoVuB/kljJ5wICEEOpx98oXMWPLj22G67Vbd1qPqc= -github.com/vmihailenco/tagparser v0.1.2/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= 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= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yusufpapurcu/wmi v1.2.3 h1:E1ctvB7uKFMOJw3fdOW32DwGE9I7t++CRUEMKvFoFiw= github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= @@ -421,20 +363,6 @@ go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= -go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= -go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/collector/component v0.93.0 h1:FHd86+7hbbBlDxdOFLWRA19HrjxKcXO+6H3UQ0zQz0c= -go.opentelemetry.io/collector/component v0.93.0/go.mod h1:8tglddCwOhrcktA7+EwYqcOL3+7xvbfn8ZwKcxsWch0= -go.opentelemetry.io/collector/config/configtelemetry v0.93.0 h1:s+J/zYXc0zRi346Dz4r5ynTPyI5wRtp+JrSyrSBSiSY= -go.opentelemetry.io/collector/config/configtelemetry v0.93.0/go.mod h1:2XLhyR/GVpWeZ2K044vCmrvH/d4Ewt0aD/y46avZyMU= -go.opentelemetry.io/collector/confmap v0.93.0 h1:uYiak0iPuSW4BQIEuN+yihQqvWRwURhoW/qoVs4vLFA= -go.opentelemetry.io/collector/confmap v0.93.0/go.mod h1:+QxYr8qSah4ffcVBUC2KJgwlMsrD2nK1CmcHkLB+D7A= -go.opentelemetry.io/collector/featuregate v1.0.1 h1:ok//hLSXttBbyu4sSV1pTx1nKdr5udSmrWy5sFMIIbM= -go.opentelemetry.io/collector/featuregate v1.0.1/go.mod h1:QQXjP4etmJQhkQ20j4P/rapWuItYxoFozg/iIwuKnYg= -go.opentelemetry.io/collector/pdata v1.0.1 h1:dGX2h7maA6zHbl5D3AsMnF1c3Nn+3EUftbVCLzeyNvA= -go.opentelemetry.io/collector/pdata v1.0.1/go.mod h1:jutXeu0QOXYY8wcZ/hege+YAnSBP3+jpTqYU1+JTI5Y= -go.opentelemetry.io/collector/semconv v0.93.0 h1:eBlMcVNTwYYsVdAsCVDs4wvVYs75K1xcIDpqj16PG4c= -go.opentelemetry.io/collector/semconv v0.93.0/go.mod h1:gZ0uzkXsN+J5NpiRcdp9xOhNGQDDui8Y62p15sKrlzo= go.opentelemetry.io/otel v1.22.0 h1:xS7Ku+7yTFvDfDraDIJVpw7XPyuHlB9MCiqqX5mcJ6Y= go.opentelemetry.io/otel v1.22.0/go.mod h1:eoV4iAi3Ea8LkAEI9+GFT44O6T/D0GWAVFyZVCC6pMI= go.opentelemetry.io/otel/exporters/prometheus v0.45.0 h1:BeIK2KGho0oCWa7LxEGSqfDZbs7Fpv/Viz+FS4P8CXE= @@ -449,7 +377,6 @@ go.opentelemetry.io/otel/trace v1.22.0 h1:Hg6pPujv0XG9QaVbGOBVHunyuLcCC3jN7WEhPx go.opentelemetry.io/otel/trace v1.22.0/go.mod h1:RbbHXVqKES9QhzZq/fE5UnOSILqRt40a21sPw2He1xo= 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.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= go.uber.org/dig v1.17.0 h1:5Chju+tUvcC+N7N6EV08BJz41UZuO3BmHcN4A287ZLI= @@ -474,10 +401,7 @@ golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= -golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= 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= @@ -513,9 +437,6 @@ 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.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8= golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -554,10 +475,7 @@ golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -579,9 +497,6 @@ golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/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-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -600,7 +515,6 @@ golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -623,19 +537,12 @@ golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/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-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220627191245-f75cf1eec38b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220829200755-d48e67d00261/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -643,8 +550,6 @@ golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -653,7 +558,6 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -701,7 +605,6 @@ golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= 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= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= @@ -710,12 +613,8 @@ golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= -golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ= golang.org/x/tools v0.18.0 h1:k8NLag8AGHnn+PHbl7g43CtqZAwG60vZkLqgyZgIHgQ= golang.org/x/tools v0.18.0/go.mod h1:GL7B4CwcLLeo59yx/9UWWuNOW1n3VZ4f5axWfML7Lcg= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -748,8 +647,6 @@ google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= -google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= @@ -787,8 +684,6 @@ google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917 h1:6G8oQ016D88m1xAKljMlBOOGWDZkes4kMhgGFlf8WcQ= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917/go.mod h1:xtjpI3tXFPP051KaWnhvxkiubL/6dJ18vLVf7q2pTOU= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -807,8 +702,6 @@ google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.60.1 h1:26+wFr+cNqSGFcOXcabYC0lUVJVRa2Sb2ortSK7VrEU= -google.golang.org/grpc v1.60.1/go.mod h1:OlCHIeLYqSSsLi6i49B5QGdzaMZK9+M7LXN2FKz4eGM= 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= diff --git a/comp/forwarder/orchestrator/orchestratorinterface/go.mod b/comp/forwarder/orchestrator/orchestratorinterface/go.mod index 3c01ffe190f8eb..4609732d80dde6 100644 --- a/comp/forwarder/orchestrator/orchestratorinterface/go.mod +++ b/comp/forwarder/orchestrator/orchestratorinterface/go.mod @@ -146,7 +146,6 @@ require ( golang.org/x/sys v0.17.0 // indirect golang.org/x/text v0.14.0 // indirect golang.org/x/tools v0.18.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917 // indirect google.golang.org/protobuf v1.32.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/comp/forwarder/orchestrator/orchestratorinterface/go.sum b/comp/forwarder/orchestrator/orchestratorinterface/go.sum index e28f91a3a1722d..505fb705a9f35d 100644 --- a/comp/forwarder/orchestrator/orchestratorinterface/go.sum +++ b/comp/forwarder/orchestrator/orchestratorinterface/go.sum @@ -40,14 +40,6 @@ 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/DataDog/cast v1.3.1-0.20190301154711-1ee8c8bd14a3 h1:SobA9WYm4K/MUtWlbKaomWTmnuYp1KhIm8Wlx3vmpsg= github.com/DataDog/cast v1.3.1-0.20190301154711-1ee8c8bd14a3/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/DataDog/datadog-go/v5 v5.4.0 h1:Ea3eXUVwrVV28F/fo3Dr3aa+TL/Z7Xi6SUPKW8L99aI= -github.com/DataDog/datadog-go/v5 v5.4.0/go.mod h1:K9kcYBlxkcPP8tvvjZZKs/m1edNAUFzBbdpTUKfCsuw= -github.com/DataDog/go-sqllexer v0.0.9 h1:Cx2Cu1S0hfj4coCCA8hzjM9+UNFRkcu1avIV//RU5Qw= -github.com/DataDog/go-sqllexer v0.0.9/go.mod h1:nB4Ea2YNsqMwtbWMc4Fm/oP98IIrSPapqwOwPioMspY= -github.com/DataDog/go-tuf v1.0.2-0.5.2 h1:EeZr937eKAWPxJ26IykAdWA4A0jQXJgkhUjqEI/w7+I= -github.com/DataDog/go-tuf v1.0.2-0.5.2/go.mod h1:zBcq6f654iVqmkk8n2Cx81E1JnNTMOAx1UEO/wZR+P0= -github.com/DataDog/opentelemetry-mapping-go/pkg/otlp/attributes v0.13.3 h1:hcYZMgGDMUz8Dz6PcOhgk6FF0yG4N7KErS5J3O/MpeU= -github.com/DataDog/opentelemetry-mapping-go/pkg/otlp/attributes v0.13.3/go.mod h1:Z2FPxYhi8GIFkS4WLC7RrRaGolyB9TqS2RMSwNcmczk= github.com/DataDog/viper v1.12.0 h1:FufyZpZPxyszafSV5B8Q8it75IhhuJwH0T7QpT6HnD0= github.com/DataDog/viper v1.12.0/go.mod h1:wDdUVJ2SHaMaPrCZrlRCObwkubsX8j5sme3LaR/SGTc= github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= @@ -126,8 +118,6 @@ github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/me github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= 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/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -204,8 +194,6 @@ github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= -github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= -github.com/hashicorp/go-version v1.6.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/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= @@ -229,12 +217,6 @@ github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod h1:1NbS8ALr github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/knadh/koanf/maps v0.1.1 h1:G5TjmUh2D7G2YWf5SQQqSiHRJEjaicvU0KpypqB3NIs= -github.com/knadh/koanf/maps v0.1.1/go.mod h1:npD/QZY3V6ghQDdcQzl1W4ICNVTkohC8E73eI2xW4yI= -github.com/knadh/koanf/providers/confmap v0.1.0 h1:gOkxhHkemwG4LezxxN8DMOFopOPghxRVp7JbIvdvqzU= -github.com/knadh/koanf/providers/confmap v0.1.0/go.mod h1:2uLhxQzJnyHKfxG927awZC7+fyHFdQkd697K4MdLnIU= -github.com/knadh/koanf/v2 v2.0.1 h1:1dYGITt1I23x8cfx8ZnldtezdyaZtfAuRtIFOiRzK7g= -github.com/knadh/koanf/v2 v2.0.1/go.mod h1:ZeiIlIDXTE7w1lMT6UVcNiRAS2/rCeLn/GdLNvY1Dus= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= @@ -257,13 +239,9 @@ github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/ github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -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/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c h1:cqn374mizHuIWj+OSJCajGr/phAmuMug9qIX3l9CflE= github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= -github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= @@ -271,18 +249,13 @@ github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3Rllmb github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/outcaste-io/ristretto v0.2.3 h1:AK4zt/fJ76kjlYObOeNwh4T3asEuaCmp26pOvUOL9w0= -github.com/outcaste-io/ristretto v0.2.3/go.mod h1:W8HywhmtlopSB1jeMg3JtdIhf+DYkLAr0VN/s4+MHac= github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc= github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= -github.com/philhofer/fwd v1.1.2 h1:bnDivRJ1EWPjUIRXV5KfORO897HTbpFAQddBdE8t7Gw= -github.com/philhofer/fwd v1.1.2/go.mod h1:qkPdfjR2SIEbspLqpe1tO4n5yICnr2DY7mqEx2tUTP0= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= 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/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= @@ -322,8 +295,6 @@ github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/secure-systems-lab/go-securesystemslib v0.7.0 h1:OwvJ5jQf9LnIAS83waAjPbcMsODrTQUpJ02eNLUoxBg= -github.com/secure-systems-lab/go-securesystemslib v0.7.0/go.mod h1:/2gYnlnHVQ6xeGtfIqFy7Do03K4cdCY0A/GlJLDKLHI= github.com/shirou/gopsutil/v3 v3.24.1 h1:R3t6ondCEvmARp3wxODhXMTLC/klMa87h2PHUw5m7QI= github.com/shirou/gopsutil/v3 v3.24.1/go.mod h1:UU7a2MSBQa+kW1uuDq8DeEBS8kmrnQwsv2b5O513rwU= github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM= @@ -365,8 +336,6 @@ github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= -github.com/tinylib/msgp v1.1.8 h1:FCXC1xanKO4I8plpHGH2P7koL/RzZs12l/+r7vakfm0= -github.com/tinylib/msgp v1.1.8/go.mod h1:qkpG+2ldGg4xRFmx+jfTvZPxfGFhi64BcnL9vkCm/Tw= github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= @@ -390,18 +359,6 @@ go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= -go.opentelemetry.io/collector/component v0.93.0 h1:FHd86+7hbbBlDxdOFLWRA19HrjxKcXO+6H3UQ0zQz0c= -go.opentelemetry.io/collector/component v0.93.0/go.mod h1:8tglddCwOhrcktA7+EwYqcOL3+7xvbfn8ZwKcxsWch0= -go.opentelemetry.io/collector/config/configtelemetry v0.93.0 h1:s+J/zYXc0zRi346Dz4r5ynTPyI5wRtp+JrSyrSBSiSY= -go.opentelemetry.io/collector/config/configtelemetry v0.93.0/go.mod h1:2XLhyR/GVpWeZ2K044vCmrvH/d4Ewt0aD/y46avZyMU= -go.opentelemetry.io/collector/confmap v0.93.0 h1:uYiak0iPuSW4BQIEuN+yihQqvWRwURhoW/qoVs4vLFA= -go.opentelemetry.io/collector/confmap v0.93.0/go.mod h1:+QxYr8qSah4ffcVBUC2KJgwlMsrD2nK1CmcHkLB+D7A= -go.opentelemetry.io/collector/featuregate v1.0.1 h1:ok//hLSXttBbyu4sSV1pTx1nKdr5udSmrWy5sFMIIbM= -go.opentelemetry.io/collector/featuregate v1.0.1/go.mod h1:QQXjP4etmJQhkQ20j4P/rapWuItYxoFozg/iIwuKnYg= -go.opentelemetry.io/collector/pdata v1.0.1 h1:dGX2h7maA6zHbl5D3AsMnF1c3Nn+3EUftbVCLzeyNvA= -go.opentelemetry.io/collector/pdata v1.0.1/go.mod h1:jutXeu0QOXYY8wcZ/hege+YAnSBP3+jpTqYU1+JTI5Y= -go.opentelemetry.io/collector/semconv v0.93.0 h1:eBlMcVNTwYYsVdAsCVDs4wvVYs75K1xcIDpqj16PG4c= -go.opentelemetry.io/collector/semconv v0.93.0/go.mod h1:gZ0uzkXsN+J5NpiRcdp9xOhNGQDDui8Y62p15sKrlzo= go.opentelemetry.io/otel v1.22.0 h1:xS7Ku+7yTFvDfDraDIJVpw7XPyuHlB9MCiqqX5mcJ6Y= go.opentelemetry.io/otel v1.22.0/go.mod h1:eoV4iAi3Ea8LkAEI9+GFT44O6T/D0GWAVFyZVCC6pMI= go.opentelemetry.io/otel/exporters/prometheus v0.45.0 h1:BeIK2KGho0oCWa7LxEGSqfDZbs7Fpv/Viz+FS4P8CXE= @@ -422,8 +379,8 @@ go.uber.org/dig v1.17.0 h1:5Chju+tUvcC+N7N6EV08BJz41UZuO3BmHcN4A287ZLI= go.uber.org/dig v1.17.0/go.mod h1:rTxpf7l5I0eBTlE6/9RL+lDybC7WFwY2QH55ZSjy1mU= go.uber.org/fx v1.18.2 h1:bUNI6oShr+OVFQeU8cDNbnN7VFsu+SsjHzUF51V/GAU= go.uber.org/fx v1.18.2/go.mod h1:g0V1KMQ66zIRk8bLu3Ea5Jt2w/cHlOIp4wdRsgh0JaY= -go.uber.org/goleak v1.2.0 h1:xqgm/S+aQvhWFTtR0XK3Jvg7z8kGV8P4X14IzwN3Eqk= -go.uber.org/goleak v1.2.0/go.mod h1:XJYK+MuIchqpmGmUSAzotztawfKvYLUIgg7guXrwVUo= +go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= @@ -723,8 +680,6 @@ google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917 h1:6G8oQ016D88m1xAKljMlBOOGWDZkes4kMhgGFlf8WcQ= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917/go.mod h1:xtjpI3tXFPP051KaWnhvxkiubL/6dJ18vLVf7q2pTOU= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -743,8 +698,6 @@ google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.60.1 h1:26+wFr+cNqSGFcOXcabYC0lUVJVRa2Sb2ortSK7VrEU= -google.golang.org/grpc v1.60.1/go.mod h1:OlCHIeLYqSSsLi6i49B5QGdzaMZK9+M7LXN2FKz4eGM= 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= diff --git a/comp/otelcol/otlp/components/exporter/serializerexporter/go.sum b/comp/otelcol/otlp/components/exporter/serializerexporter/go.sum index 425a8d3a14fcc4..f52c50346d5dbf 100644 --- a/comp/otelcol/otlp/components/exporter/serializerexporter/go.sum +++ b/comp/otelcol/otlp/components/exporter/serializerexporter/go.sum @@ -42,12 +42,6 @@ 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/DataDog/agent-payload/v5 v5.0.102 h1:X8EZQeOewahQ7N/arllAP7hCGHNScdThnGjPg5/ErN8= github.com/DataDog/agent-payload/v5 v5.0.102/go.mod h1:COngtbYYCncpIPiE5D93QlXDH/3VAKk10jDNwGHcMRE= -github.com/DataDog/datadog-go/v5 v5.4.0 h1:Ea3eXUVwrVV28F/fo3Dr3aa+TL/Z7Xi6SUPKW8L99aI= -github.com/DataDog/datadog-go/v5 v5.4.0/go.mod h1:K9kcYBlxkcPP8tvvjZZKs/m1edNAUFzBbdpTUKfCsuw= -github.com/DataDog/go-sqllexer v0.0.9 h1:Cx2Cu1S0hfj4coCCA8hzjM9+UNFRkcu1avIV//RU5Qw= -github.com/DataDog/go-sqllexer v0.0.9/go.mod h1:nB4Ea2YNsqMwtbWMc4Fm/oP98IIrSPapqwOwPioMspY= -github.com/DataDog/go-tuf v1.0.2-0.5.2 h1:EeZr937eKAWPxJ26IykAdWA4A0jQXJgkhUjqEI/w7+I= -github.com/DataDog/go-tuf v1.0.2-0.5.2/go.mod h1:zBcq6f654iVqmkk8n2Cx81E1JnNTMOAx1UEO/wZR+P0= github.com/DataDog/mmh3 v0.0.0-20210722141835-012dc69a9e49 h1:EbzDX8HPk5uE2FsJYxD74QmMw0/3CqSKhEr6teh0ncQ= github.com/DataDog/mmh3 v0.0.0-20210722141835-012dc69a9e49/go.mod h1:SvsjzyJlSg0rKsqYgdcFxeEVflx3ZNAyFfkUHP0TxXg= github.com/DataDog/opentelemetry-mapping-go/pkg/internal/sketchtest v0.13.3 h1:hnzEiqocvnt6U1QGxfeDFf5xhE77jt4LOjZAXW9ueWo= @@ -331,8 +325,6 @@ github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.93.0/ github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.75.0 h1:YUku2qImuCj85X7LNGjToa3X1hJUd3VIBGVVbikGv08= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.75.0/go.mod h1:Zx+/9iSrxOX8yI5pq1yQjLkTW/mQRs8kw4t0w4Ro820= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/outcaste-io/ristretto v0.2.3 h1:AK4zt/fJ76kjlYObOeNwh4T3asEuaCmp26pOvUOL9w0= -github.com/outcaste-io/ristretto v0.2.3/go.mod h1:W8HywhmtlopSB1jeMg3JtdIhf+DYkLAr0VN/s4+MHac= github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc= github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= @@ -342,7 +334,6 @@ github.com/philhofer/fwd v1.1.2 h1:bnDivRJ1EWPjUIRXV5KfORO897HTbpFAQddBdE8t7Gw= github.com/philhofer/fwd v1.1.2/go.mod h1:qkPdfjR2SIEbspLqpe1tO4n5yICnr2DY7mqEx2tUTP0= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= 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/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= @@ -402,8 +393,6 @@ github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/secure-systems-lab/go-securesystemslib v0.7.0 h1:OwvJ5jQf9LnIAS83waAjPbcMsODrTQUpJ02eNLUoxBg= -github.com/secure-systems-lab/go-securesystemslib v0.7.0/go.mod h1:/2gYnlnHVQ6xeGtfIqFy7Do03K4cdCY0A/GlJLDKLHI= github.com/shirou/gopsutil/v3 v3.24.1 h1:R3t6ondCEvmARp3wxODhXMTLC/klMa87h2PHUw5m7QI= github.com/shirou/gopsutil/v3 v3.24.1/go.mod h1:UU7a2MSBQa+kW1uuDq8DeEBS8kmrnQwsv2b5O513rwU= github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM= diff --git a/pkg/serializer/go.mod b/pkg/serializer/go.mod index 6ad5add95156db..0dfba3f38f7be5 100644 --- a/pkg/serializer/go.mod +++ b/pkg/serializer/go.mod @@ -169,7 +169,6 @@ require ( golang.org/x/sys v0.17.0 // indirect golang.org/x/text v0.14.0 // indirect golang.org/x/tools v0.18.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/pkg/serializer/go.sum b/pkg/serializer/go.sum index ac13ea8edbe789..de8408e693e85e 100644 --- a/pkg/serializer/go.sum +++ b/pkg/serializer/go.sum @@ -40,18 +40,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/DataDog/agent-payload/v5 v5.0.102 h1:X8EZQeOewahQ7N/arllAP7hCGHNScdThnGjPg5/ErN8= github.com/DataDog/agent-payload/v5 v5.0.102/go.mod h1:COngtbYYCncpIPiE5D93QlXDH/3VAKk10jDNwGHcMRE= -github.com/DataDog/datadog-go/v5 v5.4.0 h1:Ea3eXUVwrVV28F/fo3Dr3aa+TL/Z7Xi6SUPKW8L99aI= -github.com/DataDog/datadog-go/v5 v5.4.0/go.mod h1:K9kcYBlxkcPP8tvvjZZKs/m1edNAUFzBbdpTUKfCsuw= -github.com/DataDog/go-sqllexer v0.0.9 h1:Cx2Cu1S0hfj4coCCA8hzjM9+UNFRkcu1avIV//RU5Qw= -github.com/DataDog/go-sqllexer v0.0.9/go.mod h1:nB4Ea2YNsqMwtbWMc4Fm/oP98IIrSPapqwOwPioMspY= -github.com/DataDog/go-tuf v1.0.2-0.5.2 h1:EeZr937eKAWPxJ26IykAdWA4A0jQXJgkhUjqEI/w7+I= -github.com/DataDog/go-tuf v1.0.2-0.5.2/go.mod h1:zBcq6f654iVqmkk8n2Cx81E1JnNTMOAx1UEO/wZR+P0= github.com/DataDog/mmh3 v0.0.0-20210722141835-012dc69a9e49 h1:EbzDX8HPk5uE2FsJYxD74QmMw0/3CqSKhEr6teh0ncQ= github.com/DataDog/mmh3 v0.0.0-20210722141835-012dc69a9e49/go.mod h1:SvsjzyJlSg0rKsqYgdcFxeEVflx3ZNAyFfkUHP0TxXg= github.com/DataDog/opentelemetry-mapping-go/pkg/internal/sketchtest v0.13.3 h1:hnzEiqocvnt6U1QGxfeDFf5xhE77jt4LOjZAXW9ueWo= github.com/DataDog/opentelemetry-mapping-go/pkg/internal/sketchtest v0.13.3/go.mod h1:Tk2wwdBgWeSvDPtrGGyym8CdVWSuphiToGc/tRvFoNQ= -github.com/DataDog/opentelemetry-mapping-go/pkg/otlp/attributes v0.13.3 h1:hcYZMgGDMUz8Dz6PcOhgk6FF0yG4N7KErS5J3O/MpeU= -github.com/DataDog/opentelemetry-mapping-go/pkg/otlp/attributes v0.13.3/go.mod h1:Z2FPxYhi8GIFkS4WLC7RrRaGolyB9TqS2RMSwNcmczk= github.com/DataDog/opentelemetry-mapping-go/pkg/quantile v0.13.3 h1:9fdt/9NeSUtypPT4du2/5TTQic9nL1YqDSIaq5Ttsi4= github.com/DataDog/opentelemetry-mapping-go/pkg/quantile v0.13.3/go.mod h1:P8Tr/1BSm0vQ0UXVOtIKmJKXCgb84jdFe9HuBKJPwkc= github.com/DataDog/sketches-go v1.4.4 h1:dF52vzXRFSPOj2IjXSWLvXq3jubL4CI69kwYjJ1w5Z8= @@ -221,8 +213,6 @@ github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= -github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= -github.com/hashicorp/go-version v1.6.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/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= @@ -249,12 +239,6 @@ github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvW github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= 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/knadh/koanf/maps v0.1.1 h1:G5TjmUh2D7G2YWf5SQQqSiHRJEjaicvU0KpypqB3NIs= -github.com/knadh/koanf/maps v0.1.1/go.mod h1:npD/QZY3V6ghQDdcQzl1W4ICNVTkohC8E73eI2xW4yI= -github.com/knadh/koanf/providers/confmap v0.1.0 h1:gOkxhHkemwG4LezxxN8DMOFopOPghxRVp7JbIvdvqzU= -github.com/knadh/koanf/providers/confmap v0.1.0/go.mod h1:2uLhxQzJnyHKfxG927awZC7+fyHFdQkd697K4MdLnIU= -github.com/knadh/koanf/v2 v2.0.1 h1:1dYGITt1I23x8cfx8ZnldtezdyaZtfAuRtIFOiRzK7g= -github.com/knadh/koanf/v2 v2.0.1/go.mod h1:ZeiIlIDXTE7w1lMT6UVcNiRAS2/rCeLn/GdLNvY1Dus= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= @@ -277,13 +261,9 @@ github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/ github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -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/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c h1:cqn374mizHuIWj+OSJCajGr/phAmuMug9qIX3l9CflE= github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= -github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -294,18 +274,13 @@ github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjY github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/outcaste-io/ristretto v0.2.3 h1:AK4zt/fJ76kjlYObOeNwh4T3asEuaCmp26pOvUOL9w0= -github.com/outcaste-io/ristretto v0.2.3/go.mod h1:W8HywhmtlopSB1jeMg3JtdIhf+DYkLAr0VN/s4+MHac= github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc= github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= -github.com/philhofer/fwd v1.1.2 h1:bnDivRJ1EWPjUIRXV5KfORO897HTbpFAQddBdE8t7Gw= -github.com/philhofer/fwd v1.1.2/go.mod h1:qkPdfjR2SIEbspLqpe1tO4n5yICnr2DY7mqEx2tUTP0= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= 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/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= @@ -349,8 +324,6 @@ github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/secure-systems-lab/go-securesystemslib v0.7.0 h1:OwvJ5jQf9LnIAS83waAjPbcMsODrTQUpJ02eNLUoxBg= -github.com/secure-systems-lab/go-securesystemslib v0.7.0/go.mod h1:/2gYnlnHVQ6xeGtfIqFy7Do03K4cdCY0A/GlJLDKLHI= github.com/shirou/gopsutil/v3 v3.24.1 h1:R3t6ondCEvmARp3wxODhXMTLC/klMa87h2PHUw5m7QI= github.com/shirou/gopsutil/v3 v3.24.1/go.mod h1:UU7a2MSBQa+kW1uuDq8DeEBS8kmrnQwsv2b5O513rwU= github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM= @@ -396,8 +369,6 @@ github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= -github.com/tinylib/msgp v1.1.8 h1:FCXC1xanKO4I8plpHGH2P7koL/RzZs12l/+r7vakfm0= -github.com/tinylib/msgp v1.1.8/go.mod h1:qkpG+2ldGg4xRFmx+jfTvZPxfGFhi64BcnL9vkCm/Tw= github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= @@ -424,18 +395,6 @@ go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= -go.opentelemetry.io/collector/component v0.93.0 h1:FHd86+7hbbBlDxdOFLWRA19HrjxKcXO+6H3UQ0zQz0c= -go.opentelemetry.io/collector/component v0.93.0/go.mod h1:8tglddCwOhrcktA7+EwYqcOL3+7xvbfn8ZwKcxsWch0= -go.opentelemetry.io/collector/config/configtelemetry v0.93.0 h1:s+J/zYXc0zRi346Dz4r5ynTPyI5wRtp+JrSyrSBSiSY= -go.opentelemetry.io/collector/config/configtelemetry v0.93.0/go.mod h1:2XLhyR/GVpWeZ2K044vCmrvH/d4Ewt0aD/y46avZyMU= -go.opentelemetry.io/collector/confmap v0.93.0 h1:uYiak0iPuSW4BQIEuN+yihQqvWRwURhoW/qoVs4vLFA= -go.opentelemetry.io/collector/confmap v0.93.0/go.mod h1:+QxYr8qSah4ffcVBUC2KJgwlMsrD2nK1CmcHkLB+D7A= -go.opentelemetry.io/collector/featuregate v1.0.1 h1:ok//hLSXttBbyu4sSV1pTx1nKdr5udSmrWy5sFMIIbM= -go.opentelemetry.io/collector/featuregate v1.0.1/go.mod h1:QQXjP4etmJQhkQ20j4P/rapWuItYxoFozg/iIwuKnYg= -go.opentelemetry.io/collector/pdata v1.0.1 h1:dGX2h7maA6zHbl5D3AsMnF1c3Nn+3EUftbVCLzeyNvA= -go.opentelemetry.io/collector/pdata v1.0.1/go.mod h1:jutXeu0QOXYY8wcZ/hege+YAnSBP3+jpTqYU1+JTI5Y= -go.opentelemetry.io/collector/semconv v0.93.0 h1:eBlMcVNTwYYsVdAsCVDs4wvVYs75K1xcIDpqj16PG4c= -go.opentelemetry.io/collector/semconv v0.93.0/go.mod h1:gZ0uzkXsN+J5NpiRcdp9xOhNGQDDui8Y62p15sKrlzo= go.opentelemetry.io/otel v1.22.0 h1:xS7Ku+7yTFvDfDraDIJVpw7XPyuHlB9MCiqqX5mcJ6Y= go.opentelemetry.io/otel v1.22.0/go.mod h1:eoV4iAi3Ea8LkAEI9+GFT44O6T/D0GWAVFyZVCC6pMI= go.opentelemetry.io/otel/exporters/prometheus v0.45.0 h1:BeIK2KGho0oCWa7LxEGSqfDZbs7Fpv/Viz+FS4P8CXE= @@ -456,8 +415,8 @@ go.uber.org/dig v1.17.0 h1:5Chju+tUvcC+N7N6EV08BJz41UZuO3BmHcN4A287ZLI= go.uber.org/dig v1.17.0/go.mod h1:rTxpf7l5I0eBTlE6/9RL+lDybC7WFwY2QH55ZSjy1mU= go.uber.org/fx v1.18.2 h1:bUNI6oShr+OVFQeU8cDNbnN7VFsu+SsjHzUF51V/GAU= go.uber.org/fx v1.18.2/go.mod h1:g0V1KMQ66zIRk8bLu3Ea5Jt2w/cHlOIp4wdRsgh0JaY= -go.uber.org/goleak v1.2.0 h1:xqgm/S+aQvhWFTtR0XK3Jvg7z8kGV8P4X14IzwN3Eqk= -go.uber.org/goleak v1.2.0/go.mod h1:XJYK+MuIchqpmGmUSAzotztawfKvYLUIgg7guXrwVUo= +go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= @@ -759,8 +718,6 @@ google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917 h1:6G8oQ016D88m1xAKljMlBOOGWDZkes4kMhgGFlf8WcQ= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917/go.mod h1:xtjpI3tXFPP051KaWnhvxkiubL/6dJ18vLVf7q2pTOU= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -779,8 +736,6 @@ google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.60.1 h1:26+wFr+cNqSGFcOXcabYC0lUVJVRa2Sb2ortSK7VrEU= -google.golang.org/grpc v1.60.1/go.mod h1:OlCHIeLYqSSsLi6i49B5QGdzaMZK9+M7LXN2FKz4eGM= 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= From 0b3be5f46fb723cc576ef9cc75effe8efc6476b8 Mon Sep 17 00:00:00 2001 From: Sylvain Afchain Date: Wed, 6 Mar 2024 18:41:07 +0100 Subject: [PATCH 050/155] [CWS] add selftest for ebpfless (#23321) --- pkg/security/module/cws.go | 36 +-- pkg/security/module/server_linux.go | 2 +- pkg/security/probe/selftests/chmod.go | 37 ++- pkg/security/probe/selftests/chown.go | 39 ++- pkg/security/probe/selftests/ebpfless.go | 50 ++++ pkg/security/probe/selftests/open.go | 34 ++- pkg/security/probe/selftests/self_tests.go | 16 +- pkg/security/probe/selftests/tester_linux.go | 236 ++++++++++-------- pkg/security/probe/selftests/tester_others.go | 10 +- 9 files changed, 307 insertions(+), 153 deletions(-) create mode 100644 pkg/security/probe/selftests/ebpfless.go diff --git a/pkg/security/module/cws.go b/pkg/security/module/cws.go index 89aa99f3569b12..71408e876b429c 100644 --- a/pkg/security/module/cws.go +++ b/pkg/security/module/cws.go @@ -8,6 +8,7 @@ package module import ( "context" + "errors" "fmt" "sync" "time" @@ -22,6 +23,7 @@ import ( "github.com/DataDog/datadog-agent/pkg/security/probe/selftests" "github.com/DataDog/datadog-agent/pkg/security/proto/api" rulesmodule "github.com/DataDog/datadog-agent/pkg/security/rules" + "github.com/DataDog/datadog-agent/pkg/security/secl/compiler/eval" "github.com/DataDog/datadog-agent/pkg/security/secl/model" "github.com/DataDog/datadog-agent/pkg/security/secl/rules" "github.com/DataDog/datadog-agent/pkg/security/seclog" @@ -144,6 +146,16 @@ func (c *CWSConsumer) Start() error { seclog.Infof("runtime security started") + // we can now wait for self test events + cb := func(success []eval.RuleID, fails []eval.RuleID, testEvents map[eval.RuleID]*serializers.EventSerializer) { + if c.config.SelfTestSendReport { + ReportSelfTest(c.eventSender, c.statsdClient, success, fails, testEvents) + } + + seclog.Debugf("self-test results : success : %v, failed : %v", success, fails) + } + go c.selfTester.WaitForResult(cb) + return nil } @@ -158,7 +170,7 @@ func (c *CWSConsumer) PostProbeStart() error { case <-c.ctx.Done(): case <-time.After(15 * time.Second): - if _, err := c.RunSelfTest(c.config.SelfTestSendReport); err != nil { + if _, err := c.RunSelfTest(false); err != nil { seclog.Warnf("failed to run self test: %s", err) } } @@ -169,28 +181,24 @@ func (c *CWSConsumer) PostProbeStart() error { } // RunSelfTest runs the self tests -func (c *CWSConsumer) RunSelfTest(sendLoadedReport bool) (bool, error) { +func (c *CWSConsumer) RunSelfTest(gRPC bool) (bool, error) { + if c.config.EBPFLessEnabled && gRPC { + return false, errors.New("self-tests through gRPC are not supported with eBPF less") + } + if c.selfTester == nil { return false, nil } - success, fails, testEvents, err := c.selfTester.RunSelfTest() - if err != nil { + if err := c.selfTester.RunSelfTest(selftests.DefaultTimeout); err != nil { return true, err } - seclog.Debugf("self-test results : success : %v, failed : %v", success, fails) - - // send the report - if sendLoadedReport { - ReportSelfTest(c.eventSender, c.statsdClient, success, fails, testEvents) - } - return true, nil } // ReportSelfTest reports to Datadog that a self test was performed -func ReportSelfTest(sender events.EventSender, statsdClient statsd.ClientInterface, success []string, fails []string, testEvents map[string]*serializers.EventSerializer) { +func ReportSelfTest(sender events.EventSender, statsdClient statsd.ClientInterface, success []eval.RuleID, fails []eval.RuleID, testEvents map[eval.RuleID]*serializers.EventSerializer) { // send metric with number of success and fails tags := []string{ fmt.Sprintf("success:%d", len(success)), @@ -213,10 +221,6 @@ func (c *CWSConsumer) Stop() { c.apiServer.Stop() } - if c.selfTester != nil { - _ = c.selfTester.Close() - } - c.ruleEngine.Stop() c.cancelFnc() diff --git a/pkg/security/module/server_linux.go b/pkg/security/module/server_linux.go index 4ca3c5d4ae339f..34d99c31396078 100644 --- a/pkg/security/module/server_linux.go +++ b/pkg/security/module/server_linux.go @@ -219,7 +219,7 @@ func (a *APIServer) RunSelfTest(_ context.Context, _ *api.RunSelfTestParams) (*a }, nil } - if _, err := a.cwsConsumer.RunSelfTest(false); err != nil { + if _, err := a.cwsConsumer.RunSelfTest(true); err != nil { return &api.SecuritySelfTestResultMessage{ Ok: false, Error: err.Error(), diff --git a/pkg/security/probe/selftests/chmod.go b/pkg/security/probe/selftests/chmod.go index c8e56e1158f3ea..0f98c08e9b86a0 100644 --- a/pkg/security/probe/selftests/chmod.go +++ b/pkg/security/probe/selftests/chmod.go @@ -12,32 +12,49 @@ import ( "fmt" "os/exec" + "github.com/DataDog/datadog-agent/pkg/security/secl/compiler/eval" "github.com/DataDog/datadog-agent/pkg/security/secl/rules" "github.com/DataDog/datadog-agent/pkg/util/log" ) // ChmodSelfTest defines a chmod self test -type ChmodSelfTest struct{} +type ChmodSelfTest struct { + ruleID eval.RuleID + filename string + isSuccess bool +} // GetRuleDefinition returns the rule -func (o *ChmodSelfTest) GetRuleDefinition(filename string) *rules.RuleDefinition { +func (o *ChmodSelfTest) GetRuleDefinition() *rules.RuleDefinition { + o.ruleID = fmt.Sprintf("%s_chmod", ruleIDPrefix) + return &rules.RuleDefinition{ - ID: fmt.Sprintf("%s_chmod", ruleIDPrefix), - Expression: fmt.Sprintf(`chmod.file.path == "%s"`, filename), + ID: o.ruleID, + Expression: fmt.Sprintf(`chmod.file.path == "%s"`, o.filename), } } // GenerateEvent generate an event -func (o *ChmodSelfTest) GenerateEvent(filename string) (EventPredicate, error) { +func (o *ChmodSelfTest) GenerateEvent() error { + o.isSuccess = false + // we need to use chmod (or any other external program) as our PID is discarded by probes // so the events would not be generated - cmd := exec.Command("chmod", "777", filename) + cmd := exec.Command("chmod", "777", o.filename) if err := cmd.Run(); err != nil { log.Debugf("error running chmod: %v", err) - return nil, err + return err } - return func(event selfTestEvent) bool { - return event.Type == "chmod" && event.Filepath == filename - }, nil + return nil +} + +// HandleEvent handles self test events +func (o *ChmodSelfTest) HandleEvent(event selfTestEvent) { + o.isSuccess = event.RuleID == o.ruleID +} + +// IsSuccess return the state of the test +func (o *ChmodSelfTest) IsSuccess() bool { + return o.isSuccess } diff --git a/pkg/security/probe/selftests/chown.go b/pkg/security/probe/selftests/chown.go index 195a2bcb6f15a1..558857de69a014 100644 --- a/pkg/security/probe/selftests/chown.go +++ b/pkg/security/probe/selftests/chown.go @@ -13,38 +13,55 @@ import ( "os/exec" "os/user" + "github.com/DataDog/datadog-agent/pkg/security/secl/compiler/eval" "github.com/DataDog/datadog-agent/pkg/security/secl/rules" "github.com/DataDog/datadog-agent/pkg/util/log" ) // ChownSelfTest defines a chown self test -type ChownSelfTest struct{} +type ChownSelfTest struct { + ruleID eval.RuleID + filename string + isSuccess bool +} // GetRuleDefinition returns the rule -func (o *ChownSelfTest) GetRuleDefinition(filename string) *rules.RuleDefinition { +func (o *ChownSelfTest) GetRuleDefinition() *rules.RuleDefinition { + o.ruleID = fmt.Sprintf("%s_chown", ruleIDPrefix) + return &rules.RuleDefinition{ - ID: fmt.Sprintf("%s_chown", ruleIDPrefix), - Expression: fmt.Sprintf(`chown.file.path == "%s"`, filename), + ID: o.ruleID, + Expression: fmt.Sprintf(`chown.file.path == "%s"`, o.filename), } } // GenerateEvent generate an event -func (o *ChownSelfTest) GenerateEvent(filename string) (EventPredicate, error) { +func (o *ChownSelfTest) GenerateEvent() error { + o.isSuccess = false + // we need to use chown (or any other external program) as our PID is discarded by probes // so the events would not be generated currentUser, err := user.Current() if err != nil { log.Debugf("error retrieving uid: %v", err) - return nil, err + return err } - cmd := exec.Command("chown", currentUser.Uid, filename) + cmd := exec.Command("chown", currentUser.Uid, o.filename) if err := cmd.Run(); err != nil { log.Debugf("error running chown: %v", err) - return nil, err + return err } - return func(event selfTestEvent) bool { - return event.Type == "chown" && event.Filepath == filename - }, nil + return nil +} + +// HandleEvent handles self test events +func (o *ChownSelfTest) HandleEvent(event selfTestEvent) { + o.isSuccess = event.RuleID == o.ruleID +} + +// IsSuccess return the state of the test +func (o *ChownSelfTest) IsSuccess() bool { + return o.isSuccess } diff --git a/pkg/security/probe/selftests/ebpfless.go b/pkg/security/probe/selftests/ebpfless.go new file mode 100644 index 00000000000000..224037594ea1d9 --- /dev/null +++ b/pkg/security/probe/selftests/ebpfless.go @@ -0,0 +1,50 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +//go:build linux + +// Package selftests holds selftests related files +package selftests + +import ( + "fmt" + "math" + "time" + + "github.com/DataDog/datadog-agent/pkg/security/secl/compiler/eval" + "github.com/DataDog/datadog-agent/pkg/security/secl/rules" +) + +// EBPFLessSelfTest defines an ebpf less self test +type EBPFLessSelfTest struct { + ruleID eval.RuleID + isSuccess bool +} + +// GetRuleDefinition returns the rule +func (o *EBPFLessSelfTest) GetRuleDefinition() *rules.RuleDefinition { + o.ruleID = fmt.Sprintf("%s_exec", ruleIDPrefix) + + return &rules.RuleDefinition{ + ID: o.ruleID, + Expression: `exec.file.path != "" && process.parent.pid == 0`, + Every: time.Duration(math.MaxInt64), + } +} + +// GenerateEvent generate an event +func (o *EBPFLessSelfTest) GenerateEvent() error { + return nil +} + +// HandleEvent handles self test events +func (o *EBPFLessSelfTest) HandleEvent(event selfTestEvent) { + o.isSuccess = event.RuleID == o.ruleID +} + +// IsSuccess return the state of the test +func (o *EBPFLessSelfTest) IsSuccess() bool { + return o.isSuccess +} diff --git a/pkg/security/probe/selftests/open.go b/pkg/security/probe/selftests/open.go index cb2e774628f3d6..272ec1e1c3b55e 100644 --- a/pkg/security/probe/selftests/open.go +++ b/pkg/security/probe/selftests/open.go @@ -12,33 +12,49 @@ import ( "fmt" "os/exec" + "github.com/DataDog/datadog-agent/pkg/security/secl/compiler/eval" "github.com/DataDog/datadog-agent/pkg/security/secl/rules" "github.com/DataDog/datadog-agent/pkg/util/log" ) // OpenSelfTest defines an open self test type OpenSelfTest struct { + ruleID eval.RuleID + filename string + isSuccess bool } // GetRuleDefinition returns the rule -func (o *OpenSelfTest) GetRuleDefinition(filename string) *rules.RuleDefinition { +func (o *OpenSelfTest) GetRuleDefinition() *rules.RuleDefinition { + o.ruleID = fmt.Sprintf("%s_open", ruleIDPrefix) + return &rules.RuleDefinition{ - ID: fmt.Sprintf("%s_open", ruleIDPrefix), - Expression: fmt.Sprintf(`open.file.path == "%s" && open.flags & O_CREAT > 0`, filename), + ID: o.ruleID, + Expression: fmt.Sprintf(`open.file.path == "%s" && open.flags & O_CREAT > 0`, o.filename), } } // GenerateEvent generate an event -func (o *OpenSelfTest) GenerateEvent(filename string) (EventPredicate, error) { +func (o *OpenSelfTest) GenerateEvent() error { + o.isSuccess = false + // we need to use touch (or any other external program) as our PID is discarded by probes // so the events would not be generated - cmd := exec.Command("touch", filename) + cmd := exec.Command("touch", o.filename) if err := cmd.Run(); err != nil { log.Debugf("error running touch: %v", err) - return nil, err + return err } - return func(event selfTestEvent) bool { - return event.Type == "open" && event.Filepath == filename - }, nil + return nil +} + +// HandleEvent handles self test events +func (o *OpenSelfTest) HandleEvent(event selfTestEvent) { + o.isSuccess = event.RuleID == o.ruleID +} + +// IsSuccess return the state of the test +func (o *OpenSelfTest) IsSuccess() bool { + return o.isSuccess } diff --git a/pkg/security/probe/selftests/self_tests.go b/pkg/security/probe/selftests/self_tests.go index b0504925ef67e8..b541666964dd9d 100644 --- a/pkg/security/probe/selftests/self_tests.go +++ b/pkg/security/probe/selftests/self_tests.go @@ -8,6 +8,7 @@ package selftests import ( json "encoding/json" + "time" "github.com/DataDog/datadog-agent/pkg/security/events" "github.com/DataDog/datadog-agent/pkg/security/secl/compiler/eval" @@ -22,6 +23,9 @@ const ( policyName = "datadog-agent-cws-self-test-policy" //nolint: deadcode, unused ruleIDPrefix = "datadog_agent_cws_self_test_rule" //nolint: deadcode, unused + // DefaultTimeout default timeout + DefaultTimeout = 30 * time.Second + // PolicyProviderType name of the self test policy provider PolicyProviderType = "selfTesterPolicyProvider" ) @@ -29,26 +33,26 @@ const ( // SelfTestEvent is used to report a self test result type SelfTestEvent struct { events.CustomEventCommonFields - Success []string `json:"succeeded_tests"` - Fails []string `json:"failed_tests"` - TestEvents map[string]*serializers.EventSerializer `json:"test_events"` + Success []eval.RuleID `json:"succeeded_tests"` + Fails []eval.RuleID `json:"failed_tests"` + TestEvents map[eval.RuleID]*serializers.EventSerializer `json:"test_events"` } // ToJSON marshal using json format func (t SelfTestEvent) ToJSON() ([]byte, error) { // cleanup the serialization of potentially nil slices if t.Success == nil { - t.Success = []string{} + t.Success = []eval.RuleID{} } if t.Fails == nil { - t.Fails = []string{} + t.Fails = []eval.RuleID{} } return json.Marshal(t) } // NewSelfTestEvent returns the rule and the result of the self test -func NewSelfTestEvent(success []string, fails []string, testEvents map[string]*serializers.EventSerializer) (*rules.Rule, *events.CustomEvent) { +func NewSelfTestEvent(success []eval.RuleID, fails []eval.RuleID, testEvents map[eval.RuleID]*serializers.EventSerializer) (*rules.Rule, *events.CustomEvent) { evt := SelfTestEvent{ Success: success, Fails: fails, diff --git a/pkg/security/probe/selftests/tester_linux.go b/pkg/security/probe/selftests/tester_linux.go index 519feae5c33f0d..1276646f686149 100644 --- a/pkg/security/probe/selftests/tester_linux.go +++ b/pkg/security/probe/selftests/tester_linux.go @@ -7,9 +7,8 @@ package selftests import ( - "errors" - "fmt" "os" + "sync" "time" "go.uber.org/atomic" @@ -26,53 +25,67 @@ import ( "github.com/DataDog/datadog-agent/pkg/util/log" ) -// EventPredicate defines a self test event validation predicate -type EventPredicate func(event selfTestEvent) bool - -// FileSelfTest represent one self test, with its ID and func -type FileSelfTest interface { - GetRuleDefinition(filename string) *rules.RuleDefinition - GenerateEvent(filename string) (EventPredicate, error) -} - -// FileSelfTests slice of self test functions representing each individual file test -var FileSelfTests = []FileSelfTest{ - &OpenSelfTest{}, - &ChmodSelfTest{}, - &ChownSelfTest{}, +// SelfTest represent one self test +type SelfTest interface { + GetRuleDefinition() *rules.RuleDefinition + GenerateEvent() error + HandleEvent(selfTestEvent) + IsSuccess() bool } // SelfTester represents all the state needed to conduct rule injection test at startup type SelfTester struct { + sync.Mutex + + config *config.RuntimeSecurityConfig waitingForEvent *atomic.Bool eventChan chan selfTestEvent probe *probe.Probe - success []string - fails []string + success []eval.RuleID + fails []eval.RuleID lastTimestamp time.Time - - // file tests - targetFilePath string - targetTempDir string + selfTests []SelfTest + tmpDir string + done chan bool + selfTestRunning chan time.Duration } var _ rules.PolicyProvider = (*SelfTester)(nil) // NewSelfTester returns a new SelfTester, enabled or not func NewSelfTester(cfg *config.RuntimeSecurityConfig, probe *probe.Probe) (*SelfTester, error) { - // not supported on ebpfless environment + var ( + selfTests []SelfTest + tmpDir string + ) + if cfg.EBPFLessEnabled { - return nil, nil + selfTests = []SelfTest{ + &EBPFLessSelfTest{}, + } + } else { + name, dir, err := createTargetFile() + if err != nil { + return nil, err + } + tmpDir = dir + + selfTests = []SelfTest{ + &OpenSelfTest{filename: name}, + &ChmodSelfTest{filename: name}, + &ChownSelfTest{filename: name}, + } } s := &SelfTester{ - waitingForEvent: atomic.NewBool(false), + waitingForEvent: atomic.NewBool(cfg.EBPFLessEnabled), eventChan: make(chan selfTestEvent, 10), + selfTestRunning: make(chan time.Duration, 10), probe: probe, - } - - if err := s.createTargetFile(); err != nil { - return nil, err + selfTests: selfTests, + tmpDir: tmpDir, + done: make(chan bool), + config: cfg, } return s, nil @@ -80,6 +93,9 @@ func NewSelfTester(cfg *config.RuntimeSecurityConfig, probe *probe.Probe) (*Self // GetStatus returns the result of the last performed self tests func (t *SelfTester) GetStatus() *api.SelfTestsStatus { + t.Lock() + defer t.Unlock() + return &api.SelfTestsStatus{ LastTimestamp: t.lastTimestamp.Format(time.RFC822), Success: t.success, @@ -87,72 +103,111 @@ func (t *SelfTester) GetStatus() *api.SelfTestsStatus { } } -func (t *SelfTester) createTargetFile() error { +func createTargetFile() (string, string, error) { // Create temp directory to put target file in tmpDir, err := os.MkdirTemp("", "datadog_agent_cws_self_test") if err != nil { - return err + return "", "", err } - t.targetTempDir = tmpDir // Create target file targetFile, err := os.CreateTemp(tmpDir, "datadog_agent_cws_target_file") if err != nil { - return err + return "", "", err } - t.targetFilePath = targetFile.Name() - return targetFile.Close() + return targetFile.Name(), tmpDir, targetFile.Close() } // RunSelfTest runs the self test and return the result -func (t *SelfTester) RunSelfTest() ([]string, []string, map[string]*serializers.EventSerializer, error) { - if err := t.BeginWaitingForEvent(); err != nil { - return nil, nil, nil, fmt.Errorf("failed to run self test: %w", err) - } - defer t.EndWaitingForEvent() +func (t *SelfTester) RunSelfTest(timeout time.Duration) error { + t.Lock() + defer t.Unlock() - t.lastTimestamp = time.Now() + t.beginSelfTests(timeout) - // launch the self tests - var success []string - var fails []string - testEvents := make(map[string]*serializers.EventSerializer) + for _, selfTest := range t.selfTests { + if err := selfTest.GenerateEvent(); err != nil { + log.Errorf("self test failed: %s", selfTest.GetRuleDefinition().ID) + } + } + + return nil +} - for _, selftest := range FileSelfTests { - def := selftest.GetRuleDefinition(t.targetFilePath) +// Start the self tester policy provider +func (t *SelfTester) Start() { + if t.config.EBPFLessEnabled { + t.selfTestRunning <- DefaultTimeout + } +} - predicate, err := selftest.GenerateEvent(t.targetFilePath) - if err != nil { - fails = append(fails, def.ID) - log.Errorf("Self test failed: %s", def.ID) - continue +// WaitForResult wait for self test results +func (t *SelfTester) WaitForResult(cb func(success []eval.RuleID, fails []eval.RuleID, events map[eval.RuleID]*serializers.EventSerializer)) { + for timeout := range t.selfTestRunning { + timer := time.After(timeout) + + var ( + success []string + fails []string + events = make(map[eval.RuleID]*serializers.EventSerializer) + ) + + LOOP: + for { + select { + case <-t.done: + return + case event := <-t.eventChan: + t.Lock() + for _, selfTest := range t.selfTests { + if !selfTest.IsSuccess() { + selfTest.HandleEvent(event) + } + + if selfTest.IsSuccess() { + id := selfTest.GetRuleDefinition().ID + events[id] = event.Event + } + } + t.Unlock() + + // all test passed + if len(events) == len(t.selfTests) { + break LOOP + } + case <-timer: + break LOOP + } } - event, err2 := t.expectEvent(predicate) - testEvents[def.ID] = event - if err2 != nil { - fails = append(fails, def.ID) - log.Errorf("Self test failed: %s", def.ID) - } else { - success = append(success, def.ID) + + t.Lock() + for _, selfTest := range t.selfTests { + id := selfTest.GetRuleDefinition().ID + + if _, ok := events[id]; ok { + success = append(success, id) + } else { + fails = append(fails, id) + } } - } + t.success, t.fails, t.lastTimestamp = success, fails, time.Now() + t.Unlock() - // save the results for get status command - t.success = success - t.fails = fails + cb(success, fails, events) - return success, fails, testEvents, nil + t.endSelfTests() + } } -// Start starts the self tester policy provider -func (t *SelfTester) Start() {} - // Close removes temp directories and files used by the self tester func (t *SelfTester) Close() error { - if t.targetTempDir != "" { - err := os.RemoveAll(t.targetTempDir) - t.targetTempDir = "" + close(t.selfTestRunning) + close(t.done) + + if t.tmpDir != "" { + err := os.RemoveAll(t.tmpDir) + t.tmpDir = "" return err } return nil @@ -160,6 +215,8 @@ func (t *SelfTester) Close() error { // LoadPolicies implements the PolicyProvider interface func (t *SelfTester) LoadPolicies(_ []rules.MacroFilter, _ []rules.RuleFilter) ([]*rules.Policy, *multierror.Error) { + t.Lock() + defer t.Unlock() p := &rules.Policy{ Name: policyName, Source: policySource, @@ -167,28 +224,24 @@ func (t *SelfTester) LoadPolicies(_ []rules.MacroFilter, _ []rules.RuleFilter) ( IsInternal: true, } - for _, selftest := range FileSelfTests { - p.AddRule(selftest.GetRuleDefinition(t.targetFilePath)) + for _, selftest := range t.selfTests { + p.AddRule(selftest.GetRuleDefinition()) } return []*rules.Policy{p}, nil } -// BeginWaitingForEvent passes the tester in the waiting for event state -func (t *SelfTester) BeginWaitingForEvent() error { - if t.waitingForEvent.Swap(true) { - return errors.New("a self test is already running") - } - return nil +func (t *SelfTester) beginSelfTests(timeout time.Duration) { + t.waitingForEvent.Store(true) + t.selfTestRunning <- timeout } -// EndWaitingForEvent exits the waiting for event state -func (t *SelfTester) EndWaitingForEvent() { +func (t *SelfTester) endSelfTests() { t.waitingForEvent.Store(false) } type selfTestEvent struct { - Type string + RuleID eval.RuleID Filepath string Event *serializers.EventSerializer } @@ -202,31 +255,18 @@ func (t *SelfTester) IsExpectedEvent(rule *rules.Rule, event eval.Event, _ *prob } s := serializers.NewEventSerializer(ev, rule.Opts) - if s == nil || s.FileEventSerializer == nil { - return true + if s == nil { + return false } selfTestEvent := selfTestEvent{ - Type: event.GetType(), + RuleID: rule.ID, Filepath: s.FileEventSerializer.Path, Event: s, } + t.eventChan <- selfTestEvent return true } return false } - -func (t *SelfTester) expectEvent(predicate func(selfTestEvent) bool) (*serializers.EventSerializer, error) { - timer := time.After(3 * time.Second) - for { - select { - case event := <-t.eventChan: - if predicate(event) { - return event.Event, nil - } - case <-timer: - return nil, errors.New("failed to receive expected event") - } - } -} diff --git a/pkg/security/probe/selftests/tester_others.go b/pkg/security/probe/selftests/tester_others.go index ece2a0c99b7142..dc0d6961d4b497 100644 --- a/pkg/security/probe/selftests/tester_others.go +++ b/pkg/security/probe/selftests/tester_others.go @@ -8,6 +8,8 @@ package selftests import ( + "time" + "github.com/hashicorp/go-multierror" "github.com/DataDog/datadog-agent/pkg/security/config" @@ -30,8 +32,8 @@ func NewSelfTester(_ *config.RuntimeSecurityConfig, probe *probe.Probe) (*SelfTe } // RunSelfTest runs the self test and return the result -func (t *SelfTester) RunSelfTest() ([]string, []string, map[string]*serializers.EventSerializer, error) { - return nil, nil, nil, nil +func (t *SelfTester) RunSelfTest(_ time.Duration) error { + return nil } // Start starts the self tester policy provider @@ -58,3 +60,7 @@ func (t *SelfTester) LoadPolicies(_ []rules.MacroFilter, _ []rules.RuleFilter) ( func (t *SelfTester) IsExpectedEvent(_ *rules.Rule, _ eval.Event, _ *probe.Probe) bool { return false } + +// WaitForResult wait for self test results +func (t *SelfTester) WaitForResult(_ func(_ []eval.RuleID, _ []eval.RuleID, _ map[eval.RuleID]*serializers.EventSerializer)) { +} From a6dd700d2b41a177a0ed688ea24679ed6d55132c Mon Sep 17 00:00:00 2001 From: Raymond Zhao <35050708+rayz@users.noreply.github.com> Date: Wed, 6 Mar 2024 12:43:39 -0500 Subject: [PATCH 051/155] [amlii-1409] Add start hook for dogtstatsd replay component (#23387) * Add replay component start hook * Update serverless * Update mock * Remove start hook error to not block agent from starting * Remove redundant err check --- comp/dogstatsd/replay/capture.go | 28 +++++++++++++++++++++------- comp/dogstatsd/replay/component.go | 10 +++++----- comp/dogstatsd/replay/mock.go | 18 +++++++++++++++--- comp/dogstatsd/server/server.go | 3 +-- 4 files changed, 42 insertions(+), 17 deletions(-) diff --git a/comp/dogstatsd/replay/capture.go b/comp/dogstatsd/replay/capture.go index 6e56a8f0991c00..1f8415d451a41c 100644 --- a/comp/dogstatsd/replay/capture.go +++ b/comp/dogstatsd/replay/capture.go @@ -6,6 +6,7 @@ package replay import ( + "context" "fmt" "path" "sync" @@ -30,13 +31,15 @@ const ( type dependencies struct { fx.In + Lc fx.Lifecycle Config configComponent.Component } // TrafficCapture allows capturing traffic from our listeners and writing it to file type trafficCapture struct { - writer *TrafficCaptureWriter - config config.Reader + writer *TrafficCaptureWriter + config config.Reader + startUpError error sync.RWMutex } @@ -45,24 +48,31 @@ type trafficCapture struct { // //nolint:revive // TODO(AML) Fix revive linter func NewServerlessTrafficCapture() Component { - return newTrafficCaptureCompat(config.Datadog) + tc := newTrafficCaptureCompat(config.Datadog) + _ = tc.configure(context.TODO()) + return tc } // TODO: (components) - merge with newTrafficCaptureCompat once NewServerlessTrafficCapture is removed func newTrafficCapture(deps dependencies) Component { - return newTrafficCaptureCompat(deps.Config) + tc := newTrafficCaptureCompat(deps.Config) + deps.Lc.Append(fx.Hook{ + OnStart: tc.configure, + }) + + return tc } -func newTrafficCaptureCompat(cfg config.Reader) Component { +func newTrafficCaptureCompat(cfg config.Reader) *trafficCapture { return &trafficCapture{ config: cfg, } } -func (tc *trafficCapture) Configure() error { +func (tc *trafficCapture) configure(_ context.Context) error { writer := NewTrafficCaptureWriter(tc.config.GetInt("dogstatsd_capture_depth")) if writer == nil { - return fmt.Errorf("unable to instantiate capture writer") + tc.startUpError = fmt.Errorf("unable to instantiate capture writer") } tc.writer = writer @@ -138,3 +148,7 @@ func (tc *trafficCapture) defaultlocation() string { return location } + +func (tc *trafficCapture) GetStartUpError() error { + return tc.startUpError +} diff --git a/comp/dogstatsd/replay/component.go b/comp/dogstatsd/replay/component.go index cc64c7d6b2cb5c..193cb9f7f983b1 100644 --- a/comp/dogstatsd/replay/component.go +++ b/comp/dogstatsd/replay/component.go @@ -11,19 +11,16 @@ package replay import ( "time" + "go.uber.org/fx" + "github.com/DataDog/datadog-agent/comp/dogstatsd/packets" "github.com/DataDog/datadog-agent/pkg/util/fxutil" - "go.uber.org/fx" ) // team: agent-metrics-logs // Component is the component type. type Component interface { - // TODO: (components) we should remove the configure method once Dogstatsd's lifecycle is managed by FX (start/stop) - // Because Dogstatsd can fail at runtime, we can't yet rely on fx to configure and start up the replay feature - // since it has no way of knowing if dogstatsd started successfully. - Configure() error // IsOngoing returns whether a capture is ongoing for this TrafficCapture instance. IsOngoing() bool @@ -44,6 +41,9 @@ type Component interface { // Enqueue enqueues a capture buffer so it's written to file. Enqueue(msg *CaptureBuffer) bool + + // GetStartUpError returns an error if TrafficCapture failed to start up + GetStartUpError() error } // Mock implements mock-specific methods. diff --git a/comp/dogstatsd/replay/mock.go b/comp/dogstatsd/replay/mock.go index 3f1dd4fd66854c..4bc5ef37969349 100644 --- a/comp/dogstatsd/replay/mock.go +++ b/comp/dogstatsd/replay/mock.go @@ -6,9 +6,12 @@ package replay import ( + "context" "sync" "time" + "go.uber.org/fx" + "github.com/DataDog/datadog-agent/comp/dogstatsd/packets" ) @@ -17,11 +20,15 @@ type mockTrafficCapture struct { sync.RWMutex } -func newMockTrafficCapture() Component { - return &mockTrafficCapture{} +func newMockTrafficCapture(deps dependencies) Component { + tc := &mockTrafficCapture{} + deps.Lc.Append(fx.Hook{ + OnStart: tc.configure, + }) + return tc } -func (tc *mockTrafficCapture) Configure() error { +func (tc *mockTrafficCapture) configure(_ context.Context) error { return nil } @@ -61,3 +68,8 @@ func (tc *mockTrafficCapture) RegisterOOBPoolManager(p *packets.PoolManager) err func (tc *mockTrafficCapture) Enqueue(msg *CaptureBuffer) bool { return true } + +//nolint:revive // TODO(AML) Fix revive linter +func (tc *mockTrafficCapture) GetStartUpError() error { + return nil +} diff --git a/comp/dogstatsd/server/server.go b/comp/dogstatsd/server/server.go index 3a9744f62e0b2b..9dac92aca463c7 100644 --- a/comp/dogstatsd/server/server.go +++ b/comp/dogstatsd/server/server.go @@ -325,9 +325,8 @@ func (s *server) start(context.Context) error { packetsChannel := make(chan packets.Packets, s.config.GetInt("dogstatsd_queue_size")) tmpListeners := make([]listeners.StatsdListener, 0, 2) - err := s.tCapture.Configure() - if err != nil { + if err := s.tCapture.GetStartUpError(); err != nil { return err } From 4f794fabb7fa84d79e647ae91f8d335233790f67 Mon Sep 17 00:00:00 2001 From: Paul Cacheux Date: Wed, 6 Mar 2024 19:22:39 +0100 Subject: [PATCH 052/155] [CWS-1468] include agent metadata part to backend JSON schema (#23493) * [CWS] include agent metadata part to backend JSON schema * re-gen documentation --- docs/cloud-workload-security/backend.md | 96 ++++++++++++++++++- .../backend.schema.json | 48 +++++++++- .../probe/doc_generator/backend_doc_gen.go | 10 +- 3 files changed, 151 insertions(+), 3 deletions(-) diff --git a/docs/cloud-workload-security/backend.md b/docs/cloud-workload-security/backend.md index c3d7d95e385bb8..d38ef80bd5d56d 100644 --- a/docs/cloud-workload-security/backend.md +++ b/docs/cloud-workload-security/backend.md @@ -18,6 +18,43 @@ CSM Threats logs have the following JSON schema: { "$id": "https://github.com/DataDog/datadog-agent/tree/main/pkg/security/serializers", "$defs": { + "AgentContext": { + "properties": { + "rule_id": { + "type": "string" + }, + "rule_version": { + "type": "string" + }, + "rule_actions": { + "items": true, + "type": "array" + }, + "policy_name": { + "type": "string" + }, + "policy_version": { + "type": "string" + }, + "version": { + "type": "string" + }, + "os": { + "type": "string" + }, + "arch": { + "type": "string" + }, + "origin": { + "type": "string" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "rule_id" + ] + }, "AnomalyDetectionSyscallEvent": { "properties": { "syscall": { @@ -1335,6 +1372,12 @@ CSM Threats logs have the following JSON schema: } }, "properties": { + "agent": { + "$ref": "#/$defs/AgentContext" + }, + "title": { + "type": "string" + }, "evt": { "$ref": "#/$defs/EventContext" }, @@ -1405,13 +1448,18 @@ CSM Threats logs have the following JSON schema: }, "additionalProperties": false, "type": "object", - "description": "EventSerializer serializes an event to JSON" + "required": [ + "agent", + "title" + ] } {{< /code-block >}} | Parameter | Type | Description | | --------- | ---- | ----------- | +| `agent` | $ref | Please see [AgentContext](#agentcontext) | +| `title` | string | | | `evt` | $ref | Please see [EventContext](#eventcontext) | | `date` | string | | | `file` | $ref | Please see [FileEvent](#fileevent) | @@ -1435,6 +1483,52 @@ CSM Threats logs have the following JSON schema: | `anomaly_detection_syscall` | $ref | Please see [AnomalyDetectionSyscallEvent](#anomalydetectionsyscallevent) | | `usr` | $ref | Please see [UserContext](#usercontext) | +## `AgentContext` + + +{{< code-block lang="json" collapsible="true" >}} +{ + "properties": { + "rule_id": { + "type": "string" + }, + "rule_version": { + "type": "string" + }, + "rule_actions": { + "items": true, + "type": "array" + }, + "policy_name": { + "type": "string" + }, + "policy_version": { + "type": "string" + }, + "version": { + "type": "string" + }, + "os": { + "type": "string" + }, + "arch": { + "type": "string" + }, + "origin": { + "type": "string" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "rule_id" + ] +} + +{{< /code-block >}} + + + ## `AnomalyDetectionSyscallEvent` diff --git a/docs/cloud-workload-security/backend.schema.json b/docs/cloud-workload-security/backend.schema.json index 74f1029077f075..c1cb848bbfbbbf 100644 --- a/docs/cloud-workload-security/backend.schema.json +++ b/docs/cloud-workload-security/backend.schema.json @@ -2,6 +2,43 @@ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://github.com/DataDog/datadog-agent/tree/main/pkg/security/serializers", "$defs": { + "AgentContext": { + "properties": { + "rule_id": { + "type": "string" + }, + "rule_version": { + "type": "string" + }, + "rule_actions": { + "items": true, + "type": "array" + }, + "policy_name": { + "type": "string" + }, + "policy_version": { + "type": "string" + }, + "version": { + "type": "string" + }, + "os": { + "type": "string" + }, + "arch": { + "type": "string" + }, + "origin": { + "type": "string" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "rule_id" + ] + }, "AnomalyDetectionSyscallEvent": { "properties": { "syscall": { @@ -1319,6 +1356,12 @@ } }, "properties": { + "agent": { + "$ref": "#/$defs/AgentContext" + }, + "title": { + "type": "string" + }, "evt": { "$ref": "#/$defs/EventContext" }, @@ -1389,5 +1432,8 @@ }, "additionalProperties": false, "type": "object", - "description": "EventSerializer serializes an event to JSON" + "required": [ + "agent", + "title" + ] } \ No newline at end of file diff --git a/pkg/security/probe/doc_generator/backend_doc_gen.go b/pkg/security/probe/doc_generator/backend_doc_gen.go index df94e312a9633a..b22b5c75d15f1b 100644 --- a/pkg/security/probe/doc_generator/backend_doc_gen.go +++ b/pkg/security/probe/doc_generator/backend_doc_gen.go @@ -18,10 +18,18 @@ import ( "github.com/invopop/jsonschema" + "github.com/DataDog/datadog-agent/pkg/security/events" "github.com/DataDog/datadog-agent/pkg/security/serializers" "github.com/DataDog/datadog-agent/pkg/security/utils" ) +// CWSEvent is a similar struct to what we actually send to the backend, except in the real case +// we actually do some struct-less string concatenation optimization +type CWSEvent struct { + events.BackendEvent `json:",inline"` + serializers.EventSerializer `json:",inline"` +} + func generateBackendJSON(output string) error { reflector := jsonschema.Reflector{ ExpandedStruct: true, @@ -35,7 +43,7 @@ func generateBackendJSON(output string) error { } reflector.CommentMap = cleanupEasyjson(reflector.CommentMap) - schema := reflector.Reflect(&serializers.EventSerializer{}) + schema := reflector.Reflect(&CWSEvent{}) schema.ID = "https://github.com/DataDog/datadog-agent/tree/main/pkg/security/serializers" schemaJSON, err := json.MarshalIndent(schema, "", " ") From 1517d6badb37a8f1fb56a2b2dfe9fdd49b1d5682 Mon Sep 17 00:00:00 2001 From: Paul Cacheux Date: Wed, 6 Mar 2024 20:06:35 +0100 Subject: [PATCH 053/155] [CWS] add missing SBOM config to system probe config (#23497) --- pkg/config/setup/system_probe.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkg/config/setup/system_probe.go b/pkg/config/setup/system_probe.go index ec608e1f6cbfb2..04e4eda4ba0ef0 100644 --- a/pkg/config/setup/system_probe.go +++ b/pkg/config/setup/system_probe.go @@ -72,6 +72,8 @@ func InitSystemProbeConfig(cfg pkgconfigmodel.Config) { cfg.BindEnvAndSetDefault("sbom.cache.enabled", true) cfg.BindEnvAndSetDefault("sbom.cache.max_disk_size", 1000*1000*100) // used by custom cache: max disk space used by cached objects. Not equal to max disk usage cfg.BindEnvAndSetDefault("sbom.cache.clean_interval", "30m") // used by custom cache. + cfg.BindEnvAndSetDefault("sbom.scan_queue.base_backoff", "5m") + cfg.BindEnvAndSetDefault("sbom.scan_queue.max_backoff", "1h") // Auto exit configuration cfg.BindEnvAndSetDefault("auto_exit.validation_period", 60) From 4850006c55bd566b0336a7350c3ec3826618a68e Mon Sep 17 00:00:00 2001 From: AliDatadog <125997632+AliDatadog@users.noreply.github.com> Date: Wed, 6 Mar 2024 20:10:29 +0100 Subject: [PATCH 054/155] make sure we get the image only if it's an image metadata (#23498) --- pkg/sbom/scanner/scanner.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/sbom/scanner/scanner.go b/pkg/sbom/scanner/scanner.go index 2abfe9e7800bcc..c8cab9c4d647f9 100644 --- a/pkg/sbom/scanner/scanner.go +++ b/pkg/sbom/scanner/scanner.go @@ -203,7 +203,7 @@ func (s *Scanner) handleScanRequest(ctx context.Context, r interface{}) { } var imgMeta *workloadmeta.ContainerImageMetadata - if collector.Type() != collectors.ContainerImageScanType { + if collector.Type() == collectors.ContainerImageScanType { imgMeta = s.getImageMetadata(request) if imgMeta == nil { return From ccc41bfaee5fceb1f7326ca0c6bf8c643389ee05 Mon Sep 17 00:00:00 2001 From: Kyle Nusbaum Date: Wed, 6 Mar 2024 13:47:44 -0600 Subject: [PATCH 055/155] pkg/trace/timing: fix flaky timing test (#23496) * pkg/trace/timing: fix flaky timing test This commit uses the Eventually* set of functions to ensure the behavior we are testing rather than relying on short sleeps, which cannot guarantee the behavior, which resulted in test flakes. * cleanup --- pkg/trace/timing/timing_test.go | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/pkg/trace/timing/timing_test.go b/pkg/trace/timing/timing_test.go index 33bc1f52840545..e93eaaea1b7a77 100644 --- a/pkg/trace/timing/timing_test.go +++ b/pkg/trace/timing/timing_test.go @@ -8,7 +8,6 @@ package timing import ( "fmt" "math/rand" - "runtime" "sync" "testing" "time" @@ -19,10 +18,10 @@ import ( ) func TestTiming(t *testing.T) { - assert := assert.New(t) stats := &teststatsd.Client{} t.Run("report", func(t *testing.T) { + assert := assert.New(t) set := newSet(stats) set.Since("counter1", time.Now().Add(-2*time.Second)) set.Since("counter1", time.Now().Add(-3*time.Second)) @@ -43,12 +42,10 @@ func TestTiming(t *testing.T) { set := newSet(stats) set.Since("counter1", time.Now().Add(-1*time.Second)) set.autoreport(time.Millisecond) - if runtime.GOOS == "windows" { - time.Sleep(5 * time.Second) - } - time.Sleep(10 * time.Millisecond) set.Stop() - assert.Contains(stats.GetCountSummaries(), "counter1.count") + assert.EventuallyWithT(t, func(c *assert.CollectT) { + assert.Contains(c, stats.GetCountSummaries(), "counter1.count") + }, 5*time.Second, 10*time.Millisecond) }) t.Run("panic", func(t *testing.T) { From c7b1b2024b8fa779dcb8d21d5d227210a8af95cb Mon Sep 17 00:00:00 2001 From: Wassim Dhif Date: Wed, 6 Mar 2024 21:56:10 +0100 Subject: [PATCH 056/155] fix(tagger): add missing go.mod (#23499) Signed-off-by: Wassim DHIF --- pkg/tagger/go.mod | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 pkg/tagger/go.mod diff --git a/pkg/tagger/go.mod b/pkg/tagger/go.mod new file mode 100644 index 00000000000000..210e463ab86dd8 --- /dev/null +++ b/pkg/tagger/go.mod @@ -0,0 +1,3 @@ +module github.com/DataDog/datadog-agent/pkg/tagger + +go 1.21.7 From 6b1be21b1b8f9767738716909cff2948b1219b08 Mon Sep 17 00:00:00 2001 From: Vincent Whitchurch Date: Thu, 7 Mar 2024 10:26:57 +0100 Subject: [PATCH 057/155] [USMON-758] usm: http: Handle TRACE method (#23238) * usm: http: Handle TRACE method * Update agent-payload to v5.0.106 * Update go.sum with `go mod tidy` * Add changelog --- go.mod | 2 +- go.sum | 4 ++-- pkg/network/ebpf/c/protocols/http/classification-helpers.h | 6 ++++-- pkg/network/ebpf/c/protocols/http/http.h | 3 +++ pkg/network/ebpf/c/protocols/http/types.h | 3 ++- pkg/network/protocols/http/stats.go | 4 ++++ pkg/network/usm/monitor_test.go | 2 +- .../notes/usm-http-trace-method-baa008a043ebb8a8.yaml | 4 ++++ 8 files changed, 21 insertions(+), 7 deletions(-) create mode 100644 releasenotes/notes/usm-http-trace-method-baa008a043ebb8a8.yaml diff --git a/go.mod b/go.mod index e76edfb7430f99..7e0be8192a1277 100644 --- a/go.mod +++ b/go.mod @@ -591,7 +591,7 @@ require github.com/lorenzosaino/go-sysctl v0.3.1 require ( github.com/DATA-DOG/go-sqlmock v1.5.0 - github.com/DataDog/agent-payload/v5 v5.0.105 + github.com/DataDog/agent-payload/v5 v5.0.106 github.com/DataDog/datadog-agent/cmd/agent/common/path v0.52.0-rc.3 github.com/DataDog/datadog-agent/comp/core/config v0.52.0-rc.3 github.com/DataDog/datadog-agent/comp/core/flare/types v0.52.0-rc.3 diff --git a/go.sum b/go.sum index 5f19d41d3a95a5..03d1757f2135b7 100644 --- a/go.sum +++ b/go.sum @@ -264,8 +264,8 @@ github.com/CycloneDX/cyclonedx-go v0.8.0 h1:FyWVj6x6hoJrui5uRQdYZcSievw3Z32Z88uY github.com/CycloneDX/cyclonedx-go v0.8.0/go.mod h1:K2bA+324+Og0X84fA8HhN2X066K7Bxz4rpMQ4ZhjtSk= github.com/DATA-DOG/go-sqlmock v1.5.0 h1:Shsta01QNfFxHCfpW6YH2STWB0MudeXXEWMr20OEh60= github.com/DATA-DOG/go-sqlmock v1.5.0/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= -github.com/DataDog/agent-payload/v5 v5.0.105 h1:ip81v5WbfuRDBDGhYz2Qzzv3YwLhOmf1sp60WVfvIgA= -github.com/DataDog/agent-payload/v5 v5.0.105/go.mod h1:COngtbYYCncpIPiE5D93QlXDH/3VAKk10jDNwGHcMRE= +github.com/DataDog/agent-payload/v5 v5.0.106 h1:A3dGX+JYoL7OJe2crpxznW7hWxLxhOk/17WbYskRWVk= +github.com/DataDog/agent-payload/v5 v5.0.106/go.mod h1:COngtbYYCncpIPiE5D93QlXDH/3VAKk10jDNwGHcMRE= github.com/DataDog/appsec-internal-go v1.4.2 h1:rLOp0mSzJ7L7Nn3jAdWbgvs+1HK25H0DN4XYVDJu72s= github.com/DataDog/appsec-internal-go v1.4.2/go.mod h1:pEp8gjfNLtEOmz+iZqC8bXhu0h4k7NUsW/qiQb34k1U= github.com/DataDog/aptly v1.5.3 h1:oLsRvjuXSVM4ia0N83dU3KiQeiJ6BaszYbTZOkSfDlw= diff --git a/pkg/network/ebpf/c/protocols/http/classification-helpers.h b/pkg/network/ebpf/c/protocols/http/classification-helpers.h index 3cf25906f7a63b..263e2b59edf896 100644 --- a/pkg/network/ebpf/c/protocols/http/classification-helpers.h +++ b/pkg/network/ebpf/c/protocols/http/classification-helpers.h @@ -4,7 +4,7 @@ #include "protocols/classification/common.h" // Checks if the given buffers start with `HTTP` prefix (represents a response) or starts with ` /` which represents -// a request, where is one of: GET, POST, PUT, DELETE, HEAD, OPTIONS, or PATCH. +// a request, where is one of: GET, POST, PUT, DELETE, HEAD, OPTIONS, PATCH, or TRACE. static __always_inline bool is_http(const char *buf, __u32 size) { CHECK_PRELIMINARY_BUFFER_CONDITIONS(buf, size, HTTP_MIN_SIZE); @@ -17,6 +17,7 @@ static __always_inline bool is_http(const char *buf, __u32 size) { #define OPTIONS1 "OPTIONS /" #define OPTIONS2 "OPTIONS *" #define PATCH "PATCH /" +#define TRACE "TRACE /" // memcmp returns // 0 when s1 == s2, @@ -29,7 +30,8 @@ static __always_inline bool is_http(const char *buf, __u32 size) { && bpf_memcmp(buf, HEAD, sizeof(HEAD)-1) && bpf_memcmp(buf, OPTIONS1, sizeof(OPTIONS1)-1) && bpf_memcmp(buf, OPTIONS2, sizeof(OPTIONS2)-1) - && bpf_memcmp(buf, PATCH, sizeof(PATCH)-1)); + && bpf_memcmp(buf, PATCH, sizeof(PATCH)-1) + && bpf_memcmp(buf, TRACE, sizeof(TRACE)-1)); return http; } diff --git a/pkg/network/ebpf/c/protocols/http/http.h b/pkg/network/ebpf/c/protocols/http/http.h index 8be6cab74d56d7..4986ef7f8ece6e 100644 --- a/pkg/network/ebpf/c/protocols/http/http.h +++ b/pkg/network/ebpf/c/protocols/http/http.h @@ -71,6 +71,9 @@ static __always_inline void http_parse_data(char const *p, http_packet_t *packet } else if ((p[0] == 'P') && (p[1] == 'A') && (p[2] == 'T') && (p[3] == 'C') && (p[4] == 'H') && (p[5] == ' ') && (p[6] == '/')) { *packet_type = HTTP_REQUEST; *method = HTTP_PATCH; + } else if ((p[0] == 'T') && (p[1] == 'R') && (p[2] == 'A') && (p[3] == 'C') && (p[4] == 'E') && (p[5] == ' ') && (p[6] == '/')) { + *packet_type = HTTP_REQUEST; + *method = HTTP_TRACE; } } diff --git a/pkg/network/ebpf/c/protocols/http/types.h b/pkg/network/ebpf/c/protocols/http/types.h index 3463ea1bb4fe24..d0c288b4ce69f6 100644 --- a/pkg/network/ebpf/c/protocols/http/types.h +++ b/pkg/network/ebpf/c/protocols/http/types.h @@ -36,7 +36,8 @@ typedef enum HTTP_DELETE, HTTP_HEAD, HTTP_OPTIONS, - HTTP_PATCH + HTTP_PATCH, + HTTP_TRACE } http_method_t; // HTTP transaction information associated to a certain socket (conn_tuple_t) diff --git a/pkg/network/protocols/http/stats.go b/pkg/network/protocols/http/stats.go index b9a4983372b9d1..ea70a34bae672d 100644 --- a/pkg/network/protocols/http/stats.go +++ b/pkg/network/protocols/http/stats.go @@ -42,6 +42,8 @@ const ( MethodOptions // MethodPatch represents the PATCH request method MethodPatch + // MethodTrace represents the TRACE request method + MethodTrace ) // Method returns a string representing the HTTP method of the request @@ -61,6 +63,8 @@ func (m Method) String() string { return "OPTIONS" case MethodPatch: return "PATCH" + case MethodTrace: + return "TRACE" default: return "UNKNOWN" } diff --git a/pkg/network/usm/monitor_test.go b/pkg/network/usm/monitor_test.go index d83066988a27fb..b05e84d64a818a 100644 --- a/pkg/network/usm/monitor_test.go +++ b/pkg/network/usm/monitor_test.go @@ -525,7 +525,7 @@ func assertAllRequestsExists(t *testing.T, monitor *Monitor, requests []*nethttp } var ( - httpMethods = []string{nethttp.MethodGet, nethttp.MethodHead, nethttp.MethodPost, nethttp.MethodPut, nethttp.MethodPatch, nethttp.MethodDelete, nethttp.MethodOptions} + httpMethods = []string{nethttp.MethodGet, nethttp.MethodHead, nethttp.MethodPost, nethttp.MethodPut, nethttp.MethodPatch, nethttp.MethodDelete, nethttp.MethodOptions, nethttp.MethodTrace} httpMethodsWithBody = []string{nethttp.MethodPost, nethttp.MethodPut, nethttp.MethodPatch, nethttp.MethodDelete} statusCodes = []int{nethttp.StatusOK, nethttp.StatusMultipleChoices, nethttp.StatusBadRequest, nethttp.StatusInternalServerError} ) diff --git a/releasenotes/notes/usm-http-trace-method-baa008a043ebb8a8.yaml b/releasenotes/notes/usm-http-trace-method-baa008a043ebb8a8.yaml new file mode 100644 index 00000000000000..a7edd8f04b22dd --- /dev/null +++ b/releasenotes/notes/usm-http-trace-method-baa008a043ebb8a8.yaml @@ -0,0 +1,4 @@ +--- +enhancements: + - | + USM: Handle the HTTP TRACE method. From 93f9e50318e0c034039bde1825f53b234404d5ea Mon Sep 17 00:00:00 2001 From: David du Colombier Date: Thu, 7 Mar 2024 11:07:00 +0100 Subject: [PATCH 058/155] [agentless-scanner] Install upstart and sysv init scripts (#23508) This change also installs the upstart and sysv init scripts, along with the systemd init scripts that were previously installed. --- .../config/software/datadog-agentless-scanner-finalize.rb | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/omnibus/config/software/datadog-agentless-scanner-finalize.rb b/omnibus/config/software/datadog-agentless-scanner-finalize.rb index fe6ca78e8e580e..b2a9049e75070e 100644 --- a/omnibus/config/software/datadog-agentless-scanner-finalize.rb +++ b/omnibus/config/software/datadog-agentless-scanner-finalize.rb @@ -18,8 +18,16 @@ license :project_license # Move system service files + mkdir "/etc/init" + move "#{install_dir}/scripts/datadog-agentless-scanner.conf", "/etc/init" + if debian_target? + # sysvinit support for debian only for now + mkdir "/etc/init.d" + move "#{install_dir}/scripts/datadog-agentless-scanner", "/etc/init.d" + end mkdir "/lib/systemd/system" move "#{install_dir}/scripts/datadog-agentless-scanner.service", "/lib/systemd/system" + mkdir "/var/log/datadog" # cleanup clutter From 662d211c34e4b78a362bcb781bba7cb5d136426a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20Beauz=C3=A9e-Luyssen?= Date: Thu, 7 Mar 2024 11:25:53 +0100 Subject: [PATCH 059/155] Drop CentOS 6 (#23431) Co-authored-by: spencergilbert Co-authored-by: KSerrania --- .circleci/config.yml | 2 +- .gitlab-ci.yml | 14 +- .gitlab/kitchen_testing/centos.yml | 3 +- .../new-e2e_testing/centos.yml | 25 +- .../pydantic-core-build-for-manylinux1.patch | 599 ------------------ omnibus/config/projects/agent.rb | 1 + .../config/software/datadog-agent-finalize.rb | 11 - ...dog-agent-integrations-py3-dependencies.rb | 4 - .../datadog-agent-integrations-py3.rb | 7 - omnibus/config/software/libxcrypt.rb | 8 - omnibus/config/software/oracledb-py3.rb | 2 +- omnibus/config/software/pydantic-core-py3.rb | 29 - .../notes/drop-centos6-f7afd46b4ea4cca8.yaml | 11 + test/kitchen/platforms.json | 3 +- .../agent-platform/platforms/platforms.json | 7 +- 15 files changed, 35 insertions(+), 691 deletions(-) delete mode 100644 omnibus/config/patches/pydantic-core-py3/pydantic-core-build-for-manylinux1.patch delete mode 100644 omnibus/config/software/pydantic-core-py3.rb create mode 100644 releasenotes/notes/drop-centos6-f7afd46b4ea4cca8.yaml diff --git a/.circleci/config.yml b/.circleci/config.yml index af867a237123ce..6dbd39f7647bf3 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -15,7 +15,7 @@ experimental: templates: job_template: &job_template docker: - - image: gcr.io/datadoghq/agent-circleci-runner:v27950662-17e84032 + - image: gcr.io/datadoghq/agent-circleci-runner:v29603376-40fa78c0 environment: USE_SYSTEM_LIBS: "1" working_directory: /go/src/github.com/DataDog/datadog-agent diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 70c7084b685030..fc5db4d4d4508b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -166,19 +166,19 @@ variables: # To use images from datadog-agent-buildimages dev branches, set the corresponding # SUFFIX variable to _test_only DATADOG_AGENT_BUILDIMAGES_SUFFIX: "" - DATADOG_AGENT_BUILDIMAGES: v27950662-17e84032 + DATADOG_AGENT_BUILDIMAGES: v29603376-40fa78c0 DATADOG_AGENT_WINBUILDIMAGES_SUFFIX: "" - DATADOG_AGENT_WINBUILDIMAGES: v27950662-17e84032 + DATADOG_AGENT_WINBUILDIMAGES: v29603376-40fa78c0 DATADOG_AGENT_ARMBUILDIMAGES_SUFFIX: "" - DATADOG_AGENT_ARMBUILDIMAGES: v27950662-17e84032 + DATADOG_AGENT_ARMBUILDIMAGES: v29603376-40fa78c0 DATADOG_AGENT_SYSPROBE_BUILDIMAGES_SUFFIX: "" - DATADOG_AGENT_SYSPROBE_BUILDIMAGES: v27950662-17e84032 + DATADOG_AGENT_SYSPROBE_BUILDIMAGES: v29603376-40fa78c0 DATADOG_AGENT_KERNEL_MATRIX_TESTING_BUILDIMAGES_SUFFIX: "" - DATADOG_AGENT_KERNEL_MATRIX_TESTING_BUILDIMAGES: v27950662-17e84032 + DATADOG_AGENT_KERNEL_MATRIX_TESTING_BUILDIMAGES: v29603376-40fa78c0 DATADOG_AGENT_NIKOS_BUILDIMAGES_SUFFIX: "" - DATADOG_AGENT_NIKOS_BUILDIMAGES: v27950662-17e84032 + DATADOG_AGENT_NIKOS_BUILDIMAGES: v29603376-40fa78c0 DATADOG_AGENT_BTF_GEN_BUILDIMAGES_SUFFIX: "" - DATADOG_AGENT_BTF_GEN_BUILDIMAGES: v27950662-17e84032 + DATADOG_AGENT_BTF_GEN_BUILDIMAGES: v29603376-40fa78c0 # To use images from test-infra-definitions dev branches, set the SUFFIX variable to -dev # and check the job creating the image to make sure you have the right SHA prefix TEST_INFRA_DEFINITIONS_BUILDIMAGES_SUFFIX: "" diff --git a/.gitlab/kitchen_testing/centos.yml b/.gitlab/kitchen_testing/centos.yml index cc062b7c6a3e0a..87c64517e31e87 100644 --- a/.gitlab/kitchen_testing/centos.yml +++ b/.gitlab/kitchen_testing/centos.yml @@ -5,7 +5,6 @@ # include: # - /.gitlab/kitchen_testing/testing.yml - # Kitchen: OSes # ------------- @@ -14,7 +13,7 @@ .kitchen_os_centos_no_support_for_fips: variables: KITCHEN_PLATFORM: "centos" - KITCHEN_OSVERS: "centos-610,centos-77,rhel-81" + KITCHEN_OSVERS: "centos-77,rhel-81" KITCHEN_CWS_SUPPORTED_OSVERS: "centos-77,rhel-81" before_script: - cd $DD_AGENT_TESTING_DIR diff --git a/.gitlab/kitchen_testing/new-e2e_testing/centos.yml b/.gitlab/kitchen_testing/new-e2e_testing/centos.yml index 431c58bd2965fd..c123ae7fe6a92f 100644 --- a/.gitlab/kitchen_testing/new-e2e_testing/centos.yml +++ b/.gitlab/kitchen_testing/new-e2e_testing/centos.yml @@ -1,4 +1,3 @@ - .new-e2e_os_centos: variables: E2E_PLATFORM: centos @@ -6,7 +5,7 @@ .new-e2e_centos_a6_x86_64: variables: E2E_ARCH: x86_64 - E2E_OSVERS: "centos-610,centos-79,rhel-86" + E2E_OSVERS: "centos-79,rhel-86" E2E_CWS_SUPPORTED_OSVERS: "centos-79,rhel-86" E2E_BRANCH_OSVERS: "centos-79" E2E_OVERRIDE_INSTANCE_TYPE: "t2.medium" # CentOS 6 does not support ENA, so we cannot use t3 instances @@ -15,7 +14,7 @@ .new-e2e_centos_a7_x86_64: variables: E2E_ARCH: x86_64 - E2E_OSVERS: "centos-610,centos-79,rhel-86" + E2E_OSVERS: "centos-79,rhel-86" E2E_CWS_SUPPORTED_OSVERS: "centos-79,rhel-86" E2E_BRANCH_OSVERS: "centos-79" E2E_OVERRIDE_INSTANCE_TYPE: "t2.medium" # CentOS 6 does not support ENA, so we cannot use t3 instances @@ -56,8 +55,7 @@ new-e2e-agent-platform-install-script-centos-a7-x86_64: - .new-e2e_os_centos - .new-e2e_centos_a7_x86_64 - .new-e2e_agent_a7 - rules: - !reference [.on_default_new-e2e_tests_a7] + rules: !reference [.on_default_new-e2e_tests_a7] variables: FLAVOR: datadog-agent @@ -69,8 +67,7 @@ new-e2e-agent-platform-install-script-centos-iot-agent-a7-x86_64: - .new-e2e_os_centos - .new-e2e_centos_a7_x86_64 - .new-e2e_agent_a7 - rules: - !reference [.on_default_new-e2e_tests_a7] + rules: !reference [.on_default_new-e2e_tests_a7] variables: FLAVOR: datadog-iot-agent @@ -104,8 +101,7 @@ new-e2e-agent-platform-install-script-centos-fips-a7-x86_64: - .new-e2e_os_centos - .new-e2e_centos-fips_a7_x86_64 - .new-e2e_agent_a7 - rules: - !reference [.on_default_new-e2e_tests_a7] + rules: !reference [.on_default_new-e2e_tests_a7] variables: FLAVOR: datadog-agent @@ -117,8 +113,7 @@ new-e2e-agent-platform-install-script-centos-fips-iot-agent-a7-x86_64: - .new-e2e_os_centos - .new-e2e_centos-fips_a7_x86_64 - .new-e2e_agent_a7 - rules: - !reference [.on_default_new-e2e_tests_a7] + rules: !reference [.on_default_new-e2e_tests_a7] variables: FLAVOR: datadog-iot-agent @@ -141,8 +136,7 @@ new-e2e-agent-platform-step-by-step-centos-a6-x86_64: - .new-e2e_os_centos - .new-e2e_centos_a6_x86_64 - .new-e2e_agent_a6 - rules: - !reference [.on_deploy_a6] + rules: !reference [.on_deploy_a6] variables: FLAVOR: datadog-agent @@ -154,8 +148,7 @@ new-e2e-agent-platform-step-by-step-centos-a7-x86_64: - .new-e2e_os_centos - .new-e2e_centos_a7_x86_64 - .new-e2e_agent_a7 - rules: - !reference [.on_deploy_a7] + rules: !reference [.on_deploy_a7] variables: FLAVOR: datadog-agent @@ -238,5 +231,5 @@ new-e2e-agent-platform-install-script-upgrade7-centos-fips-x86_64: FLAVOR: datadog-agent parallel: matrix: - - START_MAJOR_VERSION: [6,7] + - START_MAJOR_VERSION: [6, 7] END_MAJOR_VERSION: [7] diff --git a/omnibus/config/patches/pydantic-core-py3/pydantic-core-build-for-manylinux1.patch b/omnibus/config/patches/pydantic-core-py3/pydantic-core-build-for-manylinux1.patch deleted file mode 100644 index 1d6c7c9b751627..00000000000000 --- a/omnibus/config/patches/pydantic-core-py3/pydantic-core-build-for-manylinux1.patch +++ /dev/null @@ -1,599 +0,0 @@ -diff --git a/.cargo/config.toml b/.cargo/config.toml -index f0ba8af..4182dd0 100644 ---- a/.cargo/config.toml -+++ b/.cargo/config.toml -@@ -13,3 +13,8 @@ rustflags = [ - "-C", "link-arg=-undefined", - "-C", "link-arg=dynamic_lookup", - ] -+ -+[patch.crates-io] -+speedate = { git = "https://github.com/DataDog/speedate.git", branch = "support-old-nightly" } -+pyo3 = { git = "https://github.com/DataDog/pyo3.git", branch = "support-old-nightly" } -+indexmap = { git = "https://github.com/DataDog/indexmap.git", branch = "support-old-nightly" } -diff --git a/Cargo.lock b/Cargo.lock -index fc9a6ed..ff5fe71 100644 ---- a/Cargo.lock -+++ b/Cargo.lock -@@ -16,9 +16,9 @@ dependencies = [ - - [[package]] - name = "aho-corasick" --version = "0.7.20" -+version = "1.0.2" - source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" -+checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" - dependencies = [ - "memchr", - ] -@@ -55,30 +55,30 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - - [[package]] - name = "enum_dispatch" --version = "0.3.11" -+version = "0.3.12" - source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "11f36e95862220b211a6e2aa5eca09b4fa391b13cd52ceb8035a24bf65a79de2" -+checksum = "8f33313078bb8d4d05a2733a94ac4c2d8a0df9a2b84424ebf4f33bfc224a890e" - dependencies = [ - "once_cell", - "proc-macro2", - "quote", -- "syn 1.0.109", -+ "syn 2.0.27", - ] - - [[package]] - name = "form_urlencoded" --version = "1.1.0" -+version = "1.2.0" - source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" -+checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" - dependencies = [ - "percent-encoding", - ] - - [[package]] - name = "getrandom" --version = "0.2.8" -+version = "0.2.10" - source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" -+checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" - dependencies = [ - "cfg-if", - "libc", -@@ -107,11 +107,20 @@ dependencies = [ - "unicode-normalization", - ] - -+[[package]] -+name = "idna" -+version = "0.4.0" -+source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" -+dependencies = [ -+ "unicode-bidi", -+ "unicode-normalization", -+] -+ - [[package]] - name = "indexmap" - version = "1.9.3" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -+source = "git+https://github.com/DataDog/indexmap.git?branch=support-old-nightly#861fad73de14b7f08d2dc56ed83607aef621b42e" - dependencies = [ - "autocfg", - "hashbrown", -@@ -125,21 +134,21 @@ checksum = "bfa799dd5ed20a7e349f3b4639aa80d74549c81716d9ec4f994c9b5815598306" - - [[package]] - name = "itoa" --version = "1.0.6" -+version = "1.0.9" - source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" -+checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" - - [[package]] - name = "libc" --version = "0.2.140" -+version = "0.2.147" - source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c" -+checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" - - [[package]] - name = "libmimalloc-sys" --version = "0.1.30" -+version = "0.1.33" - source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "dd8c7cbf8b89019683667e347572e6d55a7df7ea36b0c4ce69961b0cde67b174" -+checksum = "f4ac0e912c8ef1b735e92369695618dc5b1819f5a7bf3f167301a3ba1cea515e" - dependencies = [ - "cc", - "libc", -@@ -147,9 +156,9 @@ dependencies = [ - - [[package]] - name = "lock_api" --version = "0.4.9" -+version = "0.4.10" - source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" -+checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" - dependencies = [ - "autocfg", - "scopeguard", -@@ -172,9 +181,9 @@ dependencies = [ - - [[package]] - name = "mimalloc" --version = "0.1.34" -+version = "0.1.37" - source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "9dcb174b18635f7561a0c6c9fc2ce57218ac7523cf72c50af80e2d79ab8f3ba1" -+checksum = "4e2894987a3459f3ffb755608bd82188f8ed00d0ae077f1edea29c068d639d98" - dependencies = [ - "libmimalloc-sys", - ] -@@ -202,18 +211,18 @@ dependencies = [ - - [[package]] - name = "num-traits" --version = "0.2.15" -+version = "0.2.16" - source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" -+checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" - dependencies = [ - "autocfg", - ] - - [[package]] - name = "once_cell" --version = "1.17.1" -+version = "1.18.0" - source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" -+checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" - - [[package]] - name = "parking_lot" -@@ -227,28 +236,28 @@ dependencies = [ - - [[package]] - name = "parking_lot_core" --version = "0.9.7" -+version = "0.9.8" - source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521" -+checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" - dependencies = [ - "cfg-if", - "libc", - "redox_syscall", - "smallvec", -- "windows-sys", -+ "windows-targets", - ] - - [[package]] - name = "percent-encoding" --version = "2.2.0" -+version = "2.3.0" - source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" -+checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" - - [[package]] - name = "proc-macro2" --version = "1.0.60" -+version = "1.0.66" - source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "dec2b086b7a862cf4de201096214fa870344cf922b2b30c167badb3af3195406" -+checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" - dependencies = [ - "unicode-ident", - ] -@@ -260,7 +269,7 @@ dependencies = [ - "ahash", - "base64", - "enum_dispatch", -- "idna", -+ "idna 0.3.0", - "mimalloc", - "num-bigint", - "pyo3", -@@ -279,8 +288,7 @@ dependencies = [ - [[package]] - name = "pyo3" - version = "0.19.1" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "ffb88ae05f306b4bfcde40ac4a51dc0b05936a9207a4b75b798c7729c4258a59" -+source = "git+https://github.com/DataDog/pyo3.git?branch=support-old-nightly#782dcfa95ce95ef6306cd9c777ca3aee86b79fcc" - dependencies = [ - "cfg-if", - "indoc", -@@ -297,8 +305,7 @@ dependencies = [ - [[package]] - name = "pyo3-build-config" - version = "0.19.1" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "554db24f0b3c180a9c0b1268f91287ab3f17c162e15b54caaae5a6b3773396b0" -+source = "git+https://github.com/DataDog/pyo3.git?branch=support-old-nightly#782dcfa95ce95ef6306cd9c777ca3aee86b79fcc" - dependencies = [ - "once_cell", - "python3-dll-a", -@@ -308,8 +315,7 @@ dependencies = [ - [[package]] - name = "pyo3-ffi" - version = "0.19.1" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "922ede8759e8600ad4da3195ae41259654b9c55da4f7eec84a0ccc7d067a70a4" -+source = "git+https://github.com/DataDog/pyo3.git?branch=support-old-nightly#782dcfa95ce95ef6306cd9c777ca3aee86b79fcc" - dependencies = [ - "libc", - "pyo3-build-config", -@@ -318,8 +324,7 @@ dependencies = [ - [[package]] - name = "pyo3-macros" - version = "0.19.1" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "8a5caec6a1dd355964a841fcbeeb1b89fe4146c87295573f94228911af3cc5a2" -+source = "git+https://github.com/DataDog/pyo3.git?branch=support-old-nightly#782dcfa95ce95ef6306cd9c777ca3aee86b79fcc" - dependencies = [ - "proc-macro2", - "pyo3-macros-backend", -@@ -330,8 +335,7 @@ dependencies = [ - [[package]] - name = "pyo3-macros-backend" - version = "0.19.1" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "e0b78ccbb160db1556cdb6fd96c50334c5d4ec44dc5e0a968d0a1208fa0efa8b" -+source = "git+https://github.com/DataDog/pyo3.git?branch=support-old-nightly#782dcfa95ce95ef6306cd9c777ca3aee86b79fcc" - dependencies = [ - "proc-macro2", - "quote", -@@ -349,27 +353,39 @@ dependencies = [ - - [[package]] - name = "quote" --version = "1.0.28" -+version = "1.0.32" - source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "1b9ab9c7eadfd8df19006f1cf1a4aed13540ed5cbc047010ece5826e10825488" -+checksum = "50f3b39ccfb720540debaa0164757101c08ecb8d326b15358ce76a62c7e85965" - dependencies = [ - "proc-macro2", - ] - - [[package]] - name = "redox_syscall" --version = "0.2.16" -+version = "0.3.5" - source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" -+checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" - dependencies = [ - "bitflags", - ] - - [[package]] - name = "regex" --version = "1.7.3" -+version = "1.9.1" -+source = "registry+https://github.com/rust-lang/crates.io-index" -+checksum = "b2eae68fc220f7cf2532e4494aded17545fce192d59cd996e0fe7887f4ceb575" -+dependencies = [ -+ "aho-corasick", -+ "memchr", -+ "regex-automata", -+ "regex-syntax", -+] -+ -+[[package]] -+name = "regex-automata" -+version = "0.3.3" - source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "8b1f693b24f6ac912f4893ef08244d70b6067480d2f1a46e950c9691e6749d1d" -+checksum = "39354c10dd07468c2e73926b23bb9c2caca74c5501e38a35da70406f1d923310" - dependencies = [ - "aho-corasick", - "memchr", -@@ -378,39 +394,39 @@ dependencies = [ - - [[package]] - name = "regex-syntax" --version = "0.6.29" -+version = "0.7.4" - source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" -+checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2" - - [[package]] - name = "rustversion" --version = "1.0.12" -+version = "1.0.14" - source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "4f3208ce4d8448b3f3e7d168a73f5e0c43a61e32930de3bceeccedb388b6bf06" -+checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" - - [[package]] - name = "ryu" --version = "1.0.13" -+version = "1.0.15" - source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" -+checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" - - [[package]] - name = "scopeguard" --version = "1.1.0" -+version = "1.2.0" - source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" -+checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - - [[package]] - name = "serde" --version = "1.0.159" -+version = "1.0.176" - source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "3c04e8343c3daeec41f58990b9d77068df31209f2af111e059e9fe9646693065" -+checksum = "76dc28c9523c5d70816e393136b86d48909cfb27cecaa902d338c19ed47164dc" - - [[package]] - name = "serde_json" --version = "1.0.95" -+version = "1.0.97" - source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "d721eca97ac802aa7777b701877c8004d950fc142651367300d21c1cc0194744" -+checksum = "bdf3bf93142acad5821c99197022e170842cdbc1c30482b98750c688c640842a" - dependencies = [ - "indexmap", - "itoa", -@@ -420,18 +436,17 @@ dependencies = [ - - [[package]] - name = "smallvec" --version = "1.10.0" -+version = "1.11.0" - source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" -+checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" - - [[package]] - name = "speedate" --version = "0.9.0" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "312e03cbe7f96cdbd7b69de27d396d541632f660b400a953fe536403e4698e75" -+version = "0.9.1" -+source = "git+https://github.com/DataDog/speedate.git?branch=support-old-nightly#461bc4e6f22ddce201731881af3d095f3b6b73fc" - dependencies = [ - "strum", -- "strum_macros 0.25.0", -+ "strum_macros 0.25.1", - ] - - [[package]] -@@ -440,7 +455,7 @@ version = "0.25.0" - source = "registry+https://github.com/rust-lang/crates.io-index" - checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125" - dependencies = [ -- "strum_macros 0.25.0", -+ "strum_macros 0.25.1", - ] - - [[package]] -@@ -458,15 +473,15 @@ dependencies = [ - - [[package]] - name = "strum_macros" --version = "0.25.0" -+version = "0.25.1" - source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "fe9f3bd7d2e45dcc5e265fbb88d6513e4747d8ef9444cf01a533119bce28a157" -+checksum = "6069ca09d878a33f883cc06aaa9718ede171841d3832450354410b718b097232" - dependencies = [ - "heck", - "proc-macro2", - "quote", - "rustversion", -- "syn 2.0.18", -+ "syn 2.0.27", - ] - - [[package]] -@@ -482,9 +497,9 @@ dependencies = [ - - [[package]] - name = "syn" --version = "2.0.18" -+version = "2.0.27" - source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "32d41677bcbe24c20c52e7c70b0d8db04134c5d1066bf98662e2871ad200ea3e" -+checksum = "b60f673f44a8255b9c8c657daf66a596d435f2da81a555b06dc644d080ba45e0" - dependencies = [ - "proc-macro2", - "quote", -@@ -493,9 +508,9 @@ dependencies = [ - - [[package]] - name = "target-lexicon" --version = "0.12.6" -+version = "0.12.10" - source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "8ae9980cab1db3fceee2f6c6f643d5d8de2997c58ee8d25fb0cc8a9e9e7348e5" -+checksum = "1d2faeef5759ab89935255b1a4cd98e0baf99d1085e37d36599c625dac49ae8e" - - [[package]] - name = "tinyvec" -@@ -520,9 +535,9 @@ checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" - - [[package]] - name = "unicode-ident" --version = "1.0.8" -+version = "1.0.11" - source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" -+checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" - - [[package]] - name = "unicode-normalization" -@@ -541,12 +556,12 @@ checksum = "e1766d682d402817b5ac4490b3c3002d91dfa0d22812f341609f97b08757359c" - - [[package]] - name = "url" --version = "2.3.1" -+version = "2.4.0" - source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" -+checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb" - dependencies = [ - "form_urlencoded", -- "idna", -+ "idna 0.4.0", - "percent-encoding", - ] - -@@ -562,20 +577,11 @@ version = "0.11.0+wasi-snapshot-preview1" - source = "registry+https://github.com/rust-lang/crates.io-index" - checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" - --[[package]] --name = "windows-sys" --version = "0.45.0" --source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" --dependencies = [ -- "windows-targets", --] -- - [[package]] - name = "windows-targets" --version = "0.42.2" -+version = "0.48.1" - source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" -+checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f" - dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", -@@ -588,42 +594,42 @@ dependencies = [ - - [[package]] - name = "windows_aarch64_gnullvm" --version = "0.42.2" -+version = "0.48.0" - source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" -+checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" - - [[package]] - name = "windows_aarch64_msvc" --version = "0.42.2" -+version = "0.48.0" - source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" -+checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" - - [[package]] - name = "windows_i686_gnu" --version = "0.42.2" -+version = "0.48.0" - source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" -+checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" - - [[package]] - name = "windows_i686_msvc" --version = "0.42.2" -+version = "0.48.0" - source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" -+checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" - - [[package]] - name = "windows_x86_64_gnu" --version = "0.42.2" -+version = "0.48.0" - source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" -+checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" - - [[package]] - name = "windows_x86_64_gnullvm" --version = "0.42.2" -+version = "0.48.0" - source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" -+checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" - - [[package]] - name = "windows_x86_64_msvc" --version = "0.42.2" -+version = "0.48.0" - source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" -+checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" -diff --git a/Cargo.toml b/Cargo.toml -index 7c3bae8..00d29e2 100644 ---- a/Cargo.toml -+++ b/Cargo.toml -@@ -30,7 +30,7 @@ pyo3 = { version = "0.19.1", features = ["generate-import-lib", "num-bigint"] } - regex = "1.6.0" - strum = { version = "0.25.0", features = ["derive"] } - strum_macros = "0.24.3" --serde_json = {version = "1.0.87", features = ["preserve_order"]} -+serde_json = {version = "<1.0.98", features = ["preserve_order"]} - enum_dispatch = "0.3.8" - serde = "1.0.147" - # disabled for benchmarks since it makes microbenchmark performance more flakey -@@ -51,7 +51,6 @@ crate-type = ["cdylib", "rlib"] - [features] - # must be enabled when building with `cargo build`, maturin enables this automatically - extension-module = ["pyo3/extension-module"] --default = ["mimalloc"] - - [profile.release] - lto = "fat" -@@ -68,4 +67,4 @@ pyo3 = { version = "0.19.0", features = ["auto-initialize"] } - [build-dependencies] - version_check = "0.9.4" - # used where logic has to be version/distribution specific, e.g. pypy --pyo3-build-config = "0.19.0" -+pyo3-build-config = { git = 'https://github.com/DataDog/pyo3.git', branch = 'support-old-nightly' } -diff --git a/pyproject.toml b/pyproject.toml -index 1602e32..0278c38 100644 ---- a/pyproject.toml -+++ b/pyproject.toml -@@ -1,6 +1,6 @@ - [build-system] - requires = [ -- 'maturin>=1,<2', -+ 'maturin[zig]>=1,<2', - 'typing-extensions >=4.6.0,!=4.7.0' - ] - build-backend = 'maturin' -@@ -52,6 +52,7 @@ python-source = "python" - module-name = "pydantic_core._pydantic_core" - bindings = 'pyo3' - features = ["pyo3/extension-module"] -+compatibility = "manylinux1" - - [tool.ruff] - line-length = 120 -diff --git a/src/lib.rs b/src/lib.rs -index a6780e6..b6bdee2 100644 ---- a/src/lib.rs -+++ b/src/lib.rs -@@ -1,3 +1,5 @@ -+#![feature(let_else)] -+#![feature(label_break_value)] - #![cfg_attr(has_no_coverage, feature(no_coverage))] - - extern crate core; diff --git a/omnibus/config/projects/agent.rb b/omnibus/config/projects/agent.rb index d28fe1ee4f5d12..1ecda89b607d57 100644 --- a/omnibus/config/projects/agent.rb +++ b/omnibus/config/projects/agent.rb @@ -67,6 +67,7 @@ if redhat_target? runtime_script_dependency :pre, "glibc-common" runtime_script_dependency :pre, "shadow-utils" + conflict "glibc-common < 2.17" else runtime_script_dependency :pre, "glibc" runtime_script_dependency :pre, "shadow" diff --git a/omnibus/config/software/datadog-agent-finalize.rb b/omnibus/config/software/datadog-agent-finalize.rb index ab57604c33a547..72e0e320c1284f 100644 --- a/omnibus/config/software/datadog-agent-finalize.rb +++ b/omnibus/config/software/datadog-agent-finalize.rb @@ -85,17 +85,6 @@ end if linux_target? - # Fix pip after building on extended toolchain in CentOS builder - if redhat? && ohai["platform_version"].to_i == 6 - unless arm_target? - rhel_toolchain_root = "/opt/rh/devtoolset-1.1/root" - # lets be cautious - we first search for the expected toolchain path, if its not there, bail out - command "find #{install_dir} -type f -iname '*_sysconfigdata*.py' -exec grep -inH '#{rhel_toolchain_root}' {} \\; | egrep '.*'" - # replace paths with expected target toolchain location - command "find #{install_dir} -type f -iname '*_sysconfigdata*.py' -exec sed -i 's##{rhel_toolchain_root}##g' {} \\;" - end - end - # Move system service files mkdir "/etc/init" move "#{install_dir}/scripts/datadog-agent.conf", "/etc/init" diff --git a/omnibus/config/software/datadog-agent-integrations-py3-dependencies.rb b/omnibus/config/software/datadog-agent-integrations-py3-dependencies.rb index 20ab1f74845200..d8c27e6a84cc19 100644 --- a/omnibus/config/software/datadog-agent-integrations-py3-dependencies.rb +++ b/omnibus/config/software/datadog-agent-integrations-py3-dependencies.rb @@ -31,10 +31,6 @@ dependency 'gstatus' end -if redhat_target? && !arm_target? - dependency 'pydantic-core-py3' -end - if linux_target? # We need to use cython<3.0.0 to build oracledb dependency 'oracledb-py3' diff --git a/omnibus/config/software/datadog-agent-integrations-py3.rb b/omnibus/config/software/datadog-agent-integrations-py3.rb index 3f7db695745776..c176b92fd75d3a 100644 --- a/omnibus/config/software/datadog-agent-integrations-py3.rb +++ b/omnibus/config/software/datadog-agent-integrations-py3.rb @@ -61,13 +61,6 @@ excluded_packages.push(/^pymqi==/) end -# We explicitly check for redhat builder, not target -# Our centos/redhat builder uses glibc 2.12 while pydantic -# requires glibc 2.17 -if redhat? && !arm_target? - excluded_packages.push(/^pydantic-core==/) -end - # _64_bit checks the kernel arch. On windows, the builder is 64 bit # even when doing a 32 bit build. Do a specific check for the 32 bit # build diff --git a/omnibus/config/software/libxcrypt.rb b/omnibus/config/software/libxcrypt.rb index 8d647c28f4e645..921e6c5e714780 100644 --- a/omnibus/config/software/libxcrypt.rb +++ b/omnibus/config/software/libxcrypt.rb @@ -23,14 +23,6 @@ env = with_standard_compiler_flags - if redhat? && !arm_target? && ohai['platform_version'].to_i == 6 - # On the CentOS 6 builder, use gcc 4.9.2 in the devtoolset-3 env, - # and ignore sign conversion warnings. - env["CC"] = "/opt/rh/devtoolset-3/root/usr/bin/gcc" - env["CPP"] = "/opt/rh/devtoolset-3/root/usr/bin/cpp" - env["CFLAGS"] += " -Wno-sign-conversion" - end - # This builds libcrypt.so.2 # To build libcrypt.so.1, the --disable-obsolete-api option # needs to be removed. diff --git a/omnibus/config/software/oracledb-py3.rb b/omnibus/config/software/oracledb-py3.rb index 26bf6d0adc3439..b4bdd2fee74798 100644 --- a/omnibus/config/software/oracledb-py3.rb +++ b/omnibus/config/software/oracledb-py3.rb @@ -16,5 +16,5 @@ license_file "./LICENSE.txt" command "sed -i 's/cython/cython<3.0.0/g' pyproject.toml" - command "#{install_dir}/embedded/bin/pip3 install 'cryptography<42.0.0' ." + command "#{install_dir}/embedded/bin/pip3 install ." end diff --git a/omnibus/config/software/pydantic-core-py3.rb b/omnibus/config/software/pydantic-core-py3.rb deleted file mode 100644 index f83592146678df..00000000000000 --- a/omnibus/config/software/pydantic-core-py3.rb +++ /dev/null @@ -1,29 +0,0 @@ -# We need to build the pydantic-core wheel separately because this is the only way to build -# it on CentOS 6. -# manylinux2014 wheels (min. requirement: glibc 2.17) do not support CentOS 6 (glibc 2.12). - -name "pydantic-core-py3" -default_version "2.1.2" - -dependency "pip3" - -source :url => "https://github.com/pydantic/pydantic-core/archive/refs/tags/v#{version}.tar.gz", - :sha256 => "63c12928b54c8eab426bcbd1d9af005a945ebf9010caa7a9f087ad69cf29cb07", - :extract => :seven_zip - -relative_path "pydantic-core-#{version}" - -build do - license "MIT" - license_file "./LICENSE" - - patch :source => "pydantic-core-build-for-manylinux1.patch" - - if windows_target? - pip = "#{windows_safe_path(python_3_embedded)}\\Scripts\\pip.exe" - else - pip = "#{install_dir}/embedded/bin/pip3" - end - - command "#{pip} install --no-deps ." -end diff --git a/releasenotes/notes/drop-centos6-f7afd46b4ea4cca8.yaml b/releasenotes/notes/drop-centos6-f7afd46b4ea4cca8.yaml new file mode 100644 index 00000000000000..3bb46fd227efb8 --- /dev/null +++ b/releasenotes/notes/drop-centos6-f7afd46b4ea4cca8.yaml @@ -0,0 +1,11 @@ +# Each section from every release note are combined when the +# CHANGELOG.rst is rendered. So the text needs to be worded so that +# it does not depend on any information only available in another +# section. This may mean repeating some details, but each section +# must be readable independently of the other. +# +# Each section note must be formatted as reStructuredText. +--- +deprecations: + - | + This release drops support for Red Hat Enterprise Linux 6 and its derivatives. diff --git a/test/kitchen/platforms.json b/test/kitchen/platforms.json index fad6c0192a6c33..18f0d2a5dfb8c4 100644 --- a/test/kitchen/platforms.json +++ b/test/kitchen/platforms.json @@ -2,7 +2,6 @@ "centos": { "azure": { "x86_64": { - "centos-610": "urn,OpenLogic:CentOS:6.10:6.10.2020042900", "centos-76": "urn,OpenLogic:CentOS:7.6:7.6.201909120", "centos-77": "urn,OpenLogic:CentOS:7.7:7.7.201912090", "rhel-81": "urn,RedHat:RHEL:8.1:8.1.2021040910", @@ -173,4 +172,4 @@ } } } -} +} \ No newline at end of file diff --git a/test/new-e2e/tests/agent-platform/platforms/platforms.json b/test/new-e2e/tests/agent-platform/platforms/platforms.json index dbae5841af55aa..541d4cbabf87f8 100644 --- a/test/new-e2e/tests/agent-platform/platforms/platforms.json +++ b/test/new-e2e/tests/agent-platform/platforms/platforms.json @@ -1,7 +1,7 @@ { "debian": { "x86_64": { - "debian-9": "ami-0182559468c1975fe", + "debian-9": "ami-0182559468c1975fe", "debian-10": "ami-041540a5c191757a0", "debian-11": "ami-0607e701db389efe7", "debian-12": "ami-07edaec601cf2b6d3" @@ -13,7 +13,7 @@ } }, "ubuntu": { - "x86_64":{ + "x86_64": { "ubuntu-14-04": "ami-013d633d3b6cdb22c", "ubuntu-16-04": "ami-089043ae24872fe78", "ubuntu-18-04": "ami-015715c1584e7243c", @@ -48,7 +48,6 @@ }, "centos": { "x86_64": { - "centos-610": "ami-0506f01ccb6dddeda", "centos-79": "ami-0db0376aef6830be3", "rhel-86": "ami-031eff1ae75bb87e4", "rocky-92": "ami-08f362c39d03a4eb5", @@ -68,4 +67,4 @@ "sles-15": "ami-0d446ba26bbe19573" } } -} +} \ No newline at end of file From a451225c8aa273da52cd0674b5eda7e4b72ddc20 Mon Sep 17 00:00:00 2001 From: Paul Cacheux Date: Thu, 7 Mar 2024 12:10:21 +0100 Subject: [PATCH 060/155] [CWS] ensure event is assigned to correct event ID in self tests (#23510) --- pkg/security/probe/selftests/tester_linux.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkg/security/probe/selftests/tester_linux.go b/pkg/security/probe/selftests/tester_linux.go index 1276646f686149..91aa6632e9d679 100644 --- a/pkg/security/probe/selftests/tester_linux.go +++ b/pkg/security/probe/selftests/tester_linux.go @@ -163,11 +163,11 @@ func (t *SelfTester) WaitForResult(cb func(success []eval.RuleID, fails []eval.R for _, selfTest := range t.selfTests { if !selfTest.IsSuccess() { selfTest.HandleEvent(event) - } - if selfTest.IsSuccess() { - id := selfTest.GetRuleDefinition().ID - events[id] = event.Event + if selfTest.IsSuccess() { + id := selfTest.GetRuleDefinition().ID + events[id] = event.Event + } } } t.Unlock() From 039d28294c5cd6f06d7e5694cb542c8cecac66aa Mon Sep 17 00:00:00 2001 From: maxime mouial Date: Thu, 7 Mar 2024 13:23:20 +0100 Subject: [PATCH 061/155] Fix connection leak when using the api/util from the metadata comp (#23474) Co-authored-by: Kaderinho --- cmd/agent/common/common.go | 2 +- .../subcommands/config/command.go | 2 +- .../subcommands/config/config.go | 3 ++- .../subcommands/config/config.go | 2 +- .../subcommands/config/command.go | 3 ++- pkg/cli/subcommands/dcaflare/command.go | 2 +- pkg/config/fetcher/from_processes.go | 8 ++++---- pkg/config/settings/http/client.go | 13 +++++++------ pkg/config/settings/http/options.go | 19 +++++++++++++++++++ 9 files changed, 38 insertions(+), 16 deletions(-) create mode 100644 pkg/config/settings/http/options.go diff --git a/cmd/agent/common/common.go b/cmd/agent/common/common.go index b3afa61e1d5c89..4376a6fd12b2c4 100644 --- a/cmd/agent/common/common.go +++ b/cmd/agent/common/common.go @@ -61,5 +61,5 @@ func NewSettingsClient() (settings.Client, error) { return nil, err } hc := util.GetClient(false) - return settingshttp.NewClient(hc, fmt.Sprintf("https://%v:%v/agent/config", ipcAddress, config.Datadog.GetInt("cmd_port")), "agent"), nil + return settingshttp.NewClient(hc, fmt.Sprintf("https://%v:%v/agent/config", ipcAddress, config.Datadog.GetInt("cmd_port")), "agent", settingshttp.NewHTTPClientOptions(util.LeaveConnectionOpen)), nil } diff --git a/cmd/cluster-agent/subcommands/config/command.go b/cmd/cluster-agent/subcommands/config/command.go index 50fc47099124a5..42503dfcbf0a0f 100644 --- a/cmd/cluster-agent/subcommands/config/command.go +++ b/cmd/cluster-agent/subcommands/config/command.go @@ -43,5 +43,5 @@ func newSettingsClient() (settings.Client, error) { pkgconfig.Datadog.GetInt("cluster_agent.cmd_port"), ) - return settingshttp.NewClient(c, apiConfigURL, "datadog-cluster-agent"), nil + return settingshttp.NewClient(c, apiConfigURL, "datadog-cluster-agent", settingshttp.NewHTTPClientOptions(util.LeaveConnectionOpen)), nil } diff --git a/cmd/process-agent/subcommands/config/config.go b/cmd/process-agent/subcommands/config/config.go index 4900465ba4c395..872c7b3f2001dc 100644 --- a/cmd/process-agent/subcommands/config/config.go +++ b/cmd/process-agent/subcommands/config/config.go @@ -16,6 +16,7 @@ import ( "github.com/DataDog/datadog-agent/comp/core" "github.com/DataDog/datadog-agent/comp/core/config" "github.com/DataDog/datadog-agent/comp/process" + "github.com/DataDog/datadog-agent/pkg/api/util" apiutil "github.com/DataDog/datadog-agent/pkg/api/util" ddconfig "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/config/fetcher" @@ -191,6 +192,6 @@ func getClient(cfg ddconfig.Reader) (settings.Client, error) { if err != nil { return nil, err } - settingsClient := settingshttp.NewClient(httpClient, ipcAddressWithPort, "process-agent") + settingsClient := settingshttp.NewClient(httpClient, ipcAddressWithPort, "process-agent", settingshttp.NewHTTPClientOptions(util.LeaveConnectionOpen)) return settingsClient, nil } diff --git a/cmd/security-agent/subcommands/config/config.go b/cmd/security-agent/subcommands/config/config.go index b4a08f8dc46c24..1b98fa32f7d252 100644 --- a/cmd/security-agent/subcommands/config/config.go +++ b/cmd/security-agent/subcommands/config/config.go @@ -137,7 +137,7 @@ func getSettingsClient(_ *cobra.Command, _ []string) (settings.Client, error) { c := util.GetClient(false) apiConfigURL := fmt.Sprintf("https://localhost:%v/agent/config", pkgconfig.Datadog.GetInt("security_agent.cmd_port")) - return settingshttp.NewClient(c, apiConfigURL, "security-agent"), nil + return settingshttp.NewClient(c, apiConfigURL, "security-agent", settingshttp.NewHTTPClientOptions(util.LeaveConnectionOpen)), nil } func showRuntimeConfiguration(_ log.Component, cfg config.Component, _ secrets.Component, _ *cliParams) error { diff --git a/cmd/system-probe/subcommands/config/command.go b/cmd/system-probe/subcommands/config/command.go index e68859c7c62d71..2bc71dde5373a9 100644 --- a/cmd/system-probe/subcommands/config/command.go +++ b/cmd/system-probe/subcommands/config/command.go @@ -19,6 +19,7 @@ import ( "github.com/DataDog/datadog-agent/comp/core/log/logimpl" "github.com/DataDog/datadog-agent/comp/core/sysprobeconfig" "github.com/DataDog/datadog-agent/comp/core/sysprobeconfig/sysprobeconfigimpl" + "github.com/DataDog/datadog-agent/pkg/api/util" "github.com/DataDog/datadog-agent/pkg/config/fetcher" "github.com/DataDog/datadog-agent/pkg/config/settings" settingshttp "github.com/DataDog/datadog-agent/pkg/config/settings/http" @@ -97,7 +98,7 @@ func Commands(globalParams *command.GlobalParams) []*cobra.Command { func getClient(sysprobeconfig sysprobeconfig.Component) (settings.Client, error) { cfg := sysprobeconfig.SysProbeObject() hc := client.Get(cfg.SocketAddress) - return settingshttp.NewClient(hc, "http://localhost/config", "system-probe"), nil + return settingshttp.NewClient(hc, "http://localhost/config", "system-probe", settingshttp.NewHTTPClientOptions(util.LeaveConnectionOpen)), nil } func showRuntimeConfiguration(sysprobeconfig sysprobeconfig.Component, _ *cliParams) error { diff --git a/pkg/cli/subcommands/dcaflare/command.go b/pkg/cli/subcommands/dcaflare/command.go index ece40b27b07a0f..7ea83fe2152e37 100644 --- a/pkg/cli/subcommands/dcaflare/command.go +++ b/pkg/cli/subcommands/dcaflare/command.go @@ -248,5 +248,5 @@ func newSettingsClient() (settings.Client, error) { pkgconfig.Datadog.GetInt("cluster_agent.cmd_port"), ) - return settingshttp.NewClient(c, apiConfigURL, "datadog-cluster-agent"), nil + return settingshttp.NewClient(c, apiConfigURL, "datadog-cluster-agent", settingshttp.NewHTTPClientOptions(util.LeaveConnectionOpen)), nil } diff --git a/pkg/config/fetcher/from_processes.go b/pkg/config/fetcher/from_processes.go index 703b1a92f35c77..5c3cebefc35400 100644 --- a/pkg/config/fetcher/from_processes.go +++ b/pkg/config/fetcher/from_processes.go @@ -26,7 +26,7 @@ func SecurityAgentConfig(config config.Reader) (string, error) { c := util.GetClient(false) apiConfigURL := fmt.Sprintf("https://localhost:%v/agent/config", config.GetInt("security_agent.cmd_port")) - client := settingshttp.NewClient(c, apiConfigURL, "security-agent") + client := settingshttp.NewClient(c, apiConfigURL, "security-agent", settingshttp.NewHTTPClientOptions(util.CloseConnection)) return client.FullConfig() } @@ -46,7 +46,7 @@ func TraceAgentConfig(config config.Reader) (string, error) { ipcAddressWithPort := fmt.Sprintf("http://127.0.0.1:%d/config", port) - client := settingshttp.NewClient(c, ipcAddressWithPort, "trace-agent") + client := settingshttp.NewClient(c, ipcAddressWithPort, "trace-agent", settingshttp.NewHTTPClientOptions(util.CloseConnection)) return client.FullConfig() } @@ -74,7 +74,7 @@ func ProcessAgentConfig(config config.Reader, getEntireConfig bool) (string, err ipcAddressWithPort += "/all" } - client := settingshttp.NewClient(c, ipcAddressWithPort, "process-agent") + client := settingshttp.NewClient(c, ipcAddressWithPort, "process-agent", settingshttp.NewHTTPClientOptions(util.CloseConnection)) return client.FullConfig() } @@ -83,6 +83,6 @@ func ProcessAgentConfig(config config.Reader, getEntireConfig bool) (string, err func SystemProbeConfig(config config.Reader) (string, error) { hc := client.Get(config.GetString("system_probe_config.sysprobe_socket")) - c := settingshttp.NewClient(hc, "http://localhost/config", "system-probe") + c := settingshttp.NewClient(hc, "http://localhost/config", "system-probe", settingshttp.NewHTTPClientOptions(util.CloseConnection)) return c.FullConfig() } diff --git a/pkg/config/settings/http/client.go b/pkg/config/settings/http/client.go index 2201dda7d19276..2c115c7d165466 100644 --- a/pkg/config/settings/http/client.go +++ b/pkg/config/settings/http/client.go @@ -21,15 +21,16 @@ type runtimeSettingsHTTPClient struct { c *http.Client baseURL string targetProcessName string + clientOptions ClientOptions } // NewClient returns a client setup to interact with the standard runtime settings HTTP API -func NewClient(c *http.Client, baseURL string, targetProcessName string) settings.Client { - return &runtimeSettingsHTTPClient{c, baseURL, targetProcessName} +func NewClient(c *http.Client, baseURL string, targetProcessName string, clientOptions ClientOptions) settings.Client { + return &runtimeSettingsHTTPClient{c, baseURL, targetProcessName, clientOptions} } func (rc *runtimeSettingsHTTPClient) FullConfig() (string, error) { - r, err := util.DoGet(rc.c, rc.baseURL, util.LeaveConnectionOpen) + r, err := util.DoGet(rc.c, rc.baseURL, rc.clientOptions.CloseConnection) if err != nil { var errMap = make(map[string]string) _ = json.Unmarshal(r, &errMap) @@ -45,7 +46,7 @@ func (rc *runtimeSettingsHTTPClient) FullConfig() (string, error) { } func (rc *runtimeSettingsHTTPClient) List() (map[string]settings.RuntimeSettingResponse, error) { - r, err := util.DoGet(rc.c, fmt.Sprintf("%s/%s", rc.baseURL, "list-runtime"), util.LeaveConnectionOpen) + r, err := util.DoGet(rc.c, fmt.Sprintf("%s/%s", rc.baseURL, "list-runtime"), rc.clientOptions.CloseConnection) if err != nil { var errMap = make(map[string]string) _ = json.Unmarshal(r, &errMap) @@ -65,7 +66,7 @@ func (rc *runtimeSettingsHTTPClient) List() (map[string]settings.RuntimeSettingR } func (rc *runtimeSettingsHTTPClient) Get(key string) (interface{}, error) { - r, err := util.DoGet(rc.c, fmt.Sprintf("%s/%s", rc.baseURL, key), util.LeaveConnectionOpen) + r, err := util.DoGet(rc.c, fmt.Sprintf("%s/%s", rc.baseURL, key), rc.clientOptions.CloseConnection) if err != nil { var errMap = make(map[string]string) _ = json.Unmarshal(r, &errMap) @@ -88,7 +89,7 @@ func (rc *runtimeSettingsHTTPClient) Get(key string) (interface{}, error) { } func (rc *runtimeSettingsHTTPClient) GetWithSources(key string) (map[string]interface{}, error) { - r, err := util.DoGet(rc.c, fmt.Sprintf("%s/%s?sources=true", rc.baseURL, key), util.LeaveConnectionOpen) + r, err := util.DoGet(rc.c, fmt.Sprintf("%s/%s?sources=true", rc.baseURL, key), rc.clientOptions.CloseConnection) if err != nil { var errMap = make(map[string]string) _ = json.Unmarshal(r, &errMap) diff --git a/pkg/config/settings/http/options.go b/pkg/config/settings/http/options.go new file mode 100644 index 00000000000000..632a3763d095dd --- /dev/null +++ b/pkg/config/settings/http/options.go @@ -0,0 +1,19 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +// Package http implements helpers for the runtime settings HTTP API +package http + +import "github.com/DataDog/datadog-agent/pkg/api/util" + +// ClientOptions holds options for the HTTP client +type ClientOptions struct { + CloseConnection util.ShouldCloseConnection +} + +// NewHTTPClientOptions returns a new struct containing the HTTP client options +func NewHTTPClientOptions(closeConnection util.ShouldCloseConnection) ClientOptions { + return ClientOptions{closeConnection} +} From 6863edec991e020ca8ba12cadfe77b50fb01a009 Mon Sep 17 00:00:00 2001 From: Sylvain Afchain Date: Thu, 7 Mar 2024 13:50:52 +0100 Subject: [PATCH 062/155] [CWS] add a file type in ebpfless (#23511) --- pkg/security/probe/probe_ebpfless.go | 5 +- pkg/security/proto/ebpfless/msg.go | 35 ++++--- pkg/security/ptracer/fim_handlers.go | 112 +++++++++++++---------- pkg/security/ptracer/process_handlers.go | 6 +- pkg/security/ptracer/utils.go | 12 +-- 5 files changed, 94 insertions(+), 76 deletions(-) diff --git a/pkg/security/probe/probe_ebpfless.go b/pkg/security/probe/probe_ebpfless.go index 1a23b4ca977f52..e72aa2cd71d724 100644 --- a/pkg/security/probe/probe_ebpfless.go +++ b/pkg/security/probe/probe_ebpfless.go @@ -98,7 +98,7 @@ func (p *EBPFLessProbe) handleClientMsg(cl *client, msg *ebpfless.Message) { } } -func copyFileAttributes(src *ebpfless.OpenSyscallMsg, dst *model.FileEvent) { +func copyFileAttributes(src *ebpfless.FileSyscallMsg, dst *model.FileEvent) { if strings.HasPrefix(src.Filename, "memfd:") { dst.PathnameStr = "" dst.BasenameStr = src.Filename @@ -109,7 +109,6 @@ func copyFileAttributes(src *ebpfless.OpenSyscallMsg, dst *model.FileEvent) { dst.CTime = src.CTime dst.MTime = src.MTime dst.Mode = uint16(src.Mode) - dst.Flags = int32(src.Flags) if src.Credentials != nil { dst.UID = src.Credentials.UID dst.User = src.Credentials.User @@ -149,7 +148,7 @@ func (p *EBPFLessProbe) handleSyscallMsg(cl *client, syscallMsg *ebpfless.Syscal case ebpfless.SyscallTypeOpen: event.Type = uint32(model.FileOpenEventType) event.Open.Retval = syscallMsg.Retval - copyFileAttributes(syscallMsg.Open, &event.Open.File) + copyFileAttributes(&syscallMsg.Open.FileSyscallMsg, &event.Open.File) event.Open.Mode = syscallMsg.Open.Mode event.Open.Flags = syscallMsg.Open.Flags diff --git a/pkg/security/proto/ebpfless/msg.go b/pkg/security/proto/ebpfless/msg.go index ad48b4bc3dee49..77d516ddc9feb4 100644 --- a/pkg/security/proto/ebpfless/msg.go +++ b/pkg/security/proto/ebpfless/msg.go @@ -99,7 +99,7 @@ type Credentials struct { // ExecSyscallMsg defines an exec message type ExecSyscallMsg struct { - File OpenSyscallMsg + File FileSyscallMsg Args []string ArgsTruncated bool Envs []string @@ -119,16 +119,21 @@ type ExitSyscallMsg struct { Cause model.ExitCause } -// OpenSyscallMsg defines an open message -type OpenSyscallMsg struct { +// FileSyscallMsg defines a file message +type FileSyscallMsg struct { Filename string CTime uint64 MTime uint64 - Flags uint32 Mode uint32 Credentials *Credentials } +// OpenSyscallMsg defines an open message +type OpenSyscallMsg struct { + FileSyscallMsg + Flags uint32 +} + // DupSyscallFakeMsg defines a dup message type DupSyscallFakeMsg struct { OldFd int32 @@ -175,29 +180,29 @@ type CapsetSyscallMsg struct { // UnlinkSyscallMsg defines a unlink message type UnlinkSyscallMsg struct { - File OpenSyscallMsg + File FileSyscallMsg } // RmdirSyscallMsg defines a rmdir message type RmdirSyscallMsg struct { - File OpenSyscallMsg + File FileSyscallMsg } // RenameSyscallMsg defines a rename/renameat/renameat2 message type RenameSyscallMsg struct { - OldFile OpenSyscallMsg - NewFile OpenSyscallMsg + OldFile FileSyscallMsg + NewFile FileSyscallMsg } // MkdirSyscallMsg defines a mkdir/mkdirat message type MkdirSyscallMsg struct { - Dir OpenSyscallMsg + Dir FileSyscallMsg Mode uint32 } // UtimesSyscallMsg defines a utime/utimes/utimensat/futimesat message type UtimesSyscallMsg struct { - File OpenSyscallMsg + File FileSyscallMsg ATime uint64 // in nanoseconds MTime uint64 // in nanoseconds } @@ -215,19 +220,19 @@ const ( // LinkSyscallMsg defines a link/linkat/symlink/symlinkat message type LinkSyscallMsg struct { Type LinkType - Target OpenSyscallMsg - Link OpenSyscallMsg + Target FileSyscallMsg + Link FileSyscallMsg } // ChmodSyscallMsg defines a chmod/fchmod/fchmodat/fchmodat2 message type ChmodSyscallMsg struct { - File OpenSyscallMsg + File FileSyscallMsg Mode uint32 } // ChownSyscallMsg defines a chown/fchown/lchown/fchownat/fchownat2 message type ChownSyscallMsg struct { - File OpenSyscallMsg + File FileSyscallMsg UID int32 User string GID int32 @@ -236,7 +241,7 @@ type ChownSyscallMsg struct { // LoadModuleSyscallMsg defines a init_module/finit_module message type LoadModuleSyscallMsg struct { - File OpenSyscallMsg + File FileSyscallMsg LoadedFromMemory bool Name string Args string diff --git a/pkg/security/ptracer/fim_handlers.go b/pkg/security/ptracer/fim_handlers.go index d0c15b83f8924d..5813624da3eff6 100644 --- a/pkg/security/ptracer/fim_handlers.go +++ b/pkg/security/ptracer/fim_handlers.go @@ -236,12 +236,14 @@ func handleOpenAt(tracer *Tracer, process *Process, msg *ebpfless.SyscallMsg, re msg.Type = ebpfless.SyscallTypeOpen msg.Open = &ebpfless.OpenSyscallMsg{ - Filename: filename, - Flags: uint32(tracer.ReadArgUint64(regs, 2)), - Mode: uint32(tracer.ReadArgUint64(regs, 3)), + FileSyscallMsg: ebpfless.FileSyscallMsg{ + Filename: filename, + Mode: uint32(tracer.ReadArgUint64(regs, 3)), + }, + Flags: uint32(tracer.ReadArgUint64(regs, 2)), } - return fillFileMetadata(tracer, filename, msg.Open, disableStats) + return fillFileMetadata(tracer, filename, &msg.Open.FileSyscallMsg, disableStats) } func handleOpenAt2(tracer *Tracer, process *Process, msg *ebpfless.SyscallMsg, regs syscall.PtraceRegs, disableStats bool) error { @@ -264,12 +266,14 @@ func handleOpenAt2(tracer *Tracer, process *Process, msg *ebpfless.SyscallMsg, r msg.Type = ebpfless.SyscallTypeOpen msg.Open = &ebpfless.OpenSyscallMsg{ - Filename: filename, - Flags: uint32(binary.NativeEndian.Uint64(howData[:8])), - Mode: uint32(binary.NativeEndian.Uint64(howData[8:16])), + FileSyscallMsg: ebpfless.FileSyscallMsg{ + Filename: filename, + Mode: uint32(binary.NativeEndian.Uint64(howData[8:16])), + }, + Flags: uint32(binary.NativeEndian.Uint64(howData[:8])), } - return fillFileMetadata(tracer, filename, msg.Open, disableStats) + return fillFileMetadata(tracer, filename, &msg.Open.FileSyscallMsg, disableStats) } func handleOpen(tracer *Tracer, process *Process, msg *ebpfless.SyscallMsg, regs syscall.PtraceRegs, disableStats bool) error { @@ -285,12 +289,14 @@ func handleOpen(tracer *Tracer, process *Process, msg *ebpfless.SyscallMsg, regs msg.Type = ebpfless.SyscallTypeOpen msg.Open = &ebpfless.OpenSyscallMsg{ - Filename: filename, - Flags: uint32(tracer.ReadArgUint64(regs, 1)), - Mode: uint32(tracer.ReadArgUint64(regs, 2)), + FileSyscallMsg: ebpfless.FileSyscallMsg{ + Filename: filename, + Mode: uint32(tracer.ReadArgUint64(regs, 2)), + }, + Flags: uint32(tracer.ReadArgUint64(regs, 1)), } - return fillFileMetadata(tracer, filename, msg.Open, disableStats) + return fillFileMetadata(tracer, filename, &msg.Open.FileSyscallMsg, disableStats) } func handleCreat(tracer *Tracer, process *Process, msg *ebpfless.SyscallMsg, regs syscall.PtraceRegs, disableStats bool) error { @@ -306,12 +312,14 @@ func handleCreat(tracer *Tracer, process *Process, msg *ebpfless.SyscallMsg, reg msg.Type = ebpfless.SyscallTypeOpen msg.Open = &ebpfless.OpenSyscallMsg{ - Filename: filename, - Flags: unix.O_CREAT | unix.O_WRONLY | unix.O_TRUNC, - Mode: uint32(tracer.ReadArgUint64(regs, 1)), + FileSyscallMsg: ebpfless.FileSyscallMsg{ + Filename: filename, + Mode: uint32(tracer.ReadArgUint64(regs, 1)), + }, + Flags: unix.O_CREAT | unix.O_WRONLY | unix.O_TRUNC, } - return fillFileMetadata(tracer, filename, msg.Open, disableStats) + return fillFileMetadata(tracer, filename, &msg.Open.FileSyscallMsg, disableStats) } func handleMemfdCreate(tracer *Tracer, process *Process, msg *ebpfless.SyscallMsg, regs syscall.PtraceRegs, _ bool) error { @@ -323,8 +331,10 @@ func handleMemfdCreate(tracer *Tracer, process *Process, msg *ebpfless.SyscallMs msg.Type = ebpfless.SyscallTypeOpen msg.Open = &ebpfless.OpenSyscallMsg{ - Filename: filename, - Flags: uint32(tracer.ReadArgUint64(regs, 1)), + FileSyscallMsg: ebpfless.FileSyscallMsg{ + Filename: filename, + }, + Flags: uint32(tracer.ReadArgUint64(regs, 1)), } return nil } @@ -344,7 +354,9 @@ func handleNameToHandleAt(tracer *Tracer, process *Process, msg *ebpfless.Syscal msg.Type = ebpfless.SyscallTypeOpen msg.Open = &ebpfless.OpenSyscallMsg{ - Filename: filename, + FileSyscallMsg: ebpfless.FileSyscallMsg{ + Filename: filename, + }, } return nil } @@ -365,10 +377,12 @@ func handleOpenByHandleAt(tracer *Tracer, process *Process, msg *ebpfless.Syscal } msg.Type = ebpfless.SyscallTypeOpen msg.Open = &ebpfless.OpenSyscallMsg{ - Filename: val.pathName, - Flags: uint32(tracer.ReadArgUint64(regs, 2)), + FileSyscallMsg: ebpfless.FileSyscallMsg{ + Filename: val.pathName, + }, + Flags: uint32(tracer.ReadArgUint64(regs, 2)), } - return fillFileMetadata(tracer, val.pathName, msg.Open, disableStats) + return fillFileMetadata(tracer, val.pathName, &msg.Open.FileSyscallMsg, disableStats) } func handleUnlinkat(tracer *Tracer, process *Process, msg *ebpfless.SyscallMsg, regs syscall.PtraceRegs, disableStats bool) error { @@ -389,7 +403,7 @@ func handleUnlinkat(tracer *Tracer, process *Process, msg *ebpfless.SyscallMsg, if flags == unix.AT_REMOVEDIR { msg.Type = ebpfless.SyscallTypeRmdir msg.Rmdir = &ebpfless.RmdirSyscallMsg{ - File: ebpfless.OpenSyscallMsg{ + File: ebpfless.FileSyscallMsg{ Filename: filename, }, } @@ -397,7 +411,7 @@ func handleUnlinkat(tracer *Tracer, process *Process, msg *ebpfless.SyscallMsg, } else { msg.Type = ebpfless.SyscallTypeUnlink msg.Unlink = &ebpfless.UnlinkSyscallMsg{ - File: ebpfless.OpenSyscallMsg{ + File: ebpfless.FileSyscallMsg{ Filename: filename, }, } @@ -419,7 +433,7 @@ func handleUnlink(tracer *Tracer, process *Process, msg *ebpfless.SyscallMsg, re msg.Type = ebpfless.SyscallTypeUnlink msg.Unlink = &ebpfless.UnlinkSyscallMsg{ - File: ebpfless.OpenSyscallMsg{ + File: ebpfless.FileSyscallMsg{ Filename: filename, }, } @@ -439,7 +453,7 @@ func handleRmdir(tracer *Tracer, process *Process, msg *ebpfless.SyscallMsg, reg msg.Type = ebpfless.SyscallTypeRmdir msg.Rmdir = &ebpfless.RmdirSyscallMsg{ - File: ebpfless.OpenSyscallMsg{ + File: ebpfless.FileSyscallMsg{ Filename: filename, }, } @@ -469,10 +483,10 @@ func handleRename(tracer *Tracer, process *Process, msg *ebpfless.SyscallMsg, re msg.Type = ebpfless.SyscallTypeRename msg.Rename = &ebpfless.RenameSyscallMsg{ - OldFile: ebpfless.OpenSyscallMsg{ + OldFile: ebpfless.FileSyscallMsg{ Filename: oldFilename, }, - NewFile: ebpfless.OpenSyscallMsg{ + NewFile: ebpfless.FileSyscallMsg{ Filename: newFilename, }, } @@ -506,10 +520,10 @@ func handleRenameAt(tracer *Tracer, process *Process, msg *ebpfless.SyscallMsg, msg.Type = ebpfless.SyscallTypeRename msg.Rename = &ebpfless.RenameSyscallMsg{ - OldFile: ebpfless.OpenSyscallMsg{ + OldFile: ebpfless.FileSyscallMsg{ Filename: oldFilename, }, - NewFile: ebpfless.OpenSyscallMsg{ + NewFile: ebpfless.FileSyscallMsg{ Filename: newFilename, }, } @@ -553,7 +567,7 @@ func handleMkdirAt(tracer *Tracer, process *Process, msg *ebpfless.SyscallMsg, r msg.Type = ebpfless.SyscallTypeMkdir msg.Mkdir = &ebpfless.MkdirSyscallMsg{ - Dir: ebpfless.OpenSyscallMsg{ + Dir: ebpfless.FileSyscallMsg{ Filename: filename, }, Mode: uint32(tracer.ReadArgUint64(regs, 2)), @@ -574,7 +588,7 @@ func handleMkdir(tracer *Tracer, process *Process, msg *ebpfless.SyscallMsg, reg msg.Type = ebpfless.SyscallTypeMkdir msg.Mkdir = &ebpfless.MkdirSyscallMsg{ - Dir: ebpfless.OpenSyscallMsg{ + Dir: ebpfless.FileSyscallMsg{ Filename: filename, }, Mode: uint32(tracer.ReadArgUint64(regs, 1)), @@ -610,7 +624,7 @@ func handleUtime(tracer *Tracer, process *Process, msg *ebpfless.SyscallMsg, reg msg.Type = ebpfless.SyscallTypeUtimes msg.Utimes = &ebpfless.UtimesSyscallMsg{ - File: ebpfless.OpenSyscallMsg{ + File: ebpfless.FileSyscallMsg{ Filename: filename, }, ATime: atime, @@ -649,7 +663,7 @@ func handleUtimes(tracer *Tracer, process *Process, msg *ebpfless.SyscallMsg, re msg.Type = ebpfless.SyscallTypeUtimes msg.Utimes = &ebpfless.UtimesSyscallMsg{ - File: ebpfless.OpenSyscallMsg{ + File: ebpfless.FileSyscallMsg{ Filename: filename, }, ATime: atime, @@ -721,7 +735,7 @@ func handleUtimensAt(tracer *Tracer, process *Process, msg *ebpfless.SyscallMsg, msg.Type = ebpfless.SyscallTypeUtimes msg.Utimes = &ebpfless.UtimesSyscallMsg{ - File: ebpfless.OpenSyscallMsg{ + File: ebpfless.FileSyscallMsg{ Filename: filename, }, ATime: atime, @@ -754,10 +768,10 @@ func handleLink(tracer *Tracer, process *Process, msg *ebpfless.SyscallMsg, regs msg.Type = ebpfless.SyscallTypeLink msg.Link = &ebpfless.LinkSyscallMsg{ Type: ebpfless.LinkTypeHardlink, - Target: ebpfless.OpenSyscallMsg{ + Target: ebpfless.FileSyscallMsg{ Filename: targetFilename, }, - Link: ebpfless.OpenSyscallMsg{ + Link: ebpfless.FileSyscallMsg{ Filename: linkFilename, }, } @@ -792,10 +806,10 @@ func handleLinkAt(tracer *Tracer, process *Process, msg *ebpfless.SyscallMsg, re msg.Type = ebpfless.SyscallTypeLink msg.Link = &ebpfless.LinkSyscallMsg{ Type: ebpfless.LinkTypeHardlink, - Target: ebpfless.OpenSyscallMsg{ + Target: ebpfless.FileSyscallMsg{ Filename: targetFilename, }, - Link: ebpfless.OpenSyscallMsg{ + Link: ebpfless.FileSyscallMsg{ Filename: linkFilename, }, } @@ -826,10 +840,10 @@ func handleSymlink(tracer *Tracer, process *Process, msg *ebpfless.SyscallMsg, r msg.Type = ebpfless.SyscallTypeLink msg.Link = &ebpfless.LinkSyscallMsg{ Type: ebpfless.LinkTypeSymbolic, - Target: ebpfless.OpenSyscallMsg{ + Target: ebpfless.FileSyscallMsg{ Filename: targetFilename, }, - Link: ebpfless.OpenSyscallMsg{ + Link: ebpfless.FileSyscallMsg{ Filename: linkFilename, }, } @@ -864,10 +878,10 @@ func handleSymlinkAt(tracer *Tracer, process *Process, msg *ebpfless.SyscallMsg, msg.Type = ebpfless.SyscallTypeLink msg.Link = &ebpfless.LinkSyscallMsg{ Type: ebpfless.LinkTypeSymbolic, - Target: ebpfless.OpenSyscallMsg{ + Target: ebpfless.FileSyscallMsg{ Filename: targetFilename, }, - Link: ebpfless.OpenSyscallMsg{ + Link: ebpfless.FileSyscallMsg{ Filename: linkFilename, }, } @@ -885,7 +899,7 @@ func handleChmod(tracer *Tracer, process *Process, msg *ebpfless.SyscallMsg, reg } msg.Type = ebpfless.SyscallTypeChmod msg.Chmod = &ebpfless.ChmodSyscallMsg{ - File: ebpfless.OpenSyscallMsg{ + File: ebpfless.FileSyscallMsg{ Filename: filename, }, Mode: uint32(tracer.ReadArgUint64(regs, 1)), @@ -903,7 +917,7 @@ func handleFchmod(tracer *Tracer, process *Process, msg *ebpfless.SyscallMsg, re msg.Type = ebpfless.SyscallTypeChmod msg.Chmod = &ebpfless.ChmodSyscallMsg{ - File: ebpfless.OpenSyscallMsg{ + File: ebpfless.FileSyscallMsg{ Filename: filename, }, Mode: uint32(tracer.ReadArgUint64(regs, 1)), @@ -926,7 +940,7 @@ func handleFchmodAt(tracer *Tracer, process *Process, msg *ebpfless.SyscallMsg, msg.Type = ebpfless.SyscallTypeChmod msg.Chmod = &ebpfless.ChmodSyscallMsg{ - File: ebpfless.OpenSyscallMsg{ + File: ebpfless.FileSyscallMsg{ Filename: filename, }, Mode: uint32(tracer.ReadArgUint64(regs, 2)), @@ -947,7 +961,7 @@ func handleChown(tracer *Tracer, process *Process, msg *ebpfless.SyscallMsg, reg msg.Type = ebpfless.SyscallTypeChown msg.Chown = &ebpfless.ChownSyscallMsg{ - File: ebpfless.OpenSyscallMsg{ + File: ebpfless.FileSyscallMsg{ Filename: filename, }, UID: int32(tracer.ReadArgUint64(regs, 1)), @@ -970,7 +984,7 @@ func handleFchown(tracer *Tracer, process *Process, msg *ebpfless.SyscallMsg, re msg.Type = ebpfless.SyscallTypeChown msg.Chown = &ebpfless.ChownSyscallMsg{ - File: ebpfless.OpenSyscallMsg{ + File: ebpfless.FileSyscallMsg{ Filename: filename, }, UID: int32(tracer.ReadArgUint64(regs, 1)), @@ -998,7 +1012,7 @@ func handleFchownAt(tracer *Tracer, process *Process, msg *ebpfless.SyscallMsg, msg.Type = ebpfless.SyscallTypeChown msg.Chown = &ebpfless.ChownSyscallMsg{ - File: ebpfless.OpenSyscallMsg{ + File: ebpfless.FileSyscallMsg{ Filename: filename, }, UID: int32(tracer.ReadArgUint64(regs, 2)), diff --git a/pkg/security/ptracer/process_handlers.go b/pkg/security/ptracer/process_handlers.go index 04bec3da872fd1..14ef9489d87641 100644 --- a/pkg/security/ptracer/process_handlers.go +++ b/pkg/security/ptracer/process_handlers.go @@ -155,7 +155,7 @@ func handleExecveAt(tracer *Tracer, process *Process, msg *ebpfless.SyscallMsg, msg.Type = ebpfless.SyscallTypeExec msg.Exec = &ebpfless.ExecSyscallMsg{ - File: ebpfless.OpenSyscallMsg{ + File: ebpfless.FileSyscallMsg{ Filename: filename, }, Args: args, @@ -194,7 +194,7 @@ func handleExecve(tracer *Tracer, process *Process, msg *ebpfless.SyscallMsg, re msg.Type = ebpfless.SyscallTypeExec msg.Exec = &ebpfless.ExecSyscallMsg{ - File: ebpfless.OpenSyscallMsg{ + File: ebpfless.FileSyscallMsg{ Filename: filename, }, Args: args, @@ -388,7 +388,7 @@ func handleFInitModule(tracer *Tracer, process *Process, msg *ebpfless.SyscallMs msg.Type = ebpfless.SyscallTypeLoadModule msg.LoadModule = &ebpfless.LoadModuleSyscallMsg{ LoadedFromMemory: false, - File: ebpfless.OpenSyscallMsg{ + File: ebpfless.FileSyscallMsg{ Filename: filename, }, Args: args, diff --git a/pkg/security/ptracer/utils.go b/pkg/security/ptracer/utils.go index 825a379880a842..0d939786500b92 100644 --- a/pkg/security/ptracer/utils.go +++ b/pkg/security/ptracer/utils.go @@ -283,7 +283,7 @@ func getGroupFromGID(tracer *Tracer, gid int32) string { return "" } -func fillFileMetadata(tracer *Tracer, filepath string, openMsg *ebpfless.OpenSyscallMsg, disableStats bool) error { +func fillFileMetadata(tracer *Tracer, filepath string, fileMsg *ebpfless.FileSyscallMsg, disableStats bool) error { if disableStats || strings.HasPrefix(filepath, "memfd:") { return nil } @@ -295,16 +295,16 @@ func fillFileMetadata(tracer *Tracer, filepath string, openMsg *ebpfless.OpenSys return nil } stat := fileInfo.Sys().(*syscall.Stat_t) - openMsg.MTime = uint64(stat.Mtim.Nano()) - openMsg.CTime = uint64(stat.Ctim.Nano()) - openMsg.Credentials = &ebpfless.Credentials{ + fileMsg.MTime = uint64(stat.Mtim.Nano()) + fileMsg.CTime = uint64(stat.Ctim.Nano()) + fileMsg.Credentials = &ebpfless.Credentials{ UID: stat.Uid, User: getUserFromUID(tracer, int32(stat.Uid)), GID: stat.Gid, Group: getGroupFromGID(tracer, int32(stat.Gid)), } - if openMsg.Mode == 0 { // here, mode can be already set by handler of open syscalls - openMsg.Mode = stat.Mode // useful for exec handlers + if fileMsg.Mode == 0 { // here, mode can be already set by handler of open syscalls + fileMsg.Mode = stat.Mode // useful for exec handlers } return nil } From 208287a2e4d99a0a25efc6263ccf33ac54d020fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9lian=20Raimbault?= <161456554+CelianR@users.noreply.github.com> Date: Thu, 7 Mar 2024 13:54:49 +0100 Subject: [PATCH 063/155] [auto-team-labels] Set up auto team label assignation as github workflow (#23393) * [auto-team-labels] Set up auto team label assignation as github workflow * [auto-team-labels] Assigned team labels within team-label instead * [auto-team-labels] Update tasks/github_tasks.py Co-authored-by: Alexandre Menasria <47357713+amenasria@users.noreply.github.com> * [auto-team-labels] Applied suggestions from review * [auto-team-labels] Added skipping conditions * [auto-team-labels] Fixed mistake * [auto-team-labels] Fixed missing typing import to githubapi * [auto-team-labels] Fixed invalid yaml * [auto-team-labels] Fixed typo * [auto-team-labels] Added continue-on-error to get-changed-files * [auto-team-labels] Exported github token * [auto-team-labels] Fixed invoke auto cast * [auto-team-labels] Updated pr number * [auto-team-labels] Updated invoke interface * [auto-team-labels] Fetched labels again * [auto-team-labels] Updated env variables * [auto-team-labels] Updated env variables * [auto-team-labels] Updated env variables * [auto-team-labels] Updated env variables * [auto-team-labels] Cleaned code * [auto-team-labels] Removed modified files dependency * [auto-team-labels] Fixed typo * [auto-team-labels] Uncommented skip checks * [auto-team-labels] Cleaned code * [auto-team-labels] Sorted imports * [auto-team-labels] Update tasks/github_tasks.py Co-authored-by: Nicolas Schweitzer * [auto-team-labels] Added unit test * [auto-team-labels] Added extra test * [auto-team-labels] Added try except around add_label * [auto-team-labels] Cleaned code following review * Update tasks/github_tasks.py Co-authored-by: Nicolas Schweitzer * Update tasks/github_tasks.py Co-authored-by: Nicolas Schweitzer * [auto-team-labels] Added no file test * [auto-team-labels] Cleaned code * [auto-team-labels] Cleaned code * [auto-team-labels] Update tasks/unit-tests/github_tasks_tests.py Co-authored-by: Nicolas Schweitzer --------- Co-authored-by: Alexandre Menasria <47357713+amenasria@users.noreply.github.com> Co-authored-by: Nicolas Schweitzer --- .github/workflows/label-analysis.yml | 14 +++++- tasks/github_tasks.py | 60 ++++++++++++++++++++++ tasks/libs/common/github_api.py | 24 +++++++++ tasks/unit-tests/github_tasks_tests.py | 64 ++++++++++++++++++++++++ tasks/unit-tests/testdata/codeowners.txt | 4 ++ 5 files changed, 165 insertions(+), 1 deletion(-) create mode 100644 tasks/unit-tests/github_tasks_tests.py create mode 100644 tasks/unit-tests/testdata/codeowners.txt diff --git a/.github/workflows/label-analysis.yml b/.github/workflows/label-analysis.yml index 0dd2dddb96845d..7d97b83595f71f 100644 --- a/.github/workflows/label-analysis.yml +++ b/.github/workflows/label-analysis.yml @@ -9,11 +9,23 @@ on: - "[0-9]+.[0-9]+.x" env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_REPO: ${{ github.repository }} jobs: + assign-team-label: + if: github.triggering_actor != 'dd-devflow[bot]' + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Install Python dependencies + run: pip install -r tasks/requirements.txt + - name: Auto assign team label + run: inv -e github.assign-team-label --pr-id='${{ github.event.pull_request.number }}' fetch-labels: + needs: assign-team-label if: github.triggering_actor != 'dd-devflow[bot]' runs-on: ubuntu-latest outputs: @@ -22,7 +34,7 @@ jobs: - name: Get PR labels id: pr-labels run: | - labels="${{join(github.event.pull_request.labels.*.name, ' ')}}" + labels="$(gh pr view '${{ github.event.pull_request.number }}' --json labels --jq '[.labels[].name] | (join(" "))')" echo "Fetched labels for PR ${{github.event.number}}: $labels" echo "LABELS=$labels" >> "$GITHUB_OUTPUT" team-label: diff --git a/tasks/github_tasks.py b/tasks/github_tasks.py index ed2f6c515e7407..e57326a3c8cbee 100644 --- a/tasks/github_tasks.py +++ b/tasks/github_tasks.py @@ -1,7 +1,9 @@ import os import re import time +from collections import Counter from functools import lru_cache +from typing import List from invoke import Exit, task @@ -16,6 +18,7 @@ trigger_macos_workflow, ) from tasks.libs.junit_upload_core import repack_macos_junit_tar +from tasks.libs.pipeline_notifications import read_owners from tasks.release import _get_release_json_value @@ -188,3 +191,60 @@ def get_token_from_app(_, app_id_env='GITHUB_APP_ID', pkey_env='GITHUB_KEY_B64') from .libs.common.github_api import GithubAPI GithubAPI.get_token_from_app(app_id_env, pkey_env) + + +def _get_teams(changed_files, owners_file='.github/CODEOWNERS') -> List[str]: + codeowners = read_owners(owners_file) + + team_counter = Counter() + for file in changed_files: + owners = [name for (kind, name) in codeowners.of(file) if kind == 'TEAM'] + team_counter.update(owners) + + team_count = team_counter.most_common() + if team_count == []: + return [] + + _, best_count = team_count[0] + best_teams = [team for (team, count) in team_count if count == best_count] + + return best_teams + + +@task +def assign_team_label(_, pr_id=-1): + """ + Assigns the github team label name if teams can + be deduced from the changed files + """ + import github + + from tasks.libs.common.github_api import GithubAPI + + gh = GithubAPI('DataDog/datadog-agent') + + labels = gh.get_pr_labels(pr_id) + + # Skip if necessary + if 'qa/done' in labels or 'qa/no-code-change' in labels: + print('Qa done or no code change, skipping') + return + + if any(label.startswith('team/') for label in labels): + print('This PR already has a team label, skipping') + return + + # Find team + teams = _get_teams(gh.get_pr_files(pr_id)) + if teams == []: + print('No team found') + return + + # Assign label + team_labels = [f"team{team.removeprefix('@Datadog')}" for team in teams if team.startswith("@DataDog/")] + for label_name in team_labels: + try: + gh.add_pr_label(pr_id, label_name) + print(label_name, 'label assigned to the pull request') + except github.GithubException.GithubException: + print(f'Failed to assign label {label_name}') diff --git a/tasks/libs/common/github_api.py b/tasks/libs/common/github_api.py index daa807f9c5d928..c6a00035910758 100644 --- a/tasks/libs/common/github_api.py +++ b/tasks/libs/common/github_api.py @@ -3,6 +3,7 @@ import platform import re import subprocess +from typing import List try: from github import Auth, Github, GithubException, GithubIntegration, GithubObject @@ -191,6 +192,29 @@ def get_rate_limit_info(self): """ return self._github.rate_limiting + def add_pr_label(self, pr_id: int, label: str) -> None: + """ + Tries to add a label to the pull request + """ + pr = self._repository.get_pull(pr_id) + pr.add_to_labels(label) + + def get_pr_labels(self, pr_id: int) -> List[str]: + """ + Returns the labels of a pull request + """ + pr = self._repository.get_pull(pr_id) + + return [label.name for label in pr.get_labels()] + + def get_pr_files(self, pr_id: int) -> List[str]: + """ + Returns the files involved in the PR + """ + pr = self._repository.get_pull(pr_id) + + return [f.filename for f in pr.get_files()] + def _chose_auth(self, public_repo): """ Attempt to find a working authentication, in order: diff --git a/tasks/unit-tests/github_tasks_tests.py b/tasks/unit-tests/github_tasks_tests.py new file mode 100644 index 00000000000000..11c34ea8a60fdb --- /dev/null +++ b/tasks/unit-tests/github_tasks_tests.py @@ -0,0 +1,64 @@ +import unittest + +from tasks.github_tasks import _get_teams + + +class TestAssignTeamLabel(unittest.TestCase): + CODEOWNERS_FILE = './tasks/unit-tests/testdata/codeowners.txt' + + def test_no_match(self): + changed_files = ['idonotexist'] + expected_teams = [] + + teams = _get_teams(changed_files, TestAssignTeamLabel.CODEOWNERS_FILE) + + self.assertEqual(sorted(teams), sorted(expected_teams)) + + def test_no_file(self): + changed_files = [] + expected_teams = [] + + teams = _get_teams(changed_files, TestAssignTeamLabel.CODEOWNERS_FILE) + + self.assertEqual(sorted(teams), sorted(expected_teams)) + + def test_single_file_single_team(self): + changed_files = ['.gitignore'] + expected_teams = ['@DataDog/agent-platform'] + + teams = _get_teams(changed_files, TestAssignTeamLabel.CODEOWNERS_FILE) + + self.assertEqual(sorted(teams), sorted(expected_teams)) + + def test_single_file_multiple_teams(self): + changed_files = ['README.md'] + expected_teams = ['@DataDog/agent-platform', '@DataDog/documentation'] + + teams = _get_teams(changed_files, TestAssignTeamLabel.CODEOWNERS_FILE) + + self.assertEqual(sorted(teams), sorted(expected_teams)) + + def test_multiple_files_single_team(self): + changed_files = ['.gitignore', '.gitlab/a.py'] + expected_teams = ['@DataDog/agent-platform'] + + teams = _get_teams(changed_files, TestAssignTeamLabel.CODEOWNERS_FILE) + + self.assertEqual(sorted(teams), sorted(expected_teams)) + + def test_multiple_files_single_team_best(self): + # agent-platform has more files than security so only one team will be assigned + changed_files = ['.gitignore', '.gitlab-ci.yml', '.gitlab/security.yml'] + expected_teams = ['@DataDog/agent-platform'] + + teams = _get_teams(changed_files, TestAssignTeamLabel.CODEOWNERS_FILE) + + self.assertEqual(sorted(teams), sorted(expected_teams)) + + def test_multiple_files_multiple_teams(self): + changed_files = ['.gitignore', '.gitlab/security.yml'] + expected_teams = ['@DataDog/agent-platform', '@DataDog/agent-security'] + + teams = _get_teams(changed_files, TestAssignTeamLabel.CODEOWNERS_FILE) + + self.assertEqual(sorted(teams), sorted(expected_teams)) diff --git a/tasks/unit-tests/testdata/codeowners.txt b/tasks/unit-tests/testdata/codeowners.txt new file mode 100644 index 00000000000000..ff398c0a090035 --- /dev/null +++ b/tasks/unit-tests/testdata/codeowners.txt @@ -0,0 +1,4 @@ +/.* @DataDog/agent-platform +/*.md @DataDog/agent-platform @DataDog/documentation +/.gitlab/ @DataDog/agent-platform +/.gitlab/security.yml @DataDog/agent-security From f7586f3b7cf6a27dcbeaedf9553161aea1409e3f Mon Sep 17 00:00:00 2001 From: AliDatadog <125997632+AliDatadog@users.noreply.github.com> Date: Thu, 7 Mar 2024 14:08:38 +0100 Subject: [PATCH 064/155] [CONTINT-3760] Minor code improvements in SBOM scanner (#23486) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * use Done only once, reorganize if statements to remove indentation, make checkDiskSpace return a scan result to avoid sending there * fix sbom scanner * Remove _ = patternn Co-authored-by: Lénaïc Huard --------- Co-authored-by: Lénaïc Huard --- pkg/sbom/scanner/scanner.go | 64 ++++++++++++++++++++++--------------- 1 file changed, 38 insertions(+), 26 deletions(-) diff --git a/pkg/sbom/scanner/scanner.go b/pkg/sbom/scanner/scanner.go index c8cab9c4d647f9..3a7d35c311e4a5 100644 --- a/pkg/sbom/scanner/scanner.go +++ b/pkg/sbom/scanner/scanner.go @@ -124,6 +124,10 @@ func (s *Scanner) enoughDiskSpace(opts sbom.ScanOptions) error { // sendResult sends a ScanResult to the channel associated with the scan request. // This function should not be blocking func sendResult(requestID string, result *sbom.ScanResult, collector collectors.Collector) { + if result == nil { + log.Errorf("nil result for '%s'", requestID) + return + } select { case collector.Channel() <- *result: default: @@ -231,34 +235,36 @@ func (s *Scanner) getImageMetadata(request sbom.ScanRequest) *workloadmeta.Conta } func (s *Scanner) processScan(ctx context.Context, request sbom.ScanRequest, imgMeta *workloadmeta.ContainerImageMetadata, collector collectors.Collector) { - if !s.checkDiskSpace(request, imgMeta, collector) { - return + result := s.checkDiskSpace(imgMeta, collector) + errorType := "disk_space" + + if result == nil { + scanContext, cancel := context.WithTimeout(ctx, timeout(collector)) + defer cancel() + result = s.performScan(scanContext, request, collector) + errorType = "scan" } - scanContext, cancel := context.WithTimeout(ctx, timeout(collector)) - defer cancel() - scanResult := s.performScan(scanContext, request, collector) - sendResult(request.ID(), &scanResult, collector) - s.handleScanResult(scanResult, request, collector) + sendResult(request.ID(), result, collector) + s.handleScanResult(result, request, collector, errorType) waitAfterScanIfNecessary(ctx, collector) } // checkDiskSpace checks if there is enough disk space to perform the scan -// It sends an error result to the collector if there is not enough space -// It returns a boolean indicating if the scan should be pursued -func (s *Scanner) checkDiskSpace(request sbom.ScanRequest, imgMeta *workloadmeta.ContainerImageMetadata, collector collectors.Collector) bool { - if err := s.enoughDiskSpace(collector.Options()); err != nil { - result := sbom.ScanResult{ - ImgMeta: imgMeta, - Error: fmt.Errorf("failed to check current disk usage: %w", err), - } - sendResult(request.ID(), &result, collector) - telemetry.SBOMFailures.Inc(request.Collector(), request.Type(), "disk_space") - return false +// It sends a scan result wrapping an error if there is not enough space +// If everything is correct it returns nil. +func (s *Scanner) checkDiskSpace(imgMeta *workloadmeta.ContainerImageMetadata, collector collectors.Collector) *sbom.ScanResult { + err := s.enoughDiskSpace(collector.Options()) + if err == nil { + return nil + } + result := &sbom.ScanResult{ + ImgMeta: imgMeta, + Error: fmt.Errorf("failed to check current disk usage: %w", err), } - return true + return result } -func (s *Scanner) performScan(ctx context.Context, request sbom.ScanRequest, collector collectors.Collector) sbom.ScanResult { +func (s *Scanner) performScan(ctx context.Context, request sbom.ScanRequest, collector collectors.Collector) *sbom.ScanResult { createdAt := time.Now() s.cacheMutex.Lock() @@ -269,19 +275,25 @@ func (s *Scanner) performScan(ctx context.Context, request sbom.ScanRequest, col scanResult.CreatedAt = createdAt scanResult.Duration = generationDuration - return scanResult + return &scanResult } -func (s *Scanner) handleScanResult(scanResult sbom.ScanResult, request sbom.ScanRequest, collector collectors.Collector) { +func (s *Scanner) handleScanResult(scanResult *sbom.ScanResult, request sbom.ScanRequest, collector collectors.Collector, errorType string) { + if scanResult == nil { + telemetry.SBOMFailures.Inc(request.Collector(), request.Type(), "nil_scan_result") + log.Errorf("nil scan result for '%s'", request.ID()) + return + } if scanResult.Error != nil { - telemetry.SBOMFailures.Inc(request.Collector(), request.Type(), "scan") + telemetry.SBOMFailures.Inc(request.Collector(), request.Type(), errorType) if collector.Type() == collectors.ContainerImageScanType { s.scanQueue.AddRateLimited(request) } - } else { - telemetry.SBOMGenerationDuration.Observe(scanResult.Duration.Seconds(), request.Collector(), request.Type()) - s.scanQueue.Forget(request) + return } + + telemetry.SBOMGenerationDuration.Observe(scanResult.Duration.Seconds(), request.Collector(), request.Type()) + s.scanQueue.Forget(request) } func waitAfterScanIfNecessary(ctx context.Context, collector collectors.Collector) { From 7d8568800c05f7258a75fc2b0b835d082491b2ae Mon Sep 17 00:00:00 2001 From: Usama Saqib Date: Thu, 7 Mar 2024 14:34:52 +0100 Subject: [PATCH 065/155] Improve KMT local development tasks (#22967) * pass more test configs to runner * apply dependencies layout from directory * ignore binaries created during dependency build * remove unused bash script * accept test root as argument in test-runner * fix merge error * improve stability of build and test tasks * update README * warn when dependencies not present * fix destroy ec2 and address linter errors * early return if stack.output not present * pass empty ssh key when building infrastructure for stack information * fix spellings * fix iteration over dictionary * disallow cross-arch builds or tests * Update tasks/kernel_matrix_testing/infra.py Co-authored-by: Nicolas Schweitzer * use ctx rather than 'Path' when creating directory * change variable name to match filename * fail if unable to fetch dependencies for a domain * fix merge error * remove debug log * fix microvm-init args in CI * fix test-root path typo * correct test-root path is /system-probe-tests --------- Co-authored-by: Nicolas Schweitzer --- .gitignore | 2 + .gitlab/kernel_matrix_testing/common.yml | 2 +- tasks/kernel_matrix_testing/README.md | 35 +-- tasks/kernel_matrix_testing/infra.py | 85 +++++-- tasks/kernel_matrix_testing/stacks.py | 55 +---- tasks/kmt.py | 221 ++++++++++++++---- .../files/system-probe-dependencies.json | 30 +++ test/new-e2e/system-probe/test-runner/main.go | 49 ++-- .../system-probe/test/micro-vm-init.sh | 5 +- .../system-probe/test/setup-microvm-deps.sh | 50 ---- 10 files changed, 345 insertions(+), 189 deletions(-) create mode 100644 test/new-e2e/system-probe/test-runner/files/system-probe-dependencies.json delete mode 100755 test/new-e2e/system-probe/test/setup-microvm-deps.sh diff --git a/.gitignore b/.gitignore index 88d39229657514..3d8d37f3ff38d9 100644 --- a/.gitignore +++ b/.gitignore @@ -212,3 +212,5 @@ test/fakeintake/build/* !test/workload-checks/** kmt-deps/ +test/new-e2e/system-probe/test-json-review/test-json-review +test/new-e2e/system-probe/test-runner/test-runner diff --git a/.gitlab/kernel_matrix_testing/common.yml b/.gitlab/kernel_matrix_testing/common.yml index 81468b527e0728..bbd83316dad2c6 100644 --- a/.gitlab/kernel_matrix_testing/common.yml +++ b/.gitlab/kernel_matrix_testing/common.yml @@ -197,7 +197,7 @@ # ssh into each micro-vm and run initialization script. This script will also run the tests. - scp "$DD_AGENT_TESTING_DIR/job_env.txt" "metal_instance:/home/ubuntu/job_env-${ARCH}-${TAG}-${TEST_SET}.txt" - ssh metal_instance "scp /home/ubuntu/job_env-${ARCH}-${TAG}-${TEST_SET}.txt ${MICRO_VM_IP}:/job_env.txt" - - NESTED_VM_CMD="/home/ubuntu/connector -host ${MICRO_VM_IP} -user root -ssh-file /home/kernel-version-testing/ddvm_rsa -vm-cmd '/root/fetch_dependencies.sh ${ARCH} && /opt/kernel-version-testing/micro-vm-init.sh ${RETRY} /${TEST_SET}.json'" + - NESTED_VM_CMD="/home/ubuntu/connector -host ${MICRO_VM_IP} -user root -ssh-file /home/kernel-version-testing/ddvm_rsa -vm-cmd '/root/fetch_dependencies.sh ${ARCH} && /opt/kernel-version-testing/micro-vm-init.sh -retry ${RETRY} -test-root /system-probe-tests -packages-run-config /${TEST_SET}.json'" - $CI_PROJECT_DIR/connector-$ARCH -host $INSTANCE_IP -user ubuntu -ssh-file $AWS_EC2_SSH_KEY_FILE -vm-cmd "${NESTED_VM_CMD}" - ssh metal_instance "ssh ${MICRO_VM_IP} '/test-json-review'" after_script: diff --git a/tasks/kernel_matrix_testing/README.md b/tasks/kernel_matrix_testing/README.md index c265daf02a5f25..270022656ab55a 100644 --- a/tasks/kernel_matrix_testing/README.md +++ b/tasks/kernel_matrix_testing/README.md @@ -274,23 +274,32 @@ inv -e kmt.stack [--stack=] > At the moment this just prints the running VMs and their IP addresses. This information will be enriched in later versions of the tool. -### Pausing the stack -This is only relevant for VMs running in the local environment. This has no effect on VMs running on remote instances. Pausing the stack essentially stops the running VMs and frees their resources. However, the VM environment is left intact so that it may be brought up again. - -### Resuming the stack -This resumes a previously paused stack. This is only applicable for VMs running locally. - +### Testing system-probe +KMT is intended to easily run the testsuite across a kernel/distribution matrix. +Developers can easily run tests against VMs transparently using the provided invoke tasks. +```bash +inv -e kmt.test --vms= +``` -### Syncing VMs -The recommended workflow is to develop on the local machine, push changes to the target VMs, and then build and test there. +Similar to `system-probe.tests`, tests can be run against specific packages, and can also be filtered down to specific tests via a regex. +```bash +inv -e kmt.test --vms=jammy-local-distro --packages=./pkg/network/tracer --run="TestTracerSuite/prebuilt/TestDNSStats/valid_domain" +``` -To support this, a task for syncing the local datadog-agent repo with target VMs is provided. +Various other parameters are provided to control different aspects of running the test. Refer to the help for this invoke task for more information. +```bash +inv --help=kmt.test +``` -> We are working on providing tasks which will automatically sync with the target VMs, and build and run tests. However, this is a work in progress. -If syncing to VMs running on remote machine the ssh-key-name is required. For local VMs it is not required. -The VMs list has the same rules as listed for the task `gen-config`. +### Building system-probe +System probe can be built locally and shared with specified VMs. ```bash -inv -e kmt.sync --vms=local-amazon4.14-distro,jammy-local-distro,focal-arm-distro,amazon5.4-x86-distro --ssh-key= +inv -e kmt.build --vms= ``` +### Pausing the stack +This is only relevant for VMs running in the local environment. This has no effect on VMs running on remote instances. Pausing the stack essentially stops the running VMs and frees their resources. However, the VM environment is left intact so that it may be brought up again. + +### Resuming the stack +This resumes a previously paused stack. This is only applicable for VMs running locally. diff --git a/tasks/kernel_matrix_testing/infra.py b/tasks/kernel_matrix_testing/infra.py index 327303fb335a59..424bd6299c3c17 100644 --- a/tasks/kernel_matrix_testing/infra.py +++ b/tasks/kernel_matrix_testing/infra.py @@ -1,25 +1,35 @@ +import glob import json import os from tasks.kernel_matrix_testing.kmt_os import get_kmt_os -from tasks.kernel_matrix_testing.stacks import ask_for_ssh, find_ssh_key -from tasks.kernel_matrix_testing.tool import Exit, error +from tasks.kernel_matrix_testing.tool import Exit, ask, error class LocalCommandRunner: @staticmethod def run_cmd(ctx, _, cmd, allow_fail, verbose): - res = ctx.run(cmd.format(proxy_cmd=""), hide=(not verbose)) + res = ctx.run(cmd.format(proxy_cmd=""), hide=(not verbose), warn=allow_fail) if not res.ok: error(f"[-] Failed: {cmd}") if allow_fail: - return + return False print_failed(res.stderr) raise Exit("command failed") + return True + @staticmethod - def move_to_shared_directory(ctx, _, source): - ctx.run(f"cp {source} {get_kmt_os().shared_dir}") + def move_to_shared_directory(ctx, _, source, subdir=None): + recursive = "" + if os.path.isdir(source): + recursive = "-R" + + full_target = get_kmt_os().shared_dir + if subdir is not None: + full_target = os.path.join(get_kmt_os().shared_dir, subdir) + ctx.run(f"mkdir -p {full_target}") + ctx.run(f"cp {recursive} {source} {full_target}") class RemoteCommandRunner: @@ -30,18 +40,26 @@ def run_cmd(ctx, instance, cmd, allow_fail, verbose): proxy_cmd=f"-o ProxyCommand='ssh -o StrictHostKeyChecking=no -i {instance.ssh_key} -W %h:%p ubuntu@{instance.ip}'" ), hide=(not verbose), + warn=allow_fail, ) if not res.ok: error(f"[-] Failed: {cmd}") if allow_fail: - return + return False print_failed(res.stderr) raise Exit("command failed") + return True + @staticmethod - def move_to_shared_directory(ctx, instance, source): + def move_to_shared_directory(ctx, instance, source, subdir=None): + full_target = get_kmt_os().shared_dir + if subdir is not None: + full_target = os.path.join(get_kmt_os().shared_dir, subdir) + RemoteCommandRunner.run_cmd(ctx, instance, f"mkdir -p {full_target}", False, False) + ctx.run( - f"rsync -e \"ssh -o StrictHostKeyChecking=no -i {instance.ssh_key}\" -p -rt --exclude='.git*' --filter=':- .gitignore' {source} ubuntu@{instance.ip}:{get_kmt_os().shared_dir}" + f"rsync -e \"ssh -o StrictHostKeyChecking=no -i {instance.ssh_key}\" -p -rt --exclude='.git*' --filter=':- .gitignore' {source} ubuntu@{instance.ip}:{full_target}" ) @@ -70,11 +88,11 @@ def __init__(self, ip, domain_id, tag, vmset_tags, ssh_key_path, instance): def run_cmd(self, ctx, cmd, allow_fail=False, verbose=False): run = f"ssh -o StrictHostKeyChecking=no -i {self.ssh_key} root@{self.ip} {{proxy_cmd}} '{cmd}'" - self.instance.runner.run_cmd(ctx, self.instance, run, allow_fail, verbose) + return self.instance.runner.run_cmd(ctx, self.instance, run, allow_fail, verbose) def copy(self, ctx, source, target): run = f"rsync -e \"ssh -o StrictHostKeyChecking=no {{proxy_cmd}} -i {self.ssh_key}\" -p -rt --exclude='.git*' --filter=':- .gitignore' {source} root@{self.ip}:{target}" - self.instance.runner.run_cmd(ctx, self.instance, run, False, False) + return self.instance.runner.run_cmd(ctx, self.instance, run, False, False) def __repr__(self): return f" {self.name} {self.ip}" @@ -91,16 +109,19 @@ def __init__(self, ip, arch, ssh_key): def add_microvm(self, domain): self.microvms.append(domain) - def copy_to_all_vms(self, ctx, path): - self.runner.move_to_shared_directory(ctx, self, path) + def copy_to_all_vms(self, ctx, path, subdir=None): + self.runner.move_to_shared_directory(ctx, self, path, subdir) def __repr__(self): return f" {self.ip} {self.arch}" def build_infrastructure(stack, remote_ssh_key=None): - stack_outputs = os.path.join(get_kmt_os().stacks_dir, stack, "stack.output") - with open(stack_outputs, 'r') as f: + stack_output = os.path.join(get_kmt_os().stacks_dir, stack, "stack.output") + if not os.path.exists(stack_output): + raise Exit("no stack.output file present") + + with open(stack_output, 'r') as f: infra_map = json.load(f) infra = dict() @@ -130,3 +151,37 @@ def ssh_key_to_path(ssh_key): ssh_key_path = find_ssh_key(ssh_key) return ssh_key_path + + +def ask_for_ssh(): + return ( + ask( + "You may want to provide ssh key, since the given config launches a remote instance.\nContinue without a ssh key?[Y/n]" + ) + != "y" + ) + + +def find_ssh_key(ssh_key): + possible_paths = [f"~/.ssh/{ssh_key}", f"~/.ssh/{ssh_key}.pem"] + + # Try direct files + for path in possible_paths: + if os.path.exists(os.path.expanduser(path)): + return path + + # Ok, no file found with that name. However, maybe we can identify the key by the key name + # that's present in the corresponding pub files + + for pubkey in glob.glob(os.path.expanduser("~/.ssh/*.pub")): + privkey = pubkey[:-4] + possible_paths.append(privkey) # Keep track of paths we've checked + + with open(pubkey) as f: + parts = f.read().split() + + # Public keys have three "words": key type, public key, name + if len(parts) == 3 and parts[2] == ssh_key: + return privkey + + raise Exit(f"Could not find file for ssh key {ssh_key}. Looked in {possible_paths}") diff --git a/tasks/kernel_matrix_testing/stacks.py b/tasks/kernel_matrix_testing/stacks.py index eeda7193e55aac..611f8632d0091f 100644 --- a/tasks/kernel_matrix_testing/stacks.py +++ b/tasks/kernel_matrix_testing/stacks.py @@ -1,7 +1,7 @@ -import glob import json import os +from tasks.kernel_matrix_testing.infra import ask_for_ssh, build_infrastructure, find_ssh_key from tasks.kernel_matrix_testing.init_kmt import VMCONFIG, check_and_get_stack from tasks.kernel_matrix_testing.kmt_os import get_kmt_os from tasks.kernel_matrix_testing.libvirt import ( @@ -13,7 +13,7 @@ resource_in_stack, resume_domains, ) -from tasks.kernel_matrix_testing.tool import Exit, ask, error, info, warn +from tasks.kernel_matrix_testing.tool import Exit, error, info try: import libvirt @@ -45,31 +45,6 @@ def create_stack(ctx, stack=None): ctx.run(f"mkdir {stack_dir}") -def find_ssh_key(ssh_key): - possible_paths = [f"~/.ssh/{ssh_key}", f"~/.ssh/{ssh_key}.pem"] - - # Try direct files - for path in possible_paths: - if os.path.exists(os.path.expanduser(path)): - return path - - # Ok, no file found with that name. However, maybe we can identify the key by the key name - # that's present in the corresponding pub files - - for pubkey in glob.glob(os.path.expanduser("~/.ssh/*.pub")): - privkey = pubkey[:-4] - possible_paths.append(privkey) # Keep track of paths we've checked - - with open(pubkey, "r") as f: - parts = f.read().split() - - # Public keys have three "words": key type, public key, name - if len(parts) == 3 and parts[2] == ssh_key: - return privkey - - raise Exit(f"Could not find file for ssh key {ssh_key}. Looked in {possible_paths}") - - def remote_vms_in_config(vmconfig): with open(vmconfig, 'r') as f: data = json.load(f) @@ -92,15 +67,6 @@ def local_vms_in_config(vmconfig): return False -def ask_for_ssh(): - return ( - ask( - "You may want to provide ssh key, since the given config launches a remote instance.\nContinue witough ssh key?[Y/n]" - ) - != "y" - ) - - def kvm_ok(ctx): ctx.run("kvm-ok") info("[+] Kvm available on system") @@ -213,10 +179,6 @@ def destroy_stack_pulumi(ctx, stack, ssh_key): ) -def is_ec2_ip_entry(entry): - return entry.startswith("arm64-instance-ip") or entry.startswith("x86_64-instance-ip") - - def ec2_instance_ids(ctx, ip_list): ip_addresses = ','.join(ip_list) list_instances_cmd = f"aws-vault exec sso-sandbox-account-admin -- aws ec2 describe-instances --filter \"Name=private-ip-address,Values={ip_addresses}\" \"Name=tag:team,Values=ebpf-platform\" --query 'Reservations[].Instances[].InstanceId' --output text" @@ -232,18 +194,13 @@ def ec2_instance_ids(ctx, ip_list): def destroy_ec2_instances(ctx, stack): stack_output = os.path.join(get_kmt_os().stacks_dir, stack, "stack.output") if not os.path.exists(stack_output): - warn(f"[-] File {stack_output} not found") return - with open(stack_output, 'r') as f: - output = f.read().split('\n') - + infra = build_infrastructure(stack, remote_ssh_key="") ips = list() - for o in output: - if not is_ec2_ip_entry(o): - continue - - ips.append(o.split(' ')[1]) + for arch, instance in infra.items(): + if arch != "local": + ips.append(instance.ip) if len(ips) == 0: info("[+] No ec2 instance to terminate in stack") diff --git a/tasks/kmt.py b/tasks/kmt.py index 3fd89e7edaed75..db20a10d08d66e 100644 --- a/tasks/kmt.py +++ b/tasks/kmt.py @@ -2,6 +2,7 @@ import os import platform import re +import shutil import tempfile from glob import glob from pathlib import Path @@ -194,7 +195,7 @@ def stack(_, stack=None): if not stacks.stack_exists(stack): raise Exit(f"Stack {stack} does not exist. Please create with 'inv kmt.stack-create --stack='") - infrastructure = build_infrastructure(stack) + infrastructure = build_infrastructure(stack, remote_ssh_key="") for instance in infrastructure.values(): print(instance) for vm in instance.microvms: @@ -235,10 +236,12 @@ def start_compiler(ctx): start_cc(ctx) -def filter_target_domains(vms, infra): +def filter_target_domains(vms, infra, local_arch): vmsets = vmconfig.build_vmsets(vmconfig.build_normalized_vm_def_set(vms), []) domains = list() for vmset in vmsets: + if vmset.arch != "local" and vmset.arch != local_arch: + raise Exit(f"KMT does not support cross-arch ({local_arch} -> {vmset.arch}) build/test at the moment") for vm in vmset.vms: for domain in infra[vmset.arch].microvms: if domain.tag == vm.version: @@ -273,8 +276,88 @@ def full_arch(arch): return arch +def build_tests_package(ctx, source_dir, stack, arch, ci, verbose=True): + root = os.path.join(source_dir, "kmt-deps") + test_archive = f"tests-{arch}.tar.gz" + if not ci: + system_probe_tests = os.path.join(root, stack, "opt/system-probe-tests") + test_pkgs = os.path.join( + source_dir, "test/kitchen/site-cookbooks/dd-system-probe-check/files/default/tests/pkg" + ) + ctx.run(f"rm -rf {system_probe_tests} && mkdir -p {system_probe_tests}", hide=(not verbose)) + ctx.run(f"cp -R {test_pkgs} {system_probe_tests}", hide=(not verbose)) + with ctx.cd(os.path.join(root, stack)): + ctx.run(f"tar czvf {test_archive} opt", hide=(not verbose)) + + @task -def prepare(ctx, vms, stack=None, arch=None, ssh_key=None, rebuild_deps=False, packages="", verbose=True): +def build_dependencies(ctx, arch, layout_file, source_dir, ci=False, stack=None, verbose=True): + root = os.path.join(source_dir, "kmt-deps") + deps_dir = os.path.join(root, "dependencies") + if not ci: + if stack is None: + raise Exit("no stack name provided") + deps_dir = os.path.join(root, stack, "dependencies") + # in the CI we can rely on gotestsum being present + download_gotestsum(ctx) + + if os.path.exists(deps_dir): + shutil.rmtree(deps_dir) + + ctx.run(f"mkdir -p {deps_dir}") + + with open(layout_file) as f: + deps_layout = json.load(f) + with ctx.cd(deps_dir): + for new_dirs in deps_layout["layout"]: + ctx.run(f"mkdir -p {new_dirs}", hide=(not verbose)) + + for source in deps_layout["copy"]: + target = deps_layout["copy"][source] + ctx.run(f"cp {os.path.join(source_dir, source)} {os.path.join(deps_dir, target)}", hide=(not verbose)) + + def _exec_context_ci(ctx, command, directory): + ctx.run(f"cd {os.path.join(source_dir, directory)} && {command}", hide=(not verbose)) + + def _exec_context(ctx, command, directory): + docker_exec(ctx, command, run_dir=f"/datadog-agent/{directory}", verbose=verbose) + + exec_context = _exec_context + if ci: + exec_context = _exec_context_ci + for build in deps_layout["build"]: + directory = deps_layout["build"][build]["directory"] + command = deps_layout["build"][build]["command"] + artifact = os.path.join(source_dir, deps_layout["build"][build]["artifact"]) + exec_context(ctx, command, directory) + ctx.run(f"cp {artifact} {deps_dir}", hide=(not verbose)) + + archive_name = f"dependencies-{arch}.tar.gz" + with ctx.cd(os.path.join(root, stack)): + ctx.run(f"tar czvf {archive_name} dependencies", hide=(not verbose)) + + +def is_root(): + return os.getuid() == 0 + + +def vms_have_correct_deps(ctx, domains, depsfile): + deps_dir = os.path.dirname(depsfile) + sha256sum = ctx.run(f"cd {deps_dir} && sha256sum {os.path.basename(depsfile)}", warn=True) + if not sha256sum.ok: + return False + + check = sha256sum.stdout.rstrip('\n') + for d in domains: + if not d.run_cmd(ctx, f"cd / && echo \"{check}\" | sha256sum --check", allow_fail=True): + warn(f"[-] VM {d} does not have dependencies.") + return False + + return True + + +@task +def prepare(ctx, vms, stack=None, ssh_key=None, full_rebuild=False, packages="", verbose=True): stack = check_and_get_stack(stack) if not stacks.stack_exists(stack): raise Exit(f"Stack {stack} does not exist. Please create with 'inv kmt.stack-create --stack='") @@ -282,19 +365,21 @@ def prepare(ctx, vms, stack=None, arch=None, ssh_key=None, rebuild_deps=False, p if vms == "": raise Exit("No vms specified to sync with") - if not arch: - arch = platform.machine() + arch = arch_mapping[platform.machine()] + + infra = build_infrastructure(stack, ssh_key) + domains = filter_target_domains(vms, infra, arch) + build_from_scratch = ( + full_rebuild + or (not os.path.exists(f"kmt-deps/{stack}")) + or (not vms_have_correct_deps(ctx, domains, os.path.join("kmt-deps", stack, f"dependencies-{arch}.tar.gz"))) + ) if not compiler_running(ctx): start_compiler(ctx) - download_gotestsum(ctx) - - infra = build_infrastructure(stack, ssh_key) - domains = filter_target_domains(vms, infra) - constrain_pkgs = "" - if not rebuild_deps: + if not build_from_scratch: constrain_pkgs = f"--packages={packages}" docker_exec( @@ -302,26 +387,32 @@ def prepare(ctx, vms, stack=None, arch=None, ssh_key=None, rebuild_deps=False, p f"git config --global --add safe.directory /datadog-agent && inv -e system-probe.kitchen-prepare --ci {constrain_pkgs}", run_dir="/datadog-agent", ) - if rebuild_deps: - docker_exec( - ctx, - f"./test/new-e2e/system-probe/test/setup-microvm-deps.sh {stack} {os.getuid()} {os.getgid()} {platform.machine()}", - run_dir="/datadog-agent", + + target_instances = list() + for d in domains: + target_instances.append(d.instance) + + if build_from_scratch: + info("[+] Building all dependencies from scratch") + build_dependencies( + ctx, arch, "test/new-e2e/system-probe/test-runner/files/system-probe-dependencies.json", "./", stack=stack ) - target_instances = list() - for d in domains: - target_instances.append(d.instance) for instance in target_instances: instance.copy_to_all_vms(ctx, f"kmt-deps/{stack}/dependencies-{full_arch(instance.arch)}.tar.gz") for d in domains: - d.run_cmd(ctx, f"/root/fetch_dependencies.sh {platform.machine()}", allow_fail=True, verbose=verbose) - d.copy( - ctx, - "./test/kitchen/site-cookbooks/dd-system-probe-check/files/default/tests/pkg", - "/opt/system-probe-tests", - ) + if not d.run_cmd(ctx, f"/root/fetch_dependencies.sh {arch}", allow_fail=True, verbose=verbose): + raise Exit(f"failed to fetch dependencies for domain {d}") + + info(f"[+] Dependencies shared with target VM {d}") + + tests_archive = f"tests-{arch}.tar.gz" + build_tests_package(ctx, "./", stack, arch, False) + for d in domains: + d.copy(ctx, f"kmt-deps/{stack}/{tests_archive}", "/") + d.run_cmd(ctx, f"cd / && tar xzf {tests_archive}") + info(f"[+] Tests packages setup in target VM {d}") def build_run_config(run, packages): @@ -341,16 +432,45 @@ def build_run_config(run, packages): return c -@task -def test(ctx, vms, stack=None, packages="", run=None, retry=2, rebuild_deps=False, ssh_key=None, verbose=True): +@task( + help={ + "vms": "Comma seperated list of vms to target when running tests", + "stack": "Stack in which the VMs exist. If not provided stack is autogenerated based on branch name", + "packages": "Similar to 'system-probe.test'. Specify the package from which to run the tests", + "run": "Similar to 'system-probe.test'. Specify the regex to match specific tests to run", + "quick": "Assume no need to rebuild anything, and directly run the tests", + "retry": "Number of times to retry a failing test", + "run-count": "Number of times to run a tests regardless of status", + "full-rebuild": "Do a full rebuild of all test dependencies to share with VMs, before running tests. Useful when changes are not being picked up correctly", + "ssh-key": "SSH key to use for connecting to a remote EC2 instance hosting the target VM", + "verbose": "Enable full output of all commands executed", + "test-logs": "Set 'gotestsum' verbosity to 'standard-verbose' to print all test logs. Default is 'testname'", + } +) +def test( + ctx, + vms, + stack=None, + packages="", + run=None, + quick=False, + retry=2, + run_count=1, + full_rebuild=False, + ssh_key=None, + verbose=True, + test_logs=False, +): stack = check_and_get_stack(stack) if not stacks.stack_exists(stack): raise Exit(f"Stack {stack} does not exist. Please create with 'inv kmt.stack-create --stack='") - prepare(ctx, stack=stack, vms=vms, ssh_key=ssh_key, rebuild_deps=rebuild_deps, packages=packages) + if not quick: + prepare(ctx, stack=stack, vms=vms, ssh_key=ssh_key, full_rebuild=full_rebuild, packages=packages) infra = build_infrastructure(stack, ssh_key) - domains = filter_target_domains(vms, infra) + arch = arch_mapping[platform.machine()] + domains = filter_target_domains(vms, infra, arch) if run is not None and packages is None: raise Exit("Package must be provided when specifying test") pkgs = packages.split(",") @@ -362,13 +482,28 @@ def test(ctx, vms, stack=None, packages="", run=None, retry=2, rebuild_deps=Fals json.dump(run_config, tmp) tmp.flush() + args = [ + f"-packages-run-config {tmp.name}", + f"-retry {retry}", + "-verbose" if test_logs else "", + f"-run-count {run_count}", + "-test-root /opt/system-probe-tests", + ] for d in domains: d.copy(ctx, f"{tmp.name}", "/tmp") - d.run_cmd(ctx, f"bash /micro-vm-init.sh {retry} {tmp.name}", verbose=verbose) + d.run_cmd(ctx, f"bash /micro-vm-init.sh {' '.join(args)}", verbose=verbose) -@task -def build(ctx, vms, stack=None, ssh_key=None, rebuild_deps=False, verbose=True): +@task( + help={ + "vms": "Comma seperated list of vms to target when running tests", + "stack": "Stack in which the VMs exist. If not provided stack is autogenerated based on branch name", + "ssh-key": "SSH key to use for connecting to a remote EC2 instance hosting the target VM", + "full-rebuild": "Do a full rebuild of all test dependencies to share with VMs, before running tests. Useful when changes are not being picked up correctly", + "verbose": "Enable full output of all commands executed", + } +) +def build(ctx, vms, stack=None, ssh_key=None, full_rebuild=False, verbose=True): stack = check_and_get_stack(stack) if not stacks.stack_exists(stack): raise Exit(f"Stack {stack} does not exist. Please create with 'inv kmt.stack-create --stack='") @@ -376,13 +511,19 @@ def build(ctx, vms, stack=None, ssh_key=None, rebuild_deps=False, verbose=True): if not os.path.exists(f"kmt-deps/{stack}"): ctx.run(f"mkdir -p kmt-deps/{stack}") + arch = arch_mapping[platform.machine()] infra = build_infrastructure(stack, ssh_key) - domains = filter_target_domains(vms, infra) - if rebuild_deps: - docker_exec( - ctx, - f"./test/new-e2e/system-probe/test/setup-microvm-deps.sh {stack} {os.getuid()} {os.getgid()} {platform.machine()}", - run_dir="/datadog-agent", + domains = filter_target_domains(vms, infra, arch) + + build_from_scratch = ( + full_rebuild + or (not os.path.exists(f"kmt-deps/{stack}")) + or (not vms_have_correct_deps(ctx, domains, os.path.join("kmt-deps", stack, f"dependencies-{arch}.tar.gz"))) + ) + + if build_from_scratch: + build_dependencies( + ctx, arch, "test/new-e2e/system-probe/test-runner/files/system-probe-dependencies.json", "./", stack=stack ) target_instances = list() @@ -394,9 +535,11 @@ def build(ctx, vms, stack=None, ssh_key=None, rebuild_deps=False, verbose=True): for d in domains: d.run_cmd(ctx, f"/root/fetch_dependencies.sh {arch_mapping[platform.machine()]}") + info(f"[+] Dependencies shared with target VM {d}") docker_exec( - ctx, "cd /datadog-agent && git config --global --add safe.directory /datadog-agent && inv -e system-probe.build" + ctx, + "cd /datadog-agent && git config --global --add safe.directory /datadog-agent && inv -e system-probe.build --no-bundle", ) docker_exec(ctx, f"tar cf /datadog-agent/kmt-deps/{stack}/shared.tar {EMBEDDED_SHARE_DIR}") for d in domains: diff --git a/test/new-e2e/system-probe/test-runner/files/system-probe-dependencies.json b/test/new-e2e/system-probe/test-runner/files/system-probe-dependencies.json new file mode 100644 index 00000000000000..9f21f2a21a8aba --- /dev/null +++ b/test/new-e2e/system-probe/test-runner/files/system-probe-dependencies.json @@ -0,0 +1,30 @@ +{ + "layout": [ + "opt/datadog-agent/embedded/bin", + "opt/datadog-agent/embedded/include", + "opt/system-probe-tests", + "go/bin", + "junit", + "testjson", + "pkgjson" + ], + "copy": { + "test/kitchen/site-cookbooks/dd-system-probe-check/files/default/clang-bpf": "opt/datadog-agent/embedded/bin", + "test/kitchen/site-cookbooks/dd-system-probe-check/files/default/llc-bpf": "opt/datadog-agent/embedded/bin", + "test/kitchen/site-cookbooks/dd-system-probe-check/files/default/gotestsum": "go/bin", + "test/kitchen/site-cookbooks/dd-system-probe-check/files/default/test2json": "go/bin", + "test/new-e2e/system-probe/test/micro-vm-init.sh": "./" + }, + "build": { + "test-runner": { + "directory": "test/new-e2e/system-probe/test-runner", + "command": "GOOS=linux go build -o test-runner", + "artifact": "test/new-e2e/system-probe/test-runner/test-runner" + }, + "test-json_review": { + "directory": "test/new-e2e/system-probe/test-json-review", + "command": "GOOS=linux go build -o test-json-review", + "artifact": "test/new-e2e/system-probe/test-json-review/test-json-review" + } + } +} diff --git a/test/new-e2e/system-probe/test-runner/main.go b/test/new-e2e/system-probe/test-runner/main.go index 535ee020f2d100..d0835a4dc26731 100644 --- a/test/new-e2e/system-probe/test-runner/main.go +++ b/test/new-e2e/system-probe/test-runner/main.go @@ -41,20 +41,18 @@ type packageRunConfiguration struct { } type testConfig struct { + runCount int retryCount int + verbose bool packagesRunConfig map[string]packageRunConfiguration + testDirRoot string } -const ( - testDirRoot = "/system-probe-tests" - ciVisibility = "/ci-visibility" -) +const ciVisibility = "/ci-visibility" var baseEnv = []string{ "GITLAB_CI=true", // force color output support to be detected "GOVERSION=" + runtime.Version(), - "DD_SYSTEM_PROBE_BPF_DIR=" + filepath.Join(testDirRoot, "pkg/ebpf/bytecode/build"), - "DD_SERVICE_MONITORING_CONFIG_TLS_JAVA_DIR=" + filepath.Join(testDirRoot, "pkg/network/protocols/tls/java"), } var timeouts = map[*regexp.Regexp]time.Duration{ @@ -102,20 +100,19 @@ func glob(dir, filePattern string, filterFn func(path string) bool) ([]string, e return matches, nil } -func pathToPackage(path string) string { - dir, _ := filepath.Rel(testDirRoot, filepath.Dir(path)) - return dir -} - func buildCommandArgs(pkg string, xmlpath string, jsonpath string, file string, testConfig *testConfig) []string { + verbosity := "testname" + if testConfig.verbose { + verbosity = "standard-verbose" + } args := []string{ - "--format", "testname", + "--format", verbosity, "--junitfile", xmlpath, "--jsonfile", jsonpath, fmt.Sprintf("--rerun-fails=%d", testConfig.retryCount), "--rerun-fails-max-failures=100", "--raw-command", "--", - "/go/bin/test2json", "-t", "-p", pkg, file, "-test.v", "-test.count=1", "-test.timeout=" + getTimeout(pkg).String(), + "/go/bin/test2json", "-t", "-p", pkg, file, "-test.v", fmt.Sprintf("-test.count=%d", testConfig.runCount), "-test.timeout=" + getTimeout(pkg).String(), } packagesRunConfig := testConfig.packagesRunConfig @@ -166,8 +163,8 @@ func createDir(d string) error { } func testPass(testConfig *testConfig, props map[string]string) error { - testsuites, err := glob(testDirRoot, "testsuite", func(path string) bool { - dir := pathToPackage(path) + testsuites, err := glob(testConfig.testDirRoot, "testsuite", func(path string) bool { + dir, _ := filepath.Rel(testConfig.testDirRoot, filepath.Dir(path)) if config, ok := testConfig.packagesRunConfig[dir]; ok { return !config.Exclude @@ -193,13 +190,21 @@ func testPass(testConfig *testConfig, props map[string]string) error { } for _, testsuite := range testsuites { - pkg := pathToPackage(testsuite) + pkg, err := filepath.Rel(testConfig.testDirRoot, filepath.Dir(testsuite)) + if err != nil { + return fmt.Errorf("could not get relative path for %s: %w", testsuite, err) + } junitfilePrefix := strings.ReplaceAll(pkg, "/", "-") xmlpath := filepath.Join(xmlDir, fmt.Sprintf("%s.xml", junitfilePrefix)) jsonpath := filepath.Join(jsonDir, fmt.Sprintf("%s.json", junitfilePrefix)) args := buildCommandArgs(pkg, xmlpath, jsonpath, testsuite, testConfig) cmd := exec.Command("/go/bin/gotestsum", args...) + baseEnv = append( + baseEnv, + "DD_SYSTEM_PROBE_BPF_DIR="+filepath.Join(testConfig.testDirRoot, "pkg/ebpf/bytecode/build"), + "DD_SERVICE_MONITORING_CONFIG_TLS_JAVA_DIR="+filepath.Join(testConfig.testDirRoot, "pkg/network/protocols/tls/java"), + ) cmd.Env = append(cmd.Environ(), baseEnv...) cmd.Dir = filepath.Dir(testsuite) cmd.Stdout = os.Stdout @@ -207,7 +212,7 @@ func testPass(testConfig *testConfig, props map[string]string) error { if err := cmd.Run(); err != nil { // log but do not return error - fmt.Fprintf(os.Stderr, "cmd run %s: %s", testsuite, err) + fmt.Fprintf(os.Stderr, "cmd run %s: %s\n", testsuite, err) } if err := addProperties(xmlpath, props); err != nil { @@ -224,6 +229,9 @@ func testPass(testConfig *testConfig, props map[string]string) error { func buildTestConfiguration() (*testConfig, error) { retryPtr := flag.Int("retry", 2, "number of times to retry testing pass") packageRunConfigPtr := flag.String("packages-run-config", "", "Configuration for controlling which tests run in a package") + verbose := flag.Bool("verbose", false, "if set to true verbosity level is 'standard-verbose', otherwise it is 'testname'") + runCount := flag.Int("run-count", 1, "number of times to run the test") + testRoot := flag.String("test-root", "/opt/kernel-version-testing/system-probe-tests", "directory containing test packages") flag.Parse() @@ -243,8 +251,11 @@ func buildTestConfiguration() (*testConfig, error) { } return &testConfig{ + runCount: *runCount, + verbose: *verbose, retryCount: *retryPtr, packagesRunConfig: breakdown, + testDirRoot: *testRoot, }, nil } @@ -297,7 +308,7 @@ func pathEmbedded(fullPath, embedded string) bool { return strings.Contains(fullPath, normalized) } -func fixAssetPermissions() error { +func fixAssetPermissions(testDirRoot string) error { matches, err := glob(testDirRoot, `.*\.o`, func(path string) bool { return pathEmbedded(path, "pkg/ebpf/bytecode/build") }) @@ -324,7 +335,7 @@ func run() error { return fmt.Errorf("failed to build test configuration: %w", err) } - if err := fixAssetPermissions(); err != nil { + if err := fixAssetPermissions(testConfig.testDirRoot); err != nil { return fmt.Errorf("asset perms: %s", err) } diff --git a/test/new-e2e/system-probe/test/micro-vm-init.sh b/test/new-e2e/system-probe/test/micro-vm-init.sh index d49cc8a111cc28..3762ab87d1fd30 100755 --- a/test/new-e2e/system-probe/test/micro-vm-init.sh +++ b/test/new-e2e/system-probe/test/micro-vm-init.sh @@ -1,8 +1,7 @@ #!/bin/bash set -eEuxo pipefail -retry_count=$1 -pkgs_run_config_file=$2 +runner_config=$@ docker_dir=/kmt-dockers # Add provisioning steps here ! @@ -16,7 +15,7 @@ fi # Start tests code=0 -/test-runner -retry "${retry_count}" -packages-run-config "${pkgs_run_config_file}" || code=$? +/test-runner $runner_config || code=$? if [[ -f "/job_env.txt" ]]; then cp /job_env.txt /ci-visibility/junit/ diff --git a/test/new-e2e/system-probe/test/setup-microvm-deps.sh b/test/new-e2e/system-probe/test/setup-microvm-deps.sh deleted file mode 100755 index 17933ccdc2cd3e..00000000000000 --- a/test/new-e2e/system-probe/test/setup-microvm-deps.sh +++ /dev/null @@ -1,50 +0,0 @@ -#!/bin/bash - -set -eo xtrace - -STACK=$1 -USER_ID=$2 -GROUP_ID=$3 -ARCH=$4 - -DD_AGENT_TESTING_DIR=/datadog-agent -ROOT_DIR=kmt-deps - -rm -rf $ROOT_DIR/$STACK/dependencies -mkdir -p $ROOT_DIR/$STACK/dependencies -DEPENDENCIES=$(realpath $ROOT_DIR/$STACK/dependencies) - -ARCHIVE_NAME=dependencies-x86_64.tar.gz -CLANG_BPF=$DD_AGENT_TESTING_DIR/test/kitchen/site-cookbooks/dd-system-probe-check/files/default/clang-bpf -LLC_BPF=$DD_AGENT_TESTING_DIR/test/kitchen/site-cookbooks/dd-system-probe-check/files/default/llc-bpf -GO_BIN=go/bin -GOTESTSUM=$DD_AGENT_TESTING_DIR/test/kitchen/site-cookbooks/dd-system-probe-check/files/default/gotestsum -TEST2JSON=$DD_AGENT_TESTING_DIR/test/kitchen/site-cookbooks/dd-system-probe-check/files/default/test2json -EMBEDDED_BIN=opt/datadog-agent/embedded/bin -EMBEDDED_INC=opt/datadog-agent/embedded/include -SYSTEM_PROBE_TESTS=/opt/system-probe-tests - -[ -f $TEST2JSON ] || sudo cp $(go env GOTOOLDIR)/test2json $TEST2JSON - -pushd $DEPENDENCIES -mkdir -p $EMBEDDED_BIN -sudo install -d -m 0777 -o $USER_ID -g $GROUP_ID $SYSTEM_PROBE_TESTS -cp $CLANG_BPF $EMBEDDED_BIN -cp $LLC_BPF $EMBEDDED_BIN -mkdir -p $EMBEDDED_INC -mkdir -p $GO_BIN -cp $GOTESTSUM $GO_BIN -cp $TEST2JSON $GO_BIN -mkdir junit testjson pkgjson -cp $DD_AGENT_TESTING_DIR/test/new-e2e/system-probe/test/micro-vm-init.sh ./ - -pushd "${DD_AGENT_TESTING_DIR}/test/new-e2e/system-probe/test-runner" && GOOS=linux go build -o "${DEPENDENCIES}/test-runner" && popd -pushd "${DD_AGENT_TESTING_DIR}/test/new-e2e/system-probe/test-json-review" && GOOS=linux go build -o "${DEPENDENCIES}/test-json-review" && popd - -popd - -ls -la $DEPENDENCIES -pushd $ROOT_DIR/$STACK -tar czvf $ARCHIVE_NAME dependencies -popd - From e73880766b5952f6f8c2a212349e93f2f6006650 Mon Sep 17 00:00:00 2001 From: Daniel Lavie Date: Thu, 7 Mar 2024 15:36:41 +0200 Subject: [PATCH 066/155] Agent Goland run configuration fix (#23359) * Removed --sysprobe-config from the agent run configuration * Added missing space --- .run/Run agent.run.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.run/Run agent.run.xml b/.run/Run agent.run.xml index 010bdc85481520..565c1c7b8ad5d7 100644 --- a/.run/Run agent.run.xml +++ b/.run/Run agent.run.xml @@ -15,7 +15,7 @@ - + From 2109dadf4aee8a2232e4f81885e5c2c7cb96406f Mon Sep 17 00:00:00 2001 From: Pedro Lambert Date: Thu, 7 Mar 2024 08:47:14 -0500 Subject: [PATCH 067/155] [USMON-384] Use eBPF ring buffers when supported (#22350) * [usm] Add support for ring buffers * [usm] Strip out calls to ring buffer helper * [usm] Ensure ring buffer size is a power of 2 * [usm] Add comment about interface check * Fix typo Co-authored-by: Guy Arbitman * Improve readability of map initialization Co-authored-by: Guy Arbitman * Fix macro identation * Use `u16` types for representing CPU numbers * Log error message * Add configuration param * Update noop instruction * Update variable name --------- Co-authored-by: Guy Arbitman --- cmd/system-probe/config/adjust_usm.go | 1 + pkg/config/setup/system_probe.go | 1 + pkg/ebpf/perf.go | 58 ++--- pkg/ebpf/perf_data_event.go | 42 ++++ pkg/ebpf/perf_ring_buffer.go | 78 +++++++ pkg/network/config/config.go | 7 + pkg/network/ebpf/c/protocols/events-types.h | 5 +- pkg/network/ebpf/c/protocols/events.h | 25 +- pkg/network/protocols/events/batch_reader.go | 11 +- pkg/network/protocols/events/configuration.go | 218 ++++++++++++++---- pkg/network/protocols/events/consumer.go | 26 ++- pkg/network/protocols/events/consumer_test.go | 2 +- pkg/network/protocols/events/types_linux.go | 5 +- pkg/network/protocols/http/protocol.go | 2 +- pkg/network/protocols/http2/dynamic_table.go | 10 +- pkg/network/protocols/http2/protocol.go | 4 +- pkg/network/protocols/kafka/protocol.go | 2 +- .../tracer/connection/tcp_close_consumer.go | 6 +- pkg/network/usm/sharedlibraries/watcher.go | 6 +- 19 files changed, 403 insertions(+), 106 deletions(-) create mode 100644 pkg/ebpf/perf_data_event.go create mode 100644 pkg/ebpf/perf_ring_buffer.go diff --git a/cmd/system-probe/config/adjust_usm.go b/cmd/system-probe/config/adjust_usm.go index c96ad6222bb125..4e19f8a176024d 100644 --- a/cmd/system-probe/config/adjust_usm.go +++ b/cmd/system-probe/config/adjust_usm.go @@ -46,6 +46,7 @@ func adjustUSM(cfg config.Config) { deprecateBool(cfg, smNS("process_service_inference", "use_windows_service_name"), spNS("process_service_inference", "use_windows_service_name")) applyDefault(cfg, spNS("process_service_inference", "enabled"), false) applyDefault(cfg, spNS("process_service_inference", "use_windows_service_name"), true) + applyDefault(cfg, smNS("enable_ring_buffers"), true) validateInt(cfg, smNS("http_notification_threshold"), cfg.GetInt(smNS("max_tracked_http_connections"))/2, func(v int) error { limit := cfg.GetInt(smNS("max_tracked_http_connections")) diff --git a/pkg/config/setup/system_probe.go b/pkg/config/setup/system_probe.go index 04e4eda4ba0ef0..9d3e35ecb49991 100644 --- a/pkg/config/setup/system_probe.go +++ b/pkg/config/setup/system_probe.go @@ -242,6 +242,7 @@ func InitSystemProbeConfig(cfg pkgconfigmodel.Config) { cfg.BindEnv(join(smNS, "max_concurrent_requests")) cfg.BindEnv(join(smNS, "enable_quantization")) cfg.BindEnv(join(smNS, "enable_connection_rollup")) + cfg.BindEnv(join(smNS, "enable_ring_buffers")) oldHTTPRules := join(netNS, "http_replace_rules") newHTTPRules := join(smNS, "http_replace_rules") diff --git a/pkg/ebpf/perf.go b/pkg/ebpf/perf.go index cf362331a32cfc..befb9fd26129ae 100644 --- a/pkg/ebpf/perf.go +++ b/pkg/ebpf/perf.go @@ -15,42 +15,34 @@ import ( manager "github.com/DataDog/ebpf-manager" ) -// PerfHandler wraps an eBPF perf buffer -type PerfHandler struct { - DataChannel chan *DataEvent - LostChannel chan uint64 - RecordGetter func() *perf.Record - once sync.Once - closed bool +var recordPool = sync.Pool{ + New: func() interface{} { + return new(perf.Record) + }, } -// DataEvent is a single event read from a perf buffer -type DataEvent struct { - CPU int - Data []byte - - r *perf.Record -} +// PerfHandler implements EventHandler +// this line is just a static check of the interface +var _ EventHandler = new(PerfHandler) -// Done returns the data buffer back to a sync.Pool -func (d *DataEvent) Done() { - recordPool.Put(d.r) -} +// PerfHandler wraps an eBPF perf buffer +type PerfHandler struct { + RecordGetter func() *perf.Record -var recordPool = sync.Pool{ - New: func() interface{} { - return &perf.Record{} - }, + dataChannel chan *DataEvent + lostChannel chan uint64 + once sync.Once + closed bool } // NewPerfHandler creates a PerfHandler func NewPerfHandler(dataChannelSize int) *PerfHandler { return &PerfHandler{ - DataChannel: make(chan *DataEvent, dataChannelSize), - LostChannel: make(chan uint64, 10), RecordGetter: func() *perf.Record { return recordPool.Get().(*perf.Record) }, + dataChannel: make(chan *DataEvent, dataChannelSize), + lostChannel: make(chan uint64, 10), } } @@ -59,7 +51,7 @@ func (c *PerfHandler) LostHandler(_ int, lostCount uint64, _ *manager.PerfMap, _ if c.closed { return } - c.LostChannel <- lostCount + c.lostChannel <- lostCount } // RecordHandler is the callback intended to be used when configuring PerfMapOptions @@ -68,14 +60,24 @@ func (c *PerfHandler) RecordHandler(record *perf.Record, _ *manager.PerfMap, _ * return } - c.DataChannel <- &DataEvent{CPU: record.CPU, Data: record.RawSample, r: record} + c.dataChannel <- &DataEvent{CPU: record.CPU, Data: record.RawSample, pr: record} +} + +// DataChannel returns the channel with event data +func (c *PerfHandler) DataChannel() <-chan *DataEvent { + return c.dataChannel +} + +// LostChannel returns the channel with lost events +func (c *PerfHandler) LostChannel() <-chan uint64 { + return c.lostChannel } // Stop stops the perf handler and closes both channels func (c *PerfHandler) Stop() { c.once.Do(func() { c.closed = true - close(c.DataChannel) - close(c.LostChannel) + close(c.dataChannel) + close(c.lostChannel) }) } diff --git a/pkg/ebpf/perf_data_event.go b/pkg/ebpf/perf_data_event.go new file mode 100644 index 00000000000000..d588bb0bac9029 --- /dev/null +++ b/pkg/ebpf/perf_data_event.go @@ -0,0 +1,42 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +//go:build linux_bpf + +package ebpf + +import ( + "github.com/cilium/ebpf/perf" + "github.com/cilium/ebpf/ringbuf" +) + +// EventHandler is the common interface shared across perf map and perf ring +// buffer handlers +type EventHandler interface { + DataChannel() <-chan *DataEvent + LostChannel() <-chan uint64 + Stop() +} + +// DataEvent encapsulates a single event read from a perf buffer +type DataEvent struct { + CPU int + Data []byte + + pr *perf.Record + rr *ringbuf.Record +} + +// Done returns the data buffer back to a sync.Pool +func (d *DataEvent) Done() { + if d.pr != nil { + recordPool.Put(d.pr) + return + } + + if d.rr != nil { + ringPool.Put(d.rr) + } +} diff --git a/pkg/ebpf/perf_ring_buffer.go b/pkg/ebpf/perf_ring_buffer.go new file mode 100644 index 00000000000000..5c5ea5acad3ea7 --- /dev/null +++ b/pkg/ebpf/perf_ring_buffer.go @@ -0,0 +1,78 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +//go:build linux_bpf + +package ebpf + +import ( + "sync" + + "github.com/cilium/ebpf/ringbuf" + + manager "github.com/DataDog/ebpf-manager" +) + +var ringPool = sync.Pool{ + New: func() interface{} { + return new(ringbuf.Record) + }, +} + +// RingBufferHandler implements EventHandler +// this line is just a static check of the interface +var _ EventHandler = new(RingBufferHandler) + +// RingBufferHandler wraps an eBPF ring buffer +type RingBufferHandler struct { + RecordGetter func() *ringbuf.Record + + dataChannel chan *DataEvent + lostChannel chan uint64 + once sync.Once + closed bool +} + +// NewRingBufferHandler creates a RingBufferHandler +func NewRingBufferHandler(dataChannelSize int) *RingBufferHandler { + return &RingBufferHandler{ + RecordGetter: func() *ringbuf.Record { + return ringPool.Get().(*ringbuf.Record) + }, + dataChannel: make(chan *DataEvent, dataChannelSize), + // This channel is not really used in the context of ring buffers but + // it's here so `RingBufferHandler` and `PerfHandler` can be used + // interchangeably + lostChannel: make(chan uint64, 1), + } +} + +// RecordHandler is the callback intended to be used when configuring PerfMapOptions +func (c *RingBufferHandler) RecordHandler(record *ringbuf.Record, _ *manager.RingBuffer, _ *manager.Manager) { + if c.closed { + return + } + + c.dataChannel <- &DataEvent{Data: record.RawSample, rr: record, CPU: -1} +} + +// DataChannel returns the channel with event data +func (c *RingBufferHandler) DataChannel() <-chan *DataEvent { + return c.dataChannel +} + +// LostChannel returns the channel with lost events +func (c *RingBufferHandler) LostChannel() <-chan uint64 { + return c.lostChannel +} + +// Stop stops the perf handler and closes both channels +func (c *RingBufferHandler) Stop() { + c.once.Do(func() { + c.closed = true + close(c.dataChannel) + close(c.lostChannel) + }) +} diff --git a/pkg/network/config/config.go b/pkg/network/config/config.go index 4f18d2a0152555..515b8780c5329c 100644 --- a/pkg/network/config/config.go +++ b/pkg/network/config/config.go @@ -267,6 +267,12 @@ type Config struct { // EnableUSMConnectionRollup enables the aggregation of connection data belonging to a same (client, server) pair EnableUSMConnectionRollup bool + + // EnableUSMRingBuffers enables the use of eBPF Ring Buffer types on + // supported kernels. + // Defaults to true. Setting this to false on a Kernel that supports ring + // buffers (>=5.8) will result in forcing the use of Perf Maps instead. + EnableUSMRingBuffers bool } func join(pieces ...string) string { @@ -366,6 +372,7 @@ func New() *Config { EnableHTTPStatsByStatusCode: cfg.GetBool(join(smNS, "enable_http_stats_by_status_code")), EnableUSMQuantization: cfg.GetBool(join(smNS, "enable_quantization")), EnableUSMConnectionRollup: cfg.GetBool(join(smNS, "enable_connection_rollup")), + EnableUSMRingBuffers: cfg.GetBool(join(smNS, "enable_ring_buffers")), } httpRRKey := join(smNS, "http_replace_rules") diff --git a/pkg/network/ebpf/c/protocols/events-types.h b/pkg/network/ebpf/c/protocols/events-types.h index ebced51edca892..6ffa4c28f1f883 100644 --- a/pkg/network/ebpf/c/protocols/events-types.h +++ b/pkg/network/ebpf/c/protocols/events-types.h @@ -20,13 +20,14 @@ typedef struct { // this struct is used in the map lookup that returns the active batch for a certain CPU core typedef struct { - __u32 cpu; + __u16 cpu; // page_num can be obtained from (batch_state_t->idx % BATCHES_PER_CPU) - __u32 page_num; + __u16 page_num; } batch_key_t; typedef struct { __u64 idx; + __u16 cpu; __u16 len; __u16 cap; __u16 event_size; diff --git a/pkg/network/ebpf/c/protocols/events.h b/pkg/network/ebpf/c/protocols/events.h index 3fe1c3dec678a6..a7336e4b011c4c 100644 --- a/pkg/network/ebpf/c/protocols/events.h +++ b/pkg/network/ebpf/c/protocols/events.h @@ -38,6 +38,11 @@ /* batch is not ready to be flushed */ \ return; \ } \ + \ + u64 use_ring_buffer; \ + LOAD_CONSTANT("use_ring_buffer", use_ring_buffer); \ + long perf_ret; \ + \ _Pragma(_STR(unroll(BATCH_PAGES_PER_CPU))) \ for (int i = 0; i < BATCH_PAGES_PER_CPU; i++) { \ if (batch_state->idx_to_flush == batch_state->idx) return; \ @@ -48,14 +53,18 @@ return; \ } \ \ - long ret = bpf_perf_event_output(ctx, \ - &name##_batch_events, \ - key.cpu, \ - batch, \ - sizeof(batch_data_t)); \ - if (ret < 0) { \ - _LOG(name, "batch flush error: cpu: %d idx: %d err:%d", \ - key.cpu, batch->idx, ret); \ + if (use_ring_buffer) { \ + perf_ret = bpf_ringbuf_output(&name##_batch_events, batch, sizeof(batch_data_t), 0);\ + } else { \ + perf_ret = bpf_perf_event_output(ctx, \ + &name##_batch_events, \ + key.cpu, \ + batch, \ + sizeof(batch_data_t)); \ + } \ + if (perf_ret < 0) { \ + _LOG(name, "batch flush error: cpu: %d idx: %d err: %d", \ + key.cpu, batch->idx, perf_ret); \ batch->failed_flushes++; \ return; \ } \ diff --git a/pkg/network/protocols/events/batch_reader.go b/pkg/network/protocols/events/batch_reader.go index 3193579ddafcb3..3e17febfe63326 100644 --- a/pkg/network/protocols/events/batch_reader.go +++ b/pkg/network/protocols/events/batch_reader.go @@ -32,8 +32,12 @@ func newBatchReader(offsetManager *offsetManager, batchMap *maps.GenericMap[batc // initialize eBPF maps batch := new(batch) for i := 0; i < numCPUs; i++ { + // Ring buffer events don't have CPU information, so we associate each + // batch entry with a CPU during startup. This information is used by + // the code that does the batch offset tracking. + batch.Cpu = uint16(i) for j := 0; j < batchPagesPerCPU; j++ { - key := &batchKey{Cpu: uint32(i), Num: uint32(j)} + key := &batchKey{Cpu: batch.Cpu, Num: uint16(j)} err := batchMap.Put(key, batch) if err != nil { return nil, err @@ -110,8 +114,9 @@ func (r *batchReader) Stop() { func (r *batchReader) generateBatchKey(cpu int) (batchID int, key *batchKey) { batchID = r.offsets.NextBatchID(cpu) + pageNum := uint64(batchID) % uint64(batchPagesPerCPU) return batchID, &batchKey{ - Cpu: uint32(cpu), - Num: uint32(batchID) % uint32(batchPagesPerCPU), + Cpu: uint16(cpu), + Num: uint16(pageNum), } } diff --git a/pkg/network/protocols/events/configuration.go b/pkg/network/protocols/events/configuration.go index 0e58787407cc4c..ba07fdb5ce4e86 100644 --- a/pkg/network/protocols/events/configuration.go +++ b/pkg/network/protocols/events/configuration.go @@ -8,45 +8,199 @@ package events import ( + "math" "os" "sync" manager "github.com/DataDog/ebpf-manager" + "github.com/cilium/ebpf" + "github.com/cilium/ebpf/asm" + "github.com/cilium/ebpf/features" ddebpf "github.com/DataDog/datadog-agent/pkg/ebpf" + "github.com/DataDog/datadog-agent/pkg/network/config" + "github.com/DataDog/datadog-agent/pkg/network/usm/utils" "github.com/DataDog/datadog-agent/pkg/util/kernel" "github.com/DataDog/datadog-agent/pkg/util/log" ) -// handlerByProtocol holds a temporary reference to a `ddebpf.PerfHandler` -// instance for a given protocol. This is done to simplify the usage of this -// package a little bit, so a call to `events.Configure` can be later linked -// to a call to `events.NewConsumer` without the need to explicitly propagate -// any values. The map is guarded by `handlerMux`. -var handlerByProtocol map[string]*ddebpf.PerfHandler -var handlerMux sync.Mutex +// defaultPerfBufferSize controls the amount of memory in bytes used *per CPU* +// allocated for buffering perf event data +var defaultPerfEventBufferSize = 16 * os.Getpagesize() + +// defaultPerfHandlerSize controls the size of the go channel that buffers perf +// events (*ddebpf.PerfHandler). All perf events handled by this library have +// fixed size (sizeof(batch_data_t)) which is ~4KB, so by choosing a value of +// 100 we'll be buffering up to ~400KB of data in *Go* heap memory. +const defaultPerfHandlerSize = 100 -// Configure event processing -// Must be called *before* manager.InitWithOptions -func Configure(proto string, m *manager.Manager, o *manager.Options) { - setupPerfMap(proto, m) - onlineCPUs, err := kernel.PossibleCPUs() +// Configure a given `*manager.Manager` for event processing +// This essentially instantiates the perf map/ring buffers and configure the +// eBPF maps where events are enqueued. +// Note this must be called *before* manager.InitWithOptions +func Configure(cfg *config.Config, proto string, m *manager.Manager, o *manager.Options) { + if alreadySetUp(proto, m) { + return + } + + numCPUs, err := kernel.PossibleCPUs() if err != nil { - onlineCPUs = 96 + numCPUs = 96 log.Error("unable to detect number of CPUs. assuming 96 cores") } + configureBatchMaps(proto, o, numCPUs) + + useRingBuffer := cfg.EnableUSMRingBuffers && features.HaveMapType(ebpf.RingBuf) == nil + utils.AddBoolConst(o, useRingBuffer, "use_ring_buffer") + + if useRingBuffer { + setupPerfRing(proto, m, o, numCPUs) + } else { + setupPerfMap(proto, m) + } +} + +func setupPerfMap(proto string, m *manager.Manager) { + handler := ddebpf.NewPerfHandler(defaultPerfHandlerSize) + mapName := eventMapName(proto) + pm := &manager.PerfMap{ + Map: manager.Map{Name: mapName}, + PerfMapOptions: manager.PerfMapOptions{ + PerfRingBufferSize: defaultPerfEventBufferSize, + + // Our events are already batched on the kernel side, so it's + // desirable to have Watermark set to 1 + Watermark: 1, + + RecordHandler: handler.RecordHandler, + LostHandler: handler.LostHandler, + RecordGetter: handler.RecordGetter, + }, + } + m.PerfMaps = append(m.PerfMaps, pm) + removeRingBufferHelperCalls(m) + setHandler(proto, handler) +} + +func setupPerfRing(proto string, m *manager.Manager, o *manager.Options, numCPUs int) { + handler := ddebpf.NewRingBufferHandler(defaultPerfHandlerSize) + mapName := eventMapName(proto) + ringBufferSize := toPowerOf2(numCPUs * defaultPerfEventBufferSize) + rb := &manager.RingBuffer{ + Map: manager.Map{Name: mapName}, + RingBufferOptions: manager.RingBufferOptions{ + RingBufferSize: ringBufferSize, + RecordHandler: handler.RecordHandler, + RecordGetter: handler.RecordGetter, + }, + } + + o.MapSpecEditors[mapName] = manager.MapSpecEditor{ + Type: ebpf.RingBuf, + MaxEntries: uint32(ringBufferSize), + KeySize: 0, + ValueSize: 0, + EditorFlag: manager.EditType | manager.EditMaxEntries | manager.EditKeyValue, + } + + m.RingBuffers = append(m.RingBuffers, rb) + setHandler(proto, handler) +} + +func configureBatchMaps(proto string, o *manager.Options, numCPUs int) { if o.MapSpecEditors == nil { o.MapSpecEditors = make(map[string]manager.MapSpecEditor) } o.MapSpecEditors[proto+batchMapSuffix] = manager.MapSpecEditor{ - MaxEntries: uint32(onlineCPUs * batchPagesPerCPU), + MaxEntries: uint32(numCPUs * batchPagesPerCPU), EditorFlag: manager.EditMaxEntries, } } -func getHandler(proto string) *ddebpf.PerfHandler { +func eventMapName(proto string) string { + return proto + eventsMapSuffix +} + +// noopInstruction is used for the purposes of eBPF patching (see comments +// below) +// we're using here the same noop instruction used internally by the verifier: +// https://elixir.bootlin.com/linux/v6.7/source/kernel/bpf/verifier.c#L18582 +var noopInstruction = asm.Instruction{ + OpCode: asm.Ja.Op(asm.ImmSource), + Constant: 0, +} + +// removeRingBufferHelperCalls is called only in the context of kernels that +// don't support ring buffers. our eBPF code looks more or less like the +// following: +// +// if (ring_buffers_supported) { +// bpf_ringbuf_output(); +// } else { +// bpf_perf_event_output(); +// } +// +// where `ring_buffers_supported` is an injected constant. The code above seems +// to work on the vast majority of kernel versions due to dead code elimination +// by the verifier, so for kernels that don't support ring buffers +// (ring_buffers_supported=0) we only see the perf event helper call when doing +// a program dump: +// +// bpf_perf_event_output(); +// +// *However* in some instances this is not working on 4.14, so here we +// essentially replace `bpf_ringbuf_output` helper calls by a noop operation so +// they don't result in verifier errors even when deadcode elimination fails. +func removeRingBufferHelperCalls(m *manager.Manager) { + m.InstructionPatchers = append(m.InstructionPatchers, func(m *manager.Manager) error { + progs, err := m.GetProgramSpecs() + if err != nil { + return err + } + + for _, p := range progs { + iter := p.Instructions.Iterate() + for iter.Next() { + ins := iter.Ins + if ins.IsBuiltinCall() && ins.Constant == int64(asm.FnRingbufOutput) { + *ins = noopInstruction + } + } + } + + return nil + }) +} + +func alreadySetUp(proto string, m *manager.Manager) bool { + // check if we already have configured this perf map this can happen in the + // context of a failed program load succeeded by another attempt + mapName := eventMapName(proto) + for _, perfMap := range m.PerfMaps { + if perfMap.Map.Name == mapName { + return true + } + } + for _, perfMap := range m.RingBuffers { + if perfMap.Map.Name == mapName { + return true + } + } + + return false +} + +// handlerByProtocol acts as registry holding a temporary reference to a +// `ddebpf.Handler` instance for a given protocol. This is done to simplify the +// usage of this package a little bit, so a call to `events.Configure` can be +// later linked to a call to `events.NewConsumer` without the need to explicitly +// propagate any values. The map is guarded by `handlerMux`. +var handlerByProtocol map[string]ddebpf.EventHandler +var handlerMux sync.Mutex + +func getHandler(proto string) ddebpf.EventHandler { handlerMux.Lock() defer handlerMux.Unlock() if handlerByProtocol == nil { @@ -58,33 +212,17 @@ func getHandler(proto string) *ddebpf.PerfHandler { return handler } -func setupPerfMap(proto string, m *manager.Manager) { - // check if we already have configured this perf map - // this can happen in the context of a failed program load succeeded by another attempt - mapName := proto + eventsMapSuffix - for _, perfMap := range m.PerfMaps { - if perfMap.Map.Name == mapName { - return - } - } - - handler := ddebpf.NewPerfHandler(100) - pm := &manager.PerfMap{ - Map: manager.Map{Name: mapName}, - PerfMapOptions: manager.PerfMapOptions{ - PerfRingBufferSize: 16 * os.Getpagesize(), - Watermark: 1, - RecordHandler: handler.RecordHandler, - LostHandler: handler.LostHandler, - RecordGetter: handler.RecordGetter, - }, - } - m.PerfMaps = append(m.PerfMaps, pm) - +func setHandler(proto string, handler ddebpf.EventHandler) { handlerMux.Lock() + defer handlerMux.Unlock() if handlerByProtocol == nil { - handlerByProtocol = make(map[string]*ddebpf.PerfHandler) + handlerByProtocol = make(map[string]ddebpf.EventHandler) } handlerByProtocol[proto] = handler - handlerMux.Unlock() +} + +// toPowerOf2 converts a number to its nearest power of 2 +func toPowerOf2(x int) int { + log := math.Log2(float64(x)) + return int(math.Pow(2, math.Round(log))) } diff --git a/pkg/network/protocols/events/consumer.go b/pkg/network/protocols/events/consumer.go index 682972c03760a7..f5f3148b6ed2f1 100644 --- a/pkg/network/protocols/events/consumer.go +++ b/pkg/network/protocols/events/consumer.go @@ -18,6 +18,7 @@ import ( ddebpf "github.com/DataDog/datadog-agent/pkg/ebpf" "github.com/DataDog/datadog-agent/pkg/ebpf/maps" "github.com/DataDog/datadog-agent/pkg/network/protocols/telemetry" + "github.com/DataDog/datadog-agent/pkg/util/kernel" "github.com/DataDog/datadog-agent/pkg/util/log" ) @@ -35,7 +36,7 @@ type Consumer[V any] struct { proto string syncRequest chan (chan struct{}) offsets *offsetManager - handler *ddebpf.PerfHandler + handler ddebpf.EventHandler batchReader *batchReader callback func([]V) @@ -62,13 +63,12 @@ func NewConsumer[V any](proto string, ebpf *manager.Manager, callback func([]V)) return nil, fmt.Errorf("unable to find map %s: %s", batchMapName, err) } - eventsMapName := proto + eventsMapSuffix - eventsMap, found, _ := ebpf.GetMap(eventsMapName) - if !found { - return nil, fmt.Errorf("unable to find map %s", eventsMapName) + numCPUs, err := kernel.PossibleCPUs() + if err != nil { + numCPUs = 96 + log.Errorf("unable to detect number of CPUs. assuming 96 cores: %s", err) } - numCPUs := int(eventsMap.MaxEntries()) offsets := newOffsetManager(numCPUs) batchReader, err := newBatchReader(offsets, batchMap, numCPUs) if err != nil { @@ -126,9 +126,11 @@ func (c *Consumer[V]) Start() { c.eventLoopWG.Add(1) go func() { defer c.eventLoopWG.Done() + dataChannel := c.handler.DataChannel() + lostChannel := c.handler.LostChannel() for { select { - case dataEvent, ok := <-c.handler.DataChannel: + case dataEvent, ok := <-dataChannel: if !ok { return } @@ -143,9 +145,9 @@ func (c *Consumer[V]) Start() { c.failedFlushesCount.Add(int64(b.Failed_flushes)) c.kernelDropsCount.Add(int64(b.Dropped_events)) - c.process(dataEvent.CPU, b, false) + c.process(b, false) dataEvent.Done() - case _, ok := <-c.handler.LostChannel: + case _, ok := <-lostChannel: if !ok { return } @@ -158,7 +160,7 @@ func (c *Consumer[V]) Start() { } c.batchReader.ReadAll(func(cpu int, b *batch) { - c.process(cpu, b, true) + c.process(b, true) }) log.Infof("usm events summary: name=%q %s", c.proto, c.metricGroup.Summary()) close(done) @@ -200,7 +202,9 @@ func (c *Consumer[V]) Stop() { close(c.syncRequest) } -func (c *Consumer[V]) process(cpu int, b *batch, syncing bool) { +func (c *Consumer[V]) process(b *batch, syncing bool) { + cpu := int(b.Cpu) + // Determine the subset of data we're interested in as we might have read // part of this batch before during a Sync() call begin, end := c.offsets.Get(cpu, b, syncing) diff --git a/pkg/network/protocols/events/consumer_test.go b/pkg/network/protocols/events/consumer_test.go index 93d16157fd2faf..54c1212a669f5e 100644 --- a/pkg/network/protocols/events/consumer_test.go +++ b/pkg/network/protocols/events/consumer_test.go @@ -161,7 +161,7 @@ func newEBPFProgram(c *config.Config) (*manager.Manager, error) { }, } - Configure("test", m, &options) + Configure(config.New(), "test", m, &options) err = m.InitWithOptions(bc, options) if err != nil { return nil, err diff --git a/pkg/network/protocols/events/types_linux.go b/pkg/network/protocols/events/types_linux.go index b8e3e89365db36..e0d408f118ada4 100644 --- a/pkg/network/protocols/events/types_linux.go +++ b/pkg/network/protocols/events/types_linux.go @@ -5,6 +5,7 @@ package events type batch struct { Idx uint64 + Cpu uint16 Len uint16 Cap uint16 Event_size uint16 @@ -13,8 +14,8 @@ type batch struct { Data [4096]int8 } type batchKey struct { - Cpu uint32 - Num uint32 + Cpu uint16 + Num uint16 } const ( diff --git a/pkg/network/protocols/http/protocol.go b/pkg/network/protocols/http/protocol.go index 683898caa41060..417f767d06d7b9 100644 --- a/pkg/network/protocols/http/protocol.go +++ b/pkg/network/protocols/http/protocol.go @@ -114,7 +114,7 @@ func (p *protocol) ConfigureOptions(mgr *manager.Manager, opts *manager.Options) } utils.EnableOption(opts, "http_monitoring_enabled") // Configure event stream - events.Configure(eventStream, mgr, opts) + events.Configure(p.cfg, eventStream, mgr, opts) } func (p *protocol) PreStart(mgr *manager.Manager) (err error) { diff --git a/pkg/network/protocols/http2/dynamic_table.go b/pkg/network/protocols/http2/dynamic_table.go index 3b723e1d3a6327..4c1ef6e524835c 100644 --- a/pkg/network/protocols/http2/dynamic_table.go +++ b/pkg/network/protocols/http2/dynamic_table.go @@ -27,6 +27,8 @@ const ( // DynamicTable encapsulates the management of the dynamic table in the user mode. type DynamicTable struct { + cfg *config.Config + // terminatedConnectionsEventsConsumer is the consumer used to receive terminated connections events from the kernel. terminatedConnectionsEventsConsumer *events.Consumer[netebpf.ConnTuple] // terminatedConnections is the list of terminated connections received from the kernel. @@ -38,13 +40,15 @@ type DynamicTable struct { } // NewDynamicTable creates a new dynamic table. -func NewDynamicTable() *DynamicTable { - return &DynamicTable{} +func NewDynamicTable(cfg *config.Config) *DynamicTable { + return &DynamicTable{ + cfg: cfg, + } } // configureOptions configures the perf handler options for the map cleaner. func (dt *DynamicTable) configureOptions(mgr *manager.Manager, opts *manager.Options) { - events.Configure(terminatedConnectionsEventStream, mgr, opts) + events.Configure(dt.cfg, terminatedConnectionsEventStream, mgr, opts) } // preStart sets up the terminated connections events consumer. diff --git a/pkg/network/protocols/http2/protocol.go b/pkg/network/protocols/http2/protocol.go index 28fc737da86da7..7bb1f2847e4acb 100644 --- a/pkg/network/protocols/http2/protocol.go +++ b/pkg/network/protocols/http2/protocol.go @@ -201,7 +201,7 @@ func newHTTP2Protocol(cfg *config.Config) (protocols.Protocol, error) { telemetry: telemetry, http2Telemetry: http2KernelTelemetry, kernelTelemetryStopChannel: make(chan struct{}), - dynamicTable: NewDynamicTable(), + dynamicTable: NewDynamicTable(cfg), }, nil } @@ -245,7 +245,7 @@ func (p *Protocol) ConfigureOptions(mgr *manager.Manager, opts *manager.Options) utils.EnableOption(opts, "http2_monitoring_enabled") utils.EnableOption(opts, "terminated_http2_monitoring_enabled") // Configure event stream - events.Configure(eventStream, mgr, opts) + events.Configure(p.cfg, eventStream, mgr, opts) p.dynamicTable.configureOptions(mgr, opts) } diff --git a/pkg/network/protocols/kafka/protocol.go b/pkg/network/protocols/kafka/protocol.go index 33ac620d71ee47..f6891766ec12b4 100644 --- a/pkg/network/protocols/kafka/protocol.go +++ b/pkg/network/protocols/kafka/protocol.go @@ -84,7 +84,7 @@ func (p *protocol) Name() string { // Configuring the kafka event stream with the manager and its options, and enabling the kafka_monitoring_enabled eBPF // option. func (p *protocol) ConfigureOptions(mgr *manager.Manager, opts *manager.Options) { - events.Configure(eventStreamName, mgr, opts) + events.Configure(p.cfg, eventStreamName, mgr, opts) utils.EnableOption(opts, "kafka_monitoring_enabled") } diff --git a/pkg/network/tracer/connection/tcp_close_consumer.go b/pkg/network/tracer/connection/tcp_close_consumer.go index 08c4e0b26769c3..0965b882cf6508 100644 --- a/pkg/network/tracer/connection/tcp_close_consumer.go +++ b/pkg/network/tracer/connection/tcp_close_consumer.go @@ -108,12 +108,14 @@ func (c *tcpCloseConsumer) Start(callback func([]network.ConnectionStats)) { } }() + dataChannel := c.perfHandler.DataChannel() + lostChannel := c.perfHandler.LostChannel() for { select { case <-c.closed: return case <-health.C: - case batchData, ok := <-c.perfHandler.DataChannel: + case batchData, ok := <-dataChannel: if !ok { return } @@ -135,7 +137,7 @@ func (c *tcpCloseConsumer) Start(callback func([]network.ConnectionStats)) { callback(c.buffer.Connections()) c.buffer.Reset() batchData.Done() - case lc, ok := <-c.perfHandler.LostChannel: + case lc, ok := <-lostChannel: if !ok { return } diff --git a/pkg/network/usm/sharedlibraries/watcher.go b/pkg/network/usm/sharedlibraries/watcher.go index 528fa514b213a5..cb64bb6e537e04 100644 --- a/pkg/network/usm/sharedlibraries/watcher.go +++ b/pkg/network/usm/sharedlibraries/watcher.go @@ -189,6 +189,8 @@ func (w *Watcher) Start() { w.wg.Done() }() + dataChannel := w.loadEvents.DataChannel() + lostChannel := w.loadEvents.LostChannel() for { select { case <-w.done: @@ -199,7 +201,7 @@ func (w *Watcher) Start() { for deletedPid := range deletedPids { w.registry.Unregister(deletedPid) } - case event, ok := <-w.loadEvents.DataChannel: + case event, ok := <-dataChannel: if !ok { return } @@ -221,7 +223,7 @@ func (w *Watcher) Start() { } } event.Done() - case <-w.loadEvents.LostChannel: + case <-lostChannel: // Nothing to do in this case break } From ba1830d06ea6bbfda22c5faa4231b817eb99d4e5 Mon Sep 17 00:00:00 2001 From: Arthur Bellal Date: Thu, 7 Mar 2024 14:49:26 +0100 Subject: [PATCH 068/155] (fleet) updater OCI repository support (#23517) * (fleet) updater oci registry support * use multi-arch archive for the default agent version * use gcloud OCI repo --- pkg/updater/defaults/catalog.json | 28 +--------------------- pkg/updater/download.go | 40 +++++++++++++++++++++++++++---- 2 files changed, 36 insertions(+), 32 deletions(-) diff --git a/pkg/updater/defaults/catalog.json b/pkg/updater/defaults/catalog.json index 5b3230c98baadb..8547f3527f7877 100644 --- a/pkg/updater/defaults/catalog.json +++ b/pkg/updater/defaults/catalog.json @@ -1,7 +1,6 @@ { "packages": [ { - "name": "dd-trace-java", "package": "dd-trace-java", "version": "1.31.0", "url": "https://storage.googleapis.com/updater-dev/dd-trace-java-1.31.0.tar", @@ -9,34 +8,9 @@ "size": 26594816 }, { - "name": "datadog-agent", - "package": "datadog-agent", - "version": "7.53.0-devel.git.142.5f0ff76.pipeline.29207608-1", - "platform": "linux", - "arch": "amd64", - "url": "https://storage.googleapis.com/updater-dev/7.53.0-devel.git.142.5f0ff76.pipeline.29207608.tar", - "sha256": "1648cec536615e88dd9ea13a422c735bee775c20e40a667a019c4dd0baa0dcd5", - "size": 231945216 - }, - { - "name": "datadog-agent", - "package": "datadog-agent", - "version": "7.53.0-devel.git.156.4681fd9.pipeline.29311299-1", - "platform": "linux", - "arch": "amd64", - "url": "https://storage.googleapis.com/updater-dev/datadog-agent-7.53.0-devel.git.156.4681fd9.pipeline.29311299-1-x86_64.tar", - "sha256": "7c32c90cbd82b714f96e95cc772b25444b038d4dd45f9f7d80b3acb4aaed8180", - "size": 231900160 - }, - { - "name": "datadog-agent", "package": "datadog-agent", "version": "7.53.0-devel.git.156.4681fd9.pipeline.29311299-1", - "platform": "linux", - "arch": "arm64", - "url": "https://storage.googleapis.com/updater-dev/datadog-agent-7.53.0-devel.git.156.4681fd9.pipeline.29311299-1-aarch64.tar", - "sha256": "d9f2250520770be6ea8c7a88ffe3c08051db2dba050888eec8d3a61020eeb6e5", - "size": 203648512 + "url": "oci://us-docker.pkg.dev/datadog-sandbox/updater-dev/agent@sha256:868287768e7f224fbf210a864c3da614ab19cde23ddbd8a94e747c915d8c9ab1" } ] } diff --git a/pkg/updater/download.go b/pkg/updater/download.go index 9b496b718eabc6..ada01e6a827b26 100644 --- a/pkg/updater/download.go +++ b/pkg/updater/download.go @@ -15,13 +15,16 @@ import ( "io" "io/fs" "net/http" + "net/url" "os" "path/filepath" "runtime" "strings" + "github.com/google/go-containerregistry/pkg/name" oci "github.com/google/go-containerregistry/pkg/v1" "github.com/google/go-containerregistry/pkg/v1/layout" + "github.com/google/go-containerregistry/pkg/v1/remote" "github.com/DataDog/datadog-agent/pkg/util/log" ) @@ -48,18 +51,45 @@ func newDownloader(client *http.Client) *downloader { // Download downloads the Datadog Package referenced in the given Package struct. func (d *downloader) Download(ctx context.Context, tmpDir string, pkg Package) (oci.Image, error) { log.Debugf("Downloading package %s version %s from %s", pkg.Name, pkg.Version, pkg.URL) - - // TODO: Add support for OCI registries - image, err := d.downloadFromURL(ctx, pkg.URL, pkg.SHA256, pkg.Size, tmpDir) + url, err := url.Parse(pkg.URL) + if err != nil { + return nil, fmt.Errorf("could not parse package URL: %w", err) + } + var image oci.Image + switch url.Scheme { + case "http", "https": + image, err = d.downloadHTTP(ctx, pkg.URL, pkg.SHA256, pkg.Size, tmpDir) + case "oci": + image, err = d.downloadRegistry(ctx, pkg.URL) + default: + return nil, fmt.Errorf("unsupported package URL scheme: %s", url.Scheme) + } if err != nil { return nil, fmt.Errorf("could not download package from %s: %w", pkg.URL, err) } - log.Debugf("Successfully downloaded package %s version %s from %s", pkg.Name, pkg.Version, pkg.URL) return image, nil } -func (d *downloader) downloadFromURL(ctx context.Context, url string, sha256hash string, size int64, tmpDir string) (oci.Image, error) { +func (d *downloader) downloadRegistry(ctx context.Context, url string) (oci.Image, error) { + url = strings.TrimPrefix(url, "oci://") + // the image URL is parsed as a digest to ensure we use the /@ format + digest, err := name.NewDigest(url, name.StrictValidation) + if err != nil { + return nil, fmt.Errorf("could not parse digest: %w", err) + } + platform := oci.Platform{ + OS: runtime.GOOS, + Architecture: runtime.GOARCH, + } + image, err := remote.Image(digest, remote.WithContext(ctx), remote.WithPlatform(platform)) + if err != nil { + return nil, fmt.Errorf("could not download image: %w", err) + } + return image, nil +} + +func (d *downloader) downloadHTTP(ctx context.Context, url string, sha256hash string, size int64, tmpDir string) (oci.Image, error) { // Request the oci-layout.tar archive from the given URL req, err := http.NewRequestWithContext(ctx, http.MethodGet, url, nil) if err != nil { From 7550117fa81ba6c32ed04d82e1fa3d99f30b79f7 Mon Sep 17 00:00:00 2001 From: maxime mouial Date: Thu, 7 Mar 2024 14:57:19 +0100 Subject: [PATCH 069/155] Extend scrubbing for authorization and Bearer token (#23515) --- pkg/util/scrubber/default.go | 8 ++++---- pkg/util/scrubber/default_test.go | 24 ++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/pkg/util/scrubber/default.go b/pkg/util/scrubber/default.go index c2037e8333d73f..d054c18569db60 100644 --- a/pkg/util/scrubber/default.go +++ b/pkg/util/scrubber/default.go @@ -60,9 +60,9 @@ func AddDefaultReplacers(scrubber *Scrubber) { Hints: []string{"Bearer"}, Repl: []byte(`Bearer ***********************************************************$1`), } - // For this one we match any letters, not just a -> f + // For this one we match any characters hintedBearerInvalidReplacer := Replacer{ - Regex: regexp.MustCompile(`\bBearer [a-zA-Z0-9]+\b`), + Regex: regexp.MustCompile(`\bBearer\s+[^*]+\b`), Hints: []string{"Bearer"}, Repl: []byte("Bearer " + defaultReplacement), } @@ -104,8 +104,8 @@ func AddDefaultReplacers(scrubber *Scrubber) { []byte(`$1 "********"`), ) snmpReplacer := matchYAMLKey( - `(community_string|authKey|privKey|community|authentication_key|privacy_key)`, - []string{"community_string", "authKey", "privKey", "community", "authentication_key", "privacy_key"}, + `(community_string|authKey|privKey|community|authentication_key|privacy_key|Authorization|authorization)`, + []string{"community_string", "authKey", "privKey", "community", "authentication_key", "privacy_key", "Authorization", "authorization"}, []byte(`$1 "********"`), ) snmpMultilineReplacer := matchYAMLKeyWithListValue( diff --git a/pkg/util/scrubber/default_test.go b/pkg/util/scrubber/default_test.go index f7674b579ca62e..0054cdb1a863a5 100644 --- a/pkg/util/scrubber/default_test.go +++ b/pkg/util/scrubber/default_test.go @@ -618,7 +618,31 @@ func TestBearerToken(t *testing.T) { assertClean(t, `Bearer 2fe663014abcd1850076f6d68c0355666db98758262870811cace007cd4a62bdsldijfoiwjeoimdfolisdjoijfewoa`, `Bearer ********`) + assertClean(t, + `Bearer abf243d1-9ba5-4d8d-8365-ac18229eb2ac`, + `Bearer ********`) + assertClean(t, + `Bearer token with space`, + `Bearer ********`) + assertClean(t, + `Bearer 123456798`, + `Bearer ********`) assertClean(t, `AuthBearer 2fe663014abcd1850076f6d68c0355666db98758262870811cace007cd4a62ba`, `AuthBearer 2fe663014abcd1850076f6d68c0355666db98758262870811cace007cd4a62ba`) } + +func TestAuthorization(t *testing.T) { + assertClean(t, + `Authorization: some auth`, + `Authorization: "********"`) + assertClean(t, + ` Authorization: some auth`, + ` Authorization: "********"`) + assertClean(t, + `- Authorization: some auth`, + `- Authorization: "********"`) + assertClean(t, + ` authorization: some auth`, + ` authorization: "********"`) +} From 0ba6d534f3aeead132d9f6be5a196ef565868d45 Mon Sep 17 00:00:00 2001 From: Brian Floersch Date: Thu, 7 Mar 2024 10:15:08 -0500 Subject: [PATCH 070/155] Improve logs agent status page and logging (#23500) * Logs agent status/logs improvements * Fix tests * Remove line combine and count from verbose status * linter --- comp/logs/agent/agent_test.go | 6 ++-- pkg/logs/client/http/destination.go | 7 +++-- .../decoder/auto_multiline_handler.go | 4 ++- pkg/logs/internal/decoder/decoder.go | 4 +-- .../decoder/line_handler_benchmark_test.go | 2 +- .../internal/decoder/line_handler_test.go | 8 ++--- .../internal/decoder/multiline_handler.go | 10 +++++-- pkg/logs/launchers/file/launcher.go | 2 +- pkg/logs/metrics/metrics.go | 10 ++++++- pkg/logs/metrics/metrics_test.go | 2 +- pkg/logs/status/builder.go | 16 ++++++---- pkg/logs/status/status.go | 2 +- pkg/logs/status/status_test.go | 29 ++++++++++++------- 13 files changed, 66 insertions(+), 36 deletions(-) diff --git a/comp/logs/agent/agent_test.go b/comp/logs/agent/agent_test.go index 80ad626cb61594..4b056ff0556b0c 100644 --- a/comp/logs/agent/agent_test.go +++ b/comp/logs/agent/agent_test.go @@ -254,9 +254,9 @@ func (suite *AgentTestSuite) TestStatusOut() { mockResult := logsStatus.Status{ IsRunning: true, Endpoints: []string{"foo", "bar"}, - StatusMetrics: map[string]int64{ - "hello": 12, - "world": 13, + StatusMetrics: map[string]string{ + "hello": "12", + "world": "13", }, ProcessFileStats: map[string]uint64{ "CoreAgentProcessOpenFiles": 27, diff --git a/pkg/logs/client/http/destination.go b/pkg/logs/client/http/destination.go index f09a8db9cd4d68..ea4e7bb34aa227 100644 --- a/pkg/logs/client/http/destination.go +++ b/pkg/logs/client/http/destination.go @@ -213,8 +213,11 @@ func (d *Destination) sendAndRetry(payload *message.Payload, output chan *messag backoffDuration := d.backoff.GetBackoffDuration(d.nbErrors) d.blockedUntil = time.Now().Add(backoffDuration) if d.blockedUntil.After(time.Now()) { - log.Debugf("%s: sleeping until %v before retrying. Backoff duration %s due to %d errors", d.url, d.blockedUntil, backoffDuration.String(), d.nbErrors) + log.Warnf("%s: sleeping until %v before retrying. Backoff duration %s due to %d errors", d.url, d.blockedUntil, backoffDuration.String(), d.nbErrors) d.waitForBackoff() + metrics.RetryTimeSpent.Add(int64(backoffDuration)) + metrics.RetryCount.Add(1) + metrics.TlmRetryCount.Add(1) } d.retryLock.Unlock() @@ -223,7 +226,7 @@ func (d *Destination) sendAndRetry(payload *message.Payload, output chan *messag if err != nil { metrics.DestinationErrors.Add(1) metrics.TlmDestinationErrors.Inc() - log.Debugf("Could not send payload: %v", err) + log.Warnf("Could not send payload: %v", err) } if err == context.Canceled { diff --git a/pkg/logs/internal/decoder/auto_multiline_handler.go b/pkg/logs/internal/decoder/auto_multiline_handler.go index 89143030f7ea7d..6ed5b506d56752 100644 --- a/pkg/logs/internal/decoder/auto_multiline_handler.go +++ b/pkg/logs/internal/decoder/auto_multiline_handler.go @@ -69,6 +69,7 @@ type AutoMultilineHandler struct { detectedPattern *DetectedPattern clk clock.Clock autoMultiLineStatus *status.MappedInfo + tailerInfo *status.InfoRegistry } // NewAutoMultilineHandler returns a new AutoMultilineHandler. @@ -108,6 +109,7 @@ func NewAutoMultilineHandler( detectedPattern: detectedPattern, clk: clock.New(), autoMultiLineStatus: status.NewMappedInfo("Auto Multi-line"), + tailerInfo: tailerInfo, } h.singleLineHandler = NewSingleLineHandler(outputFn, lineLimit) @@ -205,7 +207,7 @@ func (h *AutoMultilineHandler) switchToMultilineHandler(r *regexp.Regexp) { h.singleLineHandler = nil // Build and start a multiline-handler - h.multiLineHandler = NewMultiLineHandler(h.outputFn, r, h.flushTimeout, h.lineLimit, true) + h.multiLineHandler = NewMultiLineHandler(h.outputFn, r, h.flushTimeout, h.lineLimit, true, h.tailerInfo) h.source.RegisterInfo(h.multiLineHandler.countInfo) h.source.RegisterInfo(h.multiLineHandler.linesCombinedInfo) // stay with the multiline handler diff --git a/pkg/logs/internal/decoder/decoder.go b/pkg/logs/internal/decoder/decoder.go index 98c0fb8d02e3b0..4c2dd7b3628e51 100644 --- a/pkg/logs/internal/decoder/decoder.go +++ b/pkg/logs/internal/decoder/decoder.go @@ -110,7 +110,7 @@ func NewDecoderWithFraming(source *sources.ReplaceableSource, parser parsers.Par var lineHandler LineHandler for _, rule := range source.Config().ProcessingRules { if rule.Type == config.MultiLine { - lh := NewMultiLineHandler(outputFn, rule.Regex, config.AggregationTimeout(pkgConfig.Datadog), lineLimit, false) + lh := NewMultiLineHandler(outputFn, rule.Regex, config.AggregationTimeout(pkgConfig.Datadog), lineLimit, false, tailerInfo) syncSourceInfo(source, lh) lineHandler = lh } @@ -125,7 +125,7 @@ func NewDecoderWithFraming(source *sources.ReplaceableSource, parser parsers.Par // Save the pattern again for the next rotation detectedPattern.Set(multiLinePattern) - lh := NewMultiLineHandler(outputFn, multiLinePattern, config.AggregationTimeout(pkgConfig.Datadog), lineLimit, true) + lh := NewMultiLineHandler(outputFn, multiLinePattern, config.AggregationTimeout(pkgConfig.Datadog), lineLimit, true, tailerInfo) syncSourceInfo(source, lh) lineHandler = lh } else { diff --git a/pkg/logs/internal/decoder/line_handler_benchmark_test.go b/pkg/logs/internal/decoder/line_handler_benchmark_test.go index b99a549d370ac4..d5a57b621e8a7f 100644 --- a/pkg/logs/internal/decoder/line_handler_benchmark_test.go +++ b/pkg/logs/internal/decoder/line_handler_benchmark_test.go @@ -57,7 +57,7 @@ func benchmarkMultiLineHandler(b *testing.B, logs int, line string) { messages[i] = getDummyMessageWithLF(fmt.Sprintf("%s %d", line, i)) } - h := NewMultiLineHandler(func(*message.Message) {}, regexp.MustCompile(`^[A-Za-z_]+ \d+, \d+ \d+:\d+:\d+ (AM|PM)`), 1000*time.Millisecond, 100, false) + h := NewMultiLineHandler(func(*message.Message) {}, regexp.MustCompile(`^[A-Za-z_]+ \d+, \d+ \d+:\d+:\d+ (AM|PM)`), 1000*time.Millisecond, 100, false, status.NewInfoRegistry()) b.ResetTimer() for n := 0; n < b.N; n++ { diff --git a/pkg/logs/internal/decoder/line_handler_test.go b/pkg/logs/internal/decoder/line_handler_test.go index 2906c667ff0146..716d3f6fb658be 100644 --- a/pkg/logs/internal/decoder/line_handler_test.go +++ b/pkg/logs/internal/decoder/line_handler_test.go @@ -96,7 +96,7 @@ func TestTrimSingleLine(t *testing.T) { func TestMultiLineHandler(t *testing.T) { re := regexp.MustCompile(`[0-9]+\.`) outputFn, outputChan := lineHandlerChans() - h := NewMultiLineHandler(outputFn, re, 250*time.Millisecond, 20, false) + h := NewMultiLineHandler(outputFn, re, 250*time.Millisecond, 20, false, status.NewInfoRegistry()) var output *message.Message @@ -180,7 +180,7 @@ func TestMultiLineHandler(t *testing.T) { func TestTrimMultiLine(t *testing.T) { re := regexp.MustCompile(`[0-9]+\.`) outputFn, outputChan := lineHandlerChans() - h := NewMultiLineHandler(outputFn, re, 250*time.Millisecond, 100, false) + h := NewMultiLineHandler(outputFn, re, 250*time.Millisecond, 100, false, status.NewInfoRegistry()) var output *message.Message @@ -209,7 +209,7 @@ func TestTrimMultiLine(t *testing.T) { func TestMultiLineHandlerDropsEmptyMessages(t *testing.T) { re := regexp.MustCompile(`[0-9]+\.`) outputFn, outputChan := lineHandlerChans() - h := NewMultiLineHandler(outputFn, re, 250*time.Millisecond, 100, false) + h := NewMultiLineHandler(outputFn, re, 250*time.Millisecond, 100, false, status.NewInfoRegistry()) h.process(getDummyMessage("")) @@ -238,7 +238,7 @@ func TestSingleLineHandlerSendsRawInvalidMessages(t *testing.T) { func TestMultiLineHandlerSendsRawInvalidMessages(t *testing.T) { re := regexp.MustCompile(`[0-9]+\.`) outputFn, outputChan := lineHandlerChans() - h := NewMultiLineHandler(outputFn, re, 250*time.Millisecond, 100, false) + h := NewMultiLineHandler(outputFn, re, 250*time.Millisecond, 100, false, status.NewInfoRegistry()) h.process(getDummyMessage("1.third line")) h.process(getDummyMessage("fourth line")) diff --git a/pkg/logs/internal/decoder/multiline_handler.go b/pkg/logs/internal/decoder/multiline_handler.go index 24a03d5705b797..f4ad4881947b14 100644 --- a/pkg/logs/internal/decoder/multiline_handler.go +++ b/pkg/logs/internal/decoder/multiline_handler.go @@ -39,8 +39,13 @@ type MultiLineHandler struct { } // NewMultiLineHandler returns a new MultiLineHandler. -func NewMultiLineHandler(outputFn func(*message.Message), newContentRe *regexp.Regexp, flushTimeout time.Duration, lineLimit int, telemetryEnabled bool) *MultiLineHandler { - return &MultiLineHandler{ +func NewMultiLineHandler(outputFn func(*message.Message), newContentRe *regexp.Regexp, flushTimeout time.Duration, lineLimit int, telemetryEnabled bool, tailerInfo *status.InfoRegistry) *MultiLineHandler { + + i := status.NewMappedInfo("Multi-Line Pattern") + i.SetMessage("Pattern", newContentRe.String()) + tailerInfo.Register(i) + + h := &MultiLineHandler{ outputFn: outputFn, newContentRe: newContentRe, buffer: bytes.NewBuffer(nil), @@ -51,6 +56,7 @@ func NewMultiLineHandler(outputFn func(*message.Message), newContentRe *regexp.R telemetryEnabled: telemetryEnabled, linesCombined: 0, } + return h } func (h *MultiLineHandler) flushChan() <-chan time.Time { diff --git a/pkg/logs/launchers/file/launcher.go b/pkg/logs/launchers/file/launcher.go index 2d90b366eea4bd..ebbd2fb25a3fba 100644 --- a/pkg/logs/launchers/file/launcher.go +++ b/pkg/logs/launchers/file/launcher.go @@ -392,7 +392,7 @@ func (s *Launcher) createTailer(file *tailer.File, outputChan chan *message.Mess } func (s *Launcher) createRotatedTailer(t *tailer.Tailer, file *tailer.File, pattern *regexp.Regexp) *tailer.Tailer { - tailerInfo := status.NewInfoRegistry() + tailerInfo := t.GetInfo() return t.NewRotatedTailer(file, decoder.NewDecoderFromSourceWithPattern(file.Source, pattern, tailerInfo), tailerInfo) } diff --git a/pkg/logs/metrics/metrics.go b/pkg/logs/metrics/metrics.go index 307c13e2ed45f0..063a4e6afe0755 100644 --- a/pkg/logs/metrics/metrics.go +++ b/pkg/logs/metrics/metrics.go @@ -46,7 +46,13 @@ var ( // TlmBytesSent is the total number of sent bytes before encoding if any TlmBytesSent = telemetry.NewCounter("logs", "bytes_sent", nil, "Total number of bytes send before encoding if any") - + // RetryCount is the total number of times we have retried payloads that failed to send + RetryCount = expvar.Int{} + // TlmRetryCountis the total number of times we have retried payloads that failed to send + TlmRetryCount = telemetry.NewCounter("logs", "retry_count", + nil, "Total number of retried paylaods") + // RetryTimeSpent is the total time spent retrying payloads that failed to send + RetryTimeSpent = expvar.Int{} // EncodedBytesSent is the total number of sent bytes after encoding if any EncodedBytesSent = expvar.Int{} // TlmEncodedBytesSent is the total number of sent bytes after encoding if any @@ -74,6 +80,8 @@ func init() { LogsExpvars.Set("DestinationErrors", &DestinationErrors) LogsExpvars.Set("DestinationLogsDropped", &DestinationLogsDropped) LogsExpvars.Set("BytesSent", &BytesSent) + LogsExpvars.Set("RetryCount", &RetryCount) + LogsExpvars.Set("RetryTimeSpent", &RetryTimeSpent) LogsExpvars.Set("EncodedBytesSent", &EncodedBytesSent) LogsExpvars.Set("SenderLatency", &SenderLatency) LogsExpvars.Set("HttpDestinationStats", &DestinationExpVars) diff --git a/pkg/logs/metrics/metrics_test.go b/pkg/logs/metrics/metrics_test.go index 051bcbe8ad4d41..281d4e487534cc 100644 --- a/pkg/logs/metrics/metrics_test.go +++ b/pkg/logs/metrics/metrics_test.go @@ -12,5 +12,5 @@ import ( ) func TestMetrics(t *testing.T) { - assert.Equal(t, LogsExpvars.String(), `{"BytesSent": 0, "DestinationErrors": 0, "DestinationLogsDropped": {}, "EncodedBytesSent": 0, "HttpDestinationStats": {}, "LogsDecoded": 0, "LogsProcessed": 0, "LogsSent": 0, "SenderLatency": 0}`) + assert.Equal(t, LogsExpvars.String(), `{"BytesSent": 0, "DestinationErrors": 0, "DestinationLogsDropped": {}, "EncodedBytesSent": 0, "HttpDestinationStats": {}, "LogsDecoded": 0, "LogsProcessed": 0, "LogsSent": 0, "RetryCount": 0, "RetryTimeSpent": 0, "SenderLatency": 0}`) } diff --git a/pkg/logs/status/builder.go b/pkg/logs/status/builder.go index 1d0a67d286b604..e2e048ea06d1b5 100644 --- a/pkg/logs/status/builder.go +++ b/pkg/logs/status/builder.go @@ -8,7 +8,9 @@ package status import ( "expvar" + "fmt" "strings" + "time" "go.uber.org/atomic" @@ -194,12 +196,14 @@ func (b *Builder) toDictionary(c *config.LogsConfig) map[string]interface{} { } // getMetricsStatus exposes some aggregated metrics of the log agent on the agent status -func (b *Builder) getMetricsStatus() map[string]int64 { - var metrics = make(map[string]int64, 2) - metrics["LogsProcessed"] = b.logsExpVars.Get("LogsProcessed").(*expvar.Int).Value() - metrics["LogsSent"] = b.logsExpVars.Get("LogsSent").(*expvar.Int).Value() - metrics["BytesSent"] = b.logsExpVars.Get("BytesSent").(*expvar.Int).Value() - metrics["EncodedBytesSent"] = b.logsExpVars.Get("EncodedBytesSent").(*expvar.Int).Value() +func (b *Builder) getMetricsStatus() map[string]string { + var metrics = make(map[string]string) + metrics["LogsProcessed"] = fmt.Sprintf("%v", b.logsExpVars.Get("LogsProcessed").(*expvar.Int).Value()) + metrics["LogsSent"] = fmt.Sprintf("%v", b.logsExpVars.Get("LogsSent").(*expvar.Int).Value()) + metrics["BytesSent"] = fmt.Sprintf("%v", b.logsExpVars.Get("BytesSent").(*expvar.Int).Value()) + metrics["RetryCount"] = fmt.Sprintf("%v", b.logsExpVars.Get("RetryCount").(*expvar.Int).Value()) + metrics["RetryTimeSpent"] = time.Duration(b.logsExpVars.Get("RetryTimeSpent").(*expvar.Int).Value()).String() + metrics["EncodedBytesSent"] = fmt.Sprintf("%v", b.logsExpVars.Get("EncodedBytesSent").(*expvar.Int).Value()) return metrics } diff --git a/pkg/logs/status/status.go b/pkg/logs/status/status.go index 63acf2487a17ed..dac8fb4f848fe4 100644 --- a/pkg/logs/status/status.go +++ b/pkg/logs/status/status.go @@ -71,7 +71,7 @@ type Integration struct { type Status struct { IsRunning bool `json:"is_running"` Endpoints []string `json:"endpoints"` - StatusMetrics map[string]int64 `json:"metrics"` + StatusMetrics map[string]string `json:"metrics"` ProcessFileStats map[string]uint64 `json:"process_file_stats"` Integrations []Integration `json:"integrations"` Tailers []Tailer `json:"tailers"` diff --git a/pkg/logs/status/status_test.go b/pkg/logs/status/status_test.go index b2dccf4205eca2..4210de8693f67c 100644 --- a/pkg/logs/status/status_test.go +++ b/pkg/logs/status/status_test.go @@ -9,6 +9,7 @@ import ( "fmt" "math" "testing" + "time" "github.com/stretchr/testify/assert" @@ -95,13 +96,13 @@ func TestStatusDeduplicateErrorsAndWarnings(t *testing.T) { func TestMetrics(t *testing.T) { defer Clear() Clear() - var expected = `{"BytesSent": 0, "DestinationErrors": 0, "DestinationLogsDropped": {}, "EncodedBytesSent": 0, "Errors": "", "HttpDestinationStats": {}, "IsRunning": false, "LogsDecoded": 0, "LogsProcessed": 0, "LogsSent": 0, "SenderLatency": 0, "Warnings": ""}` + var expected = `{"BytesSent": 0, "DestinationErrors": 0, "DestinationLogsDropped": {}, "EncodedBytesSent": 0, "Errors": "", "HttpDestinationStats": {}, "IsRunning": false, "LogsDecoded": 0, "LogsProcessed": 0, "LogsSent": 0, "RetryCount": 0, "RetryTimeSpent": 0, "SenderLatency": 0, "Warnings": ""}` assert.Equal(t, expected, metrics.LogsExpvars.String()) initStatus() AddGlobalWarning("bar", "Unique Warning") AddGlobalError("bar", "I am an error") - expected = `{"BytesSent": 0, "DestinationErrors": 0, "DestinationLogsDropped": {}, "EncodedBytesSent": 0, "Errors": "I am an error", "HttpDestinationStats": {}, "IsRunning": true, "LogsDecoded": 0, "LogsProcessed": 0, "LogsSent": 0, "SenderLatency": 0, "Warnings": "Unique Warning"}` + expected = `{"BytesSent": 0, "DestinationErrors": 0, "DestinationLogsDropped": {}, "EncodedBytesSent": 0, "Errors": "I am an error", "HttpDestinationStats": {}, "IsRunning": true, "LogsDecoded": 0, "LogsProcessed": 0, "LogsSent": 0, "RetryCount": 0, "RetryTimeSpent": 0, "SenderLatency": 0, "Warnings": "Unique Warning"}` assert.Equal(t, expected, metrics.LogsExpvars.String()) } @@ -110,26 +111,32 @@ func TestStatusMetrics(t *testing.T) { initStatus() status := Get(false) - assert.Equal(t, int64(0), status.StatusMetrics["LogsProcessed"]) - assert.Equal(t, int64(0), status.StatusMetrics["LogsSent"]) - assert.Equal(t, int64(0), status.StatusMetrics["BytesSent"]) - assert.Equal(t, int64(0), status.StatusMetrics["EncodedBytesSent"]) + assert.Equal(t, "0", status.StatusMetrics["LogsProcessed"]) + assert.Equal(t, "0", status.StatusMetrics["LogsSent"]) + assert.Equal(t, "0", status.StatusMetrics["BytesSent"]) + assert.Equal(t, "0", status.StatusMetrics["EncodedBytesSent"]) + assert.Equal(t, "0", status.StatusMetrics["RetryCount"]) + assert.Equal(t, "0s", status.StatusMetrics["RetryTimeSpent"]) metrics.LogsProcessed.Set(5) metrics.LogsSent.Set(3) metrics.BytesSent.Set(42) metrics.EncodedBytesSent.Set(21) + metrics.RetryCount.Set(42) + metrics.RetryTimeSpent.Set(int64(time.Hour * 2)) status = Get(false) - assert.Equal(t, int64(5), status.StatusMetrics["LogsProcessed"]) - assert.Equal(t, int64(3), status.StatusMetrics["LogsSent"]) - assert.Equal(t, int64(42), status.StatusMetrics["BytesSent"]) - assert.Equal(t, int64(21), status.StatusMetrics["EncodedBytesSent"]) + assert.Equal(t, "5", status.StatusMetrics["LogsProcessed"]) + assert.Equal(t, "3", status.StatusMetrics["LogsSent"]) + assert.Equal(t, "42", status.StatusMetrics["BytesSent"]) + assert.Equal(t, "21", status.StatusMetrics["EncodedBytesSent"]) + assert.Equal(t, "42", status.StatusMetrics["RetryCount"]) + assert.Equal(t, "2h0m0s", status.StatusMetrics["RetryTimeSpent"]) metrics.LogsProcessed.Set(math.MaxInt64) metrics.LogsProcessed.Add(1) status = Get(false) - assert.Equal(t, int64(math.MinInt64), status.StatusMetrics["LogsProcessed"]) + assert.Equal(t, fmt.Sprintf("%v", math.MinInt64), status.StatusMetrics["LogsProcessed"]) } func TestStatusEndpoints(t *testing.T) { From 7d0a92e0c8f589885b2ad89318d29329a9276094 Mon Sep 17 00:00:00 2001 From: Adam Karpowich Date: Thu, 7 Mar 2024 10:20:20 -0500 Subject: [PATCH 071/155] disable prebuilt ebpf conntracker + test on kernels < 4.14 (#23307) * disable prebuilt ebpf conntracker on kernels < 4.14 and offset guess test for conntrack fields on the same kernels * exclude rhel 7 kernels from check, add test, skip some tests on unsupported kernels * refactor common code to helpers * improve skip comment * fix unit test * invert if statement * fix error assert --- pkg/network/tracer/conntracker_test.go | 1 + pkg/network/tracer/ebpf_conntracker.go | 25 +++++++++++++++-- pkg/network/tracer/ebpf_conntracker_test.go | 31 +++++++++++++++++++++ pkg/network/tracer/offsetguess_test.go | 12 ++++++-- pkg/network/tracer/tracer_linux_test.go | 3 +- 5 files changed, 66 insertions(+), 6 deletions(-) diff --git a/pkg/network/tracer/conntracker_test.go b/pkg/network/tracer/conntracker_test.go index f79d2b46c7f56d..30bc89bff48480 100644 --- a/pkg/network/tracer/conntracker_test.go +++ b/pkg/network/tracer/conntracker_test.go @@ -36,6 +36,7 @@ func TestConntrackers(t *testing.T) { runConntrackerTest(t, "netlink", setupNetlinkConntracker) }) t.Run("eBPF", func(t *testing.T) { + skipEbpfConntrackerTestOnUnsupportedKernel(t) ebpftest.TestBuildModes(t, []ebpftest.BuildMode{ebpftest.Prebuilt, ebpftest.RuntimeCompiled}, "", func(t *testing.T) { runConntrackerTest(t, "eBPF", setupEBPFConntracker) }) diff --git a/pkg/network/tracer/ebpf_conntracker.go b/pkg/network/tracer/ebpf_conntracker.go index f8d7523d745ae3..0c3cf70e3ded1d 100644 --- a/pkg/network/tracer/ebpf_conntracker.go +++ b/pkg/network/tracer/ebpf_conntracker.go @@ -16,8 +16,6 @@ import ( "sync" "time" - ebpftelemetry "github.com/DataDog/datadog-agent/pkg/ebpf/telemetry" - "github.com/cihub/seelog" "github.com/cilium/ebpf" "github.com/cilium/ebpf/features" @@ -26,6 +24,9 @@ import ( manager "github.com/DataDog/ebpf-manager" + ebpftelemetry "github.com/DataDog/datadog-agent/pkg/ebpf/telemetry" + ebpfkernel "github.com/DataDog/datadog-agent/pkg/security/ebpf/kernel" + "github.com/DataDog/datadog-agent/pkg/collector/corechecks/ebpf/probe/ebpfcheck" ddebpf "github.com/DataDog/datadog-agent/pkg/ebpf" "github.com/DataDog/datadog-agent/pkg/ebpf/bytecode" @@ -470,6 +471,14 @@ func getManager(cfg *config.Config, buf io.ReaderAt, constants []manager.Constan } func getPrebuiltConntracker(cfg *config.Config) (bytecode.AssetReader, []manager.ConstantEditor, error) { + supportedOnKernel, err := ebpfConntrackerSupportedOnKernel() + if err != nil { + return nil, nil, fmt.Errorf("could not check if ebpf conntracker is supported on kernel: %w", err) + } + if !supportedOnKernel { + return nil, nil, fmt.Errorf("ebpf conntracker requires kernel version 4.14 or higher or a RHEL kernel with backported eBPF support") + } + buf, err := netebpf.ReadConntrackBPFModule(cfg.BPFDir, cfg.BPFDebug) if err != nil { return nil, nil, fmt.Errorf("could not read bpf module: %s", err) @@ -490,3 +499,15 @@ func getPrebuiltConntracker(cfg *config.Config) (bytecode.AssetReader, []manager return buf, constants, nil } + +func ebpfConntrackerSupportedOnKernel() (bool, error) { + kv, err := ebpfkernel.NewKernelVersion() + if err != nil { + return false, fmt.Errorf("could not get kernel version: %s", err) + } + + if kv.Code >= ebpfkernel.Kernel4_14 || kv.IsRH7Kernel() { + return true, nil + } + return false, nil +} diff --git a/pkg/network/tracer/ebpf_conntracker_test.go b/pkg/network/tracer/ebpf_conntracker_test.go index 31a00f7b09d0cf..e26fd95e150697 100644 --- a/pkg/network/tracer/ebpf_conntracker_test.go +++ b/pkg/network/tracer/ebpf_conntracker_test.go @@ -16,7 +16,21 @@ import ( "github.com/DataDog/datadog-agent/pkg/network/tracer/offsetguess" ) +func ebpfConntrackerSupportedOnKernelT(t *testing.T) bool { + supported, err := ebpfConntrackerSupportedOnKernel() + require.NoError(t, err) + return supported +} + +func skipEbpfConntrackerTestOnUnsupportedKernel(t *testing.T) { + if !ebpfConntrackerSupportedOnKernelT(t) { + t.Skip("Skipping ebpf conntracker related test on unsupported kernel") + } +} + func TestEbpfConntrackerLoadTriggersOffsetGuessing(t *testing.T) { + skipEbpfConntrackerTestOnUnsupportedKernel(t) + offsetguess.TracerOffsets.Reset() cfg := testConfig() @@ -30,3 +44,20 @@ func TestEbpfConntrackerLoadTriggersOffsetGuessing(t *testing.T) { require.NoError(t, err) require.NotEmpty(t, offsets) } + +func TestEbpfConntrackerSkipsLoadOnOlderKernels(t *testing.T) { + if ebpfConntrackerSupportedOnKernelT(t) { + t.Skip("This test should only run on pre-4.14 kernels without backported eBPF support, like RHEL/CentOS") + } + + offsetguess.TracerOffsets.Reset() + + cfg := testConfig() + cfg.EnableRuntimeCompiler = false + conntracker, err := NewEBPFConntracker(cfg) + assert.Error(t, err) + assert.Equal(t, + "could not load prebuilt ebpf conntracker: ebpf conntracker requires kernel version 4.14 or higher or a RHEL kernel with backported eBPF support", + err.Error()) + require.Nil(t, conntracker) +} diff --git a/pkg/network/tracer/offsetguess_test.go b/pkg/network/tracer/offsetguess_test.go index a6d89b32559626..618e36c5fa867b 100644 --- a/pkg/network/tracer/offsetguess_test.go +++ b/pkg/network/tracer/offsetguess_test.go @@ -28,6 +28,7 @@ import ( nettestutil "github.com/DataDog/datadog-agent/pkg/network/testutil" "github.com/DataDog/datadog-agent/pkg/network/tracer/offsetguess" "github.com/DataDog/datadog-agent/pkg/process/statsd" + ebpfkernel "github.com/DataDog/datadog-agent/pkg/security/ebpf/kernel" "github.com/DataDog/datadog-agent/pkg/util/kernel" ) @@ -276,19 +277,24 @@ func testOffsetGuess(t *testing.T) { mp, err := maps.GetMap[offsetT, uint64](mgr, "offsets") require.NoError(t, err) - kv, err := kernel.HostVersion() + kv, err := ebpfkernel.NewKernelVersion() require.NoError(t, err) for o := offsetSaddr; o < offsetMax; o++ { switch o { case offsetSkBuffHead, offsetSkBuffSock, offsetSkBuffTransportHeader: - if kv < kernel.VersionCode(4, 7, 0) { + if kv.Code < kernel.VersionCode(4, 7, 0) { continue } case offsetSaddrFl6, offsetDaddrFl6, offsetSportFl6, offsetDportFl6: // TODO: offset guessing for these fields is currently broken on kernels 5.18+ // see https://datadoghq.atlassian.net/browse/NET-2984 - if kv >= kernel.VersionCode(5, 18, 0) { + if kv.Code >= kernel.VersionCode(5, 18, 0) { + continue + } + case offsetCtOrigin, offsetCtIno, offsetCtNetns, offsetCtReply: + // offset guessing for conntrack fields is broken on pre-4.14 kernels + if !ebpfConntrackerSupportedOnKernelT(t) { continue } } diff --git a/pkg/network/tracer/tracer_linux_test.go b/pkg/network/tracer/tracer_linux_test.go index d8c3ffeb083ba8..e0aabbf0b37fab 100644 --- a/pkg/network/tracer/tracer_linux_test.go +++ b/pkg/network/tracer/tracer_linux_test.go @@ -2033,7 +2033,8 @@ func (s *TracerSuite) TestGetHelpersTelemetry() { } func TestEbpfConntrackerFallback(t *testing.T) { - ebpftest.LogLevel(t, "trace") + skipEbpfConntrackerTestOnUnsupportedKernel(t) + type testCase struct { enableRuntimeCompiler bool allowPrecompiledFallback bool From 7107c455210ba6bfa883788ca4e610fe4b1b5955 Mon Sep 17 00:00:00 2001 From: Nenad Noveljic <18366081+nenadnoveljic@users.noreply.github.com> Date: Thu, 7 Mar 2024 16:20:25 +0100 Subject: [PATCH 072/155] pkg/collector/corechecks/oracle-dbm/config/config.go (#23512) --- pkg/collector/corechecks/oracle-dbm/config/config.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/pkg/collector/corechecks/oracle-dbm/config/config.go b/pkg/collector/corechecks/oracle-dbm/config/config.go index fab9fc3e541a8f..5340767563ca29 100644 --- a/pkg/collector/corechecks/oracle-dbm/config/config.go +++ b/pkg/collector/corechecks/oracle-dbm/config/config.go @@ -24,6 +24,7 @@ import ( type InitConfig struct { MinCollectionInterval int `yaml:"min_collection_interval"` CustomQueries []CustomQuery `yaml:"custom_queries"` + UseInstantClient bool `yaml:"use_instant_client"` } //nolint:revive // TODO(DBM) Fix revive linter @@ -254,7 +255,13 @@ func NewCheckConfig(rawInstance integration.Data, rawInitConfig integration.Data */ if instance.InstantClient { instance.OracleClient = true - log.Warn("The config parameter instance_client is deprecated and will be removed in future versions. Please use oracle_client instead.") + warnDeprecated("instant_client", "oracle_client") + } + + // `use_instant_client` is for backward compatibility with the old Oracle Python integration + if initCfg.UseInstantClient { + instance.OracleClient = true + warnDeprecated("use_instant_client", "oracle_client in instance config") } c := &CheckConfig{ From 68975bc25dc7e86fc1cc0b959ab46e446ecec4f7 Mon Sep 17 00:00:00 2001 From: Branden Clark Date: Thu, 7 Mar 2024 10:27:10 -0500 Subject: [PATCH 073/155] check windows installer user rights assignment (#23419) * check ddagentuser user rights * compare sid in getuserrightsforuser * fix compare sid * add missing file * fix go.mod --- test/new-e2e/go.mod | 2 +- test/new-e2e/tests/windows/common/user.go | 90 +++++++++++++++++++ test/new-e2e/tests/windows/common/utils.go | 24 +++++ .../tests/windows/install-test/assert.go | 15 ++++ .../windows/install-test/installtester.go | 6 ++ 5 files changed, 136 insertions(+), 1 deletion(-) create mode 100644 test/new-e2e/tests/windows/common/utils.go diff --git a/test/new-e2e/go.mod b/test/new-e2e/go.mod index 36062a29fc6d39..2f036b45173bb2 100644 --- a/test/new-e2e/go.mod +++ b/test/new-e2e/go.mod @@ -219,7 +219,7 @@ require ( golang.org/x/net v0.19.0 // indirect golang.org/x/oauth2 v0.11.0 // indirect golang.org/x/sync v0.5.0 // indirect - golang.org/x/text v0.14.0 // indirect + golang.org/x/text v0.14.0 golang.org/x/time v0.3.0 // indirect golang.org/x/tools v0.15.0 // indirect google.golang.org/appengine v1.6.7 // indirect diff --git a/test/new-e2e/tests/windows/common/user.go b/test/new-e2e/tests/windows/common/user.go index b709fc58cddf84..f70c764c151c29 100644 --- a/test/new-e2e/tests/windows/common/user.go +++ b/test/new-e2e/tests/windows/common/user.go @@ -132,3 +132,93 @@ func GetLocalGroupMembers(host *components.RemoteHost, group string) ([]Identity } return members, nil } + +// GetUserRights returns a map of user rights to a list of users that have them +// +// https://learn.microsoft.com/en-us/windows/security/threat-protection/security-policy-settings/user-rights-assignment +func GetUserRights(host *components.RemoteHost) (map[string][]string, error) { + outFile, err := GetTemporaryFile(host) + if err != nil { + return nil, err + } + cmd := fmt.Sprintf(`secedit /export /areas USER_RIGHTS /cfg %s`, outFile) + _, err = host.Execute(cmd) + if err != nil { + return nil, err + } + + c, err := host.ReadFile(outFile) + if err != nil { + return nil, err + } + c, err = ConvertUTF16ToUTF8(c) + if err != nil { + return nil, err + } + content := string(c) + + result := make(map[string][]string) + + // The file is in INI syntax, Go doesn't have a built-in INI parser + // but going line by line is sufficient for our needs + for _, line := range strings.Split(content, "\r\n") { + if strings.HasPrefix(line, "Se") { + // example: SeDenyNetworkLogonRight = *S-1-5-18,ddagentuser + parts := strings.Split(line, "=") + if len(parts) != 2 { + return nil, fmt.Errorf("unexpected line format: %s", line) + } + rightName := strings.TrimSpace(parts[0]) + users := strings.TrimSpace(parts[1]) + userList := strings.Split(users, ",") + for i, user := range userList { + user = strings.TrimSpace(user) + // SIDs are given as *S-1-5-32-544 + user = strings.TrimLeft(user, "*") + userList[i] = user + } + result[rightName] = userList + } + } + return result, nil +} + +// GetUserRightsForUser returns a list of user rights for the given user +func GetUserRightsForUser(host *components.RemoteHost, user string) ([]string, error) { + sid, err := GetSIDForUser(host, user) + if err != nil { + return nil, err + } + rights, err := GetUserRights(host) + if err != nil { + return nil, err + } + var result []string + var sidCache = make(map[string]string) + sidCache[user] = sid + for right, users := range rights { + for _, u := range users { + var s string + if strings.HasPrefix(u, "S-1-") { + s = u + } else { + // not a SID, look up the SID for the username + var ok bool + s, ok = sidCache[u] + if !ok { + s, err = GetSIDForUser(host, u) + if err != nil { + return nil, err + } + sidCache[u] = s + } + } + // check if SID or username matches + if strings.EqualFold(s, sid) || strings.EqualFold(u, user) { + result = append(result, right) + break + } + } + } + return result, nil +} diff --git a/test/new-e2e/tests/windows/common/utils.go b/test/new-e2e/tests/windows/common/utils.go new file mode 100644 index 00000000000000..8c7a09d2a96a7b --- /dev/null +++ b/test/new-e2e/tests/windows/common/utils.go @@ -0,0 +1,24 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2023-present Datadog, Inc. + +package common + +import ( + "fmt" + "golang.org/x/text/encoding/unicode" +) + +// ConvertUTF16ToUTF8 converts a byte slice from UTF-16 to UTF-8 +// +// UTF-16 little-endian (UTF-16LE) is the encoding standard in the Windows operating system. +// https://learn.microsoft.com/en-us/globalization/encoding/transformations-of-unicode-code-points +func ConvertUTF16ToUTF8(content []byte) ([]byte, error) { + utf16 := unicode.UTF16(unicode.LittleEndian, unicode.IgnoreBOM) + utf8, err := utf16.NewDecoder().Bytes(content) + if err != nil { + return nil, fmt.Errorf("failed to convert UTF-16 to UTF-8: %v", err) + } + return utf8, nil +} diff --git a/test/new-e2e/tests/windows/install-test/assert.go b/test/new-e2e/tests/windows/install-test/assert.go index 0ffd1ee0eaf447..bae877057aea07 100644 --- a/test/new-e2e/tests/windows/install-test/assert.go +++ b/test/new-e2e/tests/windows/install-test/assert.go @@ -92,3 +92,18 @@ func AssertGroupMembership(t *testing.T, host *components.RemoteHost, user strin } return true } + +// AssertUserRights checks the user has the expected user rights +func AssertUserRights(t *testing.T, host *components.RemoteHost, username string) bool { + expectedRights := []string{ + "SeServiceLogonRight", + "SeDenyInteractiveLogonRight", + "SeDenyNetworkLogonRight", + "SeDenyRemoteInteractiveLogonRight", + } + actualRights, err := windows.GetUserRightsForUser(host, username) + if !assert.NoError(t, err, "should get user rights") { + return false + } + return assert.ElementsMatch(t, expectedRights, actualRights, "user %s should have user rights", username) +} diff --git a/test/new-e2e/tests/windows/install-test/installtester.go b/test/new-e2e/tests/windows/install-test/installtester.go index 6ffb10bced0eb7..396a16d8b110be 100644 --- a/test/new-e2e/tests/windows/install-test/installtester.go +++ b/test/new-e2e/tests/windows/install-test/installtester.go @@ -374,6 +374,12 @@ func (t *Tester) testCurrentVersionExpectations(tt *testing.T) { ) }) + tt.Run("user rights", func(tt *testing.T) { + AssertUserRights(tt, t.host, + windows.MakeDownLevelLogonName(t.expectedUserDomain, t.expectedUserName), + ) + }) + t.testAgentCodeSignature(tt) t.TestRuntimeExpectations(tt) } From 5adec8983b6293259188b1f1affa1b6bd6662787 Mon Sep 17 00:00:00 2001 From: Nicolas Schweitzer Date: Thu, 7 Mar 2024 16:31:20 +0100 Subject: [PATCH 074/155] fix(ci): Prevent junit upload as no more tests ran during MQ (#23527) * fix(ci): Prevent junit upload as no more tests ran during MQ * codereview: remove unappropriate comment --- .../source_test_junit_upload/source_test_junit_upload.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.gitlab/source_test_junit_upload/source_test_junit_upload.yml b/.gitlab/source_test_junit_upload/source_test_junit_upload.yml index 9af4abd02b05fd..5dea02e85118e3 100644 --- a/.gitlab/source_test_junit_upload/source_test_junit_upload.yml +++ b/.gitlab/source_test_junit_upload/source_test_junit_upload.yml @@ -1,8 +1,7 @@ source_test_junit_upload: - # Uncomment this to only run junit uploads on main/stable branches - # rules: - # !reference [.on_main_or_release_branch] - when: always + rules: + - !reference [.except_mergequeue] + - when: always stage: source_test_junit_upload image: 486234852809.dkr.ecr.us-east-1.amazonaws.com/ci/datadog-agent-buildimages/datadog-ci-uploader$DATADOG_AGENT_BUILDIMAGES_SUFFIX:$DATADOG_AGENT_BUILDIMAGES tags: ["arch:amd64"] From acd202029ca9173e256e69eb2ae2b8a2dd88a556 Mon Sep 17 00:00:00 2001 From: Julio Guerra Date: Thu, 7 Mar 2024 16:51:21 +0100 Subject: [PATCH 075/155] pkg/serverless/appsec/httpsec: add unsupported event span tag (#22614) * pkg/serverless/appsec/httpsec: add unsupported event span tag * pkg/serverless/appsec/httpsec: add unsupported event span tag --- pkg/serverless/appsec/httpsec/proxy.go | 17 ++++++++++++----- pkg/serverless/appsec/httpsec/proxy_test.go | 9 +++++++++ 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/pkg/serverless/appsec/httpsec/proxy.go b/pkg/serverless/appsec/httpsec/proxy.go index bfa61ff5b09639..acc7ada14c4a60 100644 --- a/pkg/serverless/appsec/httpsec/proxy.go +++ b/pkg/serverless/appsec/httpsec/proxy.go @@ -70,6 +70,7 @@ func (lp *ProxyLifecycleProcessor) OnInvokeStart(startDetails *invocationlifecyc log.Debugf("appsec: proxy-lifecycle: Extracted event type: %v", eventType) } + lp.invocationEvent = nil var event interface{} switch eventType { default: @@ -90,17 +91,14 @@ func (lp *ProxyLifecycleProcessor) OnInvokeStart(startDetails *invocationlifecyc case trigger.LambdaFunctionURLEvent: event = &events.LambdaFunctionURLRequest{} } - if lp.demux != nil { - serverlessMetrics.SendASMInvocationEnhancedMetric(nil, lp.demux) - } if err := json.Unmarshal(payloadBytes, event); err != nil { log.Errorf("appsec: proxy-lifecycle: unexpected lambda event parsing error: %v", err) return } - // In monitoring-only mode - without blocking - we can wait until the request's end to monitor it lp.invocationEvent = event + // In monitoring-only mode - without blocking - we can wait until the request's end to monitor it } // OnInvokeEnd is the hook triggered when an invocation has ended @@ -136,12 +134,21 @@ func (lp *ProxyLifecycleProcessor) spanModifier(lastReqId string, chunk *pb.Trac } log.Debugf("appsec: found service entry span of the currently monitored request id `%s`", currentReqId) + span := (*spanWrapper)(s) + if lp.invocationEvent == nil { log.Debug("appsec: ignoring unsupported lamdba event") + // Add a span tag so we can tell if this was an unsupported event type. + // _dd.appsec.enabled:1 covers the supported case, which can only be set + // in this case because it involves ASM billing. + span.SetMetricsTag("_dd.appsec.unsupported_event_type", 1) return // skip: unsupported event } - span := (*spanWrapper)(s) + // Count ASM-supported invocations + if lp.demux != nil { + serverlessMetrics.SendASMInvocationEnhancedMetric(nil, lp.demux) + } var ctx context switch event := lp.invocationEvent.(type) { diff --git a/pkg/serverless/appsec/httpsec/proxy_test.go b/pkg/serverless/appsec/httpsec/proxy_test.go index 23dc428e10694d..8fb1d52d101be9 100644 --- a/pkg/serverless/appsec/httpsec/proxy_test.go +++ b/pkg/serverless/appsec/httpsec/proxy_test.go @@ -114,6 +114,15 @@ func TestProxyLifecycleProcessor(t *testing.T) { require.Equal(t, int32(sampler.PriorityUserKeep), chunk.Priority) require.Equal(t, 1.0, span.Metrics["_dd.appsec.enabled"]) }) + + t.Run("unsupported-event-type", func(t *testing.T) { + chunk := runAppSec("request", invocationlifecycle.InvocationStartDetails{ + InvokeEventRawPayload: getEventFromFile("sqs.json"), + InvokedFunctionARN: "arn:aws:lambda:us-east-1:123456789012:function:my-function", + }) + span := chunk.Spans[0] + require.Equal(t, 1.0, span.Metrics["_dd.appsec.unsupported_event_type"]) + }) } // Helper function for reading test file From 485baf65e283c3c382dccdc84256ba761cf2bdb7 Mon Sep 17 00:00:00 2001 From: Amit Slavin <108348428+amitslavin@users.noreply.github.com> Date: Thu, 7 Mar 2024 18:35:56 +0200 Subject: [PATCH 076/155] rename request_end_of_stream (#23520) --- .../ebpf/c/protocols/http2/decoding-common.h | 4 ++-- pkg/network/ebpf/c/protocols/http2/decoding-defs.h | 2 +- pkg/network/protocols/http2/types_linux.go | 14 +++++++------- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/pkg/network/ebpf/c/protocols/http2/decoding-common.h b/pkg/network/ebpf/c/protocols/http2/decoding-common.h index cd4e85a0d9544f..00607a4b92bb86 100644 --- a/pkg/network/ebpf/c/protocols/http2/decoding-common.h +++ b/pkg/network/ebpf/c/protocols/http2/decoding-common.h @@ -126,8 +126,8 @@ static __always_inline void update_path_size_telemetry(http2_telemetry_t *http2_ // See RFC 7540 section 5.1: https://datatracker.ietf.org/doc/html/rfc7540#section-5.1 static __always_inline void handle_end_of_stream(http2_stream_t *current_stream, http2_stream_key_t *http2_stream_key_template, http2_telemetry_t *http2_tel) { // We want to see the EOS twice for a given stream: one for the client, one for the server. - if (!current_stream->request_end_of_stream) { - current_stream->request_end_of_stream = true; + if (!current_stream->end_of_stream_seen) { + current_stream->end_of_stream_seen = true; return; } diff --git a/pkg/network/ebpf/c/protocols/http2/decoding-defs.h b/pkg/network/ebpf/c/protocols/http2/decoding-defs.h index 29b744a8096abb..f60464e8bb6b1f 100644 --- a/pkg/network/ebpf/c/protocols/http2/decoding-defs.h +++ b/pkg/network/ebpf/c/protocols/http2/decoding-defs.h @@ -172,7 +172,7 @@ typedef struct { status_code_t status_code; method_t request_method; path_t path; - bool request_end_of_stream; + bool end_of_stream_seen; } http2_stream_t; typedef struct { diff --git a/pkg/network/protocols/http2/types_linux.go b/pkg/network/protocols/http2/types_linux.go index 085c4a5060c9e5..fe65b0d1b4733b 100644 --- a/pkg/network/protocols/http2/types_linux.go +++ b/pkg/network/protocols/http2/types_linux.go @@ -62,13 +62,13 @@ type http2Path struct { Finalized bool } type HTTP2Stream struct { - Response_last_seen uint64 - Request_started uint64 - Status_code http2StatusCode - Request_method http2requestMethod - Path http2Path - Request_end_of_stream bool - Pad_cgo_0 [2]byte + Response_last_seen uint64 + Request_started uint64 + Status_code http2StatusCode + Request_method http2requestMethod + Path http2Path + End_of_stream_seen bool + Pad_cgo_0 [2]byte } type EbpfTx struct { Tuple connTuple From dd8188170eb12b0964a29426cf42fc8bd9e9c69b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9lian=20Raimbault?= <161456554+CelianR@users.noreply.github.com> Date: Thu, 7 Mar 2024 17:40:36 +0100 Subject: [PATCH 077/155] Revert "[auto-team-labels] Set up auto team label assignation as github workflow (#23393)" (#23535) This reverts commit 208287a2e4d99a0a25efc6263ccf33ac54d020fe. --- .github/workflows/label-analysis.yml | 14 +----- tasks/github_tasks.py | 60 ---------------------- tasks/libs/common/github_api.py | 24 --------- tasks/unit-tests/github_tasks_tests.py | 64 ------------------------ tasks/unit-tests/testdata/codeowners.txt | 4 -- 5 files changed, 1 insertion(+), 165 deletions(-) delete mode 100644 tasks/unit-tests/github_tasks_tests.py delete mode 100644 tasks/unit-tests/testdata/codeowners.txt diff --git a/.github/workflows/label-analysis.yml b/.github/workflows/label-analysis.yml index 7d97b83595f71f..0dd2dddb96845d 100644 --- a/.github/workflows/label-analysis.yml +++ b/.github/workflows/label-analysis.yml @@ -9,23 +9,11 @@ on: - "[0-9]+.[0-9]+.x" env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_REPO: ${{ github.repository }} jobs: - assign-team-label: - if: github.triggering_actor != 'dd-devflow[bot]' - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - name: Install Python dependencies - run: pip install -r tasks/requirements.txt - - name: Auto assign team label - run: inv -e github.assign-team-label --pr-id='${{ github.event.pull_request.number }}' fetch-labels: - needs: assign-team-label if: github.triggering_actor != 'dd-devflow[bot]' runs-on: ubuntu-latest outputs: @@ -34,7 +22,7 @@ jobs: - name: Get PR labels id: pr-labels run: | - labels="$(gh pr view '${{ github.event.pull_request.number }}' --json labels --jq '[.labels[].name] | (join(" "))')" + labels="${{join(github.event.pull_request.labels.*.name, ' ')}}" echo "Fetched labels for PR ${{github.event.number}}: $labels" echo "LABELS=$labels" >> "$GITHUB_OUTPUT" team-label: diff --git a/tasks/github_tasks.py b/tasks/github_tasks.py index e57326a3c8cbee..ed2f6c515e7407 100644 --- a/tasks/github_tasks.py +++ b/tasks/github_tasks.py @@ -1,9 +1,7 @@ import os import re import time -from collections import Counter from functools import lru_cache -from typing import List from invoke import Exit, task @@ -18,7 +16,6 @@ trigger_macos_workflow, ) from tasks.libs.junit_upload_core import repack_macos_junit_tar -from tasks.libs.pipeline_notifications import read_owners from tasks.release import _get_release_json_value @@ -191,60 +188,3 @@ def get_token_from_app(_, app_id_env='GITHUB_APP_ID', pkey_env='GITHUB_KEY_B64') from .libs.common.github_api import GithubAPI GithubAPI.get_token_from_app(app_id_env, pkey_env) - - -def _get_teams(changed_files, owners_file='.github/CODEOWNERS') -> List[str]: - codeowners = read_owners(owners_file) - - team_counter = Counter() - for file in changed_files: - owners = [name for (kind, name) in codeowners.of(file) if kind == 'TEAM'] - team_counter.update(owners) - - team_count = team_counter.most_common() - if team_count == []: - return [] - - _, best_count = team_count[0] - best_teams = [team for (team, count) in team_count if count == best_count] - - return best_teams - - -@task -def assign_team_label(_, pr_id=-1): - """ - Assigns the github team label name if teams can - be deduced from the changed files - """ - import github - - from tasks.libs.common.github_api import GithubAPI - - gh = GithubAPI('DataDog/datadog-agent') - - labels = gh.get_pr_labels(pr_id) - - # Skip if necessary - if 'qa/done' in labels or 'qa/no-code-change' in labels: - print('Qa done or no code change, skipping') - return - - if any(label.startswith('team/') for label in labels): - print('This PR already has a team label, skipping') - return - - # Find team - teams = _get_teams(gh.get_pr_files(pr_id)) - if teams == []: - print('No team found') - return - - # Assign label - team_labels = [f"team{team.removeprefix('@Datadog')}" for team in teams if team.startswith("@DataDog/")] - for label_name in team_labels: - try: - gh.add_pr_label(pr_id, label_name) - print(label_name, 'label assigned to the pull request') - except github.GithubException.GithubException: - print(f'Failed to assign label {label_name}') diff --git a/tasks/libs/common/github_api.py b/tasks/libs/common/github_api.py index c6a00035910758..daa807f9c5d928 100644 --- a/tasks/libs/common/github_api.py +++ b/tasks/libs/common/github_api.py @@ -3,7 +3,6 @@ import platform import re import subprocess -from typing import List try: from github import Auth, Github, GithubException, GithubIntegration, GithubObject @@ -192,29 +191,6 @@ def get_rate_limit_info(self): """ return self._github.rate_limiting - def add_pr_label(self, pr_id: int, label: str) -> None: - """ - Tries to add a label to the pull request - """ - pr = self._repository.get_pull(pr_id) - pr.add_to_labels(label) - - def get_pr_labels(self, pr_id: int) -> List[str]: - """ - Returns the labels of a pull request - """ - pr = self._repository.get_pull(pr_id) - - return [label.name for label in pr.get_labels()] - - def get_pr_files(self, pr_id: int) -> List[str]: - """ - Returns the files involved in the PR - """ - pr = self._repository.get_pull(pr_id) - - return [f.filename for f in pr.get_files()] - def _chose_auth(self, public_repo): """ Attempt to find a working authentication, in order: diff --git a/tasks/unit-tests/github_tasks_tests.py b/tasks/unit-tests/github_tasks_tests.py deleted file mode 100644 index 11c34ea8a60fdb..00000000000000 --- a/tasks/unit-tests/github_tasks_tests.py +++ /dev/null @@ -1,64 +0,0 @@ -import unittest - -from tasks.github_tasks import _get_teams - - -class TestAssignTeamLabel(unittest.TestCase): - CODEOWNERS_FILE = './tasks/unit-tests/testdata/codeowners.txt' - - def test_no_match(self): - changed_files = ['idonotexist'] - expected_teams = [] - - teams = _get_teams(changed_files, TestAssignTeamLabel.CODEOWNERS_FILE) - - self.assertEqual(sorted(teams), sorted(expected_teams)) - - def test_no_file(self): - changed_files = [] - expected_teams = [] - - teams = _get_teams(changed_files, TestAssignTeamLabel.CODEOWNERS_FILE) - - self.assertEqual(sorted(teams), sorted(expected_teams)) - - def test_single_file_single_team(self): - changed_files = ['.gitignore'] - expected_teams = ['@DataDog/agent-platform'] - - teams = _get_teams(changed_files, TestAssignTeamLabel.CODEOWNERS_FILE) - - self.assertEqual(sorted(teams), sorted(expected_teams)) - - def test_single_file_multiple_teams(self): - changed_files = ['README.md'] - expected_teams = ['@DataDog/agent-platform', '@DataDog/documentation'] - - teams = _get_teams(changed_files, TestAssignTeamLabel.CODEOWNERS_FILE) - - self.assertEqual(sorted(teams), sorted(expected_teams)) - - def test_multiple_files_single_team(self): - changed_files = ['.gitignore', '.gitlab/a.py'] - expected_teams = ['@DataDog/agent-platform'] - - teams = _get_teams(changed_files, TestAssignTeamLabel.CODEOWNERS_FILE) - - self.assertEqual(sorted(teams), sorted(expected_teams)) - - def test_multiple_files_single_team_best(self): - # agent-platform has more files than security so only one team will be assigned - changed_files = ['.gitignore', '.gitlab-ci.yml', '.gitlab/security.yml'] - expected_teams = ['@DataDog/agent-platform'] - - teams = _get_teams(changed_files, TestAssignTeamLabel.CODEOWNERS_FILE) - - self.assertEqual(sorted(teams), sorted(expected_teams)) - - def test_multiple_files_multiple_teams(self): - changed_files = ['.gitignore', '.gitlab/security.yml'] - expected_teams = ['@DataDog/agent-platform', '@DataDog/agent-security'] - - teams = _get_teams(changed_files, TestAssignTeamLabel.CODEOWNERS_FILE) - - self.assertEqual(sorted(teams), sorted(expected_teams)) diff --git a/tasks/unit-tests/testdata/codeowners.txt b/tasks/unit-tests/testdata/codeowners.txt deleted file mode 100644 index ff398c0a090035..00000000000000 --- a/tasks/unit-tests/testdata/codeowners.txt +++ /dev/null @@ -1,4 +0,0 @@ -/.* @DataDog/agent-platform -/*.md @DataDog/agent-platform @DataDog/documentation -/.gitlab/ @DataDog/agent-platform -/.gitlab/security.yml @DataDog/agent-security From 699746496b0a9925650bedd2a98a6aa204a4fb2c Mon Sep 17 00:00:00 2001 From: Gustavo Caso Date: Thu, 7 Mar 2024 18:41:22 +0100 Subject: [PATCH 078/155] [ASCII-1021] use status component in process agent (#23518) * use stats component in process agent * update tests * remove switch case --- cmd/process-agent/api/server.go | 2 + cmd/process-agent/api/status.go | 34 +---- cmd/process-agent/command/main_common.go | 7 + .../subcommands/status/status.go | 39 ++---- .../subcommands/status/status_test.go | 14 +- comp/process/apiserver/apiserver_test.go | 8 ++ comp/process/bundle.go | 5 + comp/process/bundle_test.go | 7 + .../statusimpl/fixtures/expvar_response.tmpl | 47 +++++++ .../statusimpl/fixtures/json_response.tmpl | 126 ------------------ .../statusimpl/fixtures/text_response.tmpl | 48 ------- comp/process/status/statusimpl/status.go | 56 ++++---- comp/process/status/statusimpl/status_test.go | 32 ++--- 13 files changed, 128 insertions(+), 297 deletions(-) create mode 100644 comp/process/status/statusimpl/fixtures/expvar_response.tmpl delete mode 100644 comp/process/status/statusimpl/fixtures/json_response.tmpl delete mode 100644 comp/process/status/statusimpl/fixtures/text_response.tmpl diff --git a/cmd/process-agent/api/server.go b/cmd/process-agent/api/server.go index 8e8afc29e86c53..68313a12f60875 100644 --- a/cmd/process-agent/api/server.go +++ b/cmd/process-agent/api/server.go @@ -13,6 +13,7 @@ import ( "github.com/DataDog/datadog-agent/comp/core/config" "github.com/DataDog/datadog-agent/comp/core/log" + "github.com/DataDog/datadog-agent/comp/core/status" "github.com/DataDog/datadog-agent/comp/core/workloadmeta" settingshttp "github.com/DataDog/datadog-agent/pkg/config/settings/http" ) @@ -24,6 +25,7 @@ type APIServerDeps struct { Config config.Component Log log.Component WorkloadMeta workloadmeta.Component + Status status.Component } func injectDeps(deps APIServerDeps, handler func(APIServerDeps, http.ResponseWriter, *http.Request)) http.HandlerFunc { diff --git a/cmd/process-agent/api/status.go b/cmd/process-agent/api/status.go index 119f6e456b916f..e8aa3fac4e054d 100644 --- a/cmd/process-agent/api/status.go +++ b/cmd/process-agent/api/status.go @@ -6,47 +6,19 @@ package api import ( - "encoding/json" - "fmt" "net/http" - - ddconfig "github.com/DataDog/datadog-agent/pkg/config" - "github.com/DataDog/datadog-agent/pkg/process/util/status" ) func statusHandler(deps APIServerDeps, w http.ResponseWriter, _ *http.Request) { deps.Log.Info("Got a request for the status. Making status.") - // Get expVar server address - ipcAddr, err := ddconfig.GetIPCAddress() - if err != nil { - writeError(err, http.StatusInternalServerError, w) - _ = deps.Log.Warn("config error:", err) - return - } - - port := deps.Config.GetInt("process_config.expvar_port") - if port <= 0 { - _ = deps.Log.Warnf("Invalid process_config.expvar_port -- %d, using default port %d\n", port, ddconfig.DefaultProcessExpVarPort) - port = ddconfig.DefaultProcessExpVarPort - } - expvarEndpoint := fmt.Sprintf("http://%s:%d/debug/vars", ipcAddr, port) - - agentStatus, err := status.GetStatus(deps.Config, expvarEndpoint) + bytes, err := deps.Status.GetStatus("text", false) if err != nil { - _ = deps.Log.Warn("failed to get status from agent:", err) + _ = deps.Log.Warn("failed to get status response from agent:", err) writeError(err, http.StatusInternalServerError, w) return } - - b, err := json.Marshal(agentStatus) - if err != nil { - _ = deps.Log.Warn("failed to serialize status response from agent:", err) - writeError(err, http.StatusInternalServerError, w) - return - } - - _, err = w.Write(b) + _, err = w.Write(bytes) if err != nil { _ = deps.Log.Warn("received response from agent but failed write it to client:", err) } diff --git a/cmd/process-agent/command/main_common.go b/cmd/process-agent/command/main_common.go index d9c62499e4dd58..29038c38614732 100644 --- a/cmd/process-agent/command/main_common.go +++ b/cmd/process-agent/command/main_common.go @@ -19,6 +19,7 @@ import ( "github.com/DataDog/datadog-agent/comp/core/config" logComponent "github.com/DataDog/datadog-agent/comp/core/log" "github.com/DataDog/datadog-agent/comp/core/secrets" + "github.com/DataDog/datadog-agent/comp/core/status" "github.com/DataDog/datadog-agent/comp/core/sysprobeconfig" "github.com/DataDog/datadog-agent/comp/core/sysprobeconfig/sysprobeconfigimpl" "github.com/DataDog/datadog-agent/comp/core/tagger" @@ -35,6 +36,7 @@ import ( "github.com/DataDog/datadog-agent/comp/process/types" remoteconfig "github.com/DataDog/datadog-agent/comp/remote-config" "github.com/DataDog/datadog-agent/comp/remote-config/rcclient" + "github.com/DataDog/datadog-agent/pkg/collector/python" ddconfig "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/pidfile" "github.com/DataDog/datadog-agent/pkg/process/metadata/workloadmeta/collector" @@ -108,6 +110,11 @@ func runApp(ctx context.Context, globalParams *GlobalParams) error { LogParams: DaemonLogParams, }, ), + fx.Supply( + status.Params{ + PythonVersionGetFunc: python.GetPythonVersion, + }, + ), // Populate dependencies required for initialization in this function fx.Populate(&appInitDeps), diff --git a/cmd/process-agent/subcommands/status/status.go b/cmd/process-agent/subcommands/status/status.go index 6a31d44ab750de..0060c3fdf83bf2 100644 --- a/cmd/process-agent/subcommands/status/status.go +++ b/cmd/process-agent/subcommands/status/status.go @@ -7,7 +7,6 @@ package status import ( - "encoding/json" "fmt" "io" "os" @@ -23,9 +22,9 @@ import ( compStatus "github.com/DataDog/datadog-agent/comp/core/status" "github.com/DataDog/datadog-agent/comp/process" apiutil "github.com/DataDog/datadog-agent/pkg/api/util" + "github.com/DataDog/datadog-agent/pkg/collector/python" ddconfig "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/process/util/status" - "github.com/DataDog/datadog-agent/pkg/status/render" "github.com/DataDog/datadog-agent/pkg/util/fxutil" ) @@ -78,6 +77,11 @@ func Commands(globalParams *command.GlobalParams) []*cobra.Command { RunE: func(cmd *cobra.Command, args []string) error { return fxutil.OneShot(runStatus, fx.Supply(cliParams, command.GetCoreBundleParamsForOneShot(globalParams)), + fx.Supply( + compStatus.Params{ + PythonVersionGetFunc: python.GetPythonVersion, + }, + ), core.Bundle(), process.Bundle(), ) @@ -119,38 +123,11 @@ func fetchStatus(statusURL string) ([]byte, error) { func getAndWriteStatus(log log.Component, statusURL string, w io.Writer) { body, err := fetchStatus(statusURL) if err != nil { - switch err.(type) { - case status.ConnectionError: - writeNotRunning(log, w) - default: - writeError(log, w, err) - } + writeNotRunning(log, w) return } - statusMap := map[string]interface{}{} - var s status.Status - err = json.Unmarshal(body, &s) - if err != nil { - writeError(log, w, err) - return - } - - statusMap["processAgentStatus"] = s - - body, err = json.Marshal(statusMap) - if err != nil { - writeError(log, w, err) - return - } - - stats, err := render.FormatProcessAgentStatus(body) - if err != nil { - writeError(log, w, err) - return - } - - _, err = w.Write([]byte(stats)) + _, err = w.Write([]byte(body)) if err != nil { _ = log.Error(err) } diff --git a/cmd/process-agent/subcommands/status/status_test.go b/cmd/process-agent/subcommands/status/status_test.go index 5a8b510d95d689..8a87fc5c8725df 100644 --- a/cmd/process-agent/subcommands/status/status_test.go +++ b/cmd/process-agent/subcommands/status/status_test.go @@ -13,7 +13,6 @@ import ( "strings" "testing" "text/template" - "time" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -22,7 +21,6 @@ import ( hostMetadataUtils "github.com/DataDog/datadog-agent/comp/metadata/host/hostimpl/utils" "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/process/util/status" - "github.com/DataDog/datadog-agent/pkg/status/render" "github.com/DataDog/datadog-agent/pkg/trace/log" "github.com/DataDog/datadog-agent/pkg/util/fxutil" ) @@ -41,10 +39,7 @@ func fakeStatusServer(t *testing.T, stats status.Status) *httptest.Server { } func TestStatus(t *testing.T) { - testTime := time.Now() - statusData := map[string]status.Status{} statusInfo := status.Status{ - Date: float64(testTime.UnixNano()), Core: status.CoreStatus{ Metadata: hostMetadataUtils.Payload{ Meta: &hostMetadataUtils.Meta{}, @@ -52,21 +47,16 @@ func TestStatus(t *testing.T) { }, Expvars: status.ProcessExpvars{}, } - statusData["processAgentStatus"] = statusInfo server := fakeStatusServer(t, statusInfo) defer server.Close() - // Build what the expected status should be - j, err := json.Marshal(statusData) - require.NoError(t, err) - expectedOutput, err := render.FormatProcessAgentStatus(j) - require.NoError(t, err) - // Build the actual status var statusBuilder strings.Builder getAndWriteStatus(log.NoopLogger, server.URL, &statusBuilder) + expectedOutput := `{"date":0,"core":{"version":"","go_version":"","build_arch":"","config":{"log_level":""},"metadata":{"os":"","agent-flavor":"","python":"","systemStats":null,"meta":{"socket-hostname":"","timezones":null,"socket-fqdn":"","ec2-hostname":"","hostname":"","host_aliases":null,"instance-id":""},"host-tags":null,"network":null,"logs":null,"install-method":null,"proxy-info":null,"otlp":null}},"expvars":{"pid":0,"uptime":0,"uptime_nano":0,"memstats":{"alloc":0},"version":{"Version":"","GitCommit":"","GitBranch":"","BuildDate":"","GoVersion":""},"docker_socket":"","last_collect_time":"","process_count":0,"container_count":0,"process_queue_size":0,"rtprocess_queue_size":0,"connections_queue_size":0,"event_queue_size":0,"pod_queue_size":0,"process_queue_bytes":0,"rtprocess_queue_bytes":0,"connections_queue_bytes":0,"event_queue_bytes":0,"pod_queue_bytes":0,"container_id":"","proxy_url":"","log_file":"","enabled_checks":null,"endpoints":null,"drop_check_payloads":null,"system_probe_process_module_enabled":false,"language_detection_enabled":false,"workloadmeta_extractor_cache_size":0,"workloadmeta_extractor_stale_diffs":0,"workloadmeta_extractor_diffs_dropped":0}}` + assert.Equal(t, expectedOutput, statusBuilder.String()) } diff --git a/comp/process/apiserver/apiserver_test.go b/comp/process/apiserver/apiserver_test.go index 2c92d7a3626120..82aefdea837e84 100644 --- a/comp/process/apiserver/apiserver_test.go +++ b/comp/process/apiserver/apiserver_test.go @@ -14,6 +14,8 @@ import ( "go.uber.org/fx" "github.com/DataDog/datadog-agent/comp/core" + "github.com/DataDog/datadog-agent/comp/core/status" + "github.com/DataDog/datadog-agent/comp/core/status/statusimpl" "github.com/DataDog/datadog-agent/comp/core/workloadmeta" "github.com/DataDog/datadog-agent/pkg/util/fxutil" ) @@ -24,6 +26,12 @@ func TestLifecycle(t *testing.T) { core.MockBundle(), fx.Supply(workloadmeta.NewParams()), workloadmeta.Module(), + fx.Supply( + status.Params{ + PythonVersionGetFunc: func() string { return "n/a" }, + }, + ), + statusimpl.Module(), )) assert.Eventually(t, func() bool { diff --git a/comp/process/bundle.go b/comp/process/bundle.go index 8c7d8c825d1c9f..bccf2734b8341c 100644 --- a/comp/process/bundle.go +++ b/comp/process/bundle.go @@ -12,6 +12,7 @@ package process import ( + coreStatusImpl "github.com/DataDog/datadog-agent/comp/core/status/statusimpl" "github.com/DataDog/datadog-agent/comp/process/apiserver" "github.com/DataDog/datadog-agent/comp/process/connectionscheck/connectionscheckimpl" "github.com/DataDog/datadog-agent/comp/process/containercheck/containercheckimpl" @@ -24,6 +25,7 @@ import ( "github.com/DataDog/datadog-agent/comp/process/profiler/profilerimpl" "github.com/DataDog/datadog-agent/comp/process/rtcontainercheck/rtcontainercheckimpl" "github.com/DataDog/datadog-agent/comp/process/runner/runnerimpl" + "github.com/DataDog/datadog-agent/comp/process/status/statusimpl" "github.com/DataDog/datadog-agent/comp/process/submitter/submitterimpl" "github.com/DataDog/datadog-agent/pkg/util/fxutil" ) @@ -47,6 +49,9 @@ func Bundle() fxutil.BundleOptions { hostinfoimpl.Module(), expvarsimpl.Module(), + statusimpl.Module(), + coreStatusImpl.Module(), + apiserver.Module(), forwardersimpl.Module(), ) diff --git a/comp/process/bundle_test.go b/comp/process/bundle_test.go index 1d0198c043e7d7..ba23440313ded8 100644 --- a/comp/process/bundle_test.go +++ b/comp/process/bundle_test.go @@ -15,10 +15,12 @@ import ( "github.com/DataDog/datadog-agent/comp/core" configComp "github.com/DataDog/datadog-agent/comp/core/config" "github.com/DataDog/datadog-agent/comp/core/log/logimpl" + "github.com/DataDog/datadog-agent/comp/core/status" "github.com/DataDog/datadog-agent/comp/core/tagger" "github.com/DataDog/datadog-agent/comp/core/workloadmeta" "github.com/DataDog/datadog-agent/comp/process/runner" "github.com/DataDog/datadog-agent/comp/process/types" + "github.com/DataDog/datadog-agent/pkg/collector/python" "github.com/DataDog/datadog-agent/pkg/util/fxutil" ) @@ -35,6 +37,11 @@ func TestBundleDependencies(t *testing.T) { core.MockBundle(), workloadmeta.Module(), fx.Supply(tagger.NewFakeTaggerParams()), + fx.Supply( + status.Params{ + PythonVersionGetFunc: python.GetPythonVersion, + }, + ), fx.Provide(func() context.Context { return context.TODO() }), ) } diff --git a/comp/process/status/statusimpl/fixtures/expvar_response.tmpl b/comp/process/status/statusimpl/fixtures/expvar_response.tmpl new file mode 100644 index 00000000000000..f51eda2b3eec3b --- /dev/null +++ b/comp/process/status/statusimpl/fixtures/expvar_response.tmpl @@ -0,0 +1,47 @@ +{ + "connections_queue_bytes": 0, + "connections_queue_size": 0, + "container_count": 0, + "container_id": "", + "docker_socket": "/var/run/docker.sock", + "drop_check_payloads": [], + "enabled_checks": [ + "process", + "rtprocess" + ], + "endpoints": { + "https://process.datadoghq.eu": [ + "72724" + ] + }, + "event_queue_bytes": 0, + "event_queue_size": 0, + "language_detection_enabled": false, + "last_collect_time": "2024-02-02 17:47:57", + "log_file": "", + "memstats": { + "alloc": 30387880 + }, + "pid": 72211, + "pod_queue_bytes": 0, + "pod_queue_size": 0, + "process_count": 757, + "process_queue_bytes": 0, + "process_queue_size": 0, + "proxy_url": "", + "rtprocess_queue_bytes": 0, + "rtprocess_queue_size": 0, + "system_probe_process_module_enabled": false, + "uptime": 18, + "uptime_nano": 1706892464835469000, + "version": { + "BuildDate": "", + "GitBranch": "", + "GitCommit": "", + "GoVersion": "", + "Version": "" + }, + "workloadmeta_extractor_cache_size": 0, + "workloadmeta_extractor_diffs_dropped": 0, + "workloadmeta_extractor_stale_diffs": 0 +} diff --git a/comp/process/status/statusimpl/fixtures/json_response.tmpl b/comp/process/status/statusimpl/fixtures/json_response.tmpl deleted file mode 100644 index b106576ccd0ce2..00000000000000 --- a/comp/process/status/statusimpl/fixtures/json_response.tmpl +++ /dev/null @@ -1,126 +0,0 @@ -{ - "core": { - "build_arch": "arm64", - "config": { - "log_level": "info" - }, - "go_version": "go1.21.5", - "metadata": { - "agent-flavor": "process_agent", - "host-tags": { - "system": [] - }, - "install-method": { - "installer_version": null, - "tool": null, - "tool_version": "undefined" - }, - "logs": { - "auto_multi_line_detection_enabled": false, - "transport": "" - }, - "meta": { - "ec2-hostname": "", - "host_aliases": [], - "hostname": "COMP-VQHPF4W6GY", - "instance-id": "", - "socket-fqdn": "COMP-VQHPF4W6GY", - "socket-hostname": "COMP-VQHPF4W6GY", - "timezones": [ - "CET" - ] - }, - "network": null, - "os": "darwin", - "otlp": { - "enabled": false - }, - "proxy-info": { - "no-proxy-nonexact-match": false, - "no-proxy-nonexact-match-explicitly-set": false, - "proxy-behavior-changed": false - }, - "python": "n/a", - "systemStats": { - "cpuCores": 10, - "fbsdV": [ - "", - "", - "" - ], - "macV": [ - "14.2.1", - [ - "", - "", - "" - ], - "arm64" - ], - "machine": "arm64", - "nixV": [ - "", - "", - "" - ], - "platform": "darwin", - "processor": "Apple M1 Max", - "pythonV": "n/a", - "winV": [ - "", - "", - "" - ] - } - }, - "version": "7.51.0-rc.1+git.416.0d1edc1" - }, - "date": 1706892483712089000, - "expvars": { - "connections_queue_bytes": 0, - "connections_queue_size": 0, - "container_count": 0, - "container_id": "", - "docker_socket": "/var/run/docker.sock", - "drop_check_payloads": [], - "enabled_checks": [ - "process", - "rtprocess" - ], - "endpoints": { - "https://process.datadoghq.eu": [ - "72724" - ] - }, - "event_queue_bytes": 0, - "event_queue_size": 0, - "language_detection_enabled": false, - "last_collect_time": "2024-02-02 17:47:57", - "log_file": "", - "memstats": { - "alloc": 30387880 - }, - "pid": 72211, - "pod_queue_bytes": 0, - "pod_queue_size": 0, - "process_count": 757, - "process_queue_bytes": 0, - "process_queue_size": 0, - "proxy_url": "", - "rtprocess_queue_bytes": 0, - "rtprocess_queue_size": 0, - "system_probe_process_module_enabled": false, - "uptime": 18, - "uptime_nano": 1706892464835469000, - "version": { - "BuildDate": "", - "GitBranch": "", - "GitCommit": "", - "GoVersion": "", - "Version": "" - }, - "workloadmeta_extractor_cache_size": 0, - "workloadmeta_extractor_diffs_dropped": 0, - "workloadmeta_extractor_stale_diffs": 0 - } -} diff --git a/comp/process/status/statusimpl/fixtures/text_response.tmpl b/comp/process/status/statusimpl/fixtures/text_response.tmpl deleted file mode 100644 index 76089de0141e57..00000000000000 --- a/comp/process/status/statusimpl/fixtures/text_response.tmpl +++ /dev/null @@ -1,48 +0,0 @@ - - Version: 7.51.0-rc.1+git.416.0d1edc1 - Status date: 2024-02-02 16:48:03.712 UTC (1706892483712) - Process Agent Start: 2024-02-02 16:47:44.835 UTC (1706892464835) - Pid: 72211 - Go Version: go1.21.5 - Build arch: arm64 - Log Level: info - Enabled Checks: [process rtprocess] - Allocated Memory: 30,387,880 bytes - Hostname: COMP-VQHPF4W6GY - System Probe Process Module Status: Not running - Process Language Detection Enabled: False - - ================= - Process Endpoints - ================= - https://process.datadoghq.eu - API Key ending with: - - 72724 - - ========= - Collector - ========= - Last collection time: 2024-02-02 17:47:57 - Docker socket: /var/run/docker.sock - Number of processes: 757 - Number of containers: 0 - Process Queue length: 0 - RTProcess Queue length: 0 - Connections Queue length: 0 - Event Queue length: 0 - Pod Queue length: 0 - Process Bytes enqueued: 0 - RTProcess Bytes enqueued: 0 - Connections Bytes enqueued: 0 - Event Bytes enqueued: 0 - Pod Bytes enqueued: 0 - Drop Check Payloads: [] - - ========== - Extractors - ========== - - Workloadmeta - ============ - Cache size: 0 - Stale diffs discarded: 0 - Diffs dropped: 0 diff --git a/comp/process/status/statusimpl/status.go b/comp/process/status/statusimpl/status.go index c57ce33ee6d4d2..f7e8f8b307a3a3 100644 --- a/comp/process/status/statusimpl/status.go +++ b/comp/process/status/statusimpl/status.go @@ -11,32 +11,20 @@ import ( "encoding/json" "fmt" "io" - "net/http" - "sync" "go.uber.org/fx" + "github.com/DataDog/datadog-agent/comp/core/config" "github.com/DataDog/datadog-agent/comp/core/status" + ddconfig "github.com/DataDog/datadog-agent/pkg/config" + processStatus "github.com/DataDog/datadog-agent/pkg/process/util/status" "github.com/DataDog/datadog-agent/pkg/util/fxutil" - - apiutil "github.com/DataDog/datadog-agent/pkg/api/util" - - "github.com/DataDog/datadog-agent/pkg/config" -) - -// httpClients should be reused instead of created as needed. They keep cached TCP connections -// that may leak otherwise -var ( - httpClient *http.Client - clientInitOnce sync.Once ) -func client() *http.Client { - clientInitOnce.Do(func() { - httpClient = apiutil.GetClient(false) - }) +type dependencies struct { + fx.In - return httpClient + Config config.Component } type provides struct { @@ -53,11 +41,14 @@ func Module() fxutil.Module { type statusProvider struct { testServerURL string + config config.Component } -func newStatus() provides { +func newStatus(deps dependencies) provides { return provides{ - StatusProvider: status.NewInformationProvider(statusProvider{}), + StatusProvider: status.NewInformationProvider(statusProvider{ + config: deps.Config, + }), } } @@ -87,28 +78,39 @@ func (s statusProvider) getStatusInfo() map[string]interface{} { func (s statusProvider) populateStatus() map[string]interface{} { status := make(map[string]interface{}) - c := client() - var url string if s.testServerURL != "" { url = s.testServerURL } else { - addressPort, err := config.GetProcessAPIAddressPort() + + // Get expVar server address + ipcAddr, err := ddconfig.GetIPCAddress() if err != nil { status["error"] = fmt.Sprintf("%v", err.Error()) return status } - url = fmt.Sprintf("http://%s/agent/status", addressPort) - } - b, err := apiutil.DoGet(c, url, apiutil.CloseConnection) + port := s.config.GetInt("process_config.expvar_port") + if port <= 0 { + port = ddconfig.DefaultProcessExpVarPort + } + url = fmt.Sprintf("http://%s:%d/debug/vars", ipcAddr, port) + } + agentStatus, err := processStatus.GetStatus(s.config, url) if err != nil { status["error"] = fmt.Sprintf("%v", err.Error()) return status } - err = json.Unmarshal(b, &status) + bytes, err := json.Marshal(agentStatus) + if err != nil { + return map[string]interface{}{ + "error": fmt.Sprintf("%v", err.Error()), + } + } + + err = json.Unmarshal(bytes, &status) if err != nil { return map[string]interface{}{ "error": fmt.Sprintf("%v", err.Error()), diff --git a/comp/process/status/statusimpl/status_test.go b/comp/process/status/statusimpl/status_test.go index 33e76e203497d2..a3bd612c618fea 100644 --- a/comp/process/status/statusimpl/status_test.go +++ b/comp/process/status/statusimpl/status_test.go @@ -10,10 +10,11 @@ import ( "embed" "net/http" "net/http/httptest" - "os" "strings" "testing" + "github.com/DataDog/datadog-agent/comp/core/config" + "github.com/DataDog/datadog-agent/pkg/util/fxutil" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -37,23 +38,17 @@ func fakeStatusServer(t *testing.T, errCode int, response []byte) *httptest.Serv } func TestStatus(t *testing.T) { - originalTZ := os.Getenv("TZ") - os.Setenv("TZ", "UTC") - defer func() { - os.Setenv("TZ", originalTZ) - }() - - jsonBytes, err := fixturesTemplates.ReadFile("fixtures/json_response.tmpl") - assert.NoError(t, err) - - textResponse, err := fixturesTemplates.ReadFile("fixtures/text_response.tmpl") + jsonBytes, err := fixturesTemplates.ReadFile("fixtures/expvar_response.tmpl") assert.NoError(t, err) server := fakeStatusServer(t, 200, jsonBytes) defer server.Close() + configComponent := fxutil.Test[config.Component](t, config.MockModule()) + headerProvider := statusProvider{ testServerURL: server.URL, + config: configComponent, } tests := []struct { @@ -77,11 +72,7 @@ func TestStatus(t *testing.T) { assert.NoError(t, err) - // We replace windows line break by linux so the tests pass on every OS - expected := strings.Replace(string(textResponse), "\r\n", "\n", -1) - output := strings.Replace(b.String(), "\r\n", "\n", -1) - - assert.Equal(t, expected, output) + assert.True(t, strings.Contains(b.String(), "API Key ending with:")) }}, {"HTML", func(t *testing.T) { b := new(bytes.Buffer) @@ -104,17 +95,14 @@ func TestStatusError(t *testing.T) { server := fakeStatusServer(t, 500, []byte{}) defer server.Close() - originalTZ := os.Getenv("TZ") - os.Setenv("TZ", "UTC") - defer func() { - os.Setenv("TZ", originalTZ) - }() - errorResponse, err := fixturesTemplates.ReadFile("fixtures/text_error_response.tmpl") assert.NoError(t, err) + configComponent := fxutil.Test[config.Component](t, config.MockModule()) + headerProvider := statusProvider{ testServerURL: server.URL, + config: configComponent, } tests := []struct { From e45cfd9d3f80dbd35ac5cf838ad27c78c3006b6d Mon Sep 17 00:00:00 2001 From: Nicolas Schweitzer Date: Thu, 7 Mar 2024 18:41:27 +0100 Subject: [PATCH 079/155] fix(ci): prevent warning in sca job (#23540) --- .../software_composition_analysis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab/software_composition_analysis/software_composition_analysis.yml b/.gitlab/software_composition_analysis/software_composition_analysis.yml index 9fdea68b84f57b..4800097f261a34 100644 --- a/.gitlab/software_composition_analysis/software_composition_analysis.yml +++ b/.gitlab/software_composition_analysis/software_composition_analysis.yml @@ -20,7 +20,7 @@ datadog-sca-ci: - export DD_API_KEY=$(aws ssm get-parameter --region us-east-1 --name "ci.datadog-agent.datadog_api_key_org2" --with-decryption --query "Parameter.Value" --out text) - export DD_APP_KEY=$(aws ssm get-parameter --region us-east-1 --name "ci.datadog-agent.datadog_app_key_org2" --with-decryption --query "Parameter.Value" --out text) - set -o xtrace - - trivy fs --output /tmp/trivy.sbom --format cyclonedx --offline-scan --skip-update . + - trivy fs --output /tmp/trivy.sbom --format cyclonedx --offline-scan --skip-db-update . # Required until we use datadog-ci version https://github.com/DataDog/datadog-ci/releases/tag/v2.30.0 # Current version is v2.27.0 - export DD_BETA_COMMANDS_ENABLED=true From 281a0984351b1cbf42d76f6ee1313ae33d6c881d Mon Sep 17 00:00:00 2001 From: AliDatadog <125997632+AliDatadog@users.noreply.github.com> Date: Thu, 7 Mar 2024 19:00:33 +0100 Subject: [PATCH 080/155] [CONTINT-3859] Bump test infra definitions (#23336) * bump test infra definitions * fix image_tag issue * add docker_image and image_tag to ecs suite * rebump * hardcode the image tag * rebump with docker fix * bump with kube pkg fix * use load balancer for test-apm * rebase test-infra-definition again * bump aws everywhere * bump again with revert * move WithFakeIntakeOptions to dockerSuiteOpts * tidy --- .gitlab-ci.yml | 3 +- tasks/unit-tests/testdata/fake_gitlab-ci.yml | 2 +- test/new-e2e/go.mod | 137 ++--- test/new-e2e/go.sum | 480 +++++------------- test/new-e2e/pkg/environments/aws/ecs/ecs.go | 2 +- .../pkg/environments/aws/kubernetes/kind.go | 2 +- test/new-e2e/tests/apm/docker_test.go | 9 + test/new-e2e/tests/containers/ecs_test.go | 3 +- test/new-e2e/tests/containers/k8s_test.go | 8 +- test/new-e2e/tests/cws/ec2_test.go | 2 +- test/new-e2e/tests/cws/fargate_test.go | 10 +- test/new-e2e/tests/orchestrator/apply.go | 2 +- 12 files changed, 237 insertions(+), 423 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index fc5db4d4d4508b..fc5837955c71d6 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -182,7 +182,8 @@ variables: # To use images from test-infra-definitions dev branches, set the SUFFIX variable to -dev # and check the job creating the image to make sure you have the right SHA prefix TEST_INFRA_DEFINITIONS_BUILDIMAGES_SUFFIX: "" - TEST_INFRA_DEFINITIONS_BUILDIMAGES: 180d0c3c5d44 + # Make sure to update test-infra-definitions version in go.mod as well + TEST_INFRA_DEFINITIONS_BUILDIMAGES: a1d921006e35 DATADOG_AGENT_BUILDERS: v22276738-b36b132 DATADOG_AGENT_EMBEDDED_PATH: /opt/datadog-agent/embedded diff --git a/tasks/unit-tests/testdata/fake_gitlab-ci.yml b/tasks/unit-tests/testdata/fake_gitlab-ci.yml index 7b510943a40b7e..27967ef7c523e7 100644 --- a/tasks/unit-tests/testdata/fake_gitlab-ci.yml +++ b/tasks/unit-tests/testdata/fake_gitlab-ci.yml @@ -170,7 +170,7 @@ variables: # To use images from test-infra-definitions dev branches, set the SUFFIX variable to -dev # and check the job creating the image to make sure you have the right SHA prefix TEST_INFRA_DEFINITIONS_BUILDIMAGES_SUFFIX: "" - TEST_INFRA_DEFINITIONS_BUILDIMAGES: 8d38c2a2a794 + TEST_INFRA_DEFINITIONS_BUILDIMAGES: 59215b0d47c4 DATADOG_AGENT_BUILDERS: v21429255-6b46caa DATADOG_AGENT_EMBEDDED_PATH: /opt/datadog-agent/embedded diff --git a/test/new-e2e/go.mod b/test/new-e2e/go.mod index 2f036b45173bb2..7e6ac0052560e0 100644 --- a/test/new-e2e/go.mod +++ b/test/new-e2e/go.mod @@ -27,9 +27,9 @@ require ( // `TEST_INFRA_DEFINITIONS_BUILDIMAGES` matches the commit sha in the module version // Example: github.com/DataDog/test-infra-definitions v0.0.0-YYYYMMDDHHmmSS-0123456789AB // => TEST_INFRA_DEFINITIONS_BUILDIMAGES: 0123456789AB - github.com/DataDog/test-infra-definitions v0.0.0-20240221174424-180d0c3c5d44 - github.com/aws/aws-sdk-go-v2 v1.24.0 - github.com/aws/aws-sdk-go-v2/config v1.25.10 + github.com/DataDog/test-infra-definitions v0.0.0-20240306160032-a1d921006e35 + github.com/aws/aws-sdk-go-v2 v1.25.2 + github.com/aws/aws-sdk-go-v2/config v1.27.6 github.com/aws/aws-sdk-go-v2/service/ec2 v1.138.1 github.com/aws/aws-sdk-go-v2/service/eks v1.35.1 github.com/aws/aws-sdk-go-v2/service/ssm v1.44.1 @@ -37,17 +37,17 @@ require ( github.com/docker/cli v24.0.7+incompatible github.com/docker/docker v24.0.7+incompatible github.com/fatih/color v1.16.0 - github.com/google/uuid v1.5.0 + github.com/google/uuid v1.6.0 github.com/kr/pretty v0.3.1 github.com/pkg/sftp v1.13.6 - github.com/pulumi/pulumi/sdk/v3 v3.99.0 + github.com/pulumi/pulumi/sdk/v3 v3.108.1 github.com/pulumiverse/pulumi-time/sdk v0.0.0-20231010123146-089d7304da13 - github.com/samber/lo v1.38.1 + github.com/samber/lo v1.39.0 github.com/sethvargo/go-retry v0.2.4 github.com/stretchr/testify v1.8.5-0.20231013065317-89920137cdfa - golang.org/x/crypto v0.17.0 - golang.org/x/sys v0.15.0 - golang.org/x/term v0.15.0 + golang.org/x/crypto v0.21.0 + golang.org/x/sys v0.18.0 + golang.org/x/term v0.18.0 gopkg.in/yaml.v2 v2.4.0 gopkg.in/zorkian/go-datadog-api.v2 v2.30.0 k8s.io/api v0.28.4 @@ -67,43 +67,41 @@ require ( github.com/MakeNowJust/heredoc v1.0.0 // indirect github.com/Masterminds/semver v1.5.0 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect - github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 // indirect - github.com/acomagu/bufpipe v1.0.4 // indirect + github.com/ProtonMail/go-crypto v1.0.0 // indirect github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da // indirect github.com/agext/levenshtein v1.2.3 // indirect github.com/alessio/shellescape v1.4.2 // indirect - github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect github.com/atotto/clipboard v0.1.4 // indirect - github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.5.4 // indirect - github.com/aws/aws-sdk-go-v2/credentials v1.16.8 // indirect - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.14.8 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.2.9 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.5.9 // indirect - github.com/aws/aws-sdk-go-v2/internal/ini v1.7.1 // indirect - github.com/aws/aws-sdk-go-v2/internal/v4a v1.2.9 // indirect - github.com/aws/aws-sdk-go-v2/service/ecs v1.35.1 - github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.10.4 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.2.9 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.10.9 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.16.9 // indirect - github.com/aws/aws-sdk-go-v2/service/s3 v1.47.6 - github.com/aws/aws-sdk-go-v2/service/sso v1.18.1 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.21.1 // indirect - github.com/aws/aws-sdk-go-v2/service/sts v1.26.1 // indirect - github.com/aws/smithy-go v1.19.0 // indirect + github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.1 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.17.6 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.15.2 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.2 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.2 // indirect + github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 // indirect + github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.2 // indirect + github.com/aws/aws-sdk-go-v2/service/ecs v1.41.1 + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.1 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.3.4 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.4 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.17.2 // indirect + github.com/aws/aws-sdk-go-v2/service/s3 v1.51.3 + github.com/aws/aws-sdk-go-v2/service/sso v1.20.1 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.1 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.28.3 // indirect + github.com/aws/smithy-go v1.20.1 // indirect github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect github.com/blang/semver v3.5.1+incompatible // indirect github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/chai2010/gettext-go v1.0.2 // indirect - github.com/charmbracelet/bubbles v0.16.1 // indirect - github.com/charmbracelet/bubbletea v0.24.2 // indirect - github.com/charmbracelet/lipgloss v0.7.1 // indirect + github.com/charmbracelet/bubbles v0.18.0 // indirect + github.com/charmbracelet/bubbletea v0.25.0 // indirect + github.com/charmbracelet/lipgloss v0.10.0 // indirect github.com/cheggaaa/pb v1.0.29 // indirect - github.com/cloudflare/circl v1.3.3 // indirect - github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 // indirect + github.com/cloudflare/circl v1.3.7 // indirect + github.com/containerd/console v1.0.4 // indirect github.com/cyphar/filepath-securejoin v0.2.4 // indirect github.com/davecgh/go-spew v1.1.1 // indirect - github.com/djherbis/times v1.5.0 // indirect + github.com/djherbis/times v1.6.0 // indirect github.com/docker/distribution v2.8.2+incompatible // indirect github.com/docker/go-connections v0.4.0 // indirect github.com/docker/go-units v0.5.0 // indirect @@ -111,31 +109,31 @@ require ( github.com/emirpasic/gods v1.18.1 // indirect github.com/evanphx/json-patch v4.12.0+incompatible // indirect github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d // indirect - github.com/fsnotify/fsnotify v1.6.0 // indirect + github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/fvbommel/sortorder v1.1.0 // indirect github.com/go-errors/errors v1.4.2 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect github.com/go-git/go-billy/v5 v5.5.0 // indirect - github.com/go-git/go-git/v5 v5.9.0 // indirect + github.com/go-git/go-git/v5 v5.11.0 // indirect github.com/go-logr/logr v1.2.4 // indirect github.com/go-openapi/jsonpointer v0.19.6 // indirect github.com/go-openapi/jsonreference v0.20.2 // indirect github.com/go-openapi/swag v0.22.3 // indirect github.com/goccy/go-json v0.10.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang/glog v1.1.2 // indirect + github.com/golang/glog v1.2.0 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect - github.com/golang/protobuf v1.5.3 // indirect + github.com/golang/protobuf v1.5.4 // indirect github.com/google/btree v1.0.1 // indirect github.com/google/gnostic-models v0.6.8 // indirect - github.com/google/go-cmp v0.5.9 // indirect + github.com/google/go-cmp v0.6.0 // indirect github.com/google/gofuzz v1.2.0 // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7 // indirect github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect - github.com/hashicorp/hcl/v2 v2.17.0 // indirect + github.com/hashicorp/hcl/v2 v2.20.0 // indirect github.com/imdario/mergo v0.3.16 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect @@ -165,7 +163,7 @@ require ( github.com/muesli/reflow v0.3.0 // indirect github.com/muesli/termenv v0.15.2 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect - github.com/nxadm/tail v1.4.8 // indirect + github.com/nxadm/tail v1.4.11 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.0.2 // indirect github.com/opentracing/basictracer-go v1.1.0 // indirect @@ -178,28 +176,23 @@ require ( github.com/pkg/term v1.1.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 // indirect - github.com/pulumi/esc v0.6.2 // indirect - github.com/pulumi/pulumi-aws/sdk/v5 v5.42.0 - github.com/pulumi/pulumi-awsx/sdk v1.0.6 + github.com/pulumi/esc v0.8.2 // indirect github.com/pulumi/pulumi-command/sdk v0.9.2 // indirect - github.com/pulumi/pulumi-docker/sdk/v3 v3.6.1 // indirect - github.com/pulumi/pulumi-eks/sdk v1.0.4 // indirect - github.com/pulumi/pulumi-kubernetes/sdk/v3 v3.30.2 - github.com/pulumi/pulumi-libvirt/sdk v0.4.0 // indirect + github.com/pulumi/pulumi-libvirt/sdk v0.4.4 // indirect // pulumi-random v4.14.0 uses GO 1.21: // https://github.com/pulumi/pulumi-random/blob/v4.14.0/sdk/go.mod#L3 // So, do not upgrade pulumi-random to v4.14.0 or above before migration to GO 1.21. - github.com/pulumi/pulumi-random/sdk/v4 v4.13.4 // indirect - github.com/pulumi/pulumi-tls/sdk/v4 v4.10.0 // indirect - github.com/rivo/uniseg v0.4.4 // indirect - github.com/rogpeppe/go-internal v1.11.0 // indirect + github.com/pulumi/pulumi-random/sdk/v4 v4.16.0 // indirect + github.com/pulumi/pulumi-tls/sdk/v4 v4.11.1 // indirect + github.com/rivo/uniseg v0.4.7 // indirect + github.com/rogpeppe/go-internal v1.12.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 // indirect github.com/santhosh-tekuri/jsonschema/v5 v5.3.1 // indirect github.com/sergi/go-diff v1.3.1 // indirect github.com/sirupsen/logrus v1.9.0 // indirect - github.com/skeema/knownhosts v1.2.0 // indirect - github.com/spf13/cast v1.5.1 // indirect + github.com/skeema/knownhosts v1.2.1 // indirect + github.com/spf13/cast v1.6.0 // indirect github.com/spf13/cobra v1.8.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/stretchr/objx v0.5.0 // indirect @@ -210,22 +203,22 @@ require ( github.com/uber/jaeger-lib v2.4.1+incompatible // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect github.com/xlab/treeprint v1.2.0 // indirect - github.com/zclconf/go-cty v1.13.2 // indirect + github.com/zclconf/go-cty v1.14.3 // indirect github.com/zorkian/go-datadog-api v2.30.0+incompatible go.starlark.net v0.0.0-20230525235612-a134d8f9ddca // indirect go.uber.org/atomic v1.11.0 // indirect - golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa // indirect - golang.org/x/mod v0.14.0 // indirect - golang.org/x/net v0.19.0 // indirect - golang.org/x/oauth2 v0.11.0 // indirect - golang.org/x/sync v0.5.0 // indirect + golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect + golang.org/x/mod v0.16.0 // indirect + golang.org/x/net v0.22.0 // indirect + golang.org/x/oauth2 v0.16.0 // indirect + golang.org/x/sync v0.6.0 // indirect golang.org/x/text v0.14.0 golang.org/x/time v0.3.0 // indirect - golang.org/x/tools v0.15.0 // indirect - google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d // indirect - google.golang.org/grpc v1.59.0 // indirect - google.golang.org/protobuf v1.31.0 // indirect + golang.org/x/tools v0.19.0 // indirect + google.golang.org/appengine v1.6.8 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240304212257-790db918fca8 // indirect + google.golang.org/grpc v1.62.1 // indirect + google.golang.org/protobuf v1.33.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect @@ -242,3 +235,15 @@ require ( sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect sigs.k8s.io/yaml v1.3.0 // indirect ) + +require ( + github.com/pulumi/pulumi-aws/sdk/v6 v6.25.0 + github.com/pulumi/pulumi-awsx/sdk/v2 v2.5.0 + github.com/pulumi/pulumi-kubernetes/sdk/v4 v4.9.0 +) + +require ( + github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect + github.com/pulumi/pulumi-docker/sdk/v4 v4.5.1 // indirect + github.com/pulumi/pulumi-eks/sdk/v2 v2.2.1 // indirect +) diff --git a/test/new-e2e/go.sum b/test/new-e2e/go.sum index 2241421b2aa857..efd9182f148bbc 100644 --- a/test/new-e2e/go.sum +++ b/test/new-e2e/go.sum @@ -12,8 +12,8 @@ github.com/DataDog/datadog-api-client-go/v2 v2.19.0 h1:Wvz/63/q39EpVwSH1T8jVyRvP github.com/DataDog/datadog-api-client-go/v2 v2.19.0/go.mod h1:oD5Lx8Li3oPRa/BSBenkn4i48z+91gwYORF/+6ph71g= github.com/DataDog/mmh3 v0.0.0-20200805151601-30884ca2197a h1:m9REhmyaWD5YJ0P53ygRHxKKo+KM+nw+zz0hEdKztMo= github.com/DataDog/mmh3 v0.0.0-20200805151601-30884ca2197a/go.mod h1:SvsjzyJlSg0rKsqYgdcFxeEVflx3ZNAyFfkUHP0TxXg= -github.com/DataDog/test-infra-definitions v0.0.0-20240221174424-180d0c3c5d44 h1:H+5Yl0JQK4kGow0m0fIh4u/DsRQxgik7cpfWptTZeiw= -github.com/DataDog/test-infra-definitions v0.0.0-20240221174424-180d0c3c5d44/go.mod h1:Mcl9idboPONlGfuPsiNHycNiyXVJNQKi/Q+ZOXczzYc= +github.com/DataDog/test-infra-definitions v0.0.0-20240306160032-a1d921006e35 h1:a53/jzR6IVWpq8ZvnxAV5wcqrlNl7uhvOtaO2FubRFc= +github.com/DataDog/test-infra-definitions v0.0.0-20240306160032-a1d921006e35/go.mod h1:e2N24reKK2YalYpReudXYPTIiCRU+mWBq8vKVaYrQ7E= github.com/DataDog/zstd v1.5.2 h1:vUG4lAyuPCXO0TLbXvPv7EB7cNK1QV/luu55UHLrrn8= github.com/DataDog/zstd v1.5.2/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/DataDog/zstd_0 v0.0.0-20210310093942-586c1286621f h1:5Vuo4niPKFkfwW55jV4vY0ih3VQ9RaQqeqY67fvRn8A= @@ -24,87 +24,73 @@ github.com/MakeNowJust/heredoc v1.0.0 h1:cXCdzVdstXyiTqTvfqk9SDHpKNjxuom+DOlyEeQ github.com/MakeNowJust/heredoc v1.0.0/go.mod h1:mG5amYoWBHf8vpLOuehzbGGw0EHxpZZ6lCpQ4fNJ8LE= github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= -github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= -github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7/go.mod h1:z4/9nQmJSSwwds7ejkxaJwO37dru3geImFUdJlaLzQo= -github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 h1:kkhsdkhsCvIsutKu5zLMgWtgh9YxGCNAw8Ad8hjwfYg= -github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= -github.com/acomagu/bufpipe v1.0.3/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4= -github.com/acomagu/bufpipe v1.0.4 h1:e3H4WUzM3npvo5uv95QuJM3cQspFNtFBzvJ2oNjKIDQ= -github.com/acomagu/bufpipe v1.0.4/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4= +github.com/ProtonMail/go-crypto v1.0.0 h1:LRuvITjQWX+WIfr930YHG2HNfjR1uOfyf5vE0kC2U78= +github.com/ProtonMail/go-crypto v1.0.0/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da h1:KjTM2ks9d14ZYCvmHS9iAKVt9AyzRSqNU1qabPih5BY= github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da/go.mod h1:eHEWzANqSiWQsof+nXEI9bUVUyV6F53Fp89EuCh2EAA= github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo= github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= -github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7/go.mod h1:6zEj6s6u/ghQa61ZWa/C2Aw3RkjiTBOix7dkqa1VLIs= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alessio/shellescape v1.4.2 h1:MHPfaU+ddJ0/bYWpgIeUnQUqKrlJ1S7BfEYPM4uEoM0= github.com/alessio/shellescape v1.4.2/go.mod h1:PZAiSCk0LJaZkiCSkPv8qIobYglO3FPpyFjDCtHLS30= -github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4= -github.com/apparentlymart/go-textseg/v13 v13.0.0 h1:Y+KvPE1NYz0xl601PVImeQfFyEy6iT90AvPUL1NNfNw= -github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo= -github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY= +github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/atotto/clipboard v0.1.4 h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z4= github.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI= -github.com/aws/aws-sdk-go-v2 v1.24.0 h1:890+mqQ+hTpNuw0gGP6/4akolQkSToDJgHfQE7AwGuk= -github.com/aws/aws-sdk-go-v2 v1.24.0/go.mod h1:LNh45Br1YAkEKaAqvmE1m8FUx6a5b/V0oAKV7of29b4= -github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.5.4 h1:OCs21ST2LrepDfD3lwlQiOqIGp6JiEUqG84GzTDoyJs= -github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.5.4/go.mod h1:usURWEKSNNAcAZuzRn/9ZYPT8aZQkR7xcCtunK/LkJo= -github.com/aws/aws-sdk-go-v2/config v1.25.10 h1:qw/e8emDtNufTkrAU86DlQ18DruMyyM7ttW6Lgwp4v0= -github.com/aws/aws-sdk-go-v2/config v1.25.10/go.mod h1:203YiAtb6XyoGxXMPsUVwEcuxCiTQY/r8P27IDjfvMc= -github.com/aws/aws-sdk-go-v2/credentials v1.16.8 h1:phw9nRLy/77bPk6Mfu2SHCOnHwfVB7WWrOa5rZIY2Fc= -github.com/aws/aws-sdk-go-v2/credentials v1.16.8/go.mod h1:MrS4SOin6adbO6wgWhdifyPiq+TX7fPPwyA/ZLC1F5M= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.14.8 h1:tQZLSPC2Zj2CqZHonLmWEvCsbpMX5tQvaYJWHadcPek= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.14.8/go.mod h1:5+YpvTHDFffykWr5qAGjqwoh8oVYZOddL3sSrEN7lws= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.2.9 h1:v+HbZaCGmOwnTTVS86Fleq0vPzOd7tnJGbFhP0stNLs= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.2.9/go.mod h1:Xjqy+Nyj7VDLBtCMkQYOw1QYfAEZCVLrfI0ezve8wd4= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.5.9 h1:N94sVhRACtXyVcjXxrwK1SKFIJrA9pOJ5yu2eSHnmls= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.5.9/go.mod h1:hqamLz7g1/4EJP+GH5NBhcUMLjW+gKLQabgyz6/7WAU= -github.com/aws/aws-sdk-go-v2/internal/ini v1.7.1 h1:uR9lXYjdPX0xY+NhvaJ4dD8rpSRz5VY81ccIIoNG+lw= -github.com/aws/aws-sdk-go-v2/internal/ini v1.7.1/go.mod h1:6fQQgfuGmw8Al/3M2IgIllycxV7ZW7WCdVSqfBeUiCY= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.2.9 h1:ugD6qzjYtB7zM5PN/ZIeaAIyefPaD82G8+SJopgvUpw= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.2.9/go.mod h1:YD0aYBWCrPENpHolhKw2XDlTIWae2GKXT1T4o6N6hiM= +github.com/aws/aws-sdk-go-v2 v1.25.2 h1:/uiG1avJRgLGiQM9X3qJM8+Qa6KRGK5rRPuXE0HUM+w= +github.com/aws/aws-sdk-go-v2 v1.25.2/go.mod h1:Evoc5AsmtveRt1komDwIsjHFyrP5tDuF1D1U+6z6pNo= +github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.1 h1:gTK2uhtAPtFcdRRJilZPx8uJLL2J85xK11nKtWL0wfU= +github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.1/go.mod h1:sxpLb+nZk7tIfCWChfd+h4QwHNUR57d8hA1cleTkjJo= +github.com/aws/aws-sdk-go-v2/config v1.27.6 h1:WmoH1aPrxwcqAZTTnETjKr+fuvqzKd4hRrKxQUiuKP4= +github.com/aws/aws-sdk-go-v2/config v1.27.6/go.mod h1:W9RZFF2pL+OhnUSZsQS/eDMWD8v+R+yWgjj3nSlrXVU= +github.com/aws/aws-sdk-go-v2/credentials v1.17.6 h1:akhj/nSC6SEx3OmiYGG/7mAyXMem9ZNVVf+DXkikcTk= +github.com/aws/aws-sdk-go-v2/credentials v1.17.6/go.mod h1:chJZuJ7TkW4kiMwmldOJOEueBoSkUb4ynZS1d9dhygo= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.15.2 h1:AK0J8iYBFeUk2Ax7O8YpLtFsfhdOByh2QIkHmigpRYk= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.15.2/go.mod h1:iRlGzMix0SExQEviAyptRWRGdYNo3+ufW/lCzvKVTUc= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.2 h1:bNo4LagzUKbjdxE0tIcR9pMzLR2U/Tgie1Hq1HQ3iH8= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.2/go.mod h1:wRQv0nN6v9wDXuWThpovGQjqF1HFdcgWjporw14lS8k= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.2 h1:EtOU5jsPdIQNP+6Q2C5e3d65NKT1PeCiQk+9OdzO12Q= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.2/go.mod h1:tyF5sKccmDz0Bv4NrstEr+/9YkSPJHrcO7UsUKf7pWM= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 h1:hT8rVHwugYE2lEfdFE0QWVo81lF7jMrYJVDWI+f+VxU= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0/go.mod h1:8tu/lYfQfFe6IGnaOdrpVgEL2IrrDOf6/m9RQum4NkY= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.2 h1:en92G0Z7xlksoOylkUhuBSfJgijC7rHVLRdnIlHEs0E= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.2/go.mod h1:HgtQ/wN5G+8QSlK62lbOtNwQ3wTSByJ4wH2rCkPt+AE= github.com/aws/aws-sdk-go-v2/service/ec2 v1.138.1 h1:ToFONzxcc0i0xp9towBF/aVy8qwqGSs3siKoOZiYEMk= github.com/aws/aws-sdk-go-v2/service/ec2 v1.138.1/go.mod h1:lTBYr5XTnzQ+fG7EdenYlhrDifjdGJ/Lxul24zeuTNU= -github.com/aws/aws-sdk-go-v2/service/ecs v1.35.1 h1:f4DtxnDnREgJADZUxuRdzGBKRH1H0G6wF6JWq0yXERY= -github.com/aws/aws-sdk-go-v2/service/ecs v1.35.1/go.mod h1:6qineQ2FiFd4AQckMmDOF/tLSQuq+Me1sZO1znKkmgc= +github.com/aws/aws-sdk-go-v2/service/ecs v1.41.1 h1:h1oi77d7nGeM7DvResjebSnhdBVJZefd/eCT+DGjhY4= +github.com/aws/aws-sdk-go-v2/service/ecs v1.41.1/go.mod h1:1yaOxYWYHZtn7CLrHCJWjzHcazl/EVsRIcNfIsBLg3I= github.com/aws/aws-sdk-go-v2/service/eks v1.35.1 h1:qaPIfeZlp+hE5QlEhkTl4zVWvBOaUN/qYgPtSinl9NM= github.com/aws/aws-sdk-go-v2/service/eks v1.35.1/go.mod h1:palnwFpS00oHlkjnWiwh6HKqtKyJSc90X54t3gKqrVU= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.10.4 h1:/b31bi3YVNlkzkBrm9LfpaKoaYZUxIAj4sHfOTmLfqw= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.10.4/go.mod h1:2aGXHFmbInwgP9ZfpmdIfOELL79zhdNYNmReK8qDfdQ= -github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.2.9 h1:/90OR2XbSYfXucBMJ4U14wrjlfleq/0SB6dZDPncgmo= -github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.2.9/go.mod h1:dN/Of9/fNZet7UrQQ6kTDo/VSwKPIq94vjlU16bRARc= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.10.9 h1:Nf2sHxjMJR8CSImIVCONRi4g0Su3J+TSTbS7G0pUeMU= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.10.9/go.mod h1:idky4TER38YIjr2cADF1/ugFMKvZV7p//pVeV5LZbF0= -github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.16.9 h1:iEAeF6YC3l4FzlJPP9H3Ko1TXpdjdqWffxXjp8SY6uk= -github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.16.9/go.mod h1:kjsXoK23q9Z/tLBrckZLLyvjhZoS+AGrzqzUfEClvMM= -github.com/aws/aws-sdk-go-v2/service/s3 v1.47.6 h1:bkmlzokzTJyrFNA0J+EPlsF8x4/wp+9D45HTHO/ZUiY= -github.com/aws/aws-sdk-go-v2/service/s3 v1.47.6/go.mod h1:vADO6Jn+Rq4nDtfwNjhgR84qkZwiC6FqCaXdw/kYwjA= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.1 h1:EyBZibRTVAs6ECHZOw5/wlylS9OcTzwyjeQMudmREjE= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.1/go.mod h1:JKpmtYhhPs7D97NL/ltqz7yCkERFW5dOlHyVl66ZYF8= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.3.4 h1:J3Q6N2sTChfYLZSTey3Qeo7n3JSm6RTJDcKev+7Sbus= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.3.4/go.mod h1:ZopsdDMVg1H03X7BdzpGaufOkuz27RjtKDzioP2U0Hg= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.4 h1:jRiWxyuVO8PlkN72wDMVn/haVH4SDCBkUt0Lf/dxd7s= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.4/go.mod h1:Ru7vg1iQ7cR4i7SZ/JTLYN9kaXtbL69UdgG0OQWQxW0= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.17.2 h1:1oY1AVEisRI4HNuFoLdRUB0hC63ylDAN6Me3MrfclEg= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.17.2/go.mod h1:KZ03VgvZwSjkT7fOetQ/wF3MZUvYFirlI1H5NklUNsY= +github.com/aws/aws-sdk-go-v2/service/s3 v1.51.3 h1:7cR4xxS480TI0R6Bd75g9Npdw89VriquvQPlMNmuds4= +github.com/aws/aws-sdk-go-v2/service/s3 v1.51.3/go.mod h1:zb72GZ2MvfCX5ynVJ+Mc/NCx7hncbsko4NZm5E+p6J4= github.com/aws/aws-sdk-go-v2/service/ssm v1.44.1 h1:LwoTceR/pj+zzIuVrBrESQ5K8N0T0F3agz+yUXIoVxA= github.com/aws/aws-sdk-go-v2/service/ssm v1.44.1/go.mod h1:N/ISupi87tK6YpOxPDTmF7i6qedc0HYPiUuUY8zU6RI= -github.com/aws/aws-sdk-go-v2/service/sso v1.18.1 h1:V40g2daNO3l1J94JYwqfkyvQMYXi5I25fs3fNQW8iDs= -github.com/aws/aws-sdk-go-v2/service/sso v1.18.1/go.mod h1:0ZWQJP/mBOUxkCvZKybZNz1XmdUKSBxoF0dzgfxtvDs= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.21.1 h1:uQrj7SpUNC3r55vc1CDh3qV9wJC66lz546xM9dhSo5s= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.21.1/go.mod h1:oyaTk5xEAOuPXX1kCD7HmIeuLqdj3Bk5yGkqGXtGi14= -github.com/aws/aws-sdk-go-v2/service/sts v1.26.1 h1:K33V7L0XDdb23FMOZySr8bon1jou5SHn1fiv7NJ1SUg= -github.com/aws/aws-sdk-go-v2/service/sts v1.26.1/go.mod h1:YtXUl/sfnS06VksYhr855hTQf2HphfT1Xv/EwuzbPjg= -github.com/aws/smithy-go v1.19.0 h1:KWFKQV80DpP3vJrrA9sVAHQ5gc2z8i4EzrLhLlWXcBM= -github.com/aws/smithy-go v1.19.0/go.mod h1:NukqUGpCZIILqqiV0NIjeFh24kd/FAa4beRb6nbIUPE= +github.com/aws/aws-sdk-go-v2/service/sso v1.20.1 h1:utEGkfdQ4L6YW/ietH7111ZYglLJvS+sLriHJ1NBJEQ= +github.com/aws/aws-sdk-go-v2/service/sso v1.20.1/go.mod h1:RsYqzYr2F2oPDdpy+PdhephuZxTfjHQe7SOBcZGoAU8= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.1 h1:9/GylMS45hGGFCcMrUZDVayQE1jYSIN6da9jo7RAYIw= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.1/go.mod h1:YjAPFn4kGFqKC54VsHs5fn5B6d+PCY2tziEa3U/GB5Y= +github.com/aws/aws-sdk-go-v2/service/sts v1.28.3 h1:TkiFkSVX990ryWIMBCT4kPqZEgThQe1xPU/AQXavtvU= +github.com/aws/aws-sdk-go-v2/service/sts v1.28.3/go.mod h1:xYNauIUqSuvzlPVb3VB5no/n48YGhmlInD3Uh0Co8Zc= +github.com/aws/smithy-go v1.20.1 h1:4SZlSlMr36UEqC7XOyRVb27XMeZubNcBNN+9IgEPIQw= +github.com/aws/smithy-go v1.20.1/go.mod h1:krry+ya/rV9RDcV/Q16kpu6ypI4K2czasz0NC3qS14E= github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k= github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8= github.com/benbjohnson/clock v1.3.5 h1:VvXlSJBzZpA/zum6Sj74hxwYI2DIxRWuNIoXAzHZz5o= github.com/benbjohnson/clock v1.3.5/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= -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= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= @@ -115,40 +101,28 @@ github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QH github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -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.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/chai2010/gettext-go v1.0.2 h1:1Lwwip6Q2QGsAdl/ZKPCwTe9fe0CjlUbqj5bFNSjIRk= github.com/chai2010/gettext-go v1.0.2/go.mod h1:y+wnP2cHYaVj19NZhYKAwEMH2CI1gNHeQQ+5AjwawxA= -github.com/charmbracelet/bubbles v0.16.1 h1:6uzpAAaT9ZqKssntbvZMlksWHruQLNxg49H5WdeuYSY= -github.com/charmbracelet/bubbles v0.16.1/go.mod h1:2QCp9LFlEsBQMvIYERr7Ww2H2bA7xen1idUDIzm/+Xc= -github.com/charmbracelet/bubbletea v0.24.2 h1:uaQIKx9Ai6Gdh5zpTbGiWpytMU+CfsPp06RaW2cx/SY= -github.com/charmbracelet/bubbletea v0.24.2/go.mod h1:XdrNrV4J8GiyshTtx3DNuYkR1FDaJmO3l2nejekbsgg= -github.com/charmbracelet/lipgloss v0.7.1 h1:17WMwi7N1b1rVWOjMT+rCh7sQkvDU75B2hbZpc5Kc1E= -github.com/charmbracelet/lipgloss v0.7.1/go.mod h1:yG0k3giv8Qj8edTCbbg6AlQ5e8KNWpFujkNawKNhE2c= -github.com/cheggaaa/pb v1.0.18/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= +github.com/charmbracelet/bubbles v0.18.0 h1:PYv1A036luoBGroX6VWjQIE9Syf2Wby2oOl/39KLfy0= +github.com/charmbracelet/bubbles v0.18.0/go.mod h1:08qhZhtIwzgrtBjAcJnij1t1H0ZRjwHyGsy6AL11PSw= +github.com/charmbracelet/bubbletea v0.25.0 h1:bAfwk7jRz7FKFl9RzlIULPkStffg5k6pNt5dywy4TcM= +github.com/charmbracelet/bubbletea v0.25.0/go.mod h1:EN3QDR1T5ZdWmdfDzYcqOCAps45+QIJbLOBxmVNWNNg= +github.com/charmbracelet/lipgloss v0.10.0 h1:KWeXFSexGcfahHX+54URiZGkBFazf70JNMtwg/AFW3s= +github.com/charmbracelet/lipgloss v0.10.0/go.mod h1:Wig9DSfvANsxqkRsqj6x87irdy123SR4dOXlKa91ciE= github.com/cheggaaa/pb v1.0.29 h1:FckUN5ngEk2LpvuG0fw1GEFx6LtyY2pWI/Z2QgCnEYo= github.com/cheggaaa/pb v1.0.29/go.mod h1:W40334L7FMC5JKWldsTWbdGjLo0RxUKK73K+TuPxX30= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cloudflare/circl v1.3.3 h1:fE/Qz0QdIGqeWfnwq0RE0R7MI51s0M2E4Ga9kq5AEMs= github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= -github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 h1:q2hJAaP1k2wIvVRd/hEHD7lacgqrCPS+k8g1MndzfWY= -github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6So2avqoYAk= -github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= -github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= +github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= +github.com/containerd/console v1.0.4 h1:F2g4+oChYvBTsASRTz8NP6iIAi97J3TtSAsLbIFn4ro= +github.com/containerd/console v1.0.4/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6So2avqoYAk= github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= @@ -157,11 +131,8 @@ github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxG 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/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= -github.com/djherbis/times v1.2.0/go.mod h1:CGMZlo255K5r4Yw0b9RRfFQpM2y7uOmxg4jm9HsaVf8= -github.com/djherbis/times v1.5.0 h1:79myA211VwPhFTqUk8xehWrsEO+zcIZj0zT8mXPVARU= -github.com/djherbis/times v1.5.0/go.mod h1:5q7FDLvbNg1L/KaBmPcWlVR9NmoKo3+ucqUA3ijQhA0= +github.com/djherbis/times v1.6.0 h1:w2ctJ92J8fBvWPxugmXIv7Nz7Q3iDMKNx9v5ocVH20c= +github.com/djherbis/times v1.6.0/go.mod h1:gOHeRAz2h+VJNZ5Gmc/o7iD9k4wW7NMVqieYCY99oc0= github.com/docker/cli v24.0.7+incompatible h1:wa/nIwYFW7BVTGa7SWPVyyXU9lgORqUb1xfI36MSkFg= github.com/docker/cli v24.0.7+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8= @@ -176,12 +147,9 @@ github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcej github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM= github.com/emicklei/go-restful/v3 v3.9.0 h1:XwGDlfxEnQZzuopoqxwSEllNcCOM9DhhFyhFIIGKwxE= github.com/emicklei/go-restful/v3 v3.9.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= -github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= -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/evanphx/json-patch v4.12.0+incompatible h1:4onqiflcdA9EOZ4RxV643DvftH5pOlLGNtQ5lPWQu84= github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= @@ -190,37 +158,25 @@ github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d/go.mod h1:ZZM github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= -github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= -github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= -github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= +github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= +github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= +github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= +github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= github.com/fvbommel/sortorder v1.1.0 h1:fUmoe+HLsBTctBDoaBwpQo5N+nrCp8g/BjKb/6ZQmYw= github.com/fvbommel/sortorder v1.1.0/go.mod h1:uk88iVf1ovNn1iLfgUVU2F9o5eO30ui720w+kxuqRs0= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= github.com/gliderlabs/ssh v0.3.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY= github.com/gliderlabs/ssh v0.3.5/go.mod h1:8XB4KraRrX39qHhT6yxPsHedjA08I/uBVwj4xC+/+z4= github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= -github.com/go-git/gcfg v1.5.0/go.mod h1:5m20vg6GwYabIxaOonVkTdrILxQMpEShl1xiMF4ua+E= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= -github.com/go-git/go-billy/v5 v5.2.0/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= -github.com/go-git/go-billy/v5 v5.3.1/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU= github.com/go-git/go-billy/v5 v5.5.0/go.mod h1:hmexnoNsr2SJU1Ju67OaNz5ASJY3+sHgFRpCtpDCKow= -github.com/go-git/go-git-fixtures/v4 v4.2.1/go.mod h1:K8zd3kDUAykwTdDCr+I0per6Y6vMiRR/nnVTBtavnB0= -github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20230305113008-0c11038e723f h1:Pz0DHeFij3XFhoBRGUDPzSJ+w2UcK5/0JvF8DRI58r8= -github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20230305113008-0c11038e723f/go.mod h1:8LHG1a3SRW71ettAD/jW13h8c6AqjVSeL11RAdgaqpo= -github.com/go-git/go-git/v5 v5.4.2/go.mod h1:gQ1kArt6d+n+BGd+/B/I74HwRTLhth2+zti4ihgckDc= -github.com/go-git/go-git/v5 v5.9.0 h1:cD9SFA7sHVRdJ7AYck1ZaAa/yeuBvGPxwXDL8cxrObY= -github.com/go-git/go-git/v5 v5.9.0/go.mod h1:RKIqga24sWdMGZF+1Ekv9kylsDz6LzdTSI2s/OsZWE0= -github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= -github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4= +github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= +github.com/go-git/go-git/v5 v5.11.0 h1:XIZc1p+8YzypNr34itUfSvYJcv+eYdTnTvOZ2vD3cA4= +github.com/go-git/go-git/v5 v5.11.0/go.mod h1:6GFcX2P3NM7FPBfpePbpLd21XxsgdAt+lKqXmCUiUCY= github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= @@ -230,40 +186,31 @@ github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2Kv github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g= github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= -github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= -github.com/gofrs/flock v0.7.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= -github.com/gofrs/uuid v3.3.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= -github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= 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/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.1.2 h1:DVjP2PbBOzHyzA+dn3WhHIq4NdVu3Q+pvivFICf/7fo= -github.com/golang/glog v1.1.2/go.mod h1:zR+okUeTbrL6EL3xHUDxZuEtGv04p5shwip1+mL/rLQ= -github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/glog v1.2.0 h1:uCdmnmatrKCgMBlM4rMuJZWOkPDqdbZPnrMXDY4gI68= +github.com/golang/glog v1.2.0/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= 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.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= 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.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= -github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4= github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I= @@ -272,12 +219,11 @@ github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5a 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.4.1/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.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= -github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= @@ -285,66 +231,46 @@ github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 h1:K6RDEckDVWvDI9JAJY github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= -github.com/google/uuid v1.5.0 h1:1p67kYwdtXjb0gL0BPiP1Av9wiZPo5A8z2cWkTZ+eyU= -github.com/google/uuid v1.5.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7 h1:pdN6V1QBWetyv/0+wjACpqVH+eVULgEjkurDLq3goeM= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -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-opentracing v0.0.0-20180507213350-8e809c8a8645 h1:MJG/KsmcqMwFAkh8mTnAwhyKoB+sTAnY4CACC110tbU= github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645/go.mod h1:6iZfnjpejD4L/4DwD7NryNaJyCQdzwWwH2MWhCA90Kw= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= -github.com/hashicorp/go-version v1.4.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hashicorp/hcl/v2 v2.17.0 h1:z1XvSUyXd1HP10U4lrLg5e0JMVz6CPaJvAgxM0KNZVY= -github.com/hashicorp/hcl/v2 v2.17.0/go.mod h1:gJyW2PTShkJqQBKpAmPO3yxMxIuoXkOF2TpqXzrQyx4= -github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= +github.com/hashicorp/hcl/v2 v2.20.0 h1:l++cRs/5jQOiKVvqXZm/P1ZEfVXJmvLS9WSVxkaeTb4= +github.com/hashicorp/hcl/v2 v2.20.0/go.mod h1:WmcD/Ym72MDOOx5F62Ly+leloeu6H7m0pG7VBiU6pQk= github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4= github.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= -github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= -github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4= 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= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= -github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= -github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= -github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= 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/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/fs v0.1.0 h1:Jskdu9ieNAYnjxsi0LbQp1ulIKZV1LAFgK1tWhpZgl8= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= -github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= 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= @@ -352,38 +278,28 @@ github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de h1:9TO3cAIGXtEhn github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE= github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= -github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/matryer/is v1.2.0 h1:92UTHpy8CDwaJ08GqLDzhhuixiBUUD1p3AU6PHddz4A= -github.com/matryer/is v1.2.0/go.mod h1:2fLPjFQM9rhQ15aVEtbuwhJinnOqrmgXPNdZsdwlWXA= github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= -github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-localereader v0.0.1 h1:ygSAOl7ZXTx4RdPYinUpg6W99U8jWvWi9Ye2JC/oIi4= github.com/mattn/go-localereader v0.0.1/go.mod h1:8fBrzywKY7BI3czFoHkuzRoWE9C+EiG4R1k4Cjx5p88= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-runewidth v0.0.8/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= -github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= -github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-ps v1.0.0 h1:i6ampVEEF4wQFF+bkYfwYgY+F/uYJDktmvLPf7qIgjc= github.com/mitchellh/go-ps v1.0.0/go.mod h1:J4lOc8z8yJs6vUwklHw2XEIiT4z4C40KtWVN3nvg8Pg= github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/moby/spdystream v0.2.0 h1:cjW1zVyyoiM0T7b6UoySUFqzXMoqRckQtXwGPiBhOM8= github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0= @@ -407,11 +323,8 @@ github.com/muesli/termenv v0.15.2 h1:GohcuySI0QmI3wN8Ok9PtKGkgkFIk7y6Vpb5PvrY+Wo github.com/muesli/termenv v0.15.2/go.mod h1:Epx+iuz8sNs7mNKhxzH4fWXGNpZwUaJKRS1noLXviQ8= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= -github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= -github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/nxadm/tail v1.4.11 h1:8feyoE3OzPrcshW5/MJ4sGESc5cqmGkGCWlco4l0bqY= +github.com/nxadm/tail v1.4.11/go.mod h1:OTaG3NK980DZzxbRq6lEuzgU+mug70nY11sMd4JXXHc= github.com/onsi/ginkgo/v2 v2.9.4 h1:xR7vG4IXt5RWx6FfIjyAtsoMAtnc3C/rFXBBd2AjZwE= github.com/onsi/ginkgo/v2 v2.9.4/go.mod h1:gCQYp2Q+kSoIj7ykSVb9nskRSsR6PUj4AiLywzIhbKM= github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= @@ -420,14 +333,11 @@ github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8 github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.0.2 h1:9yCKha/T5XdGtO0q9Q9a6T5NUCsTn/DrBg0D7ufOcFM= github.com/opencontainers/image-spec v1.0.2/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= github.com/opentracing/basictracer-go v1.1.0 h1:Oa1fTSBvAl8pa3U+IJYqrKm0NALwH9OsgwOqDv4xJW0= github.com/opentracing/basictracer-go v1.1.0/go.mod h1:V2HZueSJEp879yv285Aap1BS69fQMD+MNP1mRs6mBQc= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs= github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= -github.com/pelletier/go-buffruneio v0.2.0/go.mod h1:JkE26KsDizTr40EUHkXVtNPvgGtbSNq5BcowyYOWdKo= -github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/peterbourgon/diskv v2.0.1+incompatible h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/pgavlin/fx v0.1.6 h1:r9jEg69DhNoCd3Xh0+5mIbdbS3PqWrVWujkY76MFRTU= @@ -437,8 +347,6 @@ github.com/philhofer/fwd v1.1.2/go.mod h1:qkPdfjR2SIEbspLqpe1tO4n5yICnr2DY7mqEx2 github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= 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/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/pkg/sftp v1.13.6 h1:JFZT4XbOU7l77xGSpOdW+pwIMqP044IyjXX6FGyEKFo= @@ -447,109 +355,72 @@ github.com/pkg/term v1.1.0 h1:xIAAdCMh3QIAy+5FrE8Ad8XoDhEU4ufwbaSozViP9kk= github.com/pkg/term v1.1.0/go.mod h1:E25nymQcrSllhX42Ok8MRm1+hyBdHY0dCeiKZ9jpNGw= 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/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_golang v1.17.0 h1:rl2sfwZMtSthVU752MqfjQozy7blglC+1SOtjMAMh+Q= github.com/prometheus/client_golang v1.17.0/go.mod h1:VeL+gMmOAxkS2IqfCq0ZmHSL+LjWfWDUmp1mBz9JgUY= -github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.4.1-0.20230718164431-9a2bf3000d16 h1:v7DLqVdK4VrYkVD5diGdl4sxJurKJEMnODWRJlxV9oM= github.com/prometheus/client_model v0.4.1-0.20230718164431-9a2bf3000d16/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= -github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY= github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.11.1 h1:xRC8Iq1yyca5ypa9n1EZnWZkt7dwcoRPQwX/5gwaUuI= github.com/prometheus/procfs v0.11.1/go.mod h1:eesXgaPo1q7lBpVMoMy0ZOFTth9hBn4W/y0/p/ScXhY= -github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 h1:vkHw5I/plNdTr435cARxCW6q9gc0S/Yxz7Mkd38pOb0= github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231/go.mod h1:murToZ2N9hNJzewjHBgfFdXhZKjY3z5cYC1VXk+lbFE= -github.com/pulumi/esc v0.6.2 h1:+z+l8cuwIauLSwXQS0uoI3rqB+YG4SzsZYtHfNoXBvw= -github.com/pulumi/esc v0.6.2/go.mod h1:jNnYNjzsOgVTjCp0LL24NsCk8ZJxq4IoLQdCT0X7l8k= -github.com/pulumi/pulumi-aws/sdk/v5 v5.31.0/go.mod h1:axXtUAYEclH+SVqr/QmWFzMfJchxrrPiyMrywCcMF9A= -github.com/pulumi/pulumi-aws/sdk/v5 v5.42.0 h1:QdJvPoUklXdNL8faCOuCrv7qmMNp68jiewbGH8ZboUU= -github.com/pulumi/pulumi-aws/sdk/v5 v5.42.0/go.mod h1:qFeKTFSNIlMHotu9ntOWFjJBHtCiUhJeaiUB/0nVwXk= -github.com/pulumi/pulumi-awsx/sdk v1.0.6 h1:oUan8VgA/pqEmbS2vXhh5Zbn7Lhs6yX5bPMzM03QuMI= -github.com/pulumi/pulumi-awsx/sdk v1.0.6/go.mod h1:2H8uPHxZbfsIg9qr6yAfiIuvNnhBUqyhxw/8mXNLDFg= +github.com/pulumi/esc v0.8.2 h1:+PZg+qAWW9SYrRCHex36QNueAWdxz9b7hi/q/Zb31V0= +github.com/pulumi/esc v0.8.2/go.mod h1:v5VAPxYDa9DRwvubbzKt4ZYf5y0esWC2ccSp/AT923I= +github.com/pulumi/pulumi-aws/sdk/v6 v6.25.0 h1:KstWR3AnkXD72ow0xxOzsAkihF+KdzddapHUy0CK2mU= +github.com/pulumi/pulumi-aws/sdk/v6 v6.25.0/go.mod h1:Ar4SJq3jbKLps3879H5ZvwUt/VnFp/GKbWw1mhjeQek= +github.com/pulumi/pulumi-awsx/sdk/v2 v2.5.0 h1:sCzgswv1p7G8RUkvUjDgDnrdi7vBRxTtA8Hwtoqabsc= +github.com/pulumi/pulumi-awsx/sdk/v2 v2.5.0/go.mod h1:lv+hzv8kilWjMNOPcJS8cddJa51d3IdCOPY7cNd2NuU= github.com/pulumi/pulumi-command/sdk v0.9.2 h1:2siCFR8pS2sSwXkeWiLrprGEtBL54FsHTzdyl125UuI= github.com/pulumi/pulumi-command/sdk v0.9.2/go.mod h1:VeUXTI/iTgKVjRChRJbLRlBVGxAH+uymscfwzBC2VqY= -github.com/pulumi/pulumi-docker/sdk/v3 v3.6.1 h1:plWLn9O6u80Vr37LoCsckyobBfcrdTU9cERor72QjqA= -github.com/pulumi/pulumi-docker/sdk/v3 v3.6.1/go.mod h1:N4Yu4c49QErfucPt9Y/fGmpTryRqc0VfhyKHsGR9/g8= -github.com/pulumi/pulumi-eks/sdk v1.0.4 h1:j2tul6k0oZHDQwHU+75Jo8Qe4neYxv2hNpo5uanywrQ= -github.com/pulumi/pulumi-eks/sdk v1.0.4/go.mod h1:eSRoTIxvvu+uyc4tXo//TCsE9qD/DUx+OSLiyZvRB/A= -github.com/pulumi/pulumi-kubernetes/sdk/v3 v3.17.0/go.mod h1:w+Y1d8uqc+gv7JYWLF4rfzvTsIIHR1SCL+GG6sX1xMM= -github.com/pulumi/pulumi-kubernetes/sdk/v3 v3.30.2 h1:xJu48+RW+BHHnKtBni6Vj5vKqOEgCzdZAysGbh6tVM0= -github.com/pulumi/pulumi-kubernetes/sdk/v3 v3.30.2/go.mod h1:7yCJFC/jnUwFs566f0FAY2iAzc4G1mQP8H6K+40FK4Y= -github.com/pulumi/pulumi-libvirt/sdk v0.4.0 h1:wq1Ox8FRKQ1kc2DPq3m5DGQgZEhE7kp4mtG556HxJLs= -github.com/pulumi/pulumi-libvirt/sdk v0.4.0/go.mod h1:tjjyDajp6Pb1pRCdaIugknIfzxw3Prev3o/k2nade+I= -github.com/pulumi/pulumi-random/sdk/v4 v4.13.4 h1:g3jdktE5L5IDrOw4OiB+yhgxSw0okRPJnyV6PlIzTEQ= -github.com/pulumi/pulumi-random/sdk/v4 v4.13.4/go.mod h1:cFlJw0eQnqN+62QpITEF9M08gVyzNCeXrKRsuJptFak= -github.com/pulumi/pulumi-tls/sdk/v4 v4.10.0 h1:4MC0GyEomAjEZJPXEzBZpZ4+TOUg5WE77k38tMDIvS0= -github.com/pulumi/pulumi-tls/sdk/v4 v4.10.0/go.mod h1:tNXsM/+RsiVVmBdzJMOOp6gMoi3sPko5u0FKdiei+cE= -github.com/pulumi/pulumi/sdk/v3 v3.16.0/go.mod h1:252ou/zAU1g6E8iTwe2Y9ht7pb5BDl2fJlOuAgZCHiA= -github.com/pulumi/pulumi/sdk/v3 v3.50.1/go.mod h1:tqQ4z9ocyM/UI2VQ7ZReWR3w6dF5ffEozoHipOMcDh4= -github.com/pulumi/pulumi/sdk/v3 v3.99.0 h1:vsFoEEdweYg3Hm6/Jlj1sE2cLtauzoqAdVbLMcC7Cw8= -github.com/pulumi/pulumi/sdk/v3 v3.99.0/go.mod h1:wFM/6iAMlidgLDSF9QU+p3P+B+vg/xloFyVeZrVwA1w= +github.com/pulumi/pulumi-docker/sdk/v4 v4.5.1 h1:gyuuECcHaPPop7baKfjapJJYnra6s/KdG4QITGu0kAI= +github.com/pulumi/pulumi-docker/sdk/v4 v4.5.1/go.mod h1:BL+XtKTgkbtt03wA9SOQWyGjl4cIA7BjSHFjvFY+f9U= +github.com/pulumi/pulumi-eks/sdk/v2 v2.2.1 h1:hVRA7WcxNhnJkfVrd45DTMNPhY26OUABVQCpjZMugMA= +github.com/pulumi/pulumi-eks/sdk/v2 v2.2.1/go.mod h1:OmbVihWsmsvmn3dr13N9C5cGS3Mos7HWF/R30cx8xtw= +github.com/pulumi/pulumi-kubernetes/sdk/v4 v4.9.0 h1:Rh46xPvAnXc+v9GV6k9k3+MB3zv4n6izGChughLdqbI= +github.com/pulumi/pulumi-kubernetes/sdk/v4 v4.9.0/go.mod h1:ACRn9pxZG+syE7hstPKcPt5k98/r6ddUrv1uZOrIyTA= +github.com/pulumi/pulumi-libvirt/sdk v0.4.4 h1:lJ8YerR7js6f8Gr6HeBOv44evbH44lkWo1RpjJVpe8M= +github.com/pulumi/pulumi-libvirt/sdk v0.4.4/go.mod h1:lmskpjq1e1z2QwPrk9RyMS2SuAvPhG9QeuCQ3iCygNg= +github.com/pulumi/pulumi-random/sdk/v4 v4.16.0 h1:H6gGA1hnprPB7SWC11giI93tVRxuSxeAteIuqtr6GHk= +github.com/pulumi/pulumi-random/sdk/v4 v4.16.0/go.mod h1:poNUvMquwCDb7AqxqBBWcZEn6ADhoDPml2j43wZtzkU= +github.com/pulumi/pulumi-tls/sdk/v4 v4.11.1 h1:tXemWrzeVTqG8zq6hBdv1TdPFXjgZ+dob63a/6GlF1o= +github.com/pulumi/pulumi-tls/sdk/v4 v4.11.1/go.mod h1:hODo3iEmmXDFOXqPK+V+vwI0a3Ww7BLjs5Tgamp86Ng= +github.com/pulumi/pulumi/sdk/v3 v3.108.1 h1:5idjc3JmzToYVizRPbFyjJ5UU4AbExd04pcSP9AhPEc= +github.com/pulumi/pulumi/sdk/v3 v3.108.1/go.mod h1:5A6GHUwAJlRY1SSLZh84aDIbsBShcrfcmHzI50ecSBg= github.com/pulumiverse/pulumi-time/sdk v0.0.0-20231010123146-089d7304da13 h1:4U7DFIlSggj/4iLbis2Bckayed+OhaYKE7bncZwQCYI= github.com/pulumiverse/pulumi-time/sdk v0.0.0-20231010123146-089d7304da13/go.mod h1:NUa1zA74DF002WrM6iF111A6UjX9knPpXufVRvBwNyg= github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= -github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= -github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= -github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= -github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= -github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o= +github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= +github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= -github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= -github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= +github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/sabhiram/go-gitignore v0.0.0-20180611051255-d3107576ba94/go.mod h1:b18R55ulyQ/h3RaWyloPyER7fWQVZvimKKhnI5OfrJQ= github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 h1:OkMGxebDjyw0ULyrTYWeN0UNCCkmCWfjPnIA2W6oviI= github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06/go.mod h1:+ePHsJ1keEjQtpvf9HHw0f4ZeJ0TLRsxhunSI2hYJSs= -github.com/samber/lo v1.38.1 h1:j2XEAqXKb09Am4ebOg31SpvzUTTs6EN3VfgeLUhPdXM= -github.com/samber/lo v1.38.1/go.mod h1:+m/ZKRl6ClXCE2Lgf3MsQlWfh4bn1bz6CXEOxnEXnEA= -github.com/santhosh-tekuri/jsonschema/v5 v5.0.0/go.mod h1:FKdcjfQW6rpZSnxxUvEA5H/cDPdvJ/SZJQLWWXWGrZ0= +github.com/samber/lo v1.39.0 h1:4gTz1wUhNYLhFSKl6O+8peW0v2F4BCY034GRpU9WnuA= +github.com/samber/lo v1.39.0/go.mod h1:+m/ZKRl6ClXCE2Lgf3MsQlWfh4bn1bz6CXEOxnEXnEA= github.com/santhosh-tekuri/jsonschema/v5 v5.3.1 h1:lZUw3E0/J3roVtGQ+SCrUrg3ON6NgVqpn3+iol9aGu4= github.com/santhosh-tekuri/jsonschema/v5 v5.3.1/go.mod h1:uToXkOrWAZ6/Oc07xWQrPOhJotwFIyu2bBVN41fcDUY= -github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= -github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8= github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I= github.com/sethvargo/go-retry v0.2.4 h1:T+jHEQy/zKJf5s95UkguisicE0zuF9y7+/vgz08Ocec= github.com/sethvargo/go-retry v0.2.4/go.mod h1:1afjQuvh7s4gflMObvjLPaWgluLLyhA1wmVZ6KLpICw= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/skeema/knownhosts v1.2.0 h1:h9r9cf0+u7wSE+M183ZtMGgOJKiL96brpaz5ekfJCpM= -github.com/skeema/knownhosts v1.2.0/go.mod h1:g4fPeYpque7P0xefxtGzV81ihjC8sX2IqpAoNkjxbMo= -github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA= -github.com/spf13/cast v1.5.1/go.mod h1:b9PdjNptOpzXr7Rq1q9gJML/2cdGQAo69NKzQ10KN48= -github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= -github.com/spf13/cobra v1.4.0/go.mod h1:Wo4iy3BUC+X2Fybo0PDqwJIv3dNRiZLHQymsfxlB84g= +github.com/skeema/knownhosts v1.2.1 h1:SHWdIUa82uGZz+F+47k8SY4QhhI291cXCpopT1lK2AQ= +github.com/skeema/knownhosts v1.2.1/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo= +github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= +github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= -github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= 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/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= -github.com/src-d/gcfg v1.4.0/go.mod h1:p/UMsR43ujA89BJY9duynAwIpvqEujIH/jFlfL7jWoI= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= @@ -564,74 +435,51 @@ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.5-0.20231013065317-89920137cdfa h1:I9YHewamqSIcEG6rpRhgF9p79H0cOojefpiOH0pe0VY= github.com/stretchr/testify v1.8.5-0.20231013065317-89920137cdfa/go.mod h1:LZ02lxBfF+JCTGmBu/SyjoaIlOF6u2nxMP788uhnZlI= -github.com/texttheater/golang-levenshtein v0.0.0-20191208221605-eb6844b05fc6/go.mod h1:XDKHRm5ThF8YJjx001LtgelzsoaEcvnA7lVWz9EeX3g= github.com/texttheater/golang-levenshtein v1.0.1 h1:+cRNoVrfiwufQPhoMzB6N0Yf/Mqajr6t1lOv8GyGE2U= github.com/texttheater/golang-levenshtein v1.0.1/go.mod h1:PYAKrbF5sAiq9wd+H82hs7gNaen0CplQ9uvm6+enD/8= github.com/tinylib/msgp v1.1.8 h1:FCXC1xanKO4I8plpHGH2P7koL/RzZs12l/+r7vakfm0= github.com/tinylib/msgp v1.1.8/go.mod h1:qkpG+2ldGg4xRFmx+jfTvZPxfGFhi64BcnL9vkCm/Tw= -github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tweekmonster/luser v0.0.0-20161003172636-3fa38070dbd7 h1:X9dsIWPuuEJlPX//UmRKophhOKCGXc46RVIGuttks68= github.com/tweekmonster/luser v0.0.0-20161003172636-3fa38070dbd7/go.mod h1:UxoP3EypF8JfGEjAII8jx1q8rQyDnX8qdTCs/UQBVIE= -github.com/uber/jaeger-client-go v2.22.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.1+incompatible h1:td4jdvLcExb4cBISKIpHuGoVXh+dVKhn2Um6rjCsSsg= github.com/uber/jaeger-lib v2.4.1+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= -github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/vmihailenco/msgpack/v4 v4.3.12 h1:07s4sz9IReOgdikxLTKNbBdqDMLsjPKXwvCazn8G65U= github.com/vmihailenco/msgpack/v4 v4.3.12/go.mod h1:gborTTJjAo/GWTqqRjrLCn9pgNN+NXzzngzBKDPIqw4= github.com/vmihailenco/tagparser v0.1.1 h1:quXMXlA39OCbd2wAdTsGDlK9RkOk6Wuw+x37wVyIuWY= github.com/vmihailenco/tagparser v0.1.1/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI= -github.com/xanzy/ssh-agent v0.2.1/go.mod h1:mLlQY/MoOhWBj+gOGMQkOeiEvkx+8pJSI+0Bx9h2kr4= -github.com/xanzy/ssh-agent v0.3.0/go.mod h1:3s9xbODqPuuhK9JV1R321M/FlMZSBvE5aY6eAcqrDh0= -github.com/xanzy/ssh-agent v0.3.2/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xlab/treeprint v1.2.0 h1:HzHnuAF1plUN2zGlAFHbSQP2qJ0ZAD3XF5XD7OesXRQ= github.com/xlab/treeprint v1.2.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0= -github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= 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.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/zclconf/go-cty v1.13.2 h1:4GvrUxe/QUDYuJKAav4EYqdM47/kZa672LwmXFmEKT0= -github.com/zclconf/go-cty v1.13.2/go.mod h1:YKQzy/7pZ7iq2jNFzy5go57xdxdWoLLpaEp4u238AE0= +github.com/zclconf/go-cty v1.14.3 h1:1JXy1XroaGrzZuG6X9dt7HL6s9AwbY+l4UNL8o5B6ho= +github.com/zclconf/go-cty v1.14.3/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= 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.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.starlark.net v0.0.0-20230525235612-a134d8f9ddca h1:VdD38733bfYv5tUZwEIskMM93VanwNIi5bIKnDrJdEY= go.starlark.net v0.0.0-20230525235612-a134d8f9ddca/go.mod h1:jxU+3+j+71eXOW14274+SmmuW82qJzl6iZSeqEtTGds= -go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= -go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200317142112-1b76d66859c6/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= -golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.0.0-20220824171710-5757bc0c5503/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= -golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= +golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= +golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa h1:FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ= -golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE= +golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 h1:LfspQV/FYTatPTr/3HzIcmiUFH7PGP+OQ6mgDYo3yuQ= +golang.org/x/exp v0.0.0-20240222234643-814bf88cf225/go.mod h1:CxmFvTBINI24O/j8iY7H1xHzx2i4OsyguNBmN/uPtqc= 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/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= @@ -639,25 +487,18 @@ golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0= -golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.16.0 h1:QX4fJ0Rr5cPQCF7O9lh9Se4pmwfwskqZfq5moyldzic= +golang.org/x/mod v0.16.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= 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-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3/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-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/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-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200602114024-627f9648deb9/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210326060303-6b1517762897/go.mod h1:uSPa2vr4CLtc/ILN5odXGNXS6mhrKVzTaCXzk9m6W3k= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= @@ -665,64 +506,47 @@ golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= -golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= +golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc= +golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.11.0 h1:vPL4xzxBM4niKCW6g9whtaWVXTJf1U5e4aZxxFx/gbU= -golang.org/x/oauth2 v0.11.0/go.mod h1:LdF7O/8bLR/qWK9DrpXmbHLTouvRHK0SgJl0GmDBchk= +golang.org/x/oauth2 v0.16.0 h1:aDkGMBSYxElaoP81NpoUoz2oo2R2wHdZpGToUxfyQrQ= +golang.org/x/oauth2 v0.16.0/go.mod h1:hqZ+0LWXsiVoZpeld6jVt06P3adbS2Uu911W1SsJv2o= 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-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-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= -golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/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-20190221075227-b4e8571b14e0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/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-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210502180810-71e4cd670f79/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210817190340-bfb29a6856f2/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220823224334-20c2bfdbfe24/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= -golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.0.0-20220526004731-065cf7ba2467/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -731,102 +555,78 @@ golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4= -golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= +golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8= +golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/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-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-20190729092621-ff9f1409240a/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= -golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200608174601-1b747fd94509/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= 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.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.15.0 h1:zdAyfUGbYmuVokhzVmghFl2ZJh5QhcfebBgmVPFYA+8= -golang.org/x/tools v0.15.0/go.mod h1:hpksKq4dtpQWS1uQ61JkdqWM3LscIS6Slf+VVkm+wQk= +golang.org/x/tools v0.19.0 h1:tfGCXNR1OsFG+sVdLAitlpjAvD/I6dHDKnYrpEZUHkw= +golang.org/x/tools v0.19.0/go.mod h1:qoJWxmGSIBmAeriMx19ogtrEPrGtDbPK634QFIcLAhc= 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/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/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= -google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= +google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= 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-20200608115520-7c474a2e3482/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d h1:uvYuEyMHKNt+lT4K3bN6fGswmK8qSvcreM3BwjDh+y4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240304212257-790db918fca8 h1:IR+hp6ypxjH24bkMfEJ0yHR21+gwPWdV+/IBrPQyn3k= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240304212257-790db918fca8/go.mod h1:UCOku4NytXMJuLQE5VuqA5lX3PcHCBo8pxNyvkf4xBs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= 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.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk= -google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= +google.golang.org/grpc v1.62.1 h1:B4n+nfKzOICUXMgyrNd19h/I9oH0L1pizfk1d4zSgTk= +google.golang.org/grpc v1.62.1/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE= 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.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= -google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= +google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= 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-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/cheggaaa/pb.v1 v1.0.28/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= -gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= -gopkg.in/src-d/go-billy.v4 v4.3.2/go.mod h1:nDjArDMp+XMs1aFAESLRjfGSgfvoYN0hDfzEk0GjC98= -gopkg.in/src-d/go-git-fixtures.v3 v3.5.0/go.mod h1:dLBcvytrw/TYZsNTWCnkNF2DSIlzWYqTe3rJR56Ac7g= -gopkg.in/src-d/go-git.v4 v4.13.1/go.mod h1:nx5NYcxdKxq5fpltdHnPa2Exj4Sx0EclMWZQbYDu2z8= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= -gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/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.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-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= @@ -858,9 +658,8 @@ k8s.io/utils v0.0.0-20230406110748-d93618cff8a2 h1:qY1Ad8PODbnymg2pRbkyMT/ylpTrC k8s.io/utils v0.0.0-20230406110748-d93618cff8a2/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= lukechampine.com/frand v1.4.2 h1:RzFIpOvkMXuPMBb9maa4ND4wjBn71E1Jpf8BzJHMaVw= lukechampine.com/frand v1.4.2/go.mod h1:4S/TM2ZgrKejMcKMbeLjISpJMO+/eZ1zu3vYX9dtj3s= -pgregory.net/rapid v0.4.7/go.mod h1:UYpPVyjFHzYBGHIxLFoupi8vwk6rXNzRY9OMvVxFIOU= -pgregory.net/rapid v0.5.5 h1:jkgx1TjbQPD/feRoK+S/mXw9e1uj6WilpHrXJowi6oA= -pgregory.net/rapid v0.5.5/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= +pgregory.net/rapid v0.6.1 h1:4eyrDxyht86tT4Ztm+kvlyNBLIk071gR+ZQdhphc9dQ= +pgregory.net/rapid v0.6.1/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= sigs.k8s.io/kustomize/api v0.13.5-0.20230601165947-6ce0bf390ce3 h1:XX3Ajgzov2RKUdc5jW3t5jwY7Bo7dcRm+tFxT+NfgY0= @@ -871,4 +670,3 @@ sigs.k8s.io/structured-merge-diff/v4 v4.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kF sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E= sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= -sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= diff --git a/test/new-e2e/pkg/environments/aws/ecs/ecs.go b/test/new-e2e/pkg/environments/aws/ecs/ecs.go index 258b5c1f9295e7..da4acebd14331a 100644 --- a/test/new-e2e/pkg/environments/aws/ecs/ecs.go +++ b/test/new-e2e/pkg/environments/aws/ecs/ecs.go @@ -9,7 +9,7 @@ package ecs import ( "fmt" - "github.com/pulumi/pulumi-aws/sdk/v5/go/aws/ssm" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ssm" "github.com/pulumi/pulumi/sdk/v3/go/pulumi" "github.com/DataDog/test-infra-definitions/common/config" diff --git a/test/new-e2e/pkg/environments/aws/kubernetes/kind.go b/test/new-e2e/pkg/environments/aws/kubernetes/kind.go index 64a0374b092ad0..34f951bbd9db10 100644 --- a/test/new-e2e/pkg/environments/aws/kubernetes/kind.go +++ b/test/new-e2e/pkg/environments/aws/kubernetes/kind.go @@ -21,7 +21,7 @@ import ( "github.com/DataDog/test-infra-definitions/scenarios/aws/ec2" "github.com/DataDog/test-infra-definitions/scenarios/aws/fakeintake" - "github.com/pulumi/pulumi-kubernetes/sdk/v3/go/kubernetes" + "github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes" "github.com/pulumi/pulumi/sdk/v3/go/pulumi" ) diff --git a/test/new-e2e/tests/apm/docker_test.go b/test/new-e2e/tests/apm/docker_test.go index 631d2962c2fcd9..452bab8594bf59 100644 --- a/test/new-e2e/tests/apm/docker_test.go +++ b/test/new-e2e/tests/apm/docker_test.go @@ -7,6 +7,7 @@ package apm import ( "fmt" + "github.com/DataDog/test-infra-definitions/scenarios/aws/fakeintake" "os" "testing" "time" @@ -14,6 +15,7 @@ import ( "github.com/DataDog/datadog-agent/test/new-e2e/pkg/e2e" "github.com/DataDog/datadog-agent/test/new-e2e/pkg/environments" awsdocker "github.com/DataDog/datadog-agent/test/new-e2e/pkg/environments/aws/docker" + "github.com/DataDog/test-infra-definitions/components/datadog/dockeragentparams" "github.com/pulumi/pulumi/sdk/v3/go/pulumi" "github.com/stretchr/testify/assert" @@ -25,6 +27,13 @@ type DockerFakeintakeSuite struct { } func dockerSuiteOpts(tr transport, opts ...awsdocker.ProvisionerOption) []e2e.SuiteOption { + opts = append(opts, + // The LoadBalancer is an https endpoint while the raw fakeintake is http + // The Agent is configured to use HTTPS. Thus, using the load balancer is mandatory. + // Moreover, if the Fakeintake is killed and replaced, the fakeintake IP can change but + // the load balancer IP will not. Thus it should be more robust. + awsdocker.WithFakeIntakeOptions(fakeintake.WithLoadBalancer()), + ) options := []e2e.SuiteOption{ e2e.WithProvisioner(awsdocker.Provisioner(opts...)), e2e.WithStackName(fmt.Sprintf("apm-docker-suite-%s-%v", tr, os.Getenv("CI_PIPELINE_ID"))), diff --git a/test/new-e2e/tests/containers/ecs_test.go b/test/new-e2e/tests/containers/ecs_test.go index a354c21c069ec1..c8ef3e53015955 100644 --- a/test/new-e2e/tests/containers/ecs_test.go +++ b/test/new-e2e/tests/containers/ecs_test.go @@ -379,13 +379,14 @@ func (suite *ecsSuite) TestCPU() { `^cluster_name:` + regexp.QuoteMeta(suite.ecsClusterName) + `$`, `^container_id:`, `^container_name:ecs-.*-stress-ng-ec2-`, - `^docker_image:ghcr.io/colinianking/stress-ng$`, + `^docker_image:ghcr.io/colinianking/stress-ng:409201de7458c639c68088d28ec8270ef599fe47$`, `^ecs_cluster_name:` + regexp.QuoteMeta(suite.ecsClusterName) + `$`, `^ecs_container_name:stress-ng$`, `^git.commit.sha:`, `^git.repository_url:https://github.com/ColinIanKing/stress-ng$`, `^image_id:sha256:`, `^image_name:ghcr.io/colinianking/stress-ng$`, + `^image_tag:409201de7458c639c68088d28ec8270ef599fe47$`, `^runtime:docker$`, `^short_image:stress-ng$`, `^task_arn:`, diff --git a/test/new-e2e/tests/containers/k8s_test.go b/test/new-e2e/tests/containers/k8s_test.go index c67858c367a1a5..4a5d38e2ff3965 100644 --- a/test/new-e2e/tests/containers/k8s_test.go +++ b/test/new-e2e/tests/containers/k8s_test.go @@ -460,7 +460,7 @@ func (suite *k8sSuite) TestCPU() { `^git.repository_url:https://github.com/ColinIanKing/stress-ng$`, // org.opencontainers.image.source docker image label `^image_id:ghcr.io/colinianking/stress-ng@sha256:`, `^image_name:ghcr.io/colinianking/stress-ng$`, - `^image_tag:latest$`, + `^image_tag:`, `^kube_container_name:stress-ng$`, `^kube_deployment:stress-ng$`, `^kube_namespace:workload-cpustress$`, @@ -497,7 +497,7 @@ func (suite *k8sSuite) TestCPU() { `^git.repository_url:https://github.com/ColinIanKing/stress-ng$`, // org.opencontainers.image.source docker image label `^image_id:ghcr.io/colinianking/stress-ng@sha256:`, `^image_name:ghcr.io/colinianking/stress-ng$`, - `^image_tag:latest$`, + `^image_tag:`, `^kube_container_name:stress-ng$`, `^kube_deployment:stress-ng$`, `^kube_namespace:workload-cpustress$`, @@ -534,7 +534,7 @@ func (suite *k8sSuite) TestCPU() { `^git.repository_url:https://github.com/ColinIanKing/stress-ng$`, // org.opencontainers.image.source docker image label `^image_id:ghcr.io/colinianking/stress-ng@sha256:`, `^image_name:ghcr.io/colinianking/stress-ng$`, - `^image_tag:latest$`, + `^image_tag:409201de7458c639c68088d28ec8270ef599fe47$`, `^kube_container_name:stress-ng$`, `^kube_deployment:stress-ng$`, `^kube_namespace:workload-cpustress$`, @@ -570,7 +570,7 @@ func (suite *k8sSuite) TestCPU() { `^git.repository_url:https://github.com/ColinIanKing/stress-ng$`, // org.opencontainers.image.source docker image label `^image_id:ghcr.io/colinianking/stress-ng@sha256:`, `^image_name:ghcr.io/colinianking/stress-ng$`, - `^image_tag:latest$`, + `^image_tag:409201de7458c639c68088d28ec8270ef599fe47$`, `^kube_container_name:stress-ng$`, `^kube_deployment:stress-ng$`, `^kube_namespace:workload-cpustress$`, diff --git a/test/new-e2e/tests/cws/ec2_test.go b/test/new-e2e/tests/cws/ec2_test.go index 5351ef79a36f4d..2200659548cf1e 100644 --- a/test/new-e2e/tests/cws/ec2_test.go +++ b/test/new-e2e/tests/cws/ec2_test.go @@ -60,7 +60,7 @@ var securityAgentConfig string func TestAgentSuite(t *testing.T) { testID := uuid.NewString()[:4] - e2e.Run(t, &agentSuite{testID: testID}, + e2e.Run[environments.Host](t, &agentSuite{testID: testID}, e2e.WithProvisioner( awshost.ProvisionerNoFakeIntake( awshost.WithAgentOptions( diff --git a/test/new-e2e/tests/cws/fargate_test.go b/test/new-e2e/tests/cws/fargate_test.go index e1ff0ee6e789e7..524f7cccfa8d25 100644 --- a/test/new-e2e/tests/cws/fargate_test.go +++ b/test/new-e2e/tests/cws/fargate_test.go @@ -13,10 +13,10 @@ import ( "text/template" "github.com/google/uuid" - "github.com/pulumi/pulumi-aws/sdk/v5/go/aws/ecs" - "github.com/pulumi/pulumi-aws/sdk/v5/go/aws/ssm" - "github.com/pulumi/pulumi-awsx/sdk/go/awsx/awsx" - ecsx "github.com/pulumi/pulumi-awsx/sdk/go/awsx/ecs" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ssm" + "github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/awsx" + ecsx "github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/ecs" "github.com/pulumi/pulumi/sdk/v3/go/pulumi" "github.com/stretchr/testify/require" @@ -62,7 +62,7 @@ func TestECSFargate(t *testing.T) { ddHostname := fmt.Sprintf("%s-%s", ecsFgHostnamePrefix, uuid.NewString()[:4]) - e2e.Run(t, &ecsFargateSuite{ddHostname: ddHostname}, + e2e.Run[ecsFargateEnv](t, &ecsFargateSuite{ddHostname: ddHostname}, e2e.WithUntypedPulumiProvisioner(func(ctx *pulumi.Context) error { awsEnv, err := awsResources.NewEnvironment(ctx) if err != nil { diff --git a/test/new-e2e/tests/orchestrator/apply.go b/test/new-e2e/tests/orchestrator/apply.go index 44d47f8cc50bd4..7857fdb20d43e0 100644 --- a/test/new-e2e/tests/orchestrator/apply.go +++ b/test/new-e2e/tests/orchestrator/apply.go @@ -9,7 +9,7 @@ import ( _ "embed" "fmt" - "github.com/pulumi/pulumi-kubernetes/sdk/v3/go/kubernetes" + "github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes" "github.com/pulumi/pulumi/sdk/v3/go/pulumi" "github.com/DataDog/test-infra-definitions/common/utils" From 038b26d9cd1622a10ba6dcf4c26311e65b924d77 Mon Sep 17 00:00:00 2001 From: Scott Opell Date: Thu, 7 Mar 2024 13:28:42 -0500 Subject: [PATCH 081/155] Switches basic_py_check to be based on CPU instead of ingress (#23542) --- test/regression/cases/basic_py_check/experiment.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/regression/cases/basic_py_check/experiment.yaml b/test/regression/cases/basic_py_check/experiment.yaml index 08f87ceef731fb..2ec58abc39abd8 100644 --- a/test/regression/cases/basic_py_check/experiment.yaml +++ b/test/regression/cases/basic_py_check/experiment.yaml @@ -1,4 +1,4 @@ -optimization_goal: ingress_throughput +optimization_goal: cpu erratic: false environment: From 0711dd6b9789e763b45707bf9a8a5261d578d738 Mon Sep 17 00:00:00 2001 From: Raymond Zhao <35050708+rayz@users.noreply.github.com> Date: Thu, 7 Mar 2024 13:34:08 -0500 Subject: [PATCH 082/155] Add new YYYY-MM-DD HH-MM-SS automultiline pattern (#23544) --- pkg/logs/internal/decoder/auto_multiline_handler.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkg/logs/internal/decoder/auto_multiline_handler.go b/pkg/logs/internal/decoder/auto_multiline_handler.go index 6ed5b506d56752..9f4f7c85385b04 100644 --- a/pkg/logs/internal/decoder/auto_multiline_handler.go +++ b/pkg/logs/internal/decoder/auto_multiline_handler.go @@ -244,4 +244,6 @@ var formatsToTry = []*regexp.Regexp{ regexp.MustCompile(`^[A-Za-z_]+ \d+, \d+ \d+:\d+:\d+ (AM|PM)`), // 2021-01-31 - with stricter matching around the months/days regexp.MustCompile(`^\d{4}-(1[012]|0?[1-9])-([12][0-9]|3[01]|0?[1-9])`), + // 2023/02/20 14:33:24 + regexp.MustCompile(`^\d{4}/\d{2}/\d{2} \d{2}:\d{2}:\d{2}`), } From 9edbaaa757c5ac0b79a323b439155f143c03de45 Mon Sep 17 00:00:00 2001 From: Nicolas PLANEL Date: Thu, 7 Mar 2024 20:04:26 +0100 Subject: [PATCH 083/155] skip as the test as it's flaky under load (#23546) --- test/new-e2e/tests/npm/ecs_1host_test.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/new-e2e/tests/npm/ecs_1host_test.go b/test/new-e2e/tests/npm/ecs_1host_test.go index d65c012d40a8ec..dcbc70d49e2f6c 100644 --- a/test/new-e2e/tests/npm/ecs_1host_test.go +++ b/test/new-e2e/tests/npm/ecs_1host_test.go @@ -105,12 +105,15 @@ func (v *ecsVMSuite) BeforeTest(suiteName, testName string) { // The test start by 00 to validate the agent/system-probe is up and running // On ECS the agent is slow to start and this avoid flaky tests func (v *ecsVMSuite) Test00FakeIntakeNPM() { + v.T().Skip("skip as the test as it's flaky under load") + test1HostFakeIntakeNPM(&v.BaseSuite, v.Env().FakeIntake) } // TestFakeIntakeNPM_TCP_UDP_DNS_HostRequests validate we received tcp, udp, and DNS connections // with some basic checks, like IPs/Ports present, DNS query has been captured, ... func (v *ec2VMContainerizedSuite) TestFakeIntakeNPM_TCP_UDP_DNS() { + v.T().Skip("skip as the test as it's flaky under load") // deployed workload generate these connections every 20 seconds //v.Env().RemoteHost.MustExecute("curl " + testURL) //v.Env().RemoteHost.MustExecute("dig @8.8.8.8 www.google.ch") From 414a7e751b5d84e04599d60700bad5fb6dd318a0 Mon Sep 17 00:00:00 2001 From: Duncan Harvey <35278470+duncanpharvey@users.noreply.github.com> Date: Thu, 7 Mar 2024 14:28:10 -0500 Subject: [PATCH 084/155] [SVLS] Update list of known env vars for aws lambda extension and aas windows extensions (#23505) --- pkg/config/setup/config.go | 47 +++++++++++++++++++++++++++++--------- 1 file changed, 36 insertions(+), 11 deletions(-) diff --git a/pkg/config/setup/config.go b/pkg/config/setup/config.go index 469aa1238b15e3..ca8612fda4afff 100644 --- a/pkg/config/setup/config.go +++ b/pkg/config/setup/config.go @@ -1510,17 +1510,42 @@ func findUnknownEnvVars(config pkgconfigmodel.Config, environ []string, addition "DD_PROXY_HTTPS": {}, "DD_PROXY_NO_PROXY": {}, // these variables are used by serverless, but not via the Config struct - "DD_API_KEY_SECRET_ARN": {}, - "DD_APM_FLUSH_DEADLINE_MILLISECONDS": {}, - "DD_DOTNET_TRACER_HOME": {}, - "DD_FLUSH_TO_LOG": {}, - "DD_KMS_API_KEY": {}, - "DD_LAMBDA_HANDLER": {}, - "DD_LOGS_INJECTION": {}, - "DD_MERGE_XRAY_TRACES": {}, - "DD_SERVERLESS_APPSEC_ENABLED": {}, - "DD_SERVICE": {}, - "DD_VERSION": {}, + "DD_AAS_DOTNET_EXTENSION_VERSION": {}, + "DD_AAS_EXTENSION_VERSION": {}, + "DD_AAS_JAVA_EXTENSION_VERSION": {}, + "DD_AGENT_PIPE_NAME": {}, + "DD_API_KEY_SECRET_ARN": {}, + "DD_APM_FLUSH_DEADLINE_MILLISECONDS": {}, + "DD_APPSEC_ENABLED": {}, + "DD_AZURE_APP_SERVICES": {}, + "DD_DOGSTATSD_ARGS": {}, + "DD_DOGSTATSD_PATH": {}, + "DD_DOGSTATSD_WINDOWS_PIPE_NAME": {}, + "DD_DOTNET_TRACER_HOME": {}, + "DD_EXTENSION_PATH": {}, + "DD_FLUSH_TO_LOG": {}, + "DD_KMS_API_KEY": {}, + "DD_INTEGRATIONS": {}, + "DD_INTERNAL_NATIVE_LOADER_PATH": {}, + "DD_INTERNAL_PROFILING_NATIVE_ENGINE_PATH": {}, + "DD_LAMBDA_HANDLER": {}, + "DD_LOGS_INJECTION": {}, + "DD_MERGE_XRAY_TRACES": {}, + "DD_PROFILER_EXCLUDE_PROCESSES": {}, + "DD_PROFILING_LOG_DIR": {}, + "DD_RUNTIME_METRICS_ENABLED": {}, + "DD_SERVERLESS_APPSEC_ENABLED": {}, + "DD_SERVERLESS_FLUSH_STRATEGY": {}, + "DD_SERVICE": {}, + "DD_TRACE_AGENT_ARGS": {}, + "DD_TRACE_AGENT_PATH": {}, + "DD_TRACE_AGENT_URL": {}, + "DD_TRACE_LOG_DIRECTORY": {}, + "DD_TRACE_LOG_PATH": {}, + "DD_TRACE_METRICS_ENABLED": {}, + "DD_TRACE_PIPE_NAME": {}, + "DD_TRACE_TRANSPORT": {}, + "DD_VERSION": {}, // this variable is used by CWS functional tests "DD_TESTS_RUNTIME_COMPILED": {}, // this variable is used by the Kubernetes leader election mechanism From e70e3a11b07035fd1d3abe72f499eda3a6623e52 Mon Sep 17 00:00:00 2001 From: Nicolas Schweitzer Date: Thu, 7 Mar 2024 20:32:33 +0100 Subject: [PATCH 085/155] fix(aws): bump node to a more recent version as 14 is no more supported by aws (#23543) --- .github/workflows/serverless-integration.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/serverless-integration.yml b/.github/workflows/serverless-integration.yml index ed648d9bb7e5ea..414c3dbdb51230 100644 --- a/.github/workflows/serverless-integration.yml +++ b/.github/workflows/serverless-integration.yml @@ -27,10 +27,10 @@ jobs: with: path: go/src/github.com/DataDog/datadog-agent - - name: Set up Node 14 - uses: actions/setup-node@v3 + - name: Set up Node 20 + uses: actions/setup-node@v4 with: - node-version: 14 + node-version: 20 - name: Install Serverless Framework run: sudo yarn global add serverless@^3.36.0 --prefix /usr/local From c221f839802de34c89f5b6454a7e2ac675863ea5 Mon Sep 17 00:00:00 2001 From: Hasan Mahmood <6599778+hmahmood@users.noreply.github.com> Date: Thu, 7 Mar 2024 14:27:10 -0600 Subject: [PATCH 086/155] [NPM] Retry subnet metadata lookup if request times out (#23545) * Retry subnet metadata lookup if request times out * Add tag for timeout --- pkg/network/tracer/gateway_lookup.go | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/pkg/network/tracer/gateway_lookup.go b/pkg/network/tracer/gateway_lookup.go index 4f5fa845822562..81b4b5300b6c49 100644 --- a/pkg/network/tracer/gateway_lookup.go +++ b/pkg/network/tracer/gateway_lookup.go @@ -17,6 +17,7 @@ import ( "github.com/vishvananda/netns" ddconfig "github.com/DataDog/datadog-agent/pkg/config" + "github.com/DataDog/datadog-agent/pkg/errors" "github.com/DataDog/datadog-agent/pkg/network" "github.com/DataDog/datadog-agent/pkg/network/config" "github.com/DataDog/datadog-agent/pkg/telemetry" @@ -43,7 +44,7 @@ var gatewayLookupTelemetry = struct { telemetry.NewStatCounterWrapper(gatewayLookupModuleName, "subnet_cache_misses", []string{}, "Counter measuring the number of subnet cache misses"), telemetry.NewStatCounterWrapper(gatewayLookupModuleName, "subnet_cache_lookups", []string{}, "Counter measuring the number of subnet cache lookups"), telemetry.NewStatCounterWrapper(gatewayLookupModuleName, "subnet_lookups", []string{}, "Counter measuring the number of subnet lookups"), - telemetry.NewStatCounterWrapper(gatewayLookupModuleName, "subnet_lookup_errors", []string{}, "Counter measuring the number of subnet lookup errors"), + telemetry.NewStatCounterWrapper(gatewayLookupModuleName, "subnet_lookup_errors", []string{"reason"}, "Counter measuring the number of subnet lookup errors"), } type gatewayLookup struct { @@ -148,12 +149,18 @@ func (g *gatewayLookup) Lookup(cs *network.ConnectionStats) *network.Via { gatewayLookupTelemetry.subnetLookups.Inc() if s, err = g.subnetForHwAddrFunc(ifi.HardwareAddr); err != nil { - gatewayLookupTelemetry.subnetLookupErrors.Inc() log.Debugf("error getting subnet info for interface index %d: %s", r.IfIndex, err) // cache an empty result so that we don't keep hitting the // ec2 metadata endpoint for this interface - g.subnetCache.Add(r.IfIndex, nil) + if errors.IsTimeout(err) { + // retry after a minute if we timed out + g.subnetCache.Add(r.IfIndex, time.Now().Add(time.Minute)) + gatewayLookupTelemetry.subnetLookupErrors.Inc("timeout") + } else { + g.subnetCache.Add(r.IfIndex, nil) + gatewayLookupTelemetry.subnetLookupErrors.Inc() + } gatewayLookupTelemetry.subnetCacheSize.Inc() return err } From d9cf53c6ecfa3d55818c190e74243db69e8e52a2 Mon Sep 17 00:00:00 2001 From: Lee Avital Date: Thu, 7 Mar 2024 23:16:19 -0500 Subject: [PATCH 087/155] Skip TestEC2VMContainerizedSuite (#23557) we're getting slack notifications about test failures in slack, and they're really noisy. Disabling these tests as Nicolas is offline. --- test/new-e2e/tests/npm/ec2_1host_containerized_test.go | 1 + 1 file changed, 1 insertion(+) diff --git a/test/new-e2e/tests/npm/ec2_1host_containerized_test.go b/test/new-e2e/tests/npm/ec2_1host_containerized_test.go index 06aee80fee227e..b668493ebd21c1 100644 --- a/test/new-e2e/tests/npm/ec2_1host_containerized_test.go +++ b/test/new-e2e/tests/npm/ec2_1host_containerized_test.go @@ -73,6 +73,7 @@ func dockerHostHttpbinEnvProvisioner() e2e.PulumiEnvRunFunc[dockerHostNginxEnv] // TestEC2VMSuite will validate running the agent on a single EC2 VM func TestEC2VMContainerizedSuite(t *testing.T) { + t.Skip("temporarily skipping test suite due to flakiness") s := &ec2VMContainerizedSuite{} e2eParams := []e2e.SuiteOption{e2e.WithProvisioner(e2e.NewTypedPulumiProvisioner("dockerHostHttpbin", dockerHostHttpbinEnvProvisioner(), nil))} From 6e2b16ad2e0fc41fcd28af410a37ef73bbe7777c Mon Sep 17 00:00:00 2001 From: Derek Brown Date: Fri, 8 Mar 2024 00:36:22 -0800 Subject: [PATCH 088/155] [WKINT-402] [windows][cws] Update procmon to 1.0.1 (#23560) Fixes blue screen found in dogfood testing. resubmit --- release.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/release.json b/release.json index f3c80aadda838e..44d9494e936901 100644 --- a/release.json +++ b/release.json @@ -17,8 +17,8 @@ "WINDOWS_DDNPM_SHASUM": "b1611ad4ceb8366c88767aeb638abefb226081efbf546b8b886952dd1b18ec05", "SECURITY_AGENT_POLICIES_VERSION": "master", "WINDOWS_DDPROCMON_DRIVER": "release-signed", - "WINDOWS_DDPROCMON_VERSION": "1.0.0", - "WINDOWS_DDPROCMON_SHASUM": "1224580e1ae3031b1cb786b2d671ba83b6c0f104af050ab424c57fa7541af06a", + "WINDOWS_DDPROCMON_VERSION": "1.0.1", + "WINDOWS_DDPROCMON_SHASUM": "7c13ba75f7a30704a6a4082e4cffc819c846fd6061c53372c8b9908fee11d621", "WINDOWS_APMINJECT_COMMENT": "The WINDOWS_APMINJECT entries below should NOT be added to the release targets", "WINDOWS_APMINJECT_MODULE": "release-signed", "WINDOWS_APMINJECT_VERSION": "1.1.1", @@ -36,8 +36,8 @@ "WINDOWS_DDNPM_SHASUM": "b1611ad4ceb8366c88767aeb638abefb226081efbf546b8b886952dd1b18ec05", "SECURITY_AGENT_POLICIES_VERSION": "master", "WINDOWS_DDPROCMON_DRIVER": "release-signed", - "WINDOWS_DDPROCMON_VERSION": "1.0.0", - "WINDOWS_DDPROCMON_SHASUM": "1224580e1ae3031b1cb786b2d671ba83b6c0f104af050ab424c57fa7541af06a", + "WINDOWS_DDPROCMON_VERSION": "1.0.1", + "WINDOWS_DDPROCMON_SHASUM": "7c13ba75f7a30704a6a4082e4cffc819c846fd6061c53372c8b9908fee11d621", "WINDOWS_APMINJECT_COMMENT": "The WINDOWS_APMINJECT entries below should NOT be added to the release targets", "WINDOWS_APMINJECT_MODULE": "release-signed", "WINDOWS_APMINJECT_VERSION": "1.1.1", @@ -55,8 +55,8 @@ "WINDOWS_DDNPM_VERSION": "2.6.0", "WINDOWS_DDNPM_SHASUM": "b1611ad4ceb8366c88767aeb638abefb226081efbf546b8b886952dd1b18ec05", "WINDOWS_DDPROCMON_DRIVER": "release-signed", - "WINDOWS_DDPROCMON_VERSION": "1.0.0", - "WINDOWS_DDPROCMON_SHASUM": "1224580e1ae3031b1cb786b2d671ba83b6c0f104af050ab424c57fa7541af06a" + "WINDOWS_DDPROCMON_VERSION": "1.0.1", + "WINDOWS_DDPROCMON_SHASUM": "7c13ba75f7a30704a6a4082e4cffc819c846fd6061c53372c8b9908fee11d621" }, "release-a7": { "INTEGRATIONS_CORE_VERSION": "7.52.0-rc.3", @@ -70,8 +70,8 @@ "WINDOWS_DDNPM_VERSION": "2.6.0", "WINDOWS_DDNPM_SHASUM": "b1611ad4ceb8366c88767aeb638abefb226081efbf546b8b886952dd1b18ec05", "WINDOWS_DDPROCMON_DRIVER": "release-signed", - "WINDOWS_DDPROCMON_VERSION": "1.0.0", - "WINDOWS_DDPROCMON_SHASUM": "1224580e1ae3031b1cb786b2d671ba83b6c0f104af050ab424c57fa7541af06a" + "WINDOWS_DDPROCMON_VERSION": "1.0.1", + "WINDOWS_DDPROCMON_SHASUM": "7c13ba75f7a30704a6a4082e4cffc819c846fd6061c53372c8b9908fee11d621" }, "dca-1.17.0": { "SECURITY_AGENT_POLICIES_VERSION": "v0.18.6" From 2664773d938aa5884583c7afe3f26b63b401b6a9 Mon Sep 17 00:00:00 2001 From: louis-cqrl <93274433+louis-cqrl@users.noreply.github.com> Date: Fri, 8 Mar 2024 09:58:34 +0100 Subject: [PATCH 089/155] Create e2e tests for local flare generation (#23490) * feat(test/new-e2e/tests/agent-subcommands/flare/flare_common_test.go): Add test to test local flare * feat(test/new-e2e/tests/agent-subcommands/flare/flare_common_test.go): check if flare launch locally * feat(test/new-e2e/tests/agent-subcommands/flare/flare_common_test.go): check if flare has the local file * fix(test/new-e2e/tests/agent-subcommands/flare/flare_files.go): update file difference between local and non-local flare * fix(test/new-e2e/tests/agent-subcommands/flare/flare_common_test.go): linter * fix(test/new-e2e/tests/agent-subcommands/flare/flare_files.go): remove some file * fix(test/new-e2e/tests/agent-subcommands/flare/flare_*): make test that change env execute at the end --- .../flare/flare_common_test.go | 43 ++++++++++++++----- .../agent-subcommands/flare/flare_files.go | 21 ++++++--- .../agent-subcommands/flare/flare_nix_test.go | 10 +++-- .../agent-subcommands/flare/flare_win_test.go | 12 ++++-- 4 files changed, 63 insertions(+), 23 deletions(-) diff --git a/test/new-e2e/tests/agent-subcommands/flare/flare_common_test.go b/test/new-e2e/tests/agent-subcommands/flare/flare_common_test.go index dbbdbec0e310ea..a79a9a7f296518 100644 --- a/test/new-e2e/tests/agent-subcommands/flare/flare_common_test.go +++ b/test/new-e2e/tests/agent-subcommands/flare/flare_common_test.go @@ -7,13 +7,11 @@ package flare import ( - "testing" "time" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - fi "github.com/DataDog/datadog-agent/test/fakeintake/client" "github.com/DataDog/datadog-agent/test/fakeintake/client/flare" "github.com/DataDog/datadog-agent/test/new-e2e/pkg/e2e" "github.com/DataDog/datadog-agent/test/new-e2e/pkg/environments" @@ -25,13 +23,20 @@ type baseFlareSuite struct { } func (v *baseFlareSuite) TestFlareDefaultFiles() { - flare := requestAgentFlareAndFetchFromFakeIntake(v.T(), v.Env().Agent.Client, v.Env().FakeIntake.Client(), agentclient.WithArgs([]string{"--email", "e2e@test.com", "--send"})) + flareArgs := agentclient.WithArgs([]string{"--email", "e2e@test.com", "--send"}) + flare, logs := requestAgentFlareAndFetchFromFakeIntake(v, flareArgs) + + assert.NotContains(v.T(), logs, "Error") assertFilesExist(v.T(), flare, defaultFlareFiles) assertFilesExist(v.T(), flare, defaultLogFiles) assertFilesExist(v.T(), flare, defaultConfigFiles) + assertFilesExist(v.T(), flare, defaultMetadataFlareFiles) assertFoldersExist(v.T(), flare, defaultFlareFolders) + assertFilesExist(v.T(), flare, nonLocalFlareFiles) + assertFilesExist(v.T(), flare, nonLocalMetadataFlareFiles) + assertLogsFolderOnlyContainsLogFile(v.T(), flare) assertEtcFolderOnlyContainsConfigFile(v.T(), flare) @@ -40,16 +45,34 @@ func (v *baseFlareSuite) TestFlareDefaultFiles() { assertFileNotContains(v.T(), flare, "process_discovery_check_output.json", "'process_config.process_discovery.enabled' is disabled") } -func requestAgentFlareAndFetchFromFakeIntake(t *testing.T, agent agentclient.Agent, fakeintake *fi.Client, flareArgs ...agentclient.AgentArgsOption) flare.Flare { +func (v *baseFlareSuite) TestLocalFlareDefaultFiles() { + flareArgs := agentclient.WithArgs([]string{"--email", "e2e@test.com", "--send", "--local"}) + flare, logs := requestAgentFlareAndFetchFromFakeIntake(v, flareArgs) + + assert.Contains(v.T(), logs, "Initiating flare locally.") + assert.NotContains(v.T(), logs, "Error") + assertFilesExist(v.T(), flare, []string{"local"}) + + assertFilesExist(v.T(), flare, defaultFlareFiles) + assertFilesExist(v.T(), flare, defaultLogFiles) + assertFilesExist(v.T(), flare, defaultConfigFiles) + assertFilesExist(v.T(), flare, defaultMetadataFlareFiles) + assertFoldersExist(v.T(), flare, defaultFlareFolders) + + assertLogsFolderOnlyContainsLogFile(v.T(), flare) + assertEtcFolderOnlyContainsConfigFile(v.T(), flare) +} + +func requestAgentFlareAndFetchFromFakeIntake(v *baseFlareSuite, flareArgs ...agentclient.AgentArgsOption) (flare.Flare, string) { // Wait for the fakeintake to be ready to avoid 503 when sending the flare - assert.EventuallyWithT(t, func(c *assert.CollectT) { - assert.NoError(c, fakeintake.GetServerHealth()) + assert.EventuallyWithT(v.T(), func(c *assert.CollectT) { + assert.NoError(c, v.Env().FakeIntake.Client().GetServerHealth()) }, 5*time.Minute, 20*time.Second, "timedout waiting for fakeintake to be healthy") - _ = agent.Flare(flareArgs...) + flareLog := v.Env().Agent.Client.Flare(flareArgs...) - flare, err := fakeintake.GetLatestFlare() - require.NoError(t, err) + flare, err := v.Env().FakeIntake.Client().GetLatestFlare() + require.NoError(v.T(), err) - return flare + return flare, flareLog } diff --git a/test/new-e2e/tests/agent-subcommands/flare/flare_files.go b/test/new-e2e/tests/agent-subcommands/flare/flare_files.go index 63ead7475499d2..dada5ec05b7d07 100644 --- a/test/new-e2e/tests/agent-subcommands/flare/flare_files.go +++ b/test/new-e2e/tests/agent-subcommands/flare/flare_files.go @@ -14,19 +14,28 @@ var defaultFlareFiles = []string{ "go-routine-dump.log", "health.yaml", "install_info", - "metadata/inventory/host.json", - "metadata/inventory/agent.json", - "metadata/inventory/checks.json", - "metadata/host.json", "permissions.log", "process_agent_runtime_config_dump.yaml", - "process-agent_tagger-list.json", "runtime_config_dump.yaml", "secrets.log", "status.log", "system_probe_runtime_config_dump.yaml", - "tagger-list.json", "version-history.json", +} + +var defaultMetadataFlareFiles = []string{ + "metadata/host.json", + "metadata/inventory/host.json", + "metadata/inventory/agent.json", +} + +var nonLocalMetadataFlareFiles = []string{ + "metadata/inventory/checks.json", +} + +var nonLocalFlareFiles = []string{ + "process-agent_tagger-list.json", + "tagger-list.json", "workload-list.log", } diff --git a/test/new-e2e/tests/agent-subcommands/flare/flare_nix_test.go b/test/new-e2e/tests/agent-subcommands/flare/flare_nix_test.go index f81980d4a111c1..dbaf0d308b8471 100644 --- a/test/new-e2e/tests/agent-subcommands/flare/flare_nix_test.go +++ b/test/new-e2e/tests/agent-subcommands/flare/flare_nix_test.go @@ -11,10 +11,11 @@ import ( "strings" "testing" + "github.com/DataDog/test-infra-definitions/components/datadog/agentparams" + "github.com/DataDog/datadog-agent/test/new-e2e/pkg/e2e" awshost "github.com/DataDog/datadog-agent/test/new-e2e/pkg/environments/aws/host" "github.com/DataDog/datadog-agent/test/new-e2e/pkg/utils/e2e/client/agentclient" - "github.com/DataDog/test-infra-definitions/components/datadog/agentparams" ) //go:embed fixtures/datadog-agent.yaml @@ -34,7 +35,10 @@ func TestLinuxFlareSuite(t *testing.T) { e2e.Run(t, &linuxFlareSuite{}, e2e.WithProvisioner(awshost.Provisioner())) } -func (v *linuxFlareSuite) TestFlareWithAllConfiguration() { +// Add zz to name to run this test last in order to don't break other tests +// Will need to rename it to TestFlareWithAllConfiguration after the fix of Paola's PR +// To keep in mind that we will need to create the directory then create file in it and specify to delete file as the same time as the directory +func (v *linuxFlareSuite) TestzzzFlareWithAllConfiguration() { scenarioExpectedFiles := []string{ "telemetry.log", // if telemetry.enabled "registry.json", // if Logs Agent is running @@ -60,7 +64,7 @@ func (v *linuxFlareSuite) TestFlareWithAllConfiguration() { v.UpdateEnv(awshost.Provisioner(awshost.WithAgentOptions(agentOptions...))) - flare := requestAgentFlareAndFetchFromFakeIntake(v.T(), v.Env().Agent.Client, v.Env().FakeIntake.Client(), agentclient.WithArgs([]string{"--email", "e2e@test.com", "--send"})) + flare, _ := requestAgentFlareAndFetchFromFakeIntake(&v.baseFlareSuite, agentclient.WithArgs([]string{"--email", "e2e@test.com", "--send"})) assertFilesExist(v.T(), flare, scenarioExpectedFiles) assertFilesExist(v.T(), flare, allLogFiles) diff --git a/test/new-e2e/tests/agent-subcommands/flare/flare_win_test.go b/test/new-e2e/tests/agent-subcommands/flare/flare_win_test.go index f417f20a85c4c7..f662b8c2c02118 100644 --- a/test/new-e2e/tests/agent-subcommands/flare/flare_win_test.go +++ b/test/new-e2e/tests/agent-subcommands/flare/flare_win_test.go @@ -9,11 +9,12 @@ package flare import ( "testing" + "github.com/DataDog/test-infra-definitions/components/os" + "github.com/DataDog/test-infra-definitions/scenarios/aws/ec2" + "github.com/DataDog/datadog-agent/test/new-e2e/pkg/e2e" awshost "github.com/DataDog/datadog-agent/test/new-e2e/pkg/environments/aws/host" "github.com/DataDog/datadog-agent/test/new-e2e/pkg/utils/e2e/client/agentclient" - "github.com/DataDog/test-infra-definitions/components/os" - "github.com/DataDog/test-infra-definitions/scenarios/aws/ec2" "github.com/stretchr/testify/assert" ) @@ -26,8 +27,11 @@ func TestWindowsFlareSuite(t *testing.T) { e2e.Run(t, &windowsFlareSuite{}, e2e.WithProvisioner(awshost.Provisioner(awshost.WithEC2InstanceOptions(ec2.WithOS(os.WindowsDefault))))) } -func (v *windowsFlareSuite) TestFlareWindows() { - flare := requestAgentFlareAndFetchFromFakeIntake(v.T(), v.Env().Agent.Client, v.Env().FakeIntake.Client(), agentclient.WithArgs([]string{"--email", "e2e@test.com", "--send"})) +// Add zz to name to run this test last in order to don't break other tests +// Will need to rename it to TestFlareWithAllConfiguration after the fix of Paola's PR +// To keep in mind that we will need to create the directory then create file in it and specify to delete file as the same time as the directory +func (v *windowsFlareSuite) TestzzzFlareWindows() { + flare, _ := requestAgentFlareAndFetchFromFakeIntake(&v.baseFlareSuite, agentclient.WithArgs([]string{"--email", "e2e@test.com", "--send"})) assertFilesExist(v.T(), flare, windowsFiles) assertEventlogFolderOnlyContainsWindoesEventLog(v.T(), flare) From 9898528046a1a281bb76e22ae55f5e7f963bfb01 Mon Sep 17 00:00:00 2001 From: Guy Arbitman Date: Fri, 8 Mar 2024 11:21:43 +0200 Subject: [PATCH 090/155] npm: gateway lookup: Added dummy tag to prevent panic (#23562) Skipping mq as it requires approval, but as main is broken and we need to wait for US morning we prefer to continue now. Verified with @KSerrania --- pkg/network/tracer/gateway_lookup.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/network/tracer/gateway_lookup.go b/pkg/network/tracer/gateway_lookup.go index 81b4b5300b6c49..e8024b800db43c 100644 --- a/pkg/network/tracer/gateway_lookup.go +++ b/pkg/network/tracer/gateway_lookup.go @@ -159,7 +159,7 @@ func (g *gatewayLookup) Lookup(cs *network.ConnectionStats) *network.Via { gatewayLookupTelemetry.subnetLookupErrors.Inc("timeout") } else { g.subnetCache.Add(r.IfIndex, nil) - gatewayLookupTelemetry.subnetLookupErrors.Inc() + gatewayLookupTelemetry.subnetLookupErrors.Inc("general error") } gatewayLookupTelemetry.subnetCacheSize.Inc() return err From 9923959a6525bc1dd4576ec3a682daec6e717f5a Mon Sep 17 00:00:00 2001 From: Gustavo Caso Date: Fri, 8 Mar 2024 11:08:42 +0100 Subject: [PATCH 091/155] [ASCII-1277] Remove sub packages from pkg/status. All agents now use the status component (#23525) * Remove subpackages from pkg/status. All agents now use the status component * fix lint issue with unused function * fix test --- cmd/agent/subcommands/run/command.go | 9 +- pkg/flare/archive.go | 9 +- pkg/status/aggregator/aggregator.go | 29 - pkg/status/apm/apm.go | 59 - pkg/status/clusteragent/clusteragent.go | 109 - pkg/status/clusteragent/status_apiserver.go | 21 +- .../clusteragent/status_no_apiserver.go | 6 +- pkg/status/common/common.go | 79 - pkg/status/compliance/compliance.go | 25 - pkg/status/dogstatsd/dogstatsd.go | 34 - pkg/status/forwarder/forwarder.go | 27 - pkg/status/hostname/hostname.go | 20 - pkg/status/netflow/netflow.go | 16 - pkg/status/ntp/ntp.go | 25 - pkg/status/otlp/no_otlp.go | 17 - pkg/status/otlp/otlp.go | 48 - pkg/status/processagent/processagent.go | 90 - .../remoteconfiguration.go | 34 - pkg/status/render/fixtures/agent_status.json | 2707 ----------------- pkg/status/render/fixtures/agent_status.text | 514 ---- pkg/status/render/fixtures/check_stats.json | 553 ---- pkg/status/render/fixtures/check_stats.text | 117 - .../render/fixtures/cluster_agent_status.json | 730 ----- .../render/fixtures/cluster_agent_status.text | 123 - .../render/fixtures/process_agent_status.json | 129 - .../render/fixtures/process_agent_status.text | 52 - .../fixtures/security_agent_status.json | 913 ------ .../fixtures/security_agent_status.text | 83 - pkg/status/render/render.go | 180 -- pkg/status/render/render_test.go | 89 - pkg/status/render/templates/aggregator.tmpl | 59 - .../render/templates/autodiscovery.tmpl | 41 - pkg/status/render/templates/clusteragent.tmpl | 19 - pkg/status/render/templates/collector.tmpl | 147 - .../render/templates/collectorHTML.tmpl | 159 - pkg/status/render/templates/compliance.tmpl | 66 - pkg/status/render/templates/dogstatsd.tmpl | 14 - pkg/status/render/templates/endpoints.tmpl | 18 - pkg/status/render/templates/forwarder.tmpl | 93 - pkg/status/render/templates/header.tmpl | 266 -- pkg/status/render/templates/jmxfetch.tmpl | 74 - pkg/status/render/templates/logsagent.tmpl | 112 - pkg/status/render/templates/netflow.tmpl | 35 - pkg/status/render/templates/orchestrator.tmpl | 98 - pkg/status/render/templates/otlp.tmpl | 13 - .../render/templates/process-agent.tmpl | 75 - pkg/status/render/templates/remoteconfig.tmpl | 18 - pkg/status/render/templates/rendererrors.tmpl | 11 - .../render/templates/runtimesecurity.tmpl | 83 - pkg/status/render/templates/snmp-traps.tmpl | 15 - pkg/status/render/templates/systemprobe.tmpl | 92 - pkg/status/render/templates/trace-agent.tmpl | 53 - pkg/status/snmptraps/snmptraps.go | 20 - pkg/status/status.go | 129 - 54 files changed, 9 insertions(+), 8548 deletions(-) delete mode 100644 pkg/status/aggregator/aggregator.go delete mode 100644 pkg/status/apm/apm.go delete mode 100644 pkg/status/clusteragent/clusteragent.go delete mode 100644 pkg/status/common/common.go delete mode 100644 pkg/status/compliance/compliance.go delete mode 100644 pkg/status/dogstatsd/dogstatsd.go delete mode 100644 pkg/status/forwarder/forwarder.go delete mode 100644 pkg/status/hostname/hostname.go delete mode 100644 pkg/status/netflow/netflow.go delete mode 100644 pkg/status/ntp/ntp.go delete mode 100644 pkg/status/otlp/no_otlp.go delete mode 100644 pkg/status/otlp/otlp.go delete mode 100644 pkg/status/processagent/processagent.go delete mode 100644 pkg/status/remoteconfiguration/remoteconfiguration.go delete mode 100644 pkg/status/render/fixtures/agent_status.json delete mode 100755 pkg/status/render/fixtures/agent_status.text delete mode 100644 pkg/status/render/fixtures/check_stats.json delete mode 100755 pkg/status/render/fixtures/check_stats.text delete mode 100644 pkg/status/render/fixtures/cluster_agent_status.json delete mode 100755 pkg/status/render/fixtures/cluster_agent_status.text delete mode 100644 pkg/status/render/fixtures/process_agent_status.json delete mode 100755 pkg/status/render/fixtures/process_agent_status.text delete mode 100644 pkg/status/render/fixtures/security_agent_status.json delete mode 100755 pkg/status/render/fixtures/security_agent_status.text delete mode 100644 pkg/status/render/render_test.go delete mode 100644 pkg/status/render/templates/aggregator.tmpl delete mode 100644 pkg/status/render/templates/autodiscovery.tmpl delete mode 100644 pkg/status/render/templates/clusteragent.tmpl delete mode 100644 pkg/status/render/templates/collector.tmpl delete mode 100644 pkg/status/render/templates/collectorHTML.tmpl delete mode 100644 pkg/status/render/templates/compliance.tmpl delete mode 100644 pkg/status/render/templates/dogstatsd.tmpl delete mode 100644 pkg/status/render/templates/endpoints.tmpl delete mode 100644 pkg/status/render/templates/forwarder.tmpl delete mode 100644 pkg/status/render/templates/header.tmpl delete mode 100644 pkg/status/render/templates/jmxfetch.tmpl delete mode 100644 pkg/status/render/templates/logsagent.tmpl delete mode 100644 pkg/status/render/templates/netflow.tmpl delete mode 100644 pkg/status/render/templates/orchestrator.tmpl delete mode 100644 pkg/status/render/templates/otlp.tmpl delete mode 100644 pkg/status/render/templates/process-agent.tmpl delete mode 100644 pkg/status/render/templates/remoteconfig.tmpl delete mode 100644 pkg/status/render/templates/rendererrors.tmpl delete mode 100644 pkg/status/render/templates/runtimesecurity.tmpl delete mode 100644 pkg/status/render/templates/snmp-traps.tmpl delete mode 100644 pkg/status/render/templates/systemprobe.tmpl delete mode 100644 pkg/status/render/templates/trace-agent.tmpl delete mode 100644 pkg/status/snmptraps/snmptraps.go diff --git a/cmd/agent/subcommands/run/command.go b/cmd/agent/subcommands/run/command.go index 5b9ecd5724750e..34d04143c4d430 100644 --- a/cmd/agent/subcommands/run/command.go +++ b/cmd/agent/subcommands/run/command.go @@ -113,7 +113,6 @@ import ( "github.com/DataDog/datadog-agent/pkg/status/health" httpproxyStatus "github.com/DataDog/datadog-agent/pkg/status/httpproxy" jmxStatus "github.com/DataDog/datadog-agent/pkg/status/jmx" - otlpStatus "github.com/DataDog/datadog-agent/pkg/status/otlp" systemprobeStatus "github.com/DataDog/datadog-agent/pkg/status/systemprobe" pkgTelemetry "github.com/DataDog/datadog-agent/pkg/telemetry" "github.com/DataDog/datadog-agent/pkg/util" @@ -614,13 +613,7 @@ func startAgent( // start dependent services go startDependentServices() - if err := otelcollector.Start(); err != nil { - return err - } - // TODO: (components) remove this once migrating the status package to components - otlpStatus.SetOtelCollector(otelcollector) - - return nil + return otelcollector.Start() } // StopAgentWithDefaults is a temporary way for other packages to use stopAgent. diff --git a/pkg/flare/archive.go b/pkg/flare/archive.go index 5d2e9a22b5acb2..bd657e6c60103f 100644 --- a/pkg/flare/archive.go +++ b/pkg/flare/archive.go @@ -29,7 +29,6 @@ import ( "github.com/DataDog/datadog-agent/pkg/diagnose" "github.com/DataDog/datadog-agent/pkg/diagnose/diagnosis" "github.com/DataDog/datadog-agent/pkg/status/health" - processagentStatus "github.com/DataDog/datadog-agent/pkg/status/processagent" systemprobeStatus "github.com/DataDog/datadog-agent/pkg/status/systemprobe" "github.com/DataDog/datadog-agent/pkg/util/installinfo" "github.com/DataDog/datadog-agent/pkg/util/log" @@ -199,8 +198,12 @@ func getProcessAgentFullConfig() ([]byte, error) { procStatusURL := fmt.Sprintf("http://%s/config/all", addressPort) - cfgB := processagentStatus.GetRuntimeConfig(procStatusURL) - return cfgB, nil + bytes, err := getHTTPCallContent(procStatusURL) + + if err != nil { + return []byte("error: process-agent is not running or is unreachable\n"), nil + } + return bytes, nil } func getConfigFiles(fb flaretypes.FlareBuilder, confSearchPaths map[string]string) { diff --git a/pkg/status/aggregator/aggregator.go b/pkg/status/aggregator/aggregator.go deleted file mode 100644 index 42cdf0eb9b5195..00000000000000 --- a/pkg/status/aggregator/aggregator.go +++ /dev/null @@ -1,29 +0,0 @@ -// Unless explicitly stated otherwise all files in this repository are licensed -// under the Apache License Version 2.0. -// This product includes software developed at Datadog (https://www.datadoghq.com/). -// Copyright 2016-present Datadog, Inc. - -// Package aggregator fetch information needed to render the 'aggregator' section of the status page. -package aggregator - -import ( - "encoding/json" - "expvar" - - checkstats "github.com/DataDog/datadog-agent/pkg/collector/check/stats" - "github.com/DataDog/datadog-agent/pkg/util/log" -) - -// PopulateStatus populates the status stats -func PopulateStatus(stats map[string]interface{}) { - aggregatorStatsJSON := []byte(expvar.Get("aggregator").String()) - aggregatorStats := make(map[string]interface{}) - json.Unmarshal(aggregatorStatsJSON, &aggregatorStats) //nolint:errcheck - stats["aggregatorStats"] = aggregatorStats - s, err := checkstats.TranslateEventPlatformEventTypes(stats["aggregatorStats"]) - if err != nil { - log.Debugf("failed to translate event platform event types in aggregatorStats: %s", err.Error()) - } else { - stats["aggregatorStats"] = s - } -} diff --git a/pkg/status/apm/apm.go b/pkg/status/apm/apm.go deleted file mode 100644 index e5576ded127930..00000000000000 --- a/pkg/status/apm/apm.go +++ /dev/null @@ -1,59 +0,0 @@ -// Unless explicitly stated otherwise all files in this repository are licensed -// under the Apache License Version 2.0. -// This product includes software developed at Datadog (https://www.datadoghq.com/). -// Copyright 2016-present Datadog, Inc. - -// Package apm fetch information about the apm agent. -// This will, in time, be migrated to the apm agent component. -package apm - -import ( - "encoding/json" - "fmt" - "net/http" - "sync" - - apiutil "github.com/DataDog/datadog-agent/pkg/api/util" - "github.com/DataDog/datadog-agent/pkg/config" -) - -// httpClients should be reused instead of created as needed. They keep cached TCP connections -// that may leak otherwise -var ( - httpClient *http.Client - clientInitOnce sync.Once -) - -func client() *http.Client { - clientInitOnce.Do(func() { - httpClient = apiutil.GetClient(false) - }) - - return httpClient -} - -// GetAPMStatus returns a set of key/value pairs summarizing the status of the trace-agent. -// If the status can not be obtained for any reason, the returned map will contain an "error" -// key with an explanation. -func GetAPMStatus() map[string]interface{} { - port := config.Datadog.GetInt("apm_config.debug.port") - - c := client() - url := fmt.Sprintf("http://localhost:%d/debug/vars", port) - resp, err := apiutil.DoGet(c, url, apiutil.CloseConnection) - if err != nil { - return map[string]interface{}{ - "port": port, - "error": err.Error(), - } - } - - status := make(map[string]interface{}) - if err := json.Unmarshal(resp, &status); err != nil { - return map[string]interface{}{ - "port": port, - "error": err.Error(), - } - } - return status -} diff --git a/pkg/status/clusteragent/clusteragent.go b/pkg/status/clusteragent/clusteragent.go deleted file mode 100644 index c9cb993ea45e33..00000000000000 --- a/pkg/status/clusteragent/clusteragent.go +++ /dev/null @@ -1,109 +0,0 @@ -// Unless explicitly stated otherwise all files in this repository are licensed -// under the Apache License Version 2.0. -// This product includes software developed at Datadog (https://www.datadoghq.com/). -// Copyright 2016-present Datadog, Inc. - -// Package clusteragent implements the status of the cluster agent -package clusteragent - -import ( - "context" - "encoding/json" - - "github.com/DataDog/datadog-agent/pkg/clusteragent/admission" - "github.com/DataDog/datadog-agent/pkg/clusteragent/clusterchecks" - "github.com/DataDog/datadog-agent/pkg/clusteragent/custommetrics" - "github.com/DataDog/datadog-agent/pkg/clusteragent/externalmetrics" - "github.com/DataDog/datadog-agent/pkg/clusteragent/orchestrator" - "github.com/DataDog/datadog-agent/pkg/config" - logsStatus "github.com/DataDog/datadog-agent/pkg/logs/status" - "github.com/DataDog/datadog-agent/pkg/status/autodiscovery" - "github.com/DataDog/datadog-agent/pkg/status/common" - "github.com/DataDog/datadog-agent/pkg/status/endpoints" - "github.com/DataDog/datadog-agent/pkg/status/render" - "github.com/DataDog/datadog-agent/pkg/util/kubernetes/apiserver" - "github.com/DataDog/datadog-agent/pkg/util/log" -) - -// GetStatus grabs the status from expvar and puts it into a map -func GetStatus(verbose bool) (map[string]interface{}, error) { - // inventory is not enabled for the clusteragent/DCA so we pass nil to GetStatus - stats, err := common.GetStatus(nil) - if err != nil { - return nil, err - } - - stats["config"] = getDCAPartialConfig() - stats["leaderelection"] = getLeaderElectionDetails() - - if config.Datadog.GetBool("compliance_config.enabled") { - stats["logsStats"] = logsStatus.Get(verbose) - } - - endpoints.PopulateStatus(stats) - - apiCl, apiErr := apiserver.GetAPIClient() - if apiErr != nil { - stats["custommetrics"] = map[string]string{"Error": apiErr.Error()} - stats["admissionWebhook"] = map[string]string{"Error": apiErr.Error()} - } else { - stats["custommetrics"] = custommetrics.GetStatus(apiCl.Cl) - stats["admissionWebhook"] = admission.GetStatus(apiCl.Cl) - } - - if config.Datadog.GetBool("external_metrics_provider.use_datadogmetric_crd") { - stats["externalmetrics"] = externalmetrics.GetStatus() - } else { - stats["externalmetrics"] = apiserver.GetStatus() - } - - if config.Datadog.GetBool("cluster_checks.enabled") { - cchecks, err := clusterchecks.GetStats() - if err != nil { - log.Errorf("Error grabbing clusterchecks stats: %s", err) - } else { - stats["clusterchecks"] = cchecks - } - } - - autodiscovery.PopulateStatus(stats) - - if config.Datadog.GetBool("orchestrator_explorer.enabled") { - if apiErr != nil { - stats["orchestrator"] = map[string]string{"Error": apiErr.Error()} - } else { - orchestratorStats := orchestrator.GetStatus(context.TODO(), apiCl.Cl) - stats["orchestrator"] = orchestratorStats - } - } - - return stats, nil -} - -// getDCAPartialConfig returns config parameters of interest for the status page. -func getDCAPartialConfig() map[string]string { - conf := make(map[string]string) - conf["log_level"] = config.Datadog.GetString("log_level") - conf["confd_path"] = config.Datadog.GetString("confd_path") - return conf -} - -// GetAndFormatStatus gets and formats the status all in one go -func GetAndFormatStatus() ([]byte, error) { - s, err := GetStatus(true) - if err != nil { - log.Infof("Error while getting status %q", err) - return nil, err - } - statusJSON, err := json.Marshal(s) - if err != nil { - log.Infof("Error while marshalling %q", err) - return nil, err - } - st, err := render.FormatDCAStatus(statusJSON) - if err != nil { - log.Infof("Error formatting the status %q", err) - return nil, err - } - return []byte(st), nil -} diff --git a/pkg/status/clusteragent/status_apiserver.go b/pkg/status/clusteragent/status_apiserver.go index 8df927073686ed..f71fcd17b451fb 100644 --- a/pkg/status/clusteragent/status_apiserver.go +++ b/pkg/status/clusteragent/status_apiserver.go @@ -5,37 +5,18 @@ //go:build kubeapiserver +// Package clusteragent fetch information about the cluster agent package clusteragent import ( "embed" - "fmt" "io" - "time" "github.com/DataDog/datadog-agent/comp/core/config" "github.com/DataDog/datadog-agent/comp/core/status" "github.com/DataDog/datadog-agent/pkg/util/clusteragent" - "github.com/DataDog/datadog-agent/pkg/util/kubernetes/apiserver/leaderelection" ) -func getLeaderElectionDetails() map[string]string { - leaderElectionStats := make(map[string]string) - - record, err := leaderelection.GetLeaderElectionRecord() - if err != nil { - leaderElectionStats["status"] = "Failing" - leaderElectionStats["error"] = err.Error() - return leaderElectionStats - } - leaderElectionStats["leaderName"] = record.HolderIdentity - leaderElectionStats["acquiredTime"] = record.AcquireTime.Format(time.RFC1123) - leaderElectionStats["renewedTime"] = record.RenewTime.Format(time.RFC1123) - leaderElectionStats["transitions"] = fmt.Sprintf("%d transitions", record.LeaderTransitions) - leaderElectionStats["status"] = "Running" - return leaderElectionStats -} - // GetDCAStatus collect the DCA agent information and return it in a map func GetDCAStatus(stats map[string]interface{}) { clusterAgentDetails := make(map[string]string) diff --git a/pkg/status/clusteragent/status_no_apiserver.go b/pkg/status/clusteragent/status_no_apiserver.go index 89c806a90c5cdd..dc4a397fc49569 100644 --- a/pkg/status/clusteragent/status_no_apiserver.go +++ b/pkg/status/clusteragent/status_no_apiserver.go @@ -5,6 +5,7 @@ //go:build !kubeapiserver +// Package clusteragent fetch information about the cluster agent package clusteragent import ( @@ -13,11 +14,6 @@ import ( "github.com/DataDog/datadog-agent/pkg/util/log" ) -func getLeaderElectionDetails() map[string]string { - log.Info("Not implemented") - return nil -} - // GetDCAStatus empty function for agents not running in a k8s environment func GetDCAStatus(_ map[string]interface{}) { log.Info("Not implemented") diff --git a/pkg/status/common/common.go b/pkg/status/common/common.go deleted file mode 100644 index 92905969e1b03c..00000000000000 --- a/pkg/status/common/common.go +++ /dev/null @@ -1,79 +0,0 @@ -// Unless explicitly stated otherwise all files in this repository are licensed -// under the Apache License Version 2.0. -// This product includes software developed at Datadog (https://www.datadoghq.com/). -// Copyright 2016-present Datadog, Inc. - -// Package common provides a function to get the status elements common to all Agent flavors. -package common - -import ( - "context" - "os" - "runtime" - "time" - - hostMetadataUtils "github.com/DataDog/datadog-agent/comp/metadata/host/hostimpl/utils" - "github.com/DataDog/datadog-agent/comp/metadata/inventoryagent" - "github.com/DataDog/datadog-agent/pkg/config" - "github.com/DataDog/datadog-agent/pkg/status/aggregator" - "github.com/DataDog/datadog-agent/pkg/status/collector" - "github.com/DataDog/datadog-agent/pkg/status/compliance" - "github.com/DataDog/datadog-agent/pkg/status/dogstatsd" - "github.com/DataDog/datadog-agent/pkg/status/forwarder" - "github.com/DataDog/datadog-agent/pkg/status/hostname" - "github.com/DataDog/datadog-agent/pkg/status/netflow" - "github.com/DataDog/datadog-agent/pkg/status/ntp" - "github.com/DataDog/datadog-agent/pkg/status/snmptraps" - "github.com/DataDog/datadog-agent/pkg/util/flavor" - "github.com/DataDog/datadog-agent/pkg/util/log" - "github.com/DataDog/datadog-agent/pkg/version" -) - -// GetStatus grabs the status from expvar and puts it into a map. -func GetStatus(invAgent inventoryagent.Component) (map[string]interface{}, error) { - stats := make(map[string]interface{}) - stats, err := expvarStats(stats, invAgent) - if err != nil { - log.Errorf("Error Getting ExpVar Stats: %v", err) - } - - stats["version"] = version.AgentVersion - stats["flavor"] = flavor.GetFlavor() - stats["metadata"] = hostMetadataUtils.GetFromCache(context.TODO(), config.Datadog) - stats["conf_file"] = config.Datadog.ConfigFileUsed() - stats["pid"] = os.Getpid() - stats["go_version"] = runtime.Version() - stats["agent_start_nano"] = config.StartTime.UnixNano() - stats["build_arch"] = runtime.GOARCH - now := time.Now() - stats["time_nano"] = now.UnixNano() - - return stats, nil -} - -func expvarStats(stats map[string]interface{}, invAgent inventoryagent.Component) (map[string]interface{}, error) { - var err error - forwarder.PopulateStatus(stats) - collector.PopulateStatus(stats) - aggregator.PopulateStatus(stats) - dogstatsd.PopulateStatus(stats) - hostname.PopulateStatus(stats) - err = ntp.PopulateStatus(stats) - // invAgent can be nil when generating a status page for some agent where inventory is not enabled - // (clusteragent, security-agent, ...). - // - // todo: (component) remove this condition once status is a component. - if invAgent != nil { - stats["agent_metadata"] = invAgent.Get() - } else { - stats["agent_metadata"] = map[string]string{} - } - - snmptraps.PopulateStatus(stats) - - netflow.PopulateStatus(stats) - - compliance.PopulateStatus(stats) - - return stats, err -} diff --git a/pkg/status/compliance/compliance.go b/pkg/status/compliance/compliance.go deleted file mode 100644 index 345190aee02dbb..00000000000000 --- a/pkg/status/compliance/compliance.go +++ /dev/null @@ -1,25 +0,0 @@ -// Unless explicitly stated otherwise all files in this repository are licensed -// under the Apache License Version 2.0. -// This product includes software developed at Datadog (https://www.datadoghq.com/). -// Copyright 2016-present Datadog, Inc. - -// Package compliance fetch information needed to render the 'compliance' section of the status page. -package compliance - -import ( - "encoding/json" - "expvar" -) - -// PopulateStatus populates the status stats -func PopulateStatus(stats map[string]interface{}) { - complianceVar := expvar.Get("compliance") - if complianceVar != nil { - complianceStatusJSON := []byte(complianceVar.String()) - complianceStatus := make(map[string]interface{}) - json.Unmarshal(complianceStatusJSON, &complianceStatus) //nolint:errcheck - stats["complianceChecks"] = complianceStatus["Checks"] - } else { - stats["complianceChecks"] = map[string]interface{}{} - } -} diff --git a/pkg/status/dogstatsd/dogstatsd.go b/pkg/status/dogstatsd/dogstatsd.go deleted file mode 100644 index 0cd66b5a67247f..00000000000000 --- a/pkg/status/dogstatsd/dogstatsd.go +++ /dev/null @@ -1,34 +0,0 @@ -// Unless explicitly stated otherwise all files in this repository are licensed -// under the Apache License Version 2.0. -// This product includes software developed at Datadog (https://www.datadoghq.com/). -// Copyright 2016-present Datadog, Inc. - -// Package dogstatsd fetch information needed to render the 'dogstatsd' section of the status page. -package dogstatsd - -import ( - "encoding/json" - "expvar" -) - -// PopulateStatus populates the status stats -func PopulateStatus(stats map[string]interface{}) { - if expvar.Get("dogstatsd") != nil { - dogstatsdStatsJSON := []byte(expvar.Get("dogstatsd").String()) - dogstatsdUdsStatsJSON := []byte(expvar.Get("dogstatsd-uds").String()) - dogstatsdUDPStatsJSON := []byte(expvar.Get("dogstatsd-udp").String()) - dogstatsdStats := make(map[string]interface{}) - json.Unmarshal(dogstatsdStatsJSON, &dogstatsdStats) //nolint:errcheck - dogstatsdUdsStats := make(map[string]interface{}) - json.Unmarshal(dogstatsdUdsStatsJSON, &dogstatsdUdsStats) //nolint:errcheck - for name, value := range dogstatsdUdsStats { - dogstatsdStats["Uds"+name] = value - } - dogstatsdUDPStats := make(map[string]interface{}) - json.Unmarshal(dogstatsdUDPStatsJSON, &dogstatsdUDPStats) //nolint:errcheck - for name, value := range dogstatsdUDPStats { - dogstatsdStats["Udp"+name] = value - } - stats["dogstatsdStats"] = dogstatsdStats - } -} diff --git a/pkg/status/forwarder/forwarder.go b/pkg/status/forwarder/forwarder.go deleted file mode 100644 index 0046175c41426c..00000000000000 --- a/pkg/status/forwarder/forwarder.go +++ /dev/null @@ -1,27 +0,0 @@ -// Unless explicitly stated otherwise all files in this repository are licensed -// under the Apache License Version 2.0. -// This product includes software developed at Datadog (https://www.datadoghq.com/). -// Copyright 2016-present Datadog, Inc. - -// Package forwarder fetch information needed to render the 'forwarder' section of the status page. -package forwarder - -import ( - "encoding/json" - "expvar" - "strconv" - - "github.com/DataDog/datadog-agent/pkg/config" -) - -// PopulateStatus populates the status stats -func PopulateStatus(stats map[string]interface{}) { - forwarderStatsJSON := []byte(expvar.Get("forwarder").String()) - forwarderStats := make(map[string]interface{}) - json.Unmarshal(forwarderStatsJSON, &forwarderStats) //nolint:errcheck - forwarderStorageMaxSizeInBytes := config.Datadog.GetInt("forwarder_storage_max_size_in_bytes") - if forwarderStorageMaxSizeInBytes > 0 { - forwarderStats["forwarder_storage_max_size_in_bytes"] = strconv.Itoa(forwarderStorageMaxSizeInBytes) - } - stats["forwarderStats"] = forwarderStats -} diff --git a/pkg/status/hostname/hostname.go b/pkg/status/hostname/hostname.go deleted file mode 100644 index 5bfc084ce1366d..00000000000000 --- a/pkg/status/hostname/hostname.go +++ /dev/null @@ -1,20 +0,0 @@ -// Unless explicitly stated otherwise all files in this repository are licensed -// under the Apache License Version 2.0. -// This product includes software developed at Datadog (https://www.datadoghq.com/). -// Copyright 2016-present Datadog, Inc. - -// Package hostname fetch information needed to render the 'hostname' section of the status page. -package hostname - -import ( - "encoding/json" - "expvar" -) - -// PopulateStatus populates the status stats -func PopulateStatus(stats map[string]interface{}) { - hostnameStatsJSON := []byte(expvar.Get("hostname").String()) - hostnameStats := make(map[string]interface{}) - json.Unmarshal(hostnameStatsJSON, &hostnameStats) //nolint:errcheck - stats["hostnameStats"] = hostnameStats -} diff --git a/pkg/status/netflow/netflow.go b/pkg/status/netflow/netflow.go deleted file mode 100644 index 66237880640e9b..00000000000000 --- a/pkg/status/netflow/netflow.go +++ /dev/null @@ -1,16 +0,0 @@ -// Unless explicitly stated otherwise all files in this repository are licensed -// under the Apache License Version 2.0. -// This product includes software developed at Datadog (https://www.datadoghq.com/). -// Copyright 2016-present Datadog, Inc. - -// Package netflow fetch information needed to render the 'netflow' section of the status page. -package netflow - -import netflowServer "github.com/DataDog/datadog-agent/comp/netflow/server" - -// PopulateStatus populates the status stats -func PopulateStatus(stats map[string]interface{}) { - if netflowServer.IsEnabled() { - stats["netflowStats"] = netflowServer.GetStatus() - } -} diff --git a/pkg/status/ntp/ntp.go b/pkg/status/ntp/ntp.go deleted file mode 100644 index b926377c25a3db..00000000000000 --- a/pkg/status/ntp/ntp.go +++ /dev/null @@ -1,25 +0,0 @@ -// Unless explicitly stated otherwise all files in this repository are licensed -// under the Apache License Version 2.0. -// This product includes software developed at Datadog (https://www.datadoghq.com/). -// Copyright 2016-present Datadog, Inc. - -// Package ntp fetch information needed to render the 'ntp' section of the status page. -package ntp - -import ( - "expvar" - "strconv" -) - -// PopulateStatus populates the status stats -func PopulateStatus(stats map[string]interface{}) error { - ntpOffset := expvar.Get("ntpOffset") - if ntpOffset != nil && ntpOffset.String() != "" { - float, err := strconv.ParseFloat(expvar.Get("ntpOffset").String(), 64) - stats["ntpOffset"] = float - - return err - } - - return nil -} diff --git a/pkg/status/otlp/no_otlp.go b/pkg/status/otlp/no_otlp.go deleted file mode 100644 index 7297e635bb453e..00000000000000 --- a/pkg/status/otlp/no_otlp.go +++ /dev/null @@ -1,17 +0,0 @@ -// Unless explicitly stated otherwise all files in this repository are licensed -// under the Apache License Version 2.0. -// This product includes software developed at Datadog (https://www.datadoghq.com/). -// Copyright 2016-present Datadog, Inc. - -//go:build !otlp - -// Package otlp fetch information from otlp collector -package otlp - -import "github.com/DataDog/datadog-agent/comp/otelcol/collector" - -// SetOtelCollector sets the active OTEL Collector. -func SetOtelCollector(_ collector.Component) {} - -// PopulateStatus populates stats with otlp information. -func PopulateStatus(_ map[string]interface{}) {} diff --git a/pkg/status/otlp/otlp.go b/pkg/status/otlp/otlp.go deleted file mode 100644 index 9f5314fb4a8a8c..00000000000000 --- a/pkg/status/otlp/otlp.go +++ /dev/null @@ -1,48 +0,0 @@ -// Unless explicitly stated otherwise all files in this repository are licensed -// under the Apache License Version 2.0. -// This product includes software developed at Datadog (https://www.datadoghq.com/). -// Copyright 2016-present Datadog, Inc. - -//go:build otlp - -// Package otlp fetch information from otlp collector -package otlp - -import ( - "github.com/DataDog/datadog-agent/comp/otelcol/collector" - otlpcollector "github.com/DataDog/datadog-agent/comp/otelcol/otlp" - "github.com/DataDog/datadog-agent/pkg/config" -) - -// otlpCollector holds an instance of any running collector. -// It is assigned in cmd/agent/subcommands/run.go.(startAgent) -// Will be nil otherwise! -// TODO: (components) remove once this package is migrated to components. -var otlpCollector collector.Component - -// SetOtelCollector registers the active OTLP Collector for status queries. -// Warning, this function is not synchronised. -// TODO: (components): remove this logic when this package is migrated. -func SetOtelCollector(c collector.Component) { - otlpCollector = c -} - -// PopulateStatus populates stats with otlp information. -// TODO: (components): remove this logic when this package is migrated. -func PopulateStatus(status map[string]interface{}) { - if otlpcollector.IsDisplayed() { - otlpStatus := make(map[string]interface{}) - otlpIsEnabled := otlpcollector.IsEnabled(config.Datadog) - var otlpCollectorStatus otlpcollector.CollectorStatus - if otlpIsEnabled && otlpCollector != nil { - otlpCollectorStatus = otlpCollector.Status() - } else { - otlpCollectorStatus = otlpcollector.CollectorStatus{Status: "Not running", ErrorMessage: ""} - } - otlpStatus["otlpStatus"] = otlpIsEnabled - otlpStatus["otlpCollectorStatus"] = otlpCollectorStatus.Status - otlpStatus["otlpCollectorStatusErr"] = otlpCollectorStatus.ErrorMessage - - status["otlp"] = otlpStatus - } -} diff --git a/pkg/status/processagent/processagent.go b/pkg/status/processagent/processagent.go deleted file mode 100644 index 6f922ee88ccb5f..00000000000000 --- a/pkg/status/processagent/processagent.go +++ /dev/null @@ -1,90 +0,0 @@ -// Unless explicitly stated otherwise all files in this repository are licensed -// under the Apache License Version 2.0. -// This product includes software developed at Datadog (https://www.datadoghq.com/). -// Copyright 2016-present Datadog, Inc. - -// Package processagent fetch information about the process agent -package processagent - -import ( - "encoding/json" - "fmt" - "net/http" - "sync" - - "gopkg.in/yaml.v2" - - apiutil "github.com/DataDog/datadog-agent/pkg/api/util" - "github.com/DataDog/datadog-agent/pkg/config" - "github.com/DataDog/datadog-agent/pkg/util/log" -) - -// httpClients should be reused instead of created as needed. They keep cached TCP connections -// that may leak otherwise -var ( - httpClient *http.Client - clientInitOnce sync.Once -) - -func getHTTPClient() *http.Client { - clientInitOnce.Do(func() { - httpClient = apiutil.GetClient(false) - }) - - return httpClient -} - -// GetStatus fetches the process-agent status from the process-agent API server -func GetStatus() map[string]interface{} { - s := make(map[string]interface{}) - addressPort, err := config.GetProcessAPIAddressPort() - if err != nil { - s["error"] = fmt.Sprintf("%v", err.Error()) - return s - } - - client := getHTTPClient() - statusEndpoint := fmt.Sprintf("http://%s/agent/status", addressPort) - b, err := apiutil.DoGet(client, statusEndpoint, apiutil.CloseConnection) - if err != nil { - s["error"] = fmt.Sprintf("%v", err.Error()) - return s - } - - err = json.Unmarshal(b, &s) - if err != nil { - s["error"] = fmt.Sprintf("%v", err.Error()) - return s - } - - return s -} - -// marshalError marshals an error as YAML -func marshalError(err error) []byte { - errYaml := map[string]string{ - "error": err.Error(), - } - - b, err := yaml.Marshal(errYaml) - if err != nil { - log.Warn("Unable to marshal error as yaml") - return nil - } - - return b -} - -// GetRuntimeConfig fetches the process-agent runtime settings. -// The API server in process-agent already scrubs and marshals the runtime settings as YAML. -// Since the api_key has been obfuscated with *, we're not able to unmarshal the response as YAML because * -// is not a valid YAML character -func GetRuntimeConfig(statusURL string) []byte { - client := getHTTPClient() - b, err := apiutil.DoGet(client, statusURL, apiutil.CloseConnection) - if err != nil { - return marshalError(fmt.Errorf("process-agent is not running or is unreachable")) - } - - return b -} diff --git a/pkg/status/remoteconfiguration/remoteconfiguration.go b/pkg/status/remoteconfiguration/remoteconfiguration.go deleted file mode 100644 index 4261727811eed7..00000000000000 --- a/pkg/status/remoteconfiguration/remoteconfiguration.go +++ /dev/null @@ -1,34 +0,0 @@ -// Unless explicitly stated otherwise all files in this repository are licensed -// under the Apache License Version 2.0. -// This product includes software developed at Datadog (https://www.datadoghq.com/). -// Copyright 2016-present Datadog, Inc. - -// Package remoteconfiguration fetch information needed to render the 'remoteconfiguration' section of the status page. -package remoteconfiguration - -import ( - "encoding/json" - "expvar" - - "github.com/DataDog/datadog-agent/pkg/config" -) - -// PopulateStatus populates the status stats -func PopulateStatus(stats map[string]interface{}) { - status := make(map[string]interface{}) - - if config.IsRemoteConfigEnabled(config.Datadog) && expvar.Get("remoteConfigStatus") != nil { - remoteConfigStatusJSON := expvar.Get("remoteConfigStatus").String() - json.Unmarshal([]byte(remoteConfigStatusJSON), &status) //nolint:errcheck - } else { - if !config.Datadog.GetBool("remote_configuration.enabled") { - status["disabledReason"] = "it is explicitly disabled in the agent configuration. (`remote_configuration.enabled: false`)" - } else if config.Datadog.GetBool("fips.enabled") { - status["disabledReason"] = "it is not supported when FIPS is enabled. (`fips.enabled: true`)" - } else if config.Datadog.GetString("site") == "ddog-gov.com" { - status["disabledReason"] = "it is not supported on GovCloud. (`site: \"ddog-gov.com\"`)" - } - } - - stats["remoteConfiguration"] = status -} diff --git a/pkg/status/render/fixtures/agent_status.json b/pkg/status/render/fixtures/agent_status.json deleted file mode 100644 index 38e21b9dba744f..00000000000000 --- a/pkg/status/render/fixtures/agent_status.json +++ /dev/null @@ -1,2707 +0,0 @@ -{ - "JMXStartupError":{ - "LastError":"", - "Timestamp":0 - }, - "JMXStatus":{ - "checks":{ - "failed_checks":null, - "initialized_checks":null - }, - "errors":0, - "info":null, - "timestamp":0 - }, - "NoProxyChanged":{ - - }, - "NoProxyIgnoredWarningMap":{ - - }, - "NoProxyUsedInFuture":{ - - }, - "TransportWarnings":false, - "adConfigErrors":{ - - }, - "adEnabledFeatures":{ - "containerd":{ - - }, - "cri":{ - - }, - "docker":{ - - }, - "kubernetes":{ - - } - }, - "agent_metadata":{ - "agent_version":"x.y.z", - "cloud_provider":"GCP", - "config_apm_dd_url":"", - "config_dd_url":"", - "config_logs_dd_url":"", - "config_logs_socks5_proxy_address":"", - "config_no_proxy":[ - - ], - "config_process_dd_url":"", - "config_proxy_http":"", - "config_proxy_https":"", - "config_site":"", - "feature_apm_enabled":false, - "feature_cspm_enabled":false, - "feature_cws_enabled":false, - "feature_logs_enabled":true, - "feature_networks_enabled":false, - "feature_networks_http_enabled":false, - "feature_networks_https_enabled":false, - "feature_otlp_enabled":false, - "feature_process_enabled":false, - "feature_processes_container_enabled":true, - "flavor":"agent", - "hostname_source":"gce", - "install_method_installer_version":"datadog-3.6.4", - "install_method_tool":"helm", - "install_method_tool_version":"Helm", - "logs_transport":"TCP" - }, - "agent_start_nano":1671564087793439200, - "aggregatorStats":{ - "ChecksHistogramBucketMetricSample":0, - "ChecksMetricSample":3800535, - "ContainerLifecycleEvents":0, - "ContainerLifecycleEventsErrors":0, - "DogstatsdContexts":93, - "DogstatsdContextsByMtype":{ - "Count":0, - "Counter":76, - "Distribution":0, - "Gauge":17, - "Histogram":0, - "Historate":0, - "MonotonicCount":0, - "Rate":0, - "Set":0 - }, - "DogstatsdMetricSample":136758, - "Event":1, - "EventPlatformEvents":{ - - }, - "EventPlatformEventsErrors":{ - - }, - "EventsFlushErrors":0, - "EventsFlushed":1, - "Flush":{ - "ChecksMetricSampleFlushTime":{ - "FlushIndex":8, - "Flushes":[ - 44312071, - 42714488, - 42721563, - 42262456, - 39736079, - 49760988, - 28360194, - 40449840, - 49900928, - 41497721, - 40739343, - 41976327, - 42934731, - 42979442, - 33903960, - 39177109, - 43491512, - 50904228, - 29265025, - 43582513, - 44163028, - 47762416, - 31154709, - 43193587, - 41688206, - 44087559, - 31397914, - 41220369, - 49938925, - 44233483, - 41200705, - 41019926 - ], - "LastFlush":49900928, - "Name":"ChecksMetricSampleFlushTime" - }, - "EventFlushTime":{ - "FlushIndex":0, - "Flushes":[ - 4647639, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "LastFlush":4647639, - "Name":"EventFlushTime" - }, - "MainFlushTime":{ - "FlushIndex":8, - "Flushes":[ - 44334830, - 42749290, - 42754301, - 42291120, - 39767833, - 49787977, - 28384444, - 40473295, - 49931294, - 41520569, - 40771722, - 42005371, - 42966661, - 43010526, - 33931635, - 39201697, - 43524406, - 50929418, - 29292356, - 43611507, - 44194318, - 47785236, - 31178148, - 43221235, - 41715080, - 44114401, - 31473101, - 41249741, - 49969058, - 44263971, - 41224211, - 41046581 - ], - "LastFlush":49931294, - "Name":"MainFlushTime" - }, - "ManifestsTime":{ - "FlushIndex":-1, - "Flushes":[ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "LastFlush":0, - "Name":"ManifestsTime" - }, - "MetricSketchFlushTime":{ - "FlushIndex":-1, - "Flushes":[ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "LastFlush":0, - "Name":"MetricSketchFlushTime" - }, - "ServiceCheckFlushTime":{ - "FlushIndex":8, - "Flushes":[ - 2058889, - 1920759, - 11507635, - 1674867, - 1658458, - 1434994, - 1450193, - 2151860, - 1513542, - 1980162, - 1934000, - 2263711, - 2053405, - 1880826, - 1882956, - 2094664, - 1609399, - 3797669, - 2294483, - 2673682, - 1911187, - 2732110, - 3557228, - 1458707, - 2108863, - 2190762, - 1743607, - 1960074, - 9607250, - 2044019, - 4845038, - 2028722 - ], - "LastFlush":1513542, - "Name":"ServiceCheckFlushTime" - } - }, - "FlushCount":{ - "Events":{ - "FlushIndex":0, - "Flushes":[ - 1, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "LastFlush":1, - "Name":"Events" - }, - "Manifests":{ - "FlushIndex":-1, - "Flushes":[ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "LastFlush":0, - "Name":"Manifests" - }, - "Series":{ - "FlushIndex":8, - "Flushes":[ - 4102, - 4101, - 3070, - 4101, - 4102, - 4101, - 3070, - 4101, - 4120, - 4101, - 3070, - 4101, - 4102, - 4101, - 3070, - 4101, - 4102, - 4101, - 3070, - 4101, - 4102, - 4101, - 3070, - 4101, - 4102, - 4101, - 3070, - 4101, - 4102, - 4101, - 3070, - 4101 - ], - "LastFlush":4120, - "Name":"Series" - }, - "ServiceChecks":{ - "FlushIndex":8, - "Flushes":[ - 33, - 33, - 27, - 33, - 33, - 33, - 27, - 33, - 35, - 33, - 27, - 33, - 33, - 33, - 27, - 33, - 33, - 33, - 27, - 33, - 33, - 33, - 27, - 33, - 33, - 33, - 27, - 33, - 33, - 33, - 27, - 33 - ], - "LastFlush":35, - "Name":"ServiceChecks" - }, - "Sketches":{ - "FlushIndex":-1, - "Flushes":[ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "LastFlush":0, - "Name":"Sketches" - } - }, - "HostnameUpdate":0, - "MetricTags":{ - "Series":{ - "Above100":0, - "Above90":0 - }, - "Sketches":{ - "Above100":0, - "Above90":0 - } - }, - "NumberOfFlush":841, - "OrchestratorManifests":0, - "OrchestratorManifestsErrors":0, - "OrchestratorMetadata":0, - "OrchestratorMetadataErrors":0, - "SeriesFlushErrors":0, - "SeriesFlushed":3224651, - "ServiceCheck":25700, - "ServiceCheckFlushErrors":0, - "ServiceCheckFlushed":26509, - "SketchesFlushErrors":0, - "SketchesFlushed":0 - }, - "apmStats":{ - "Event":{ - - }, - "ServiceCheck":{ - - }, - "check_run_v1":0, - "cmdline":[ - "trace-agent", - "-config=/etc/datadog-agent/datadog.yaml" - ], - "config":{ - "AgentVersion":"x.y.z", - "AnalyzedRateByServiceLegacy":{ - - }, - "AnalyzedSpansByService":{ - - }, - "BucketInterval":10000000000, - "ConfigPath":"/etc/datadog-agent/datadog.yaml", - "ConnectionLimit":0, - "ConnectionResetInterval":0, - "ContainerProcRoot":"/host/proc", - "DDAgentBin":"/opt/datadog-agent/bin/agent/agent", - "DebuggerProxy":{ - "APIKey":"", - "DDURL":"" - }, - "DefaultEnv":"none", - "EVPProxy":{ - "APIKey":"", - "AdditionalEndpoints":null, - "ApplicationKey":"", - "DDURL":"", - "Enabled":true, - "MaxPayloadSize":5242880 - }, - "Enabled":true, - "Endpoints":[ - { - "Host":"https://trace.agent.datadoghq.com", - "NoProxy":false - } - ], - "ErrorTPS":10, - "ExtraAggregators":null, - "ExtraSampleRate":1, - "FargateOrchestrator":"Unknown", - "GUIPort":"-1", - "GitCommit":"9b0b54b", - "GlobalTags":{ - - }, - "Hostname":"gke-dd-sandbox-bits-8943422b-5wpg.c.datadog-sandbox.internal", - "Ignore":{ - - }, - "LogFilePath":"/var/log/datadog/trace-agent.log", - "LogThrottling":true, - "MaxCPU":0, - "MaxCatalogEntries":5000, - "MaxEPS":200, - "MaxMemory":0, - "MaxRemoteTPS":100, - "MaxRequestBytes":52428800, - "OTLPReceiver":{ - "BindHost":"0.0.0.0", - "GRPCPort":0, - "HTTPPort":0, - "MaxRequestBytes":52428800, - "SpanNameAsResourceName":false, - "SpanNameRemappings":{ - - } - }, - "Obfuscation":{ - "CreditCards":{ - "Enabled":false, - "Luhn":false - }, - "ES":{ - "Enabled":false, - "KeepValues":null, - "ObfuscateSQLValues":null - }, - "HTTP":{ - "remove_path_digits":false, - "remove_query_string":false - }, - "Memcached":{ - "Enabled":false - }, - "Mongo":{ - "Enabled":false, - "KeepValues":null, - "ObfuscateSQLValues":null - }, - "Redis":{ - "Enabled":false, - "RemoveAllArgs":false - }, - "RemoveStackTraces":false, - "SQLExecPlan":{ - "Enabled":false, - "KeepValues":null, - "ObfuscateSQLValues":null - }, - "SQLExecPlanNormalize":{ - "Enabled":false, - "KeepValues":null, - "ObfuscateSQLValues":null - } - }, - "PipeBufferSize":1000000, - "PipeSecurityDescriptor":"D:AI(A;;GA;;;WD)", - "ProfilingProxy":{ - "AdditionalEndpoints":null, - "DDURL":"" - }, - "ProxyURL":null, - "RareSamplerCardinality":200, - "RareSamplerCooldownPeriod":300000000000, - "RareSamplerEnabled":false, - "RareSamplerTPS":5, - "ReceiverHost":"0.0.0.0", - "ReceiverPort":8126, - "ReceiverSocket":"/var/run/datadog/apm.socket", - "ReceiverTimeout":0, - "RejectTags":null, - "RemoteConfigClient":null, - "ReplaceTags":null, - "RequireTags":null, - "Site":"datadoghq.com", - "SkipSSLValidation":false, - "StatsWriter":{ - "ConnectionLimit":0, - "FlushPeriodSeconds":0, - "QueueSize":0 - }, - "StatsdEnabled":true, - "StatsdHost":"localhost", - "StatsdPipeName":"", - "StatsdPort":8125, - "StatsdSocket":"/var/run/datadog/dsd.socket", - "SynchronousFlushing":false, - "TargetTPS":10, - "TelemetryConfig":{ - "Enabled":true, - "Endpoints":[ - { - "Host":"https://instrumentation-telemetry-intake.datadoghq.com", - "NoProxy":false - } - ] - }, - "TraceWriter":{ - "ConnectionLimit":0, - "FlushPeriodSeconds":0, - "QueueSize":0 - }, - "WatchdogInterval":10000000000, - "WindowsPipeName":"" - }, - "connections":0, - "container":0, - "events_v2":0, - "forwarder":{ - "APIKeyFailure":{ - - }, - "APIKeyStatus":{ - - }, - "FileStorage":{ - "CurrentSizeInBytes":0, - "DeserializeCount":0, - "DeserializeErrorsCount":0, - "DeserializeTransactionsCount":0, - "FileSize":0, - "FilesCount":0, - "FilesRemovedCount":0, - "PointsDroppedCount":0, - "SerializeCount":0, - "StartupReloadedRetryFilesCount":0 - }, - "RemovalPolicy":{ - "FilesFromUnknownDomainCount":0, - "NewRemovalPolicyCount":0, - "OutdatedFilesCount":0, - "RegisteredDomainCount":0 - }, - "TransactionContainer":{ - "CurrentMemSizeInBytes":0, - "ErrorsCount":0, - "PointsDroppedCount":0, - "TransactionsCount":0, - "TransactionsDroppedCount":0 - }, - "Transactions":{ - "Cluster":0, - "ClusterRole":0, - "ClusterRoleBinding":0, - "ConnectionEvents":{ - "ConnectSuccess":0, - "DNSSuccess":0 - }, - "CronJob":0, - "DaemonSet":0, - "Deployment":0, - "Dropped":0, - "DroppedByEndpoint":{ - - }, - "Errors":0, - "ErrorsByType":{ - "ConnectionErrors":0, - "DNSErrors":0, - "SentRequestErrors":0, - "TLSErrors":0, - "WroteRequestErrors":0 - }, - "HTTPErrors":0, - "HTTPErrorsByCode":{ - - }, - "HighPriorityQueueFull":0, - "Ingress":0, - "InputBytesByEndpoint":{ - - }, - "InputCountByEndpoint":{ - - }, - "Job":0, - "Namespace":0, - "Node":0, - "PersistentVolume":0, - "PersistentVolumeClaim":0, - "Pod":0, - "ReplicaSet":0, - "Requeued":0, - "RequeuedByEndpoint":{ - - }, - "Retried":0, - "RetriedByEndpoint":{ - - }, - "RetryQueueSize":0, - "Role":0, - "RoleBinding":0, - "Service":0, - "ServiceAccount":0, - "StatefulSet":0, - "Success":0, - "SuccessByEndpoint":{ - "check_run_v1":0, - "connections":0, - "container":0, - "events_v2":0, - "host_metadata_v2":0, - "intake":0, - "orchestrator":0, - "process":0, - "rtcontainer":0, - "rtprocess":0, - "series_v1":0, - "series_v2":0, - "services_checks_v2":0, - "sketches_v1":0, - "sketches_v2":0, - "validate_v1":0 - }, - "SuccessBytesByEndpoint":{ - - } - } - }, - "host_metadata_v2":0, - "hostname":{ - "errors":{ - - }, - "provider":"" - }, - "intake":0, - "kubeletQueries":0, - "memstats":{ - "Alloc":9203488, - "BuckHashSys":1476356, - "BySize":[ - { - "Frees":0, - "Mallocs":0, - "Size":0 - }, - { - "Frees":6491, - "Mallocs":8217, - "Size":8 - }, - { - "Frees":67312, - "Mallocs":75056, - "Size":16 - }, - { - "Frees":17587, - "Mallocs":19581, - "Size":24 - }, - { - "Frees":32176, - "Mallocs":34336, - "Size":32 - }, - { - "Frees":193085, - "Mallocs":200869, - "Size":48 - }, - { - "Frees":29796, - "Mallocs":31522, - "Size":64 - }, - { - "Frees":4749, - "Mallocs":5157, - "Size":80 - }, - { - "Frees":7468, - "Mallocs":8379, - "Size":96 - }, - { - "Frees":19380, - "Mallocs":20190, - "Size":112 - }, - { - "Frees":5828, - "Mallocs":6064, - "Size":128 - }, - { - "Frees":858, - "Mallocs":966, - "Size":144 - }, - { - "Frees":2574, - "Mallocs":2876, - "Size":160 - }, - { - "Frees":520, - "Mallocs":640, - "Size":176 - }, - { - "Frees":5251, - "Mallocs":5300, - "Size":192 - }, - { - "Frees":10604, - "Mallocs":10819, - "Size":208 - }, - { - "Frees":574, - "Mallocs":585, - "Size":224 - }, - { - "Frees":52, - "Mallocs":63, - "Size":240 - }, - { - "Frees":2526, - "Mallocs":2607, - "Size":256 - }, - { - "Frees":1420, - "Mallocs":2374, - "Size":288 - }, - { - "Frees":385, - "Mallocs":439, - "Size":320 - }, - { - "Frees":166, - "Mallocs":282, - "Size":352 - }, - { - "Frees":5110, - "Mallocs":5174, - "Size":384 - }, - { - "Frees":3857, - "Mallocs":4001, - "Size":416 - }, - { - "Frees":167, - "Mallocs":228, - "Size":448 - }, - { - "Frees":10, - "Mallocs":21, - "Size":480 - }, - { - "Frees":1928, - "Mallocs":1964, - "Size":512 - }, - { - "Frees":149, - "Mallocs":253, - "Size":576 - }, - { - "Frees":277, - "Mallocs":339, - "Size":640 - }, - { - "Frees":65, - "Mallocs":104, - "Size":704 - }, - { - "Frees":5603, - "Mallocs":5621, - "Size":768 - }, - { - "Frees":4661, - "Mallocs":4713, - "Size":896 - }, - { - "Frees":1022, - "Mallocs":1046, - "Size":1024 - }, - { - "Frees":80, - "Mallocs":128, - "Size":1152 - }, - { - "Frees":171, - "Mallocs":226, - "Size":1280 - }, - { - "Frees":47, - "Mallocs":66, - "Size":1408 - }, - { - "Frees":3811, - "Mallocs":3824, - "Size":1536 - }, - { - "Frees":25, - "Mallocs":61, - "Size":1792 - }, - { - "Frees":23, - "Mallocs":2101, - "Size":2048 - }, - { - "Frees":28, - "Mallocs":43, - "Size":2304 - }, - { - "Frees":104, - "Mallocs":166, - "Size":2688 - }, - { - "Frees":3784, - "Mallocs":3808, - "Size":3072 - }, - { - "Frees":8, - "Mallocs":12, - "Size":3200 - }, - { - "Frees":16, - "Mallocs":18, - "Size":3456 - }, - { - "Frees":1814, - "Mallocs":1846, - "Size":4096 - }, - { - "Frees":30, - "Mallocs":41, - "Size":4864 - }, - { - "Frees":46, - "Mallocs":112, - "Size":5376 - }, - { - "Frees":2525, - "Mallocs":2540, - "Size":6144 - }, - { - "Frees":2, - "Mallocs":3, - "Size":6528 - }, - { - "Frees":3, - "Mallocs":4, - "Size":6784 - }, - { - "Frees":0, - "Mallocs":0, - "Size":6912 - }, - { - "Frees":6, - "Mallocs":23, - "Size":8192 - }, - { - "Frees":13, - "Mallocs":23, - "Size":9472 - }, - { - "Frees":0, - "Mallocs":1, - "Size":9728 - }, - { - "Frees":2, - "Mallocs":2, - "Size":10240 - }, - { - "Frees":27, - "Mallocs":33, - "Size":10880 - }, - { - "Frees":1264, - "Mallocs":1267, - "Size":12288 - }, - { - "Frees":7, - "Mallocs":8, - "Size":13568 - }, - { - "Frees":0, - "Mallocs":1, - "Size":14336 - }, - { - "Frees":3, - "Mallocs":8, - "Size":16384 - }, - { - "Frees":2, - "Mallocs":4, - "Size":18432 - } - ], - "DebugGC":false, - "EnableGC":true, - "Frees":452206, - "GCCPUFraction":0.000006711103007073701, - "GCSys":5610160, - "HeapAlloc":9203488, - "HeapIdle":4349952, - "HeapInuse":11673600, - "HeapObjects":30693, - "HeapReleased":2768896, - "HeapSys":16023552, - "LastGC":1671576699279998200, - "Lookups":0, - "MCacheInuse":4800, - "MCacheSys":15600, - "MSpanInuse":199648, - "MSpanSys":212160, - "Mallocs":482899, - "NextGC":18734736, - "NumForcedGC":0, - "NumGC":112, - "OtherSys":895140, - "PauseEnd":[ - 1671564087913256700, - 1671564087931454700, - 1671564087943871500, - 1671564087955040800, - 1671564087968827600, - 1671564088992134000, - 1671564090175674400, - 1671564210179202800, - 1671564330281137000, - 1671564450391639800, - 1671564570482766000, - 1671564690579483100, - 1671564810679497200, - 1671564930780055600, - 1671565050881695700, - 1671565170969689600, - 1671565290978055400, - 1671565410980104000, - 1671565531079493600, - 1671565651180879000, - 1671565771280284400, - 1671565891379562000, - 1671566011479317800, - 1671566131579652600, - 1671566251679999200, - 1671566371779553500, - 1671566491879266000, - 1671566611969548800, - 1671566731979780400, - 1671566852079728600, - 1671566972178231600, - 1671567092279900200, - 1671567212379593500, - 1671567332479513900, - 1671567452579419400, - 1671567572679608800, - 1671567692780085500, - 1671567812879591700, - 1671567932969137700, - 1671568052979455700, - 1671568173079828500, - 1671568293179548000, - 1671568413279783400, - 1671568533379503000, - 1671568653480081400, - 1671568773579647700, - 1671568893679734800, - 1671569013779564800, - 1671569133879878700, - 1671569253969943600, - 1671569373979546000, - 1671569494079854800, - 1671569614178650600, - 1671569734281099000, - 1671569854379951400, - 1671569974479769600, - 1671570094579894000, - 1671570214679492600, - 1671570334779478800, - 1671570454879744300, - 1671570574969515300, - 1671570694981150200, - 1671570815079357700, - 1671570935179836000, - 1671571055280081200, - 1671571175379725000, - 1671571295479606500, - 1671571415579779600, - 1671571535679800300, - 1671571655781140700, - 1671571775879445200, - 1671571895969722600, - 1671572015979468500, - 1671572136080494600, - 1671572256178413600, - 1671572376279462000, - 1671572496381176800, - 1671572616479518000, - 1671572736579679700, - 1671572856679630300, - 1671572976779828000, - 1671573096879709000, - 1671573216969567200, - 1671573336979494700, - 1671573457079943000, - 1671573577179470600, - 1671573697281018600, - 1671573817379453700, - 1671573937479360500, - 1671574057579859200, - 1671574177679952000, - 1671574297779749400, - 1671574417879844600, - 1671574537902974700, - 1671574657920277500, - 1671574777969677800, - 1671574897980053500, - 1671575018079575800, - 1671575138133448200, - 1671575258178515700, - 1671575378279752400, - 1671575498380484600, - 1671575618479927000, - 1671575738579916800, - 1671575858679406000, - 1671575978779872500, - 1671576098879517400, - 1671576218969406200, - 1671576338977824500, - 1671576459079446800, - 1671576579180034800, - 1671576699279998200, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "PauseNs":[ - 46413, - 31669, - 204868, - 117345, - 74007, - 89412, - 105282, - 139001, - 79855, - 2981053, - 639363, - 135560, - 115529, - 138504, - 175967, - 220198, - 132252, - 128540, - 127661, - 165500, - 323911, - 170575, - 120570, - 138680, - 121879, - 134396, - 123380, - 141659, - 141620, - 136333, - 143611, - 138283, - 128446, - 152163, - 125872, - 138600, - 231282, - 135068, - 149158, - 134220, - 157271, - 139776, - 126038, - 170892, - 123525, - 135293, - 126271, - 135075, - 151281, - 160865, - 168662, - 144485, - 137813, - 159136, - 147859, - 189494, - 127434, - 139900, - 126271, - 174845, - 129258, - 173941, - 129854, - 164270, - 149586, - 161772, - 128515, - 138944, - 129054, - 142686, - 132583, - 179613, - 133061, - 194225, - 140911, - 172765, - 178647, - 137185, - 134585, - 215003, - 131651, - 144303, - 138492, - 133629, - 175695, - 153123, - 132663, - 139171, - 135641, - 175922, - 134977, - 134222, - 134897, - 142459, - 150645, - 205936, - 153958, - 154496, - 611337, - 144868, - 152040, - 143210, - 182191, - 149947, - 145851, - 130828, - 155130, - 148684, - 133767, - 134360, - 133709, - 151741, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "PauseTotalNs":20075872, - "StackInuse":753664, - "StackSys":753664, - "Sys":24986632, - "TotalAlloc":110362624 - }, - "orchestrator":0, - "orchestrator-cache":{ - "Cluster":0, - "ClusterRole":0, - "ClusterRoleBinding":0, - "CronJob":0, - "DaemonSet":0, - "Deployment":0, - "Ingress":0, - "Job":0, - "Namespace":0, - "Node":0, - "PersistentVolume":0, - "PersistentVolumeClaim":0, - "Pod":0, - "ReplicaSet":0, - "Role":0, - "RoleBinding":0, - "Service":0, - "ServiceAccount":0, - "StatefulSet":0 - }, - "orchestrator-sends":{ - "Cluster":0, - "ClusterRole":0, - "ClusterRoleBinding":0, - "CronJob":0, - "DaemonSet":0, - "Deployment":0, - "Ingress":0, - "Job":0, - "Namespace":0, - "Node":0, - "PersistentVolume":0, - "PersistentVolumeClaim":0, - "Pod":0, - "ReplicaSet":0, - "Role":0, - "RoleBinding":0, - "Service":0, - "ServiceAccount":0, - "StatefulSet":0 - }, - "pid":12174, - "process":0, - "ratebyservice":{ - - }, - "ratebyservice_filtered":{ - - }, - "ratelimiter":{ - "RecentPayloadsSeen":0, - "RecentTracesDropped":0, - "RecentTracesSeen":0, - "TargetRate":1 - }, - "receiver":[ - - ], - "rtcontainer":0, - "rtprocess":0, - "serializer":{ - "SendEventsErrItemTooBigs":0, - "SendEventsErrItemTooBigsFallback":0 - }, - "series":{ - - }, - "series_v1":0, - "series_v2":0, - "services_checks_v2":0, - "sketch_series":{ - "ItemTooBig":0, - "PayloadFull":0, - "UnexpectedItemDrops":0 - }, - "sketches_v1":0, - "sketches_v2":0, - "splitter":{ - "NotTooBig":0, - "PayloadDrops":0, - "TooBig":0, - "TotalLoops":0 - }, - "stats_writer":{ - "Bytes":0, - "ClientPayloads":0, - "Errors":0, - "Payloads":0, - "Retries":0, - "Splits":0, - "StatsBuckets":0, - "StatsEntries":0 - }, - "trace_writer":{ - "Bytes":0, - "BytesUncompressed":0, - "Errors":0, - "Events":0, - "Payloads":0, - "Retries":0, - "SingleMaxSize":0, - "Spans":0, - "Traces":0 - }, - "uptime":12633, - "validate_v1":0, - "version":{ - "GitCommit":"9b0b54b", - "Version":"x.y.z" - }, - "watchdog":{ - "CPU":{ - "UserAvg":0.001333347035207443 - }, - "Mem":{ - "Alloc":9123672 - } - } - }, - "autoConfigStats":{ - "ConfigErrors":{ - - }, - "ResolveWarnings":{ - "datadog_cluster_agent":[ - "error resolving template datadog_cluster_agent for service containerd://ca53986d6ed6efc147e22f17ae96b78037e46d3a5c5aaaafbf3495238cba9d8c: unable to resolve, service not ready" - ], - "envoy":[ - "error resolving template envoy for service containerd://9867242c450acde5dd828717e07126768683c7613a8f172b942f76eb73e61b99: unable to resolve, service not ready" - ], - "istio":[ - "error resolving template istio for service containerd://9867242c450acde5dd828717e07126768683c7613a8f172b942f76eb73e61b99: unable to resolve, service not ready", - "error resolving template istio for service containerd://9867242c450acde5dd828717e07126768683c7613a8f172b942f76eb73e61b99: unable to resolve, service not ready" - ], - "openmetrics":[ - "error resolving template openmetrics for service containerd://9867242c450acde5dd828717e07126768683c7613a8f172b942f76eb73e61b99: unable to resolve, service not ready", - "error resolving template openmetrics for service containerd://9867242c450acde5dd828717e07126768683c7613a8f172b942f76eb73e61b99: unable to resolve, service not ready", - "error resolving template openmetrics for service containerd://9867242c450acde5dd828717e07126768683c7613a8f172b942f76eb73e61b99: unable to resolve, service not ready" - ] - } - }, - "build_arch":"amd64", - "checkSchedulerStats":{ - "LoaderErrors":{ - "postgres":{ - "Core Check Loader":"Check postgres not found in Catalog", - "JMX Check Loader":"check is not a jmx check, or unable to determine if it's so", - "Python Check Loader":"could not configure check instance for python check postgres: could not invoke 'postgres' python check constructor. New constructor API returned:\nTraceback (most recent call last):\n File \"/opt/datadog-agent/embedded/lib/python3.8/site-packages/datadog_checks/postgres/postgres.py\", line 62, in __init__\n self._config = PostgresConfig(self.instance)\n File \"/opt/datadog-agent/embedded/lib/python3.8/site-packages/datadog_checks/postgres/config.py\", line 35, in __init__\n raise ConfigurationError('Please specify a user to connect to Postgres.')\ndatadog_checks.base.errors.ConfigurationError: Please specify a user to connect to Postgres.\nDeprecated constructor API returned:\n__init__() got an unexpected keyword argument 'agentConfig'" - } - }, - "RunErrors":{ - - } - }, - "clusterAgentStatus":{ - "Endpoint":"https://10.122.58.252:5005", - "Version":"x.y.z+commit.9b0b54b" - }, - "complianceChecks":{ - - }, - "conf_file":"/etc/datadog-agent/datadog.yaml", - "config":{ - "additional_checksd":"/etc/datadog-agent/checks.d", - "confd_path":"/etc/datadog-agent/conf.d", - "fips_enabled":"false", - "fips_local_address":"localhost", - "fips_port_range_start":"3833", - "log_file":"", - "log_level":"INFO" - }, - "dogstatsdStats":{ - "EventPackets":0, - "EventParseErrors":0, - "MetricPackets":136757, - "MetricParseErrors":0, - "ServiceCheckPackets":0, - "ServiceCheckParseErrors":0, - "UdpBytes":21336530, - "UdpPacketReadingErrors":0, - "UdpPackets":76232, - "UdsBytes":0, - "UdsOriginDetectionErrors":0, - "UdsPacketReadingErrors":0, - "UdsPackets":1, - "UnterminatedMetricErrors":0 - }, - "endpointsInfos":{ - "https://app.datadoghq.com":[ - "841ae" - ] - }, - "filterErrors":{ - - }, - "flavor":"agent", - "forwarderStats":{ - "APIKeyFailure":{ - - }, - "APIKeyStatus":{ - "API key ending with 841ae":"API Key valid" - }, - "FileStorage":{ - "CurrentSizeInBytes":0, - "DeserializeCount":0, - "DeserializeErrorsCount":0, - "DeserializeTransactionsCount":0, - "FileSize":0, - "FilesCount":0, - "FilesRemovedCount":0, - "PointsDroppedCount":0, - "SerializeCount":0, - "StartupReloadedRetryFilesCount":0 - }, - "RemovalPolicy":{ - "FilesFromUnknownDomainCount":0, - "NewRemovalPolicyCount":0, - "OutdatedFilesCount":0, - "RegisteredDomainCount":0 - }, - "TransactionContainer":{ - "CurrentMemSizeInBytes":0, - "ErrorsCount":0, - "PointsDroppedCount":0, - "TransactionsCount":0, - "TransactionsDroppedCount":0 - }, - "Transactions":{ - "Cluster":0, - "ClusterRole":0, - "ClusterRoleBinding":0, - "ConnectionEvents":{ - "ConnectSuccess":1, - "DNSSuccess":1 - }, - "CronJob":0, - "DaemonSet":0, - "Deployment":0, - "Dropped":0, - "DroppedByEndpoint":{ - - }, - "Errors":0, - "ErrorsByType":{ - "ConnectionErrors":0, - "DNSErrors":0, - "SentRequestErrors":0, - "TLSErrors":0, - "WroteRequestErrors":0 - }, - "HTTPErrors":0, - "HTTPErrorsByCode":{ - - }, - "HighPriorityQueueFull":0, - "Ingress":0, - "InputBytesByEndpoint":{ - "check_run_v1":996200, - "intake":115387, - "metadata_v1":24099, - "series_v2":131870299 - }, - "InputCountByEndpoint":{ - "check_run_v1":841, - "intake":72, - "metadata_v1":21, - "series_v2":841 - }, - "Job":0, - "Namespace":0, - "Node":0, - "PersistentVolume":0, - "PersistentVolumeClaim":0, - "Pod":0, - "ReplicaSet":0, - "Requeued":0, - "RequeuedByEndpoint":{ - - }, - "Retried":0, - "RetriedByEndpoint":{ - - }, - "RetryQueueSize":0, - "Role":0, - "RoleBinding":0, - "Service":0, - "ServiceAccount":0, - "StatefulSet":0, - "Success":1775, - "SuccessByEndpoint":{ - "check_run_v1":841, - "connections":0, - "container":0, - "events_v2":0, - "host_metadata_v2":0, - "intake":72, - "metadata_v1":21, - "orchestrator":0, - "process":0, - "rtcontainer":0, - "rtprocess":0, - "series_v1":0, - "series_v2":841, - "services_checks_v2":0, - "sketches_v1":0, - "sketches_v2":0, - "validate_v1":0 - }, - "SuccessBytesByEndpoint":{ - "check_run_v1":996200, - "intake":115387, - "metadata_v1":24099, - "series_v2":131870299 - } - } - }, - "go_version":"go1.18.8", - "hostTags":[ - "cluster_name:dd-sandbox", - "kube_cluster_name:dd-sandbox", - "zone:asia-northeast1-a", - "internal-hostname:gke-dd-sandbox-bits-8943422b-5wpg.c.datadog-sandbox.internal", - "instance-id:90825865558996083", - "project:datadog-sandbox", - "numeric_project_id:958371799887", - "cluster-name:dd-sandbox", - "cluster-uid:3d6b7737edf6489fb1927577e24e8b0e314e6826aa3e47fa9b2eae419f261013", - "cluster-location:asia-northeast1" - ], - "hostinfo":{ - "bootTime":1671563943, - "hostId":"d23fb05c-2393-9a7a-fbf3-92cd755df12a", - "hostname":"dd-datadog-c4kcx", - "kernelArch":"x86_64", - "kernelVersion":"5.10.133+", - "os":"linux", - "platform":"cos", - "platformFamily":"", - "platformVersion":"97", - "procs":211, - "uptime":157, - "virtualizationRole":"guest", - "virtualizationSystem":"" - }, - "hostnameStats":{ - "errors":{ - "'hostname' configuration/environment":"hostname is empty", - "'hostname_file' configuration/environment":"'hostname_file' configuration is not enabled", - "fargate":"agent is not runnning on Fargate" - }, - "provider":"gce" - }, - "inventories":{ - "envoy:c41fa57fd37dd81a":{ - "version.major":"1", - "version.minor":"20", - "version.patch":"1", - "version.raw":"1.20.1", - "version.scheme":"semver" - } - }, - "logsStats":{ - "endpoints":[ - "Reliable: Sending uncompressed logs in SSL encrypted TCP to agent-intake.logs.datadoghq.com on port 10516" - ], - "errors":[ - - ], - "integrations":[ - { - "name":"kube-system/pdcsi-node-vmxbk/gce-pd-driver", - "sources":[ - { - "all_time_avg_latency":2280, - "all_time_peak_latency":5473, - "bytes_read":3690, - "configuration":{ - "Identifier":"401a8645147ae8ef2baf2a5187c22b61554a64c5e0800b481c7a6a6e2e5e9d53", - "Path":"/var/log/pods/kube-system_pdcsi-node-vmxbk_8194ece2-46dd-495e-9220-3a6b88fa4d61/gce-pd-driver/*.log", - "Service":"gcp-compute-persistent-disk-csi-driver", - "Source":"gcp-compute-persistent-disk-csi-driver" - }, - "info":{ - - }, - "inputs":[ - "/var/log/pods/kube-system_pdcsi-node-vmxbk_8194ece2-46dd-495e-9220-3a6b88fa4d61/gce-pd-driver/0.log" - ], - "messages":[ - "1 files tailed out of 1 files matching" - ], - "recent_avg_latency":0, - "recent_peak_latency":0, - "status":"OK", - "type":"file" - } - ] - }, - { - "name":"kube-system/l7-default-backend-6dc845c45d-xlnmh/default-http-backend", - "sources":[ - { - "all_time_avg_latency":1365, - "all_time_peak_latency":5461, - "bytes_read":613, - "configuration":{ - "Identifier":"0f23fbf70ab6cb8063cacb65bf7c7472a6e4062838764cac256439070942f161", - "Path":"/var/log/pods/kube-system_l7-default-backend-6dc845c45d-xlnmh_85840891-57e7-4fd4-8c1d-9a7ec5227614/default-http-backend/*.log", - "Service":"ingress-gce-404-server-with-metrics", - "Source":"ingress-gce-404-server-with-metrics" - }, - "info":{ - - }, - "inputs":[ - "/var/log/pods/kube-system_l7-default-backend-6dc845c45d-xlnmh_85840891-57e7-4fd4-8c1d-9a7ec5227614/default-http-backend/0.log" - ], - "messages":[ - "1 files tailed out of 1 files matching" - ], - "recent_avg_latency":1365, - "recent_peak_latency":5461, - "status":"OK", - "type":"file" - } - ] - } - ], - "is_running":true, - "metrics":{ - "BytesSent":18474997, - "EncodedBytesSent":18474997, - "LogsProcessed":10438, - "LogsSent":10438 - }, - "use_http":false, - "warnings":[ - - ] - }, - "metadata":{ - "agent-flavor":"agent", - "container-meta":{ - "cri_name":"containerd", - "cri_version":"1.6.6", - "docker_swarm":"inactive", - "docker_version":"20.10.12", - "kubelet_version":"v1.24.6-gke.1500" - }, - "host-tags":{ - "google cloud platform":[ - "zone:asia-northeast1-a", - "internal-hostname:gke-dd-sandbox-bits-8943422b-5wpg.c.datadog-sandbox.internal", - "instance-id:90825865558996083", - "project:datadog-sandbox", - "numeric_project_id:958371799887", - "cluster-name:dd-sandbox", - "cluster-uid:3d6b7737edf6489fb1927577e24e8b0e314e6826aa3e47fa9b2eae419f261013", - "cluster-location:asia-northeast1" - ], - "system":[ - "cluster_name:dd-sandbox", - "kube_cluster_name:dd-sandbox" - ] - }, - "install-method":{ - "installer_version":"datadog-3.6.4", - "tool":"helm", - "tool_version":"Helm" - }, - "logs":{ - "auto_multi_line_detection_enabled":false, - "transport":"TCP" - }, - "meta":{ - "cluster-name":"dd-sandbox", - "ec2-hostname":"", - "host_aliases":[ - "gke-dd-sandbox-bits-8943422b-5wpg-dd-sandbox", - "gke-dd-sandbox-bits-8943422b-5wpg.c.datadog-sandbox.internal", - "gke-dd-sandbox-bits-8943422b-5wpg.datadog-sandbox" - ], - "hostname":"gke-dd-sandbox-bits-8943422b-5wpg.c.datadog-sandbox.internal", - "instance-id":"", - "socket-fqdn":"dd-datadog-c4kcx", - "socket-hostname":"dd-datadog-c4kcx", - "timezones":[ - "UTC" - ] - }, - "network":null, - "os":"linux", - "otlp":{ - "enabled":false - }, - "proxy-info":{ - "no-proxy-nonexact-match":false, - "no-proxy-nonexact-match-explicitly-set":false, - "proxy-behavior-changed":false - }, - "python":"3.8.14 (default, Dec 9 2022, 10:01:06) [GCC 4.9.2]", - "systemStats":{ - "cpuCores":1, - "fbsdV":[ - "", - "", - "" - ], - "macV":[ - "", - "", - "" - ], - "machine":"amd64", - "nixV":[ - "cos", - "97", - "" - ], - "platform":"linux", - "processor":"Intel(R) Xeon(R) CPU @ 2.20GHz", - "pythonV":"3.8.14", - "winV":[ - "", - "", - "" - ] - } - }, - "ntpOffset":0.000035142, - "otlp":{ - "otlpCollectorStatus":"Not running", - "otlpCollectorStatusErr":"", - "otlpStatus":false - }, - "pid":12136, - "processAgentStatus":{ - "core":{ - "build_arch":"amd64", - "config":{ - "log_level":"INFO" - }, - "go_version":"go1.18.8", - "metadata":{ - "agent-flavor":"agent", - "container-meta":{ - "cri_name":"containerd", - "cri_version":"1.6.6", - "docker_swarm":"inactive", - "docker_version":"20.10.12", - "kubelet_version":"v1.24.6-gke.1500" - }, - "host-tags":{ - "google cloud platform":[ - "zone:asia-northeast1-a", - "internal-hostname:gke-dd-sandbox-bits-8943422b-5wpg.c.datadog-sandbox.internal", - "instance-id:90825865558996083", - "project:datadog-sandbox", - "numeric_project_id:958371799887", - "cluster-name:dd-sandbox", - "cluster-uid:3d6b7737edf6489fb1927577e24e8b0e314e6826aa3e47fa9b2eae419f261013", - "cluster-location:asia-northeast1" - ], - "system":[ - "cluster_name:dd-sandbox", - "kube_cluster_name:dd-sandbox" - ] - }, - "install-method":{ - "installer_version":"docker", - "tool":"docker", - "tool_version":"docker" - }, - "logs":{ - "auto_multi_line_detection_enabled":false, - "transport":"" - }, - "meta":{ - "cluster-name":"dd-sandbox", - "ec2-hostname":"", - "host_aliases":[ - "gke-dd-sandbox-bits-8943422b-5wpg-dd-sandbox", - "gke-dd-sandbox-bits-8943422b-5wpg.c.datadog-sandbox.internal", - "gke-dd-sandbox-bits-8943422b-5wpg.datadog-sandbox" - ], - "hostname":"gke-dd-sandbox-bits-8943422b-5wpg.c.datadog-sandbox.internal", - "instance-id":"", - "socket-fqdn":"dd-datadog-c4kcx", - "socket-hostname":"dd-datadog-c4kcx", - "timezones":[ - "UTC" - ] - }, - "network":null, - "os":"linux", - "otlp":{ - "enabled":false - }, - "proxy-info":{ - "no-proxy-nonexact-match":false, - "no-proxy-nonexact-match-explicitly-set":false, - "proxy-behavior-changed":false - }, - "python":"n/a", - "systemStats":{ - "cpuCores":1, - "fbsdV":[ - "", - "", - "" - ], - "macV":[ - "", - "", - "" - ], - "machine":"amd64", - "nixV":[ - "cos", - "97", - "" - ], - "platform":"linux", - "processor":"Intel(R) Xeon(R) CPU @ 2.20GHz", - "pythonV":"n/a", - "winV":[ - "", - "", - "" - ] - } - }, - "version":"x.y.z" - }, - "date":1671576721802280200, - "expvars":{ - "connections_queue_bytes":0, - "connections_queue_size":0, - "container_count":25, - "container_id":"", - "docker_socket":"", - "drop_check_payloads":[ - - ], - "enabled_checks":[ - "container", - "rtcontainer", - "pod" - ], - "endpoints":{ - "https://process.datadoghq.com":[ - "841ae" - ] - }, - "event_queue_bytes":0, - "event_queue_size":0, - "last_collect_time":"2022-12-20 22:51:56", - "log_file":"", - "memstats":{ - "alloc":35295544 - }, - "pid":12223, - "pod_queue_bytes":0, - "pod_queue_size":0, - "process_count":0, - "process_queue_bytes":0, - "process_queue_size":0, - "proxy_url":"", - "rtprocess_queue_bytes":0, - "rtprocess_queue_size":0, - "uptime":12633, - "uptime_nano":1671564088069916200, - "version":{ - "BuildDate":"", - "GitBranch":"", - "GitCommit":"", - "GoVersion":"", - "Version":"" - } - } - }, - "pyLoaderStats":{ - "ConfigureErrors":{ - "postgres (13.1.0)":[ - "could not invoke 'postgres' python check constructor. New constructor API returned:\nTraceback (most recent call last):\n File \"/opt/datadog-agent/embedded/lib/python3.8/site-packages/datadog_checks/postgres/postgres.py\", line 62, in __init__\n self._config = PostgresConfig(self.instance)\n File \"/opt/datadog-agent/embedded/lib/python3.8/site-packages/datadog_checks/postgres/config.py\", line 35, in __init__\n raise ConfigurationError('Please specify a user to connect to Postgres.')\ndatadog_checks.base.errors.ConfigurationError: Please specify a user to connect to Postgres.\nDeprecated constructor API returned:\n__init__() got an unexpected keyword argument 'agentConfig'" - ] - }, - "Py3Warnings":{ - - } - }, - "pythonInit":{ - "Errors":[ - - ] - }, - "python_version":"3.8.14", - "runnerStats":{ - "Checks":{ - "cilium":{ - "cilium:bac99095d52d45c":{ - "AverageExecutionTime":8, - "CheckConfigSource":"file:/etc/datadog-agent/conf.d/cilium.d/auto_conf.yaml", - "CheckID":"cilium:bac99095d52d45c", - "LongRunning": true, - "CheckName":"cilium", - "CheckVersion":"2.3.0", - "EventPlatformEvents":{ - - }, - "Events":0, - "ExecutionTimes":[ - 9, - 9, - 9, - 8, - 10, - 11, - 8, - 8, - 8, - 9, - 8, - 8, - 10, - 8, - 11, - 8, - 8, - 8, - 9, - 9, - 10, - 10, - 8, - 8, - 10, - 9, - 9, - 9, - 10, - 8, - 9, - 8 - ], - "HistogramBuckets":0, - "LastError":"[{\"message\": \"HTTPConnectionPool(host='10.146.15.207', port=9090): Max retries exceeded with url: /metrics (Caused by NewConnectionError('\u003curllib3.connection.HTTPConnection object at 0x7f20296ba430\u003e: Failed to establish a new connection: [Errno 111] Connection refused'))\", \"traceback\": \"Traceback (most recent call last):\\n File \\\"/opt/datadog-agent/embedded/lib/python3.8/site-packages/urllib3/connection.py\\\", line 174, in _new_conn\\n conn = connection.create_connection(\\n File \\\"/opt/datadog-agent/embedded/lib/python3.8/site-packages/urllib3/util/connection.py\\\", line 95, in create_connection\\n raise err\\n File \\\"/opt/datadog-agent/embedded/lib/python3.8/site-packages/urllib3/util/connection.py\\\", line 85, in create_connection\\n sock.connect(sa)\\nConnectionRefusedError: [Errno 111] Connection refused\\n\\nDuring handling of the above exception, another exception occurred:\\n\\nTraceback (most recent call last):\\n File \\\"/opt/datadog-agent/embedded/lib/python3.8/site-packages/urllib3/connectionpool.py\\\", line 703, in urlopen\\n httplib_response = self._make_request(\\n File \\\"/opt/datadog-agent/embedded/lib/python3.8/site-packages/urllib3/connectionpool.py\\\", line 398, in _make_request\\n conn.request(method, url, **httplib_request_kw)\\n File \\\"/opt/datadog-agent/embedded/lib/python3.8/site-packages/urllib3/connection.py\\\", line 239, in request\\n super(HTTPConnection, self).request(method, url, body=body, headers=headers)\\n File \\\"/opt/datadog-agent/embedded/lib/python3.8/http/client.py\\\", line 1256, in request\\n self._send_request(method, url, body, headers, encode_chunked)\\n File \\\"/opt/datadog-agent/embedded/lib/python3.8/http/client.py\\\", line 1302, in _send_request\\n self.endheaders(body, encode_chunked=encode_chunked)\\n File \\\"/opt/datadog-agent/embedded/lib/python3.8/http/client.py\\\", line 1251, in endheaders\\n self._send_output(message_body, encode_chunked=encode_chunked)\\n File \\\"/opt/datadog-agent/embedded/lib/python3.8/http/client.py\\\", line 1011, in _send_output\\n self.send(msg)\\n File \\\"/opt/datadog-agent/embedded/lib/python3.8/http/client.py\\\", line 951, in send\\n self.connect()\\n File \\\"/opt/datadog-agent/embedded/lib/python3.8/site-packages/urllib3/connection.py\\\", line 205, in connect\\n conn = self._new_conn()\\n File \\\"/opt/datadog-agent/embedded/lib/python3.8/site-packages/urllib3/connection.py\\\", line 186, in _new_conn\\n raise NewConnectionError(\\nurllib3.exceptions.NewConnectionError: \u003curllib3.connection.HTTPConnection object at 0x7f20296ba430\u003e: Failed to establish a new connection: [Errno 111] Connection refused\\n\\nDuring handling of the above exception, another exception occurred:\\n\\nTraceback (most recent call last):\\n File \\\"/opt/datadog-agent/embedded/lib/python3.8/site-packages/requests/adapters.py\\\", line 489, in send\\n resp = conn.urlopen(\\n File \\\"/opt/datadog-agent/embedded/lib/python3.8/site-packages/urllib3/connectionpool.py\\\", line 787, in urlopen\\n retries = retries.increment(\\n File \\\"/opt/datadog-agent/embedded/lib/python3.8/site-packages/urllib3/util/retry.py\\\", line 592, in increment\\n raise MaxRetryError(_pool, url, error or ResponseError(cause))\\nurllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='10.146.15.207', port=9090): Max retries exceeded with url: /metrics (Caused by NewConnectionError('\u003curllib3.connection.HTTPConnection object at 0x7f20296ba430\u003e: Failed to establish a new connection: [Errno 111] Connection refused'))\\n\\nDuring handling of the above exception, another exception occurred:\\n\\nTraceback (most recent call last):\\n File \\\"/opt/datadog-agent/embedded/lib/python3.8/site-packages/datadog_checks/base/checks/base.py\\\", line 1122, in run\\n self.check(instance)\\n File \\\"/opt/datadog-agent/embedded/lib/python3.8/site-packages/datadog_checks/base/checks/openmetrics/base_check.py\\\", line 142, in check\\n self.process(scraper_config)\\n File \\\"/opt/datadog-agent/embedded/lib/python3.8/site-packages/datadog_checks/base/checks/openmetrics/mixins.py\\\", line 573, in process\\n for metric in self.scrape_metrics(scraper_config):\\n File \\\"/opt/datadog-agent/embedded/lib/python3.8/site-packages/datadog_checks/base/checks/openmetrics/mixins.py\\\", line 500, in scrape_metrics\\n response = self.poll(scraper_config)\\n File \\\"/opt/datadog-agent/embedded/lib/python3.8/site-packages/datadog_checks/base/checks/openmetrics/mixins.py\\\", line 837, in poll\\n response = self.send_request(endpoint, scraper_config, headers)\\n File \\\"/opt/datadog-agent/embedded/lib/python3.8/site-packages/datadog_checks/base/checks/openmetrics/mixins.py\\\", line 863, in send_request\\n return http_handler.get(endpoint, stream=True, **kwargs)\\n File \\\"/opt/datadog-agent/embedded/lib/python3.8/site-packages/datadog_checks/base/utils/http.py\\\", line 356, in get\\n return self._request('get', url, options)\\n File \\\"/opt/datadog-agent/embedded/lib/python3.8/site-packages/datadog_checks/base/utils/http.py\\\", line 420, in _request\\n response = self.make_request_aia_chasing(request_method, method, url, new_options, persist)\\n File \\\"/opt/datadog-agent/embedded/lib/python3.8/site-packages/datadog_checks/base/utils/http.py\\\", line 426, in make_request_aia_chasing\\n response = request_method(url, **new_options)\\n File \\\"/opt/datadog-agent/embedded/lib/python3.8/site-packages/requests/api.py\\\", line 73, in get\\n return request(\\\"get\\\", url, params=params, **kwargs)\\n File \\\"/opt/datadog-agent/embedded/lib/python3.8/site-packages/requests/api.py\\\", line 59, in request\\n return session.request(method=method, url=url, **kwargs)\\n File \\\"/opt/datadog-agent/embedded/lib/python3.8/site-packages/requests/sessions.py\\\", line 587, in request\\n resp = self.send(prep, **send_kwargs)\\n File \\\"/opt/datadog-agent/embedded/lib/python3.8/site-packages/requests/sessions.py\\\", line 701, in send\\n r = adapter.send(request, **kwargs)\\n File \\\"/opt/datadog-agent/embedded/lib/python3.8/site-packages/requests/adapters.py\\\", line 565, in send\\n raise ConnectionError(e, request=request)\\nrequests.exceptions.ConnectionError: HTTPConnectionPool(host='10.146.15.207', port=9090): Max retries exceeded with url: /metrics (Caused by NewConnectionError('\u003curllib3.connection.HTTPConnection object at 0x7f20296ba430\u003e: Failed to establish a new connection: [Errno 111] Connection refused'))\\n\"}]", - "LastExecutionTime":9, - "LastSuccessDate":0, - "LastWarnings":[ - - ], - "MetricSamples":0, - "ServiceChecks":1, - "TotalErrors":842, - "TotalEventPlatformEvents":{ - - }, - "TotalEvents":0, - "TotalHistogramBuckets":0, - "TotalMetricSamples":0, - "TotalRuns":842, - "TotalServiceChecks":842, - "TotalWarnings":0, - "UpdateTimestamp":1671576714 - } - }, - "datadog_cluster_agent":{ - "datadog_cluster_agent:4b0f56c49d48c92e":{ - "AverageExecutionTime":29, - "CheckConfigSource":"file:/etc/datadog-agent/conf.d/datadog_cluster_agent.d/auto_conf.yaml", - "CheckID":"datadog_cluster_agent:4b0f56c49d48c92e", - "LongRunning": false, - "CheckName":"datadog_cluster_agent", - "CheckVersion":"2.4.0", - "EventPlatformEvents":{ - - }, - "Events":0, - "ExecutionTimes":[ - 32, - 27, - 33, - 29, - 28, - 27, - 28, - 34, - 28, - 28, - 29, - 35, - 30, - 31, - 26, - 28, - 31, - 29, - 28, - 27, - 34, - 27, - 30, - 28, - 32, - 31, - 28, - 29, - 29, - 33, - 33, - 27 - ], - "HistogramBuckets":0, - "LastError":"", - "LastExecutionTime":28, - "LastSuccessDate":1671576721, - "LastWarnings":[ - - ], - "MetricSamples":125, - "ServiceChecks":1, - "TotalErrors":0, - "TotalEventPlatformEvents":{ - - }, - "TotalEvents":0, - "TotalHistogramBuckets":0, - "TotalMetricSamples":104832, - "TotalRuns":842, - "TotalServiceChecks":842, - "TotalWarnings":0, - "UpdateTimestamp":1671576721 - }, - "datadog_cluster_agent:79dc7329a0398f09":{ - "AverageExecutionTime":25, - "CheckConfigSource":"file:/etc/datadog-agent/conf.d/datadog_cluster_agent.d/auto_conf.yaml", - "CheckID":"datadog_cluster_agent:79dc7329a0398f09", - "LongRunning": false, - "CheckName":"datadog_cluster_agent", - "CheckVersion":"2.4.0", - "EventPlatformEvents":{ - - }, - "Events":0, - "ExecutionTimes":[ - 26, - 30, - 33, - 26, - 26, - 19, - 24, - 32, - 20, - 23, - 23, - 23, - 27, - 25, - 28, - 20, - 23, - 23, - 25, - 26, - 26, - 20, - 26, - 30, - 27, - 24, - 23, - 26, - 27, - 24, - 28, - 21 - ], - "HistogramBuckets":0, - "LastError":"", - "LastExecutionTime":19, - "LastSuccessDate":1671576719, - "LastWarnings":[ - - ], - "MetricSamples":61, - "ServiceChecks":1, - "TotalErrors":0, - "TotalEventPlatformEvents":{ - - }, - "TotalEvents":0, - "TotalHistogramBuckets":0, - "TotalMetricSamples":50672, - "TotalRuns":838, - "TotalServiceChecks":838, - "TotalWarnings":0, - "UpdateTimestamp":1671576719 - } - }, - "network":{ - "network:d884b5186b651429":{ - "AverageExecutionTime":6, - "CheckConfigSource":"file:/etc/datadog-agent/conf.d/network.d/conf.yaml.default", - "CheckID":"network:d884b5186b651429", - "LongRunning": false, - "CheckName":"network", - "CheckVersion":"2.9.2", - "EventPlatformEvents":{ - - }, - "Events":0, - "ExecutionTimes":[ - 7, - 5, - 6, - 5, - 5, - 5, - 7, - 5, - 6, - 6, - 6, - 6, - 6, - 7, - 5, - 5, - 6, - 6, - 5, - 5, - 6, - 8, - 7, - 7, - 8, - 5, - 7, - 5, - 6, - 8, - 7, - 5 - ], - "HistogramBuckets":0, - "LastError":"", - "LastExecutionTime":6, - "LastSuccessDate":1671576708, - "LastWarnings":[ - - ], - "MetricSamples":174, - "ServiceChecks":0, - "TotalErrors":0, - "TotalEventPlatformEvents":{ - - }, - "TotalEvents":0, - "TotalHistogramBuckets":0, - "TotalMetricSamples":146334, - "TotalRuns":841, - "TotalServiceChecks":0, - "TotalWarnings":0, - "UpdateTimestamp":1671576708 - } - } - }, - "Errors":1685, - "Running":{ - - }, - "RunningChecks":0, - "Runs":16635, - "Workers":{ - "Count":4, - "Instances":{ - "worker_1":{ - "Utilization":0.02 - }, - "worker_2":{ - "Utilization":0.02 - }, - "worker_3":{ - "Utilization":0.01 - }, - "worker_4":{ - "Utilization":0.01 - } - } - } - }, - "snmpTrapsStats":{ - "metrics":{ - "Packets":0, - "PacketsUnknownCommunityString":0 - } - }, - "time_nano":1671576721796997600, - "version":"x.y.z" -} diff --git a/pkg/status/render/fixtures/agent_status.text b/pkg/status/render/fixtures/agent_status.text deleted file mode 100755 index ee580cf5b121b0..00000000000000 --- a/pkg/status/render/fixtures/agent_status.text +++ /dev/null @@ -1,514 +0,0 @@ - -============== -Agent (vx.y.z) -============== - - Status date: 2022-12-20 22:52:01.796 UTC (1671576721796) - Agent start: 2022-12-20 19:21:27.793 UTC (1671564087793) - Pid: 12136 - Go Version: go1.18.8 - Python Version: 3.8.14 - Build arch: amd64 - Agent flavor: agent - Check Runners: 4 - Log Level: INFO - - Paths - ===== - Config File: /etc/datadog-agent/datadog.yaml - conf.d: /etc/datadog-agent/conf.d - checks.d: /etc/datadog-agent/checks.d - - Clocks - ====== - NTP offset: 35µs - System time: 2022-12-20 22:52:01.796 UTC (1671576721796) - - Host Info - ========= - bootTime: 2022-12-20 19:19:03 UTC (1671563943000) - hostId: d23fb05c-2393-9a7a-fbf3-92cd755df12a - kernelArch: x86_64 - kernelVersion: 5.10.133+ - os: linux - platform: cos - platformVersion: 97 - procs: 211 - uptime: 2m37s - virtualizationRole: guest - - Hostnames - ========= - cluster-name: dd-sandbox - host_aliases: [gke-dd-sandbox-bits-8943422b-5wpg-dd-sandbox gke-dd-sandbox-bits-8943422b-5wpg.c.datadog-sandbox.internal gke-dd-sandbox-bits-8943422b-5wpg.datadog-sandbox] - hostname: gke-dd-sandbox-bits-8943422b-5wpg.c.datadog-sandbox.internal - socket-fqdn: dd-datadog-c4kcx - socket-hostname: dd-datadog-c4kcx - host tags: - cluster_name:dd-sandbox - kube_cluster_name:dd-sandbox - zone:asia-northeast1-a - internal-hostname:gke-dd-sandbox-bits-8943422b-5wpg.c.datadog-sandbox.internal - instance-id:90825865558996083 - project:datadog-sandbox - numeric_project_id:958371799887 - cluster-name:dd-sandbox - cluster-uid:3d6b7737edf6489fb1927577e24e8b0e314e6826aa3e47fa9b2eae419f261013 - cluster-location:asia-northeast1 - hostname provider: gce - unused hostname providers: - 'hostname' configuration/environment: hostname is empty - 'hostname_file' configuration/environment: 'hostname_file' configuration is not enabled - fargate: agent is not runnning on Fargate - - Metadata - ======== - agent_version: x.y.z - cloud_provider: GCP - config_apm_dd_url: - config_dd_url: - config_logs_dd_url: - config_logs_socks5_proxy_address: - config_no_proxy: [] - config_process_dd_url: - config_proxy_http: - config_proxy_https: - config_site: - feature_apm_enabled: false - feature_cspm_enabled: false - feature_cws_enabled: false - feature_logs_enabled: true - feature_networks_enabled: false - feature_networks_http_enabled: false - feature_networks_https_enabled: false - feature_otlp_enabled: false - feature_process_enabled: false - feature_processes_container_enabled: true - flavor: agent - hostname_source: gce - install_method_installer_version: datadog-3.6.4 - install_method_tool: helm - install_method_tool_version: Helm - logs_transport: TCP - -========= -Collector -========= - - Running Checks - ============== - - cilium (2.3.0) - -------------- - Instance ID: cilium:bac99095d52d45c [ERROR] - Long Running Check: true - Configuration Source: file:/etc/datadog-agent/conf.d/cilium.d/auto_conf.yaml - Total Metric Samples: 0 - Total Events: 0 - Total Service Checks: 842 - Error: HTTPConnectionPool(host='10.146.15.207', port=9090): Max retries exceeded with url: /metrics (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) - Traceback (most recent call last): - File "/opt/datadog-agent/embedded/lib/python3.8/site-packages/urllib3/connection.py", line 174, in _new_conn - conn = connection.create_connection( - File "/opt/datadog-agent/embedded/lib/python3.8/site-packages/urllib3/util/connection.py", line 95, in create_connection - raise err - File "/opt/datadog-agent/embedded/lib/python3.8/site-packages/urllib3/util/connection.py", line 85, in create_connection - sock.connect(sa) - ConnectionRefusedError: [Errno 111] Connection refused - - During handling of the above exception, another exception occurred: - - Traceback (most recent call last): - File "/opt/datadog-agent/embedded/lib/python3.8/site-packages/urllib3/connectionpool.py", line 703, in urlopen - httplib_response = self._make_request( - File "/opt/datadog-agent/embedded/lib/python3.8/site-packages/urllib3/connectionpool.py", line 398, in _make_request - conn.request(method, url, **httplib_request_kw) - File "/opt/datadog-agent/embedded/lib/python3.8/site-packages/urllib3/connection.py", line 239, in request - super(HTTPConnection, self).request(method, url, body=body, headers=headers) - File "/opt/datadog-agent/embedded/lib/python3.8/http/client.py", line 1256, in request - self._send_request(method, url, body, headers, encode_chunked) - File "/opt/datadog-agent/embedded/lib/python3.8/http/client.py", line 1302, in _send_request - self.endheaders(body, encode_chunked=encode_chunked) - File "/opt/datadog-agent/embedded/lib/python3.8/http/client.py", line 1251, in endheaders - self._send_output(message_body, encode_chunked=encode_chunked) - File "/opt/datadog-agent/embedded/lib/python3.8/http/client.py", line 1011, in _send_output - self.send(msg) - File "/opt/datadog-agent/embedded/lib/python3.8/http/client.py", line 951, in send - self.connect() - File "/opt/datadog-agent/embedded/lib/python3.8/site-packages/urllib3/connection.py", line 205, in connect - conn = self._new_conn() - File "/opt/datadog-agent/embedded/lib/python3.8/site-packages/urllib3/connection.py", line 186, in _new_conn - raise NewConnectionError( - urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused - - During handling of the above exception, another exception occurred: - - Traceback (most recent call last): - File "/opt/datadog-agent/embedded/lib/python3.8/site-packages/requests/adapters.py", line 489, in send - resp = conn.urlopen( - File "/opt/datadog-agent/embedded/lib/python3.8/site-packages/urllib3/connectionpool.py", line 787, in urlopen - retries = retries.increment( - File "/opt/datadog-agent/embedded/lib/python3.8/site-packages/urllib3/util/retry.py", line 592, in increment - raise MaxRetryError(_pool, url, error or ResponseError(cause)) - urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='10.146.15.207', port=9090): Max retries exceeded with url: /metrics (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) - - During handling of the above exception, another exception occurred: - - Traceback (most recent call last): - File "/opt/datadog-agent/embedded/lib/python3.8/site-packages/datadog_checks/base/checks/base.py", line 1122, in run - self.check(instance) - File "/opt/datadog-agent/embedded/lib/python3.8/site-packages/datadog_checks/base/checks/openmetrics/base_check.py", line 142, in check - self.process(scraper_config) - File "/opt/datadog-agent/embedded/lib/python3.8/site-packages/datadog_checks/base/checks/openmetrics/mixins.py", line 573, in process - for metric in self.scrape_metrics(scraper_config): - File "/opt/datadog-agent/embedded/lib/python3.8/site-packages/datadog_checks/base/checks/openmetrics/mixins.py", line 500, in scrape_metrics - response = self.poll(scraper_config) - File "/opt/datadog-agent/embedded/lib/python3.8/site-packages/datadog_checks/base/checks/openmetrics/mixins.py", line 837, in poll - response = self.send_request(endpoint, scraper_config, headers) - File "/opt/datadog-agent/embedded/lib/python3.8/site-packages/datadog_checks/base/checks/openmetrics/mixins.py", line 863, in send_request - return http_handler.get(endpoint, stream=True, **kwargs) - File "/opt/datadog-agent/embedded/lib/python3.8/site-packages/datadog_checks/base/utils/http.py", line 356, in get - return self._request('get', url, options) - File "/opt/datadog-agent/embedded/lib/python3.8/site-packages/datadog_checks/base/utils/http.py", line 420, in _request - response = self.make_request_aia_chasing(request_method, method, url, new_options, persist) - File "/opt/datadog-agent/embedded/lib/python3.8/site-packages/datadog_checks/base/utils/http.py", line 426, in make_request_aia_chasing - response = request_method(url, **new_options) - File "/opt/datadog-agent/embedded/lib/python3.8/site-packages/requests/api.py", line 73, in get - return request("get", url, params=params, **kwargs) - File "/opt/datadog-agent/embedded/lib/python3.8/site-packages/requests/api.py", line 59, in request - return session.request(method=method, url=url, **kwargs) - File "/opt/datadog-agent/embedded/lib/python3.8/site-packages/requests/sessions.py", line 587, in request - resp = self.send(prep, **send_kwargs) - File "/opt/datadog-agent/embedded/lib/python3.8/site-packages/requests/sessions.py", line 701, in send - r = adapter.send(request, **kwargs) - File "/opt/datadog-agent/embedded/lib/python3.8/site-packages/requests/adapters.py", line 565, in send - raise ConnectionError(e, request=request) - requests.exceptions.ConnectionError: HTTPConnectionPool(host='10.146.15.207', port=9090): Max retries exceeded with url: /metrics (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) - - datadog_cluster_agent (2.4.0) - ----------------------------- - Instance ID: datadog_cluster_agent:4b0f56c49d48c92e [OK] - Configuration Source: file:/etc/datadog-agent/conf.d/datadog_cluster_agent.d/auto_conf.yaml - Total Runs: 842 - Metric Samples: Last Run: 125, Total: 104,832 - Events: Last Run: 0, Total: 0 - Service Checks: Last Run: 1, Total: 842 - Average Execution Time : 29ms - Last Execution Date : 2022-12-20 22:52:01 UTC (1671576721000) - Last Successful Execution Date : 2022-12-20 22:52:01 UTC (1671576721000) - - Instance ID: datadog_cluster_agent:79dc7329a0398f09 [OK] - Configuration Source: file:/etc/datadog-agent/conf.d/datadog_cluster_agent.d/auto_conf.yaml - Total Runs: 838 - Metric Samples: Last Run: 61, Total: 50,672 - Events: Last Run: 0, Total: 0 - Service Checks: Last Run: 1, Total: 838 - Average Execution Time : 25ms - Last Execution Date : 2022-12-20 22:51:59 UTC (1671576719000) - Last Successful Execution Date : 2022-12-20 22:51:59 UTC (1671576719000) - - - network (2.9.2) - --------------- - Instance ID: network:d884b5186b651429 [OK] - Configuration Source: file:/etc/datadog-agent/conf.d/network.d/conf.yaml.default - Total Runs: 841 - Metric Samples: Last Run: 174, Total: 146,334 - Events: Last Run: 0, Total: 0 - Service Checks: Last Run: 0, Total: 0 - Average Execution Time : 6ms - Last Execution Date : 2022-12-20 22:51:48 UTC (1671576708000) - Last Successful Execution Date : 2022-12-20 22:51:48 UTC (1671576708000) - - Check Initialization Errors - =========================== - - - postgres (13.1.0) - ----------------- - - instance 0: - - could not invoke 'postgres' python check constructor. New constructor API returned: -Traceback (most recent call last): - File "/opt/datadog-agent/embedded/lib/python3.8/site-packages/datadog_checks/postgres/postgres.py", line 62, in __init__ - self._config = PostgresConfig(self.instance) - File "/opt/datadog-agent/embedded/lib/python3.8/site-packages/datadog_checks/postgres/config.py", line 35, in __init__ - raise ConfigurationError('Please specify a user to connect to Postgres.') -datadog_checks.base.errors.ConfigurationError: Please specify a user to connect to Postgres. -Deprecated constructor API returned: -__init__() got an unexpected keyword argument 'agentConfig' - Loading Errors - ============== - postgres - -------- - Core Check Loader: - Check postgres not found in Catalog - - JMX Check Loader: - check is not a jmx check, or unable to determine if it's so - - Python Check Loader: - could not configure check instance for python check postgres: could not invoke 'postgres' python check constructor. New constructor API returned: -Traceback (most recent call last): - File "/opt/datadog-agent/embedded/lib/python3.8/site-packages/datadog_checks/postgres/postgres.py", line 62, in __init__ - self._config = PostgresConfig(self.instance) - File "/opt/datadog-agent/embedded/lib/python3.8/site-packages/datadog_checks/postgres/config.py", line 35, in __init__ - raise ConfigurationError('Please specify a user to connect to Postgres.') -datadog_checks.base.errors.ConfigurationError: Please specify a user to connect to Postgres. -Deprecated constructor API returned: -__init__() got an unexpected keyword argument 'agentConfig' - -======== -JMXFetch -======== - - Information - ================== - Initialized checks - ================== - no checks - - Failed checks - ============= - no checks - -========= -Forwarder -========= - - Transactions - ============ - Cluster: 0 - ClusterRole: 0 - ClusterRoleBinding: 0 - CronJob: 0 - DaemonSet: 0 - Deployment: 0 - Dropped: 0 - HighPriorityQueueFull: 0 - Ingress: 0 - Job: 0 - Namespace: 0 - Node: 0 - PersistentVolume: 0 - PersistentVolumeClaim: 0 - Pod: 0 - ReplicaSet: 0 - Requeued: 0 - Retried: 0 - RetryQueueSize: 0 - Role: 0 - RoleBinding: 0 - Service: 0 - ServiceAccount: 0 - StatefulSet: 0 - - Transaction Successes - ===================== - Total number: 1775 - Successes By Endpoint: - check_run_v1: 841 - intake: 72 - metadata_v1: 21 - series_v2: 841 - - On-disk storage - =============== - On-disk storage is disabled. Configure `forwarder_storage_max_size_in_bytes` to enable it. - - API Keys status - =============== - API key ending with 841ae: API Key valid - -========== -Endpoints -========== - https://app.datadoghq.com - API Key ending with: - - 841ae - -========== -Logs Agent -========== - - Reliable: Sending uncompressed logs in SSL encrypted TCP to agent-intake.logs.datadoghq.com on port 10516 - - You are currently sending Logs to Datadog through TCP (either because logs_config.force_use_tcp or logs_config.socks5_proxy_address is set or the HTTP connectivity test has failed). To benefit from increased reliability and better network performances, we strongly encourage switching over to compressed HTTPS which is now the default protocol. - - BytesSent: 1.8474997e+07 - EncodedBytesSent: 1.8474997e+07 - LogsProcessed: 10438 - LogsSent: 10438 - ============ - Integrations - ============ - - kube-system/pdcsi-node-vmxbk/gce-pd-driver - ------------------------------------------ - - Type: file - Identifier: 401a8645147ae8ef2baf2a5187c22b61554a64c5e0800b481c7a6a6e2e5e9d53 - Path: /var/log/pods/kube-system_pdcsi-node-vmxbk_8194ece2-46dd-495e-9220-3a6b88fa4d61/gce-pd-driver/*.log - Service: gcp-compute-persistent-disk-csi-driver - Source: gcp-compute-persistent-disk-csi-driver - Status: OK - 1 files tailed out of 1 files matching - Inputs: - /var/log/pods/kube-system_pdcsi-node-vmxbk_8194ece2-46dd-495e-9220-3a6b88fa4d61/gce-pd-driver/0.log - - kube-system/l7-default-backend-6dc845c45d-xlnmh/default-http-backend - -------------------------------------------------------------------- - - Type: file - Identifier: 0f23fbf70ab6cb8063cacb65bf7c7472a6e4062838764cac256439070942f161 - Path: /var/log/pods/kube-system_l7-default-backend-6dc845c45d-xlnmh_85840891-57e7-4fd4-8c1d-9a7ec5227614/default-http-backend/*.log - Service: ingress-gce-404-server-with-metrics - Source: ingress-gce-404-server-with-metrics - Status: OK - 1 files tailed out of 1 files matching - Inputs: - /var/log/pods/kube-system_l7-default-backend-6dc845c45d-xlnmh_85840891-57e7-4fd4-8c1d-9a7ec5227614/default-http-backend/0.log - - - -============= -Process Agent -============= - - Version: x.y.z - Status date: 2022-12-20 22:52:01.802 UTC (1671576721802) - Process Agent Start: 2022-12-20 19:21:28.069 UTC (1671564088069) - Pid: 12223 - Go Version: go1.18.8 - Build arch: amd64 - Log Level: INFO - Enabled Checks: [container rtcontainer pod] - Allocated Memory: 35,295,544 bytes - Hostname: gke-dd-sandbox-bits-8943422b-5wpg.c.datadog-sandbox.internal - System Probe Process Module Status: Not running - Process Language Detection Enabled: False - - ================= - Process Endpoints - ================= - https://process.datadoghq.com - API Key ending with: - - 841ae - - ========= - Collector - ========= - Last collection time: 2022-12-20 22:51:56 - Docker socket: - Number of processes: 0 - Number of containers: 25 - Process Queue length: 0 - RTProcess Queue length: 0 - Connections Queue length: 0 - Event Queue length: 0 - Pod Queue length: 0 - Process Bytes enqueued: 0 - RTProcess Bytes enqueued: 0 - Connections Bytes enqueued: 0 - Event Bytes enqueued: 0 - Pod Bytes enqueued: 0 - Drop Check Payloads: [] - - ========== - Extractors - ========== - - Workloadmeta - ============ - Cache size: - Stale diffs discarded: - Diffs dropped: - -========= -APM Agent -========= - Status: Running - Pid: 12174 - Uptime: 12633 seconds - Mem alloc: 9,203,488 bytes - Hostname: gke-dd-sandbox-bits-8943422b-5wpg.c.datadog-sandbox.internal - Receiver: 0.0.0.0:8126 - Endpoints: - https://trace.agent.datadoghq.com - - Receiver (previous minute) - ========================== - No traces received in the previous minute. - - - Writer (previous minute) - ======================== - Traces: 0 payloads, 0 traces, 0 events, 0 bytes - Stats: 0 payloads, 0 stats buckets, 0 bytes - -========== -Aggregator -========== - Checks Metric Sample: 3,800,535 - Dogstatsd Metric Sample: 136,758 - Event: 1 - Events Flushed: 1 - Number Of Flushes: 841 - Series Flushed: 3,224,651 - Service Check: 25,700 - Service Checks Flushed: 26,509 - -========= -DogStatsD -========= - Event Packets: 0 - Event Parse Errors: 0 - Metric Packets: 136,757 - Metric Parse Errors: 0 - Service Check Packets: 0 - Service Check Parse Errors: 0 - Udp Bytes: 21,336,530 - Udp Packet Reading Errors: 0 - Udp Packets: 76,232 - Uds Bytes: 0 - Uds Origin Detection Errors: 0 - Uds Packet Reading Errors: 0 - Uds Packets: 1 - Unterminated Metric Errors: 0 - -Tip: For troubleshooting, enable 'dogstatsd_metrics_stats_enable' in the main datadog.yaml file to generate Dogstatsd logs. Once 'dogstatsd_metrics_stats_enable' is enabled, users can also use 'dogstatsd-stats' command to get visibility of the latest collected metrics. -===================== -Datadog Cluster Agent -===================== - - - Datadog Cluster Agent endpoint detected: https://10.122.58.252:5005 - Successfully connected to the Datadog Cluster Agent. - - Running: x.y.z+commit.9b0b54b - -========== -SNMP Traps -========== - Packets: 0 - Packets Unknown Community String: 0 - -============= -Autodiscovery -============= - Enabled Features - ================ - containerd - cri - docker - kubernetes - -==================== -Remote Configuration -==================== - - Remote Configuration is disabled - - -==== -OTLP -==== - - Status: Not enabled - Collector status: Not running - \ No newline at end of file diff --git a/pkg/status/render/fixtures/check_stats.json b/pkg/status/render/fixtures/check_stats.json deleted file mode 100644 index 896b22689b2e1c..00000000000000 --- a/pkg/status/render/fixtures/check_stats.json +++ /dev/null @@ -1,553 +0,0 @@ -{ - "pyLoaderStats": { - "ConfigureErrors": {}, - "Py3Warnings": {} - }, - "pythonInit": { - "Errors": [ - "could not initialize rtloader: error initializing string utils: No module named 'yaml'" - ] - }, - "python_version": "n/a", - "remoteConfiguration": { - "apiKeyScoped": "false", - "lastError": "", - "orgEnabled": "false" - }, - "runnerStats": { - "Checks": { - "cpu": { - "cpu": { - "AverageExecutionTime": 0, - "CheckConfigSource": "file:/opt/datadog-agent/etc/conf.d/cpu.d/conf.yaml.default", - "CheckID": "cpu", - "LongRunning": false, - "CheckName": "cpu", - "CheckVersion": "", - "EventPlatformEvents": {}, - "Events": 0, - "ExecutionTimes": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 0 - ], - "HistogramBuckets": 0, - "LastError": "", - "LastExecutionTime": 0, - "LastSuccessDate": 1701259541, - "LastWarnings": [], - "MetricSamples": 8, - "ServiceChecks": 0, - "TotalErrors": 0, - "TotalEventPlatformEvents": {}, - "TotalEvents": 0, - "TotalHistogramBuckets": 0, - "TotalMetricSamples": 985, - "TotalRuns": 124, - "TotalServiceChecks": 0, - "TotalWarnings": 0, - "UpdateTimestamp": 1701259541 - } - }, - "disk": { - "disk": { - "AverageExecutionTime": 1, - "CheckConfigSource": "file:/opt/datadog-agent/etc/conf.d/disk.d/conf.yaml.default", - "CheckID": "disk", - "LongRunning": false, - "CheckName": "disk", - "CheckVersion": "", - "EventPlatformEvents": {}, - "Events": 0, - "ExecutionTimes": [ - 0, - 2, - 0, - 0, - 4, - 1, - 1, - 1, - 2, - 1, - 4, - 1, - 1, - 2, - 3, - 1, - 2, - 1, - 1, - 0, - 2, - 2, - 4, - 2, - 3, - 1, - 2, - 2, - 2, - 2, - 2, - 1 - ], - "HistogramBuckets": 0, - "LastError": "", - "LastExecutionTime": 2, - "LastSuccessDate": 1701259533, - "LastWarnings": [], - "MetricSamples": 84, - "ServiceChecks": 0, - "TotalErrors": 0, - "TotalEventPlatformEvents": {}, - "TotalEvents": 0, - "TotalHistogramBuckets": 0, - "TotalMetricSamples": 10332, - "TotalRuns": 123, - "TotalServiceChecks": 0, - "TotalWarnings": 0, - "UpdateTimestamp": 1701259533 - } - }, - "file_handle": { - "file_handle": { - "AverageExecutionTime": 0, - "CheckConfigSource": "file:/Users/gustavo.caso/go/src/github.com/DataDog/datadog-agent/bin/agent/dist/conf.d/file_handle.d/conf.yaml.default", - "CheckID": "file_handle", - "LongRunning": false, - "CheckName": "file_handle", - "CheckVersion": "", - "EventPlatformEvents": {}, - "Events": 0, - "ExecutionTimes": [ - 0, - 0, - 1, - 0, - 1, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 1, - 0, - 0, - 5, - 0, - 1, - 0, - 0, - 0, - 1, - 0, - 1, - 2, - 1, - 0, - 0 - ], - "HistogramBuckets": 0, - "LastError": "open /proc/sys/fs/file-nr: no such file or directory", - "LastExecutionTime": 0, - "LastSuccessDate": 0, - "LastWarnings": [], - "MetricSamples": 0, - "ServiceChecks": 0, - "TotalErrors": 123, - "TotalEventPlatformEvents": {}, - "TotalEvents": 0, - "TotalHistogramBuckets": 0, - "TotalMetricSamples": 0, - "TotalRuns": 123, - "TotalServiceChecks": 0, - "TotalWarnings": 0, - "UpdateTimestamp": 1701259538 - } - }, - "io": { - "io": { - "AverageExecutionTime": 0, - "CheckConfigSource": "file:/opt/datadog-agent/etc/conf.d/io.d/conf.yaml.default", - "CheckID": "io", - "LongRunning": false, - "CheckName": "io", - "CheckVersion": "", - "EventPlatformEvents": {}, - "Events": 0, - "ExecutionTimes": [ - 1, - 1, - 0, - 0, - 1, - 1, - 1, - 1, - 2, - 1, - 1, - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 1, - 0, - 1, - 0, - 0, - 4, - 1, - 0, - 1, - 1, - 0, - 1, - 1, - 1 - ], - "HistogramBuckets": 0, - "LastError": "", - "LastExecutionTime": 1, - "LastSuccessDate": 1701259540, - "LastWarnings": [], - "MetricSamples": 15, - "ServiceChecks": 0, - "TotalErrors": 0, - "TotalEventPlatformEvents": {}, - "TotalEvents": 0, - "TotalHistogramBuckets": 0, - "TotalMetricSamples": 1836, - "TotalRuns": 123, - "TotalServiceChecks": 0, - "TotalWarnings": 0, - "UpdateTimestamp": 1701259540 - } - }, - "load": { - "load": { - "AverageExecutionTime": 0, - "CheckConfigSource": "file:/opt/datadog-agent/etc/conf.d/load.d/conf.yaml.default", - "CheckID": "load", - "LongRunning": false, - "CheckName": "load", - "CheckVersion": "", - "EventPlatformEvents": {}, - "Events": 0, - "ExecutionTimes": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "HistogramBuckets": 0, - "LastError": "", - "LastExecutionTime": 0, - "LastSuccessDate": 1701259532, - "LastWarnings": [], - "MetricSamples": 6, - "ServiceChecks": 0, - "TotalErrors": 0, - "TotalEventPlatformEvents": {}, - "TotalEvents": 0, - "TotalHistogramBuckets": 0, - "TotalMetricSamples": 738, - "TotalRuns": 123, - "TotalServiceChecks": 0, - "TotalWarnings": 0, - "UpdateTimestamp": 1701259532 - } - }, - "memory": { - "memory": { - "AverageExecutionTime": 0, - "CheckConfigSource": "file:/opt/datadog-agent/etc/conf.d/memory.d/conf.yaml.default", - "CheckID": "memory", - "LongRunning": false, - "CheckName": "memory", - "CheckVersion": "", - "EventPlatformEvents": {}, - "Events": 0, - "ExecutionTimes": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 1, - 0, - 0, - 0, - 0 - ], - "HistogramBuckets": 0, - "LastError": "", - "LastExecutionTime": 0, - "LastSuccessDate": 1701259539, - "LastWarnings": [], - "MetricSamples": 11, - "ServiceChecks": 0, - "TotalErrors": 0, - "TotalEventPlatformEvents": {}, - "TotalEvents": 0, - "TotalHistogramBuckets": 0, - "TotalMetricSamples": 1353, - "TotalRuns": 123, - "TotalServiceChecks": 0, - "TotalWarnings": 0, - "UpdateTimestamp": 1701259539 - } - }, - "ntp": { - "ntp:3c427a42a70bbf8": { - "AverageExecutionTime": 172, - "CheckConfigSource": "file:/opt/datadog-agent/etc/conf.d/ntp.d/conf.yaml.default", - "CheckID": "ntp:3c427a42a70bbf8", - "LongRunning": false, - "CheckName": "ntp", - "CheckVersion": "", - "EventPlatformEvents": { - "dbm-samples": 12, - "unknown-type": 34 - }, - "Events": 0, - "ExecutionTimes": [ - 143, - 187, - 186, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "HistogramBuckets": 0, - "LastError": "", - "LastExecutionTime": 186, - "LastSuccessDate": 1701259498, - "LastWarnings": [], - "MetricSamples": 1, - "ServiceChecks": 1, - "TotalErrors": 0, - "TotalEventPlatformEvents": { - "dbm-samples": 132, - "unknown-type": 342 - }, - "TotalEvents": 0, - "TotalHistogramBuckets": 0, - "TotalMetricSamples": 3, - "TotalRuns": 3, - "TotalServiceChecks": 3, - "TotalWarnings": 0, - "UpdateTimestamp": 1701259498 - } - }, - "uptime": { - "uptime": { - "AverageExecutionTime": 0, - "CheckConfigSource": "file:/opt/datadog-agent/etc/conf.d/uptime.d/conf.yaml.default", - "CheckID": "uptime", - "LongRunning": false, - "CheckName": "uptime", - "CheckVersion": "", - "EventPlatformEvents": {}, - "Events": 0, - "ExecutionTimes": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "HistogramBuckets": 0, - "LastError": "", - "LastExecutionTime": 0, - "LastSuccessDate": 1701259546, - "LastWarnings": [], - "MetricSamples": 1, - "ServiceChecks": 0, - "TotalErrors": 0, - "TotalEventPlatformEvents": {}, - "TotalEvents": 0, - "TotalHistogramBuckets": 0, - "TotalMetricSamples": 124, - "TotalRuns": 124, - "TotalServiceChecks": 0, - "TotalWarnings": 0, - "UpdateTimestamp": 1701259546 - } - } - }, - "Errors": 123, - "Running": { - "container_image": "2023-11-29T12:34:55+01:00", - "container_lifecycle": "2023-11-29T12:34:55+01:00" - }, - "RunningChecks": 2, - "Runs": 866, - "Workers": { - "Count": 6, - "Instances": { - "worker_1": { - "Utilization": 1 - }, - "worker_2": { - "Utilization": 1 - }, - "worker_3": { - "Utilization": 0 - }, - "worker_4": { - "Utilization": 0 - }, - "worker_5": { - "Utilization": 0 - }, - "worker_6": { - "Utilization": 0 - } - } - } - } -} diff --git a/pkg/status/render/fixtures/check_stats.text b/pkg/status/render/fixtures/check_stats.text deleted file mode 100755 index fe4ec5013a52cf..00000000000000 --- a/pkg/status/render/fixtures/check_stats.text +++ /dev/null @@ -1,117 +0,0 @@ -========= -Collector -========= - Error initializing Python - ========================= - - could not initialize rtloader: error initializing string utils: No module named 'yaml' - - - Running Checks - ============== - - cpu - --- - Instance ID: cpu [OK] - Configuration Source: file:/opt/datadog-agent/etc/conf.d/cpu.d/conf.yaml.default - Total Runs: 124 - Metric Samples: Last Run: 8, Total: 985 - Events: Last Run: 0, Total: 0 - Service Checks: Last Run: 0, Total: 0 - Average Execution Time : 0s - Last Execution Date : 2023-11-29 12:05:41 UTC (1701259541000) - Last Successful Execution Date : 2023-11-29 12:05:41 UTC (1701259541000) - - - disk - ---- - Instance ID: disk [OK] - Configuration Source: file:/opt/datadog-agent/etc/conf.d/disk.d/conf.yaml.default - Total Runs: 123 - Metric Samples: Last Run: 84, Total: 10,332 - Events: Last Run: 0, Total: 0 - Service Checks: Last Run: 0, Total: 0 - Average Execution Time : 1ms - Last Execution Date : 2023-11-29 12:05:33 UTC (1701259533000) - Last Successful Execution Date : 2023-11-29 12:05:33 UTC (1701259533000) - - - file_handle - ----------- - Instance ID: file_handle [ERROR] - Configuration Source: file:/Users/gustavo.caso/go/src/github.com/DataDog/datadog-agent/bin/agent/dist/conf.d/file_handle.d/conf.yaml.default - Total Runs: 123 - Metric Samples: Last Run: 0, Total: 0 - Events: Last Run: 0, Total: 0 - Service Checks: Last Run: 0, Total: 0 - Average Execution Time : 0s - Last Execution Date : 2023-11-29 12:05:38 UTC (1701259538000) - Last Successful Execution Date : Never - Error: open /proc/sys/fs/file-nr: no such file or directory - No traceback - - io - -- - Instance ID: io [OK] - Configuration Source: file:/opt/datadog-agent/etc/conf.d/io.d/conf.yaml.default - Total Runs: 123 - Metric Samples: Last Run: 15, Total: 1,836 - Events: Last Run: 0, Total: 0 - Service Checks: Last Run: 0, Total: 0 - Average Execution Time : 0s - Last Execution Date : 2023-11-29 12:05:40 UTC (1701259540000) - Last Successful Execution Date : 2023-11-29 12:05:40 UTC (1701259540000) - - - load - ---- - Instance ID: load [OK] - Configuration Source: file:/opt/datadog-agent/etc/conf.d/load.d/conf.yaml.default - Total Runs: 123 - Metric Samples: Last Run: 6, Total: 738 - Events: Last Run: 0, Total: 0 - Service Checks: Last Run: 0, Total: 0 - Average Execution Time : 0s - Last Execution Date : 2023-11-29 12:05:32 UTC (1701259532000) - Last Successful Execution Date : 2023-11-29 12:05:32 UTC (1701259532000) - - - memory - ------ - Instance ID: memory [OK] - Configuration Source: file:/opt/datadog-agent/etc/conf.d/memory.d/conf.yaml.default - Total Runs: 123 - Metric Samples: Last Run: 11, Total: 1,353 - Events: Last Run: 0, Total: 0 - Service Checks: Last Run: 0, Total: 0 - Average Execution Time : 0s - Last Execution Date : 2023-11-29 12:05:39 UTC (1701259539000) - Last Successful Execution Date : 2023-11-29 12:05:39 UTC (1701259539000) - - - ntp - --- - Instance ID: ntp:3c427a42a70bbf8 [OK] - Configuration Source: file:/opt/datadog-agent/etc/conf.d/ntp.d/conf.yaml.default - Total Runs: 3 - Metric Samples: Last Run: 1, Total: 3 - Events: Last Run: 0, Total: 0 - dbm-samples: Last Run: 12, Total: 132 - unknown-type: Last Run: 34, Total: 342 - Service Checks: Last Run: 1, Total: 3 - Average Execution Time : 172ms - Last Execution Date : 2023-11-29 12:04:58 UTC (1701259498000) - Last Successful Execution Date : 2023-11-29 12:04:58 UTC (1701259498000) - - - uptime - ------ - Instance ID: uptime [OK] - Configuration Source: file:/opt/datadog-agent/etc/conf.d/uptime.d/conf.yaml.default - Total Runs: 124 - Metric Samples: Last Run: 1, Total: 124 - Events: Last Run: 0, Total: 0 - Service Checks: Last Run: 0, Total: 0 - Average Execution Time : 0s - Last Execution Date : 2023-11-29 12:05:46 UTC (1701259546000) - Last Successful Execution Date : 2023-11-29 12:05:46 UTC (1701259546000) - diff --git a/pkg/status/render/fixtures/cluster_agent_status.json b/pkg/status/render/fixtures/cluster_agent_status.json deleted file mode 100644 index c1415f2fb82914..00000000000000 --- a/pkg/status/render/fixtures/cluster_agent_status.json +++ /dev/null @@ -1,730 +0,0 @@ -{ - "adEnabledFeatures": {}, - "admissionWebhook": { - "Error": "temporary failure in apiserver, will retry later: try delay not elapsed yet" - }, - "agent_metadata": {}, - "agent_start_nano": 1701185796319735000, - "aggregatorStats": { - "ChecksHistogramBucketMetricSample": 0, - "ChecksMetricSample": 0, - "DogstatsdContexts": 0, - "DogstatsdContextsByMtype": { - "Count": 0, - "Counter": 0, - "Distribution": 0, - "Gauge": 0, - "Histogram": 0, - "Historate": 0, - "MonotonicCount": 0, - "Rate": 0, - "Set": 0 - }, - "DogstatsdMetricSample": 0, - "Event": 0, - "EventPlatformEvents": {}, - "EventPlatformEventsErrors": {}, - "EventsFlushErrors": 0, - "EventsFlushed": 0, - "Flush": { - "ChecksMetricSampleFlushTime": { - "FlushIndex": 12, - "Flushes": [ - 1768375, - 2815000, - 8566000, - 1876667, - 1271833, - 2088333, - 1546667, - 436833, - 2543250, - 2415959, - 1499292, - 2315875, - 1433541, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "LastFlush": 1433541, - "Name": "ChecksMetricSampleFlushTime" - }, - "EventFlushTime": { - "FlushIndex": -1, - "Flushes": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "LastFlush": 0, - "Name": "EventFlushTime" - }, - "MainFlushTime": { - "FlushIndex": 12, - "Flushes": [ - 1784125, - 2821542, - 8623750, - 1885750, - 1277792, - 2093125, - 1551875, - 444375, - 2555167, - 2428709, - 1508584, - 2322458, - 1441916, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "LastFlush": 1441916, - "Name": "MainFlushTime" - }, - "ManifestsTime": { - "FlushIndex": -1, - "Flushes": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "LastFlush": 0, - "Name": "ManifestsTime" - }, - "MetricSketchFlushTime": { - "FlushIndex": -1, - "Flushes": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "LastFlush": 0, - "Name": "MetricSketchFlushTime" - }, - "ServiceCheckFlushTime": { - "FlushIndex": 12, - "Flushes": [ - 2210709, - 1744708, - 9220916, - 1271000, - 1261292, - 1699291, - 1536875, - 585291, - 2765334, - 2870625, - 1489667, - 2283125, - 1386500, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "LastFlush": 1386500, - "Name": "ServiceCheckFlushTime" - } - }, - "FlushCount": { - "Events": { - "FlushIndex": -1, - "Flushes": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "LastFlush": 0, - "Name": "Events" - }, - "Manifests": { - "FlushIndex": -1, - "Flushes": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "LastFlush": 0, - "Name": "Manifests" - }, - "Series": { - "FlushIndex": 12, - "Flushes": [ - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "LastFlush": 2, - "Name": "Series" - }, - "ServiceChecks": { - "FlushIndex": 12, - "Flushes": [ - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "LastFlush": 1, - "Name": "ServiceChecks" - }, - "Sketches": { - "FlushIndex": -1, - "Flushes": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "LastFlush": 0, - "Name": "Sketches" - } - }, - "HostnameUpdate": 0, - "MetricTags": { - "Series": { - "Above100": 0, - "Above90": 0 - }, - "Sketches": { - "Above100": 0, - "Above90": 0 - } - }, - "NumberOfFlush": 13, - "OrchestratorManifests": 0, - "OrchestratorManifestsErrors": 0, - "OrchestratorMetadata": 0, - "OrchestratorMetadataErrors": 0, - "SeriesFlushErrors": 0, - "SeriesFlushed": 26, - "ServiceCheck": 0, - "ServiceCheckFlushErrors": 0, - "ServiceCheckFlushed": 13, - "SketchesFlushErrors": 0, - "SketchesFlushed": 0 - }, - "autoConfigStats": { - "ConfigErrors": {}, - "ResolveWarnings": {} - }, - "build_arch": "arm64", - "checkSchedulerStats": { - "LoaderErrors": {}, - "RunErrors": {} - }, - "complianceChecks": null, - "conf_file": "dev/dist/datadog.yaml", - "config": { - "confd_path": "/opt/datadog-agent/etc/conf.d", - "log_level": "info" - }, - "custommetrics": { - "Error": "temporary failure in apiserver, will retry later: try delay not elapsed yet" - }, - "dogstatsdStats": { - "UdpBytes": 0, - "UdpPacketReadingErrors": 0, - "UdpPackets": 0, - "UdsBytes": 0, - "UdsOriginDetectionErrors": 0, - "UdsPacketReadingErrors": 0, - "UdsPackets": 0 - }, - "endpointsInfos": { - "https://app.datadoghq.eu": [ - "72724" - ] - }, - "externalmetrics": {}, - "filterErrors": {}, - "flavor": "cluster_agent", - "forwarderStats": { - "APIKeyFailure": {}, - "APIKeyStatus": {}, - "FileStorage": { - "CurrentSizeInBytes": 0, - "DeserializeCount": 0, - "DeserializeErrorsCount": 0, - "DeserializeTransactionsCount": 0, - "FileSize": 0, - "FilesCount": 0, - "FilesRemovedCount": 0, - "PointsDroppedCount": 0, - "SerializeCount": 0, - "StartupReloadedRetryFilesCount": 0 - }, - "RemovalPolicy": { - "FilesFromUnknownDomainCount": 0, - "NewRemovalPolicyCount": 0, - "OutdatedFilesCount": 0, - "RegisteredDomainCount": 0 - }, - "TransactionContainer": { - "CurrentMemSizeInBytes": 0, - "ErrorsCount": 0, - "PointsDroppedCount": 0, - "TransactionsCount": 0, - "TransactionsDroppedCount": 0 - }, - "Transactions": { - "Cluster": 0, - "ClusterRole": 0, - "ClusterRoleBinding": 0, - "ConnectionEvents": { - "ConnectSuccess": 1, - "DNSSuccess": 1 - }, - "CronJob": 0, - "CustomResource": 0, - "CustomResourceDefinition": 0, - "DaemonSet": 0, - "Deployment": 0, - "Dropped": 0, - "DroppedByEndpoint": {}, - "Errors": 0, - "ErrorsByType": { - "ConnectionErrors": 0, - "DNSErrors": 0, - "SentRequestErrors": 0, - "TLSErrors": 0, - "WroteRequestErrors": 0 - }, - "HTTPErrors": 0, - "HTTPErrorsByCode": {}, - "HighPriorityQueueFull": 0, - "HorizontalPodAutoscaler": 0, - "Ingress": 0, - "InputBytesByEndpoint": { - "check_run_v1": 1672, - "series_v2": 2456 - }, - "InputCountByEndpoint": { - "check_run_v1": 13, - "series_v2": 13 - }, - "Job": 0, - "Namespace": 0, - "Node": 0, - "OrchestratorManifest": 0, - "PersistentVolume": 0, - "PersistentVolumeClaim": 0, - "Pod": 0, - "ReplicaSet": 0, - "Requeued": 0, - "RequeuedByEndpoint": {}, - "Retried": 0, - "RetriedByEndpoint": {}, - "RetryQueueSize": 0, - "Role": 0, - "RoleBinding": 0, - "Service": 0, - "ServiceAccount": 0, - "StatefulSet": 0, - "Success": 26, - "SuccessByEndpoint": { - "check_run_v1": 13, - "connections": 0, - "container": 0, - "events_v2": 0, - "host_metadata_v2": 0, - "intake": 0, - "orchestrator": 0, - "process": 0, - "rtcontainer": 0, - "rtprocess": 0, - "series_v1": 0, - "series_v2": 13, - "services_checks_v2": 0, - "sketches_v1": 0, - "sketches_v2": 0, - "validate_v1": 0 - }, - "SuccessBytesByEndpoint": { - "check_run_v1": 1672, - "series_v2": 2456 - }, - "VerticalPodAutoscaler": 0 - } - }, - "go_version": "go1.20.11", - "hostnameStats": { - "errors": { - "'hostname' configuration/environment": "hostname is empty", - "'hostname_file' configuration/environment": "'hostname_file' configuration is not enabled", - "aws": "not retrieving hostname from AWS: the host is not an ECS instance and other providers already retrieve non-default hostnames", - "azure": "azure_hostname_style is set to 'os'", - "container": "the agent is not containerized", - "fargate": "agent is not runnning on Fargate", - "fqdn": "'hostname_fqdn' configuration is not enabled", - "gce": "unable to retrieve hostname from GCE: GCE metadata API error: Get \"http://169.254.169.254/computeMetadata/v1/instance/hostname\": context deadline exceeded (Client.Timeout exceeded while awaiting headers)" - }, - "provider": "os" - }, - "inventories": {}, - "leaderelection": { - "error": "temporary failure in apiserver, will retry later: try delay not elapsed yet", - "status": "Failing" - }, - "metadata": { - "os": "darwin", - "agent-flavor": "cluster_agent", - "python": "n/a", - "systemStats": { - "cpuCores": 10, - "machine": "arm64", - "platform": "darwin", - "pythonV": "n/a", - "processor": "Apple M1 Max", - "macV": [ - "13.6.2", - [ - "", - "", - "" - ], - "arm64" - ], - "nixV": [ - "", - "", - "" - ], - "fbsdV": [ - "", - "", - "" - ], - "winV": [ - "", - "", - "" - ] - }, - "meta": { - "socket-hostname": "COMP-VQHPF4W6GY", - "timezones": [ - "CET" - ], - "socket-fqdn": "COMP-VQHPF4W6GY", - "ec2-hostname": "", - "hostname": "COMP-VQHPF4W6GY", - "host_aliases": [], - "instance-id": "" - }, - "host-tags": { - "system": [] - }, - "network": null, - "logs": { - "transport": "", - "auto_multi_line_detection_enabled": false - }, - "install-method": { - "tool": null, - "tool_version": "undefined", - "installer_version": null - }, - "proxy-info": { - "no-proxy-nonexact-match": false, - "proxy-behavior-changed": false, - "no-proxy-nonexact-match-explicitly-set": false - }, - "otlp": { - "enabled": false - } - }, - "ntpOffset": 0, - "pid": 73895, - "pyLoaderStats": null, - "pythonInit": null, - "runnerStats": { - "Checks": {}, - "Running": {}, - "Workers": { - "Count": 0, - "Instances": {} - } - }, - "time_nano": 1701186004251999000, - "version": "7.50.0-devel+git.813.61fc133" -} diff --git a/pkg/status/render/fixtures/cluster_agent_status.text b/pkg/status/render/fixtures/cluster_agent_status.text deleted file mode 100755 index a13e26583d7fef..00000000000000 --- a/pkg/status/render/fixtures/cluster_agent_status.text +++ /dev/null @@ -1,123 +0,0 @@ - -===================================================== -Datadog Cluster Agent (v7.50.0-devel+git.813.61fc133) -===================================================== - - Status date: 2023-11-28 15:40:04.251 UTC (1701186004251) - Agent start: 2023-11-28 15:36:36.319 UTC (1701185796319) - Pid: 73895 - Go Version: go1.20.11 - Build arch: arm64 - Agent flavor: cluster_agent - Log Level: info - - Paths - ===== - Config File: dev/dist/datadog.yaml - conf.d: /opt/datadog-agent/etc/conf.d - - Clocks - ====== - System time: 2023-11-28 15:40:04.251 UTC (1701186004251) - - Hostnames - ========= - hostname: COMP-VQHPF4W6GY - socket-fqdn: COMP-VQHPF4W6GY - socket-hostname: COMP-VQHPF4W6GY - hostname provider: os - unused hostname providers: - 'hostname' configuration/environment: hostname is empty - 'hostname_file' configuration/environment: 'hostname_file' configuration is not enabled - aws: not retrieving hostname from AWS: the host is not an ECS instance and other providers already retrieve non-default hostnames - azure: azure_hostname_style is set to 'os' - container: the agent is not containerized - fargate: agent is not runnning on Fargate - fqdn: 'hostname_fqdn' configuration is not enabled - gce: unable to retrieve hostname from GCE: GCE metadata API error: Get "http://169.254.169.254/computeMetadata/v1/instance/hostname": context deadline exceeded (Client.Timeout exceeded while awaiting headers) - - Metadata - ======== - -Leader Election -=============== - Leader Election Status: Failing - Error: temporary failure in apiserver, will retry later: try delay not elapsed yet - - -Custom Metrics Server -===================== - Error: temporary failure in apiserver, will retry later: try delay not elapsed yet - -Admission Controller -==================== - Error: temporary failure in apiserver, will retry later: try delay not elapsed yet - - -========= -Collector -========= - - Running Checks - ============== - No checks have run yet - -========= -Forwarder -========= - - Transactions - ============ - Cluster: 0 - ClusterRole: 0 - ClusterRoleBinding: 0 - CronJob: 0 - CustomResource: 0 - CustomResourceDefinition: 0 - DaemonSet: 0 - Deployment: 0 - Dropped: 0 - HighPriorityQueueFull: 0 - HorizontalPodAutoscaler: 0 - Ingress: 0 - Job: 0 - Namespace: 0 - Node: 0 - OrchestratorManifest: 0 - PersistentVolume: 0 - PersistentVolumeClaim: 0 - Pod: 0 - ReplicaSet: 0 - Requeued: 0 - Retried: 0 - RetryQueueSize: 0 - Role: 0 - RoleBinding: 0 - Service: 0 - ServiceAccount: 0 - StatefulSet: 0 - VerticalPodAutoscaler: 0 - - Transaction Successes - ===================== - Total number: 26 - Successes By Endpoint: - check_run_v1: 13 - series_v2: 13 - - On-disk storage - =============== - On-disk storage is disabled. Configure `forwarder_storage_max_size_in_bytes` to enable it. - -========== -Endpoints -========== - https://app.datadoghq.eu - API Key ending with: - - 72724 - -========== -Logs Agent -========== - - - diff --git a/pkg/status/render/fixtures/process_agent_status.json b/pkg/status/render/fixtures/process_agent_status.json deleted file mode 100644 index 7d256b9b4430f8..00000000000000 --- a/pkg/status/render/fixtures/process_agent_status.json +++ /dev/null @@ -1,129 +0,0 @@ -{ - "processAgentStatus": { - "core": { - "build_arch": "arm64", - "config": { - "log_level": "info" - }, - "go_version": "go1.20.10", - "metadata": { - "agent-flavor": "process_agent", - "container-meta": { - "docker_swarm": "inactive", - "docker_version": "24.0.6" - }, - "host-tags": { - "system": [] - }, - "install-method": { - "installer_version": "docker", - "tool": "docker", - "tool_version": "docker" - }, - "logs": { - "auto_multi_line_detection_enabled": false, - "transport": "" - }, - "meta": { - "ec2-hostname": "", - "host_aliases": [], - "hostname": "docker-desktop", - "instance-id": "", - "socket-fqdn": "52254030ab59", - "socket-hostname": "52254030ab59", - "timezones": [ - "UTC" - ] - }, - "network": null, - "os": "linux", - "otlp": { - "enabled": false - }, - "proxy-info": { - "no-proxy-nonexact-match": false, - "no-proxy-nonexact-match-explicitly-set": false, - "proxy-behavior-changed": false - }, - "python": "n/a", - "systemStats": { - "cpuCores": 1, - "fbsdV": [ - "", - "", - "" - ], - "macV": [ - "", - "", - "" - ], - "machine": "arm64", - "nixV": [ - "ubuntu", - "23.04", - "" - ], - "platform": "linux", - "processor": "", - "pythonV": "n/a", - "winV": [ - "", - "", - "" - ] - } - }, - "version": "7.49.1" - }, - "date": 1701254547319371000, - "expvars": { - "connections_queue_bytes": 0, - "connections_queue_size": 0, - "container_count": 1, - "container_id": "52254030ab598053a03b9bd474ac11d72486f640def81fc7be38ed3a5e864df3", - "docker_socket": "/var/run/docker.sock", - "drop_check_payloads": [], - "enabled_checks": [ - "rtcontainer", - "container", - "process_discovery" - ], - "endpoints": { - "https://process.datadoghq.eu": [ - "72724" - ] - }, - "event_queue_bytes": 0, - "event_queue_size": 0, - "language_detection_enabled": false, - "last_collect_time": "2023-11-29 10:42:25", - "log_file": "", - "memstats": { - "alloc": 14060976 - }, - "pid": 23863, - "pod_queue_bytes": 0, - "pod_queue_size": 0, - "process_count": 0, - "process_queue_bytes": 0, - "process_queue_size": 0, - "proxy_url": "", - "rtprocess_queue_bytes": 0, - "rtprocess_queue_size": 0, - "system_probe_process_module_enabled": false, - "uptime": 1494, - "uptime_nano": 1701253052422544600, - "version": { - "BuildDate": "", - "GitBranch": "", - "GitCommit": "", - "GoVersion": "", - "Version": "" - }, - "workloadmeta_extractor_cache_size": 0, - "workloadmeta_extractor_diffs_dropped": 0, - "workloadmeta_extractor_stale_diffs": 0 - } - } -} diff --git a/pkg/status/render/fixtures/process_agent_status.text b/pkg/status/render/fixtures/process_agent_status.text deleted file mode 100755 index 583358471eab37..00000000000000 --- a/pkg/status/render/fixtures/process_agent_status.text +++ /dev/null @@ -1,52 +0,0 @@ - -============= -Process Agent -============= - - Version: 7.49.1 - Status date: 2023-11-29 10:42:27.319 UTC (1701254547319) - Process Agent Start: 2023-11-29 10:17:32.422 UTC (1701253052422) - Pid: 23863 - Go Version: go1.20.10 - Build arch: arm64 - Log Level: info - Enabled Checks: [rtcontainer container process_discovery] - Allocated Memory: 14,060,976 bytes - Hostname: docker-desktop - System Probe Process Module Status: Not running - Process Language Detection Enabled: False - - ================= - Process Endpoints - ================= - https://process.datadoghq.eu - API Key ending with: - - 72724 - - ========= - Collector - ========= - Last collection time: 2023-11-29 10:42:25 - Docker socket: /var/run/docker.sock - Number of processes: 0 - Number of containers: 1 - Process Queue length: 0 - RTProcess Queue length: 0 - Connections Queue length: 0 - Event Queue length: 0 - Pod Queue length: 0 - Process Bytes enqueued: 0 - RTProcess Bytes enqueued: 0 - Connections Bytes enqueued: 0 - Event Bytes enqueued: 0 - Pod Bytes enqueued: 0 - Drop Check Payloads: [] - - ========== - Extractors - ========== - - Workloadmeta - ============ - Cache size: 0 - Stale diffs discarded: 0 - Diffs dropped: 0 diff --git a/pkg/status/render/fixtures/security_agent_status.json b/pkg/status/render/fixtures/security_agent_status.json deleted file mode 100644 index d8e0a51be702a1..00000000000000 --- a/pkg/status/render/fixtures/security_agent_status.json +++ /dev/null @@ -1,913 +0,0 @@ -{ - "JMXStartupError": { - "LastError": "", - "Timestamp": 0 - }, - "JMXStatus": { - "info": null, - "checks": { - "initialized_checks": null, - "failed_checks": null - }, - "timestamp": 0, - "errors": 0 - }, - "NoProxyChanged": [], - "NoProxyIgnoredWarningMap": [], - "NoProxyUsedInFuture": [], - "TransportWarnings": false, - "adEnabledFeatures": { - "docker": {} - }, - "agent_metadata": {}, - "agent_start_nano": 1701253052392961884, - "aggregatorStats": { - "ChecksHistogramBucketMetricSample": 0, - "ChecksMetricSample": 0, - "DogstatsdContexts": 0, - "DogstatsdContextsByMtype": { - "Count": 0, - "Counter": 0, - "Distribution": 0, - "Gauge": 0, - "Histogram": 0, - "Historate": 0, - "MonotonicCount": 0, - "Rate": 0, - "Set": 0 - }, - "DogstatsdMetricSample": 1, - "Event": 1, - "EventPlatformEvents": {}, - "EventPlatformEventsErrors": {}, - "EventsFlushErrors": 0, - "EventsFlushed": 1, - "Flush": { - "ChecksMetricSampleFlushTime": { - "FlushIndex": 2, - "Flushes": [ - 16788292, - 1413375, - 7895666, - 3688167, - 16294166, - 1701875, - 1876083, - 3225208, - 496750, - 6249583, - 1440334, - 11195917, - 1185875, - 1397916, - 323500, - 268083, - 5228292, - 3378500, - 12369292, - 8481500, - 4424875, - 225959, - 254208, - 1949792, - 3177625, - 14756875, - 1911209, - 554875, - 299833, - 743208, - 5745083, - 8526000 - ], - "LastFlush": 7895666, - "Name": "ChecksMetricSampleFlushTime" - }, - "EventFlushTime": { - "FlushIndex": 0, - "Flushes": [ - 25612834, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "LastFlush": 25612834, - "Name": "EventFlushTime" - }, - "MainFlushTime": { - "FlushIndex": 2, - "Flushes": [ - 16800625, - 1419417, - 7902958, - 3772542, - 16330083, - 1708667, - 1886833, - 3233291, - 500125, - 6261083, - 1451209, - 11205125, - 1190875, - 1404375, - 326208, - 272041, - 5237375, - 3387417, - 12374625, - 8489875, - 4432375, - 228500, - 256291, - 1956625, - 3186084, - 14763833, - 1918084, - 561375, - 302625, - 748875, - 5869291, - 8536917 - ], - "LastFlush": 7902958, - "Name": "MainFlushTime" - }, - "ManifestsTime": { - "FlushIndex": -1, - "Flushes": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "LastFlush": 0, - "Name": "ManifestsTime" - }, - "MetricSketchFlushTime": { - "FlushIndex": -1, - "Flushes": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "LastFlush": 0, - "Name": "MetricSketchFlushTime" - }, - "ServiceCheckFlushTime": { - "FlushIndex": 2, - "Flushes": [ - 16755959, - 716125, - 1058750, - 3396125, - 14984125, - 1017458, - 1895166, - 1522583, - 489291, - 5937542, - 1782250, - 12991542, - 1182167, - 660208, - 329416, - 258583, - 9008542, - 721042, - 4216334, - 5173959, - 2696000, - 235709, - 262208, - 1185875, - 723959, - 14414875, - 959334, - 531292, - 314541, - 771208, - 900041, - 3754917 - ], - "LastFlush": 1058750, - "Name": "ServiceCheckFlushTime" - } - }, - "FlushCount": { - "Events": { - "FlushIndex": 0, - "Flushes": [ - 1, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "LastFlush": 1, - "Name": "Events" - }, - "Manifests": { - "FlushIndex": -1, - "Flushes": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "LastFlush": 0, - "Name": "Manifests" - }, - "Series": { - "FlushIndex": 2, - "Flushes": [ - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 2 - ], - "LastFlush": 2, - "Name": "Series" - }, - "ServiceChecks": { - "FlushIndex": 2, - "Flushes": [ - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1 - ], - "LastFlush": 1, - "Name": "ServiceChecks" - }, - "Sketches": { - "FlushIndex": -1, - "Flushes": [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "LastFlush": 0, - "Name": "Sketches" - } - }, - "HostnameUpdate": 0, - "MetricTags": { - "Series": { - "Above100": 0, - "Above90": 0 - }, - "Sketches": { - "Above100": 0, - "Above90": 0 - } - }, - "NumberOfFlush": 99, - "OrchestratorManifests": 0, - "OrchestratorManifestsErrors": 0, - "OrchestratorMetadata": 0, - "OrchestratorMetadataErrors": 0, - "SeriesFlushErrors": 0, - "SeriesFlushed": 199, - "ServiceCheck": 0, - "ServiceCheckFlushErrors": 0, - "ServiceCheckFlushed": 99, - "SketchesFlushErrors": 0, - "SketchesFlushed": 0 - }, - "autoConfigStats": { - "ConfigErrors": {}, - "ResolveWarnings": {} - }, - "build_arch": "arm64", - "checkSchedulerStats": { - "LoaderErrors": {}, - "RunErrors": {} - }, - "complianceChecks": null, - "conf_file": "/etc/datadog-agent/datadog.yaml", - "config": { - "additional_checksd": "/etc/datadog-agent/checks.d", - "confd_path": "/etc/datadog-agent/conf.d", - "fips_enabled": "false", - "fips_local_address": "localhost", - "fips_port_range_start": "9803", - "log_file": "", - "log_level": "info" - }, - "endpointsInfos": { - "https://app.datadoghq.eu": [ - "72724" - ] - }, - "filterErrors": {}, - "flavor": "security_agent", - "forwarderStats": { - "APIKeyFailure": {}, - "APIKeyStatus": { - "API key ending with 72724": "API Key valid" - }, - "FileStorage": { - "CurrentSizeInBytes": 0, - "DeserializeCount": 0, - "DeserializeErrorsCount": 0, - "DeserializeTransactionsCount": 0, - "FileSize": 0, - "FilesCount": 0, - "FilesRemovedCount": 0, - "PointsDroppedCount": 0, - "SerializeCount": 0, - "StartupReloadedRetryFilesCount": 0 - }, - "RemovalPolicy": { - "FilesFromUnknownDomainCount": 0, - "NewRemovalPolicyCount": 0, - "OutdatedFilesCount": 0, - "RegisteredDomainCount": 0 - }, - "TransactionContainer": { - "CurrentMemSizeInBytes": 0, - "ErrorsCount": 0, - "PointsDroppedCount": 0, - "TransactionsCount": 0, - "TransactionsDroppedCount": 0 - }, - "Transactions": { - "Cluster": 0, - "ClusterRole": 0, - "ClusterRoleBinding": 0, - "ConnectionEvents": { - "ConnectSuccess": 1, - "DNSSuccess": 1 - }, - "CronJob": 0, - "CustomResource": 0, - "CustomResourceDefinition": 0, - "DaemonSet": 0, - "Deployment": 0, - "Dropped": 0, - "DroppedByEndpoint": {}, - "Errors": 0, - "ErrorsByType": { - "ConnectionErrors": 0, - "DNSErrors": 0, - "SentRequestErrors": 0, - "TLSErrors": 0, - "WroteRequestErrors": 0 - }, - "HTTPErrors": 0, - "HTTPErrorsByCode": {}, - "HighPriorityQueueFull": 0, - "HorizontalPodAutoscaler": 0, - "Ingress": 0, - "InputBytesByEndpoint": { - "check_run_v1": 11727, - "intake": 188, - "series_v2": 16457 - }, - "InputCountByEndpoint": { - "check_run_v1": 99, - "intake": 1, - "series_v2": 99 - }, - "Job": 0, - "Namespace": 0, - "Node": 0, - "OrchestratorManifest": 0, - "PersistentVolume": 0, - "PersistentVolumeClaim": 0, - "Pod": 0, - "ReplicaSet": 0, - "Requeued": 0, - "RequeuedByEndpoint": {}, - "Retried": 0, - "RetriedByEndpoint": {}, - "RetryQueueSize": 0, - "Role": 0, - "RoleBinding": 0, - "Service": 0, - "ServiceAccount": 0, - "StatefulSet": 0, - "Success": 199, - "SuccessByEndpoint": { - "check_run_v1": 99, - "connections": 0, - "container": 0, - "events_v2": 0, - "host_metadata_v2": 0, - "intake": 1, - "orchestrator": 0, - "process": 0, - "rtcontainer": 0, - "rtprocess": 0, - "series_v1": 0, - "series_v2": 99, - "services_checks_v2": 0, - "sketches_v1": 0, - "sketches_v2": 0, - "validate_v1": 0 - }, - "SuccessBytesByEndpoint": { - "check_run_v1": 11727, - "intake": 188, - "series_v2": 16457 - }, - "VerticalPodAutoscaler": 0 - } - }, - "go_version": "go1.20.10", - "hostTags": [], - "hostinfo": { - "hostname": "52254030ab59", - "uptime": 2436, - "bootTime": 1701252098, - "procs": 210, - "os": "linux", - "platform": "ubuntu", - "platformFamily": "debian", - "platformVersion": "23.04", - "kernelVersion": "6.4.16-linuxkit", - "kernelArch": "aarch64", - "virtualizationSystem": "docker", - "virtualizationRole": "guest", - "hostId": "1714f7df-2eef-4fcc-9477-476137cc9918" - }, - "hostnameStats": { - "errors": { - "'hostname' configuration/environment": "hostname is empty", - "'hostname_file' configuration/environment": "'hostname_file' configuration is not enabled", - "aws": "not retrieving hostname from AWS: the host is not an ECS instance and other providers already retrieve non-default hostnames", - "azure": "azure_hostname_style is set to 'os'", - "fargate": "agent is not runnning on Fargate", - "fqdn": "FQDN hostname is not usable", - "gce": "unable to retrieve hostname from GCE: GCE metadata API error: Get \"http://169.254.169.254/computeMetadata/v1/instance/hostname\": dial tcp 169.254.169.254:80: connect: connection refused", - "os": "OS hostname is not usable" - }, - "provider": "container" - }, - "inventories": {}, - "logsStats": { - "is_running": false, - "endpoints": null, - "metrics": null, - "process_file_stats": null, - "integrations": null, - "tailers": null, - "errors": null, - "warnings": null, - "use_http": false - }, - "metadata": { - "os": "linux", - "agent-flavor": "security_agent", - "python": "n/a", - "systemStats": { - "cpuCores": 1, - "machine": "arm64", - "platform": "linux", - "pythonV": "n/a", - "processor": "", - "macV": [ - "", - "", - "" - ], - "nixV": [ - "ubuntu", - "23.04", - "" - ], - "fbsdV": [ - "", - "", - "" - ], - "winV": [ - "", - "", - "" - ] - }, - "meta": { - "socket-hostname": "52254030ab59", - "timezones": [ - "UTC" - ], - "socket-fqdn": "52254030ab59", - "ec2-hostname": "", - "hostname": "docker-desktop", - "host_aliases": [], - "instance-id": "" - }, - "host-tags": { - "system": [] - }, - "container-meta": { - "docker_swarm": "inactive", - "docker_version": "24.0.6" - }, - "network": null, - "logs": { - "transport": "", - "auto_multi_line_detection_enabled": false - }, - "install-method": { - "tool": "docker", - "tool_version": "docker", - "installer_version": "docker" - }, - "proxy-info": { - "no-proxy-nonexact-match": false, - "proxy-behavior-changed": false, - "no-proxy-nonexact-match-explicitly-set": false - }, - "otlp": { - "enabled": false - } - }, - "otlp": {}, - "pid": 23865, - "processAgentStatus": { - "core": { - "build_arch": "arm64", - "config": { - "log_level": "info" - }, - "go_version": "go1.20.10", - "metadata": { - "agent-flavor": "process_agent", - "container-meta": { - "docker_swarm": "inactive", - "docker_version": "24.0.6" - }, - "host-tags": { - "system": [] - }, - "install-method": { - "installer_version": "docker", - "tool": "docker", - "tool_version": "docker" - }, - "logs": { - "auto_multi_line_detection_enabled": false, - "transport": "" - }, - "meta": { - "ec2-hostname": "", - "host_aliases": [], - "hostname": "docker-desktop", - "instance-id": "", - "socket-fqdn": "52254030ab59", - "socket-hostname": "52254030ab59", - "timezones": [ - "UTC" - ] - }, - "network": null, - "os": "linux", - "otlp": { - "enabled": false - }, - "proxy-info": { - "no-proxy-nonexact-match": false, - "no-proxy-nonexact-match-explicitly-set": false, - "proxy-behavior-changed": false - }, - "python": "n/a", - "systemStats": { - "cpuCores": 1, - "fbsdV": [ - "", - "", - "" - ], - "macV": [ - "", - "", - "" - ], - "machine": "arm64", - "nixV": [ - "ubuntu", - "23.04", - "" - ], - "platform": "linux", - "processor": "", - "pythonV": "n/a", - "winV": [ - "", - "", - "" - ] - } - }, - "version": "7.49.1" - }, - "date": 1701254547319371000, - "expvars": { - "connections_queue_bytes": 0, - "connections_queue_size": 0, - "container_count": 1, - "container_id": "52254030ab598053a03b9bd474ac11d72486f640def81fc7be38ed3a5e864df3", - "docker_socket": "/var/run/docker.sock", - "drop_check_payloads": [], - "enabled_checks": [ - "rtcontainer", - "container", - "process_discovery" - ], - "endpoints": { - "https://process.datadoghq.eu": [ - "72724" - ] - }, - "event_queue_bytes": 0, - "event_queue_size": 0, - "language_detection_enabled": false, - "last_collect_time": "2023-11-29 10:42:25", - "log_file": "", - "memstats": { - "alloc": 14060976 - }, - "pid": 23863, - "pod_queue_bytes": 0, - "pod_queue_size": 0, - "process_count": 0, - "process_queue_bytes": 0, - "process_queue_size": 0, - "proxy_url": "", - "rtprocess_queue_bytes": 0, - "rtprocess_queue_size": 0, - "system_probe_process_module_enabled": false, - "uptime": 1494, - "uptime_nano": 1701253052422544600, - "version": { - "BuildDate": "", - "GitBranch": "", - "GitCommit": "", - "GoVersion": "", - "Version": "" - }, - "workloadmeta_extractor_cache_size": 0, - "workloadmeta_extractor_diffs_dropped": 0, - "workloadmeta_extractor_stale_diffs": 0 - } - }, - "pyLoaderStats": null, - "pythonInit": null, - "python_version": "n/a", - "remoteConfiguration": {}, - "runnerStats": { - "Checks": {}, - "Running": {}, - "Workers": { - "Count": 0, - "Instances": {} - } - }, - "runtimeSecurityStatus": { - "activityDumpReceived": 0, - "connected": false, - "endpoints": [ - "Reliable: Sending compressed logs in HTTPS to runtime-security-http-intake.logs.datadoghq.eu on port 443" - ], - "eventReceived": 0 - }, - "snmpTrapsStats": { - "metrics": { - "Packets": 0, - "PacketsUnknownCommunityString": 0 - } - }, - "systemProbeStats": { - "Errors": "System Probe is not supported on this system" - }, - "time_nano": 1701254547317708590, - "verbose": false, - "version": "7.49.1" -} diff --git a/pkg/status/render/fixtures/security_agent_status.text b/pkg/status/render/fixtures/security_agent_status.text deleted file mode 100755 index 89b7eedc29df3c..00000000000000 --- a/pkg/status/render/fixtures/security_agent_status.text +++ /dev/null @@ -1,83 +0,0 @@ - -================================ -Datadog Security Agent (v7.49.1) -================================ - - Status date: 2023-11-29 10:42:27.317 UTC (1701254547317) - Agent start: 2023-11-29 10:17:32.392 UTC (1701253052392) - Pid: 23865 - Go Version: go1.20.10 - Python Version: n/a - Build arch: arm64 - Agent flavor: security_agent - Log Level: info - - Paths - ===== - Config File: /etc/datadog-agent/datadog.yaml - conf.d: /etc/datadog-agent/conf.d - checks.d: /etc/datadog-agent/checks.d - - Clocks - ====== - System time: 2023-11-29 10:42:27.317 UTC (1701254547317) - - Host Info - ========= - bootTime: 2023-11-29 10:01:38 UTC (1701252098000) - hostId: 1714f7df-2eef-4fcc-9477-476137cc9918 - kernelArch: aarch64 - kernelVersion: 6.4.16-linuxkit - os: linux - platform: ubuntu - platformFamily: debian - platformVersion: 23.04 - procs: 210 - uptime: 40m36s - virtualizationRole: guest - virtualizationSystem: docker - - Hostnames - ========= - hostname: docker-desktop - socket-fqdn: 52254030ab59 - socket-hostname: 52254030ab59 - hostname provider: container - unused hostname providers: - 'hostname' configuration/environment: hostname is empty - 'hostname_file' configuration/environment: 'hostname_file' configuration is not enabled - aws: not retrieving hostname from AWS: the host is not an ECS instance and other providers already retrieve non-default hostnames - azure: azure_hostname_style is set to 'os' - fargate: agent is not runnning on Fargate - fqdn: FQDN hostname is not usable - gce: unable to retrieve hostname from GCE: GCE metadata API error: Get "http://169.254.169.254/computeMetadata/v1/instance/hostname": dial tcp 169.254.169.254:80: connect: connection refused - os: OS hostname is not usable - - Metadata - ======== - -================ -Runtime Security -================ - - Reliable: Sending compressed logs in HTTPS to runtime-security-http-intake.logs.datadoghq.eu on port 443 - Connected: false - Events received: 0 - - Self Tests - ========== - - Last execution: - - Succeeded: none - - Failed: none - - Policies - ======== - -========== -Compliance -========== - - Not enabled diff --git a/pkg/status/render/render.go b/pkg/status/render/render.go index 86f2c432c291d5..e85e5928046a3e 100644 --- a/pkg/status/render/render.go +++ b/pkg/status/render/render.go @@ -15,112 +15,10 @@ import ( "path" "text/template" - htmlTemplate "html/template" - "github.com/DataDog/datadog-agent/comp/core/status" - "github.com/DataDog/datadog-agent/pkg/config" ) var fmap = status.TextFmap() -var htmlfmap = status.HTMLFmap() - -// FormatStatus takes a json bytestring and prints out the formatted statuspage -func FormatStatus(data []byte) (string, error) { - stats, renderError, err := unmarshalStatus(data) - if renderError != "" || err != nil { - return renderError, err - } - title := fmt.Sprintf("Agent (v%s)", stats["version"]) - stats["title"] = title - - var b = new(bytes.Buffer) - headerFunc := func() error { return ParseTemplate(b, "/header.tmpl", stats) } - checkStatsFunc := func() error { - return ParseTemplate(b, "/collector.tmpl", stats) - } - jmxFetchFunc := func() error { return ParseTemplate(b, "/jmxfetch.tmpl", stats) } - forwarderFunc := func() error { return ParseTemplate(b, "/forwarder.tmpl", stats) } - endpointsFunc := func() error { return ParseTemplate(b, "/endpoints.tmpl", stats) } - logsAgentFunc := func() error { return ParseTemplate(b, "/logsagent.tmpl", stats) } - systemProbeFunc := func() error { return ParseTemplate(b, "/systemprobe.tmpl", stats) } - processAgentFunc := func() error { return ParseTemplate(b, "/process-agent.tmpl", stats) } - traceAgentFunc := func() error { return ParseTemplate(b, "/trace-agent.tmpl", stats) } - aggregatorFunc := func() error { return ParseTemplate(b, "/aggregator.tmpl", stats) } - dogstatsdFunc := func() error { return ParseTemplate(b, "/dogstatsd.tmpl", stats) } - clusterAgentFunc := func() error { return ParseTemplate(b, "/clusteragent.tmpl", stats) } - snmpTrapFunc := func() error { return ParseTemplate(b, "/snmp-traps.tmpl", stats) } - netflowFunc := func() error { return ParseTemplate(b, "/netflow.tmpl", stats) } - autodiscoveryFunc := func() error { return ParseTemplate(b, "/autodiscovery.tmpl", stats) } - remoteConfigFunc := func() error { return ParseTemplate(b, "/remoteconfig.tmpl", stats) } - otlpFunc := func() error { return ParseTemplate(b, "/otlp.tmpl", stats) } - - var renderFuncs []func() error - if config.IsCLCRunner() { - renderFuncs = []func() error{headerFunc, checkStatsFunc, aggregatorFunc, endpointsFunc, clusterAgentFunc, - autodiscoveryFunc} - } else { - renderFuncs = []func() error{headerFunc, checkStatsFunc, jmxFetchFunc, forwarderFunc, endpointsFunc, - logsAgentFunc, systemProbeFunc, processAgentFunc, traceAgentFunc, aggregatorFunc, dogstatsdFunc, - clusterAgentFunc, snmpTrapFunc, netflowFunc, autodiscoveryFunc, remoteConfigFunc, otlpFunc} - } - var errs []error - for _, f := range renderFuncs { - if err := f(); err != nil { - errs = append(errs, err) - } - } - if err := renderErrors(b, errs); err != nil { - fmt.Println(err) - } - - return b.String(), nil -} - -// FormatDCAStatus takes a json bytestring and prints out the formatted statuspage -func FormatDCAStatus(data []byte) (string, error) { - stats, renderError, err := unmarshalStatus(data) - if renderError != "" || err != nil { - return renderError, err - } - - // We nil these keys because we do not want to display that information in the collector template - stats["pyLoaderStats"] = nil - stats["pythonInit"] = nil - stats["inventories"] = nil - - title := fmt.Sprintf("Datadog Cluster Agent (v%s)", stats["version"]) - stats["title"] = title - - var b = new(bytes.Buffer) - var errs []error - if err := ParseTemplate(b, "/header.tmpl", stats); err != nil { - errs = append(errs, err) - } - if err := ParseTemplate(b, "/collector.tmpl", stats); err != nil { - errs = append(errs, err) - } - if err := ParseTemplate(b, "/forwarder.tmpl", stats); err != nil { - errs = append(errs, err) - } - if err := ParseTemplate(b, "/endpoints.tmpl", stats); err != nil { - errs = append(errs, err) - } - if err := ParseTemplate(b, "/logsagent.tmpl", stats); err != nil { - errs = append(errs, err) - } - if err := ParseTemplate(b, "/autodiscovery.tmpl", stats); err != nil { - errs = append(errs, err) - } - - if err := ParseTemplate(b, "/orchestrator.tmpl", stats); err != nil { - errs = append(errs, err) - } - if err := renderErrors(b, errs); err != nil { - fmt.Println(err) - } - - return b.String(), nil -} // FormatHPAStatus takes a json bytestring and prints out the formatted statuspage func FormatHPAStatus(data []byte) (string, error) { @@ -139,52 +37,6 @@ func FormatHPAStatus(data []byte) (string, error) { return b.String(), nil } -// FormatSecurityAgentStatus takes a json bytestring and prints out the formatted status for security agent -func FormatSecurityAgentStatus(data []byte) (string, error) { - stats, renderError, err := unmarshalStatus(data) - if renderError != "" || err != nil { - return renderError, err - } - - title := fmt.Sprintf("Datadog Security Agent (v%s)", stats["version"]) - stats["title"] = title - - var b = new(bytes.Buffer) - var errs []error - if err := ParseTemplate(b, "/header.tmpl", stats); err != nil { - errs = append(errs, err) - } - if err := ParseTemplate(b, "/runtimesecurity.tmpl", stats); err != nil { - errs = append(errs, err) - } - if err := ParseTemplate(b, "/compliance.tmpl", stats); err != nil { - errs = append(errs, err) - } - if err := renderErrors(b, errs); err != nil { - fmt.Println(err) - } - - return b.String(), nil -} - -// FormatProcessAgentStatus takes a json bytestring and prints out the formatted status for process-agent -func FormatProcessAgentStatus(data []byte) (string, error) { - stats, renderError, err := unmarshalStatus(data) - if renderError != "" || err != nil { - return renderError, err - } - var b = new(bytes.Buffer) - var errs []error - if err := ParseTemplate(b, "/process-agent.tmpl", stats); err != nil { - errs = append(errs, err) - } - if err := renderErrors(b, errs); err != nil { - fmt.Println(err) - } - - return b.String(), nil -} - // FormatMetadataMapCLI builds the rendering in the metadataMapper template. func FormatMetadataMapCLI(data []byte) (string, error) { stats, renderError, err := unmarshalStatus(data) @@ -202,25 +54,6 @@ func FormatMetadataMapCLI(data []byte) (string, error) { return b.String(), nil } -// FormatCheckStats takes a json bytestring and prints out the formatted collector template. -func FormatCheckStats(data []byte) (string, error) { - stats, renderError, err := unmarshalStatus(data) - if renderError != "" || err != nil { - return renderError, err - } - - var b = new(bytes.Buffer) - var errs []error - if err := ParseTemplate(b, "/collector.tmpl", stats); err != nil { - errs = append(errs, err) - } - if err := renderErrors(b, errs); err != nil { - return "", err - } - - return b.String(), nil -} - //go:embed templates var templatesFS embed.FS @@ -237,19 +70,6 @@ func ParseTemplate(w io.Writer, templateName string, stats interface{}) error { return t.Execute(w, stats) } -// ParseHTMLTemplate the HTML template with the data provided -func ParseHTMLTemplate(w io.Writer, templateName string, stats interface{}) error { - tmpl, tmplErr := templatesFS.ReadFile(path.Join("templates", templateName)) - if tmplErr != nil { - return tmplErr - } - t, err := htmlTemplate.New(templateName).Funcs(htmlfmap).Parse(string(tmpl)) - if err != nil { - return err - } - return t.Execute(w, stats) -} - func renderErrors(w io.Writer, errs []error) error { if len(errs) > 0 { return ParseTemplate(w, "/rendererrors.tmpl", errs) diff --git a/pkg/status/render/render_test.go b/pkg/status/render/render_test.go deleted file mode 100644 index 1de9262e3ad35a..00000000000000 --- a/pkg/status/render/render_test.go +++ /dev/null @@ -1,89 +0,0 @@ -// Unless explicitly stated otherwise all files in this repository are licensed -// under the Apache License Version 2.0. -// This product includes software developed at Datadog (https://www.datadoghq.com/). -// Copyright 2021-present Datadog, Inc. - -package render - -import ( - "fmt" - "os" - "strings" - "testing" - - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" -) - -func TestFormat(t *testing.T) { - originalTZ := os.Getenv("TZ") - os.Setenv("TZ", "UTC") - defer func() { - os.Setenv("TZ", originalTZ) - }() - - const statusRenderErrors = "Status render errors" - - tests := []struct { - name string - formatFunction func([]byte) (string, error) - jsonFile string - resultFile string - }{ - { - name: "Core status", - formatFunction: FormatStatus, - jsonFile: "fixtures/agent_status.json", - resultFile: "fixtures/agent_status.text", - }, - { - name: "Cluster Agent Status", - formatFunction: FormatDCAStatus, - jsonFile: "fixtures/cluster_agent_status.json", - resultFile: "fixtures/cluster_agent_status.text", - }, - { - name: "Security Agent Status", - formatFunction: FormatSecurityAgentStatus, - jsonFile: "fixtures/security_agent_status.json", - resultFile: "fixtures/security_agent_status.text", - }, - { - name: "Process Agent Status", - formatFunction: FormatProcessAgentStatus, - jsonFile: "fixtures/process_agent_status.json", - resultFile: "fixtures/process_agent_status.text", - }, - { - name: "Check Stats", - formatFunction: FormatCheckStats, - jsonFile: "fixtures/check_stats.json", - resultFile: "fixtures/check_stats.text", - }, - } - - for _, tt := range tests { - jsonBytes, err := os.ReadFile(tt.jsonFile) - require.NoError(t, err) - expectedOutput, err := os.ReadFile(tt.resultFile) - require.NoError(t, err) - - t.Run(fmt.Sprintf("%s: render errors", tt.name), func(t *testing.T) { - output, err := tt.formatFunction([]byte{}) - require.NoError(t, err) - assert.Contains(t, output, statusRenderErrors) - }) - - t.Run(fmt.Sprintf("%s: no render errors", tt.name), func(t *testing.T) { - output, err := tt.formatFunction(jsonBytes) - require.NoError(t, err) - - // We replace windows line break by linux so the tests pass on every OS - result := strings.Replace(string(expectedOutput), "\r\n", "\n", -1) - output = strings.Replace(output, "\r\n", "\n", -1) - - assert.Equal(t, output, result) - assert.NotContains(t, output, statusRenderErrors) - }) - } -} diff --git a/pkg/status/render/templates/aggregator.tmpl b/pkg/status/render/templates/aggregator.tmpl deleted file mode 100644 index d08389e8647bb5..00000000000000 --- a/pkg/status/render/templates/aggregator.tmpl +++ /dev/null @@ -1,59 +0,0 @@ -{{/* -NOTE: Changes made to this template should be reflected on the following templates, if applicable: -* cmd/agent/gui/views/templates/generalStatus.tmpl -*/}} -========== -Aggregator -========== -{{- with .aggregatorStats }} -{{- if .ChecksMetricSample }} - Checks Metric Sample: {{humanize .ChecksMetricSample}} -{{- end }} -{{- if .DogstatsdMetricSample}} - Dogstatsd Metric Sample: {{humanize .DogstatsdMetricSample}} -{{- end }} -{{- if .Event}} - Event: {{humanize .Event}} -{{- end }} -{{- if .EventsFlushed}} - Events Flushed: {{humanize .EventsFlushed}} -{{- end }} -{{- if .EventsFlushErrors}} - Events Flush Errors: {{humanize .EventsFlushErrors}} -{{- end }} -{{- if .NumberOfFlush}} - Number Of Flushes: {{humanize .NumberOfFlush}} -{{- end }} -{{- if .SeriesFlushed}} - Series Flushed: {{humanize .SeriesFlushed}} -{{- end }} -{{- if .SeriesFlushErrors}} - Series Flush Errors: {{humanize .SeriesFlushErrors}} -{{- end }} -{{- if .ServiceCheck}} - Service Check: {{humanize .ServiceCheck}} -{{- end }} -{{- if .ServiceCheckFlushed}} - Service Checks Flushed: {{humanize .ServiceCheckFlushed}} -{{- end }} -{{- if .ServiceCheckFlushErrors}} - Service Checks Flush Errors: {{humanize .ServiceCheckFlushErrors}} -{{- end }} -{{- if .SketchesFlushed}} - Sketches Flushed: {{humanize .SketchesFlushed}} -{{- end }} -{{- if .SketchesFlushErrors}} - Sketches Flush Errors: {{humanize .SketchesFlushErrors}} -{{- end }} -{{- if .ChecksHistogramBucketMetricSample }} - Checks Histogram Bucket Metric Sample: {{humanize .ChecksHistogramBucketMetricSample}} -{{- end }} -{{- if .EventPlatformEvents }} -{{- range $k, $v := .EventPlatformEvents }} - {{ $k }}: {{humanize $v}} -{{- end }} -{{- end }} -{{- if .HostnameUpdate}} - Hostname Update: {{humanize .HostnameUpdate}} -{{- end }} -{{- end }} diff --git a/pkg/status/render/templates/autodiscovery.tmpl b/pkg/status/render/templates/autodiscovery.tmpl deleted file mode 100644 index 3ff340819ac6ed..00000000000000 --- a/pkg/status/render/templates/autodiscovery.tmpl +++ /dev/null @@ -1,41 +0,0 @@ -{{/* -NOTE: Changes made to this template should be reflected on the following templates, if applicable: -* cmd/agent/gui/views/templates/generalStatus.tmpl -*/}} - -{{- if or (.adEnabledFeatures) (.adConfigErrors) (.filterErrors) }} -============= -Autodiscovery -============= -{{- with .adEnabledFeatures}} - Enabled Features - ================ - {{- range $feature, $empty := . }} - {{ $feature }} - {{- end }} -{{ end }} - -{{- with .adConfigErrors}} - Configuration Errors - ==================== - {{- range $configprovider, $configerrors := . }} - {{- if $configerrors -}} - {{- range $identifier, $errmap := $configerrors }} - {{ $identifier }} - {{ printDashes $identifier "-" }} - {{- range $err, $empty := $errmap}} - {{ $err }} - {{- end }} - {{- end -}} - {{- end -}} - {{- end }} -{{ end }} - -{{- with .filterErrors }} - Container Inclusion/Exclusion Errors - ==================================== - {{- range $filtererror, $empty := . }} - {{ $filtererror }} - {{- end }} -{{- end -}} -{{- end -}} diff --git a/pkg/status/render/templates/clusteragent.tmpl b/pkg/status/render/templates/clusteragent.tmpl deleted file mode 100644 index ddc4588f46de2f..00000000000000 --- a/pkg/status/render/templates/clusteragent.tmpl +++ /dev/null @@ -1,19 +0,0 @@ -{{- with .clusterAgentStatus -}} -===================== -Datadog Cluster Agent -===================== - {{ if .DetectionError }} - - Could not detect the Datadog Cluster Agent's endpoint: {{ .DetectionError }} - {{ else }} - - Datadog Cluster Agent endpoint detected: {{ .Endpoint }} - {{- end }} - {{- if .ConnectionError }} - - Could not reach the Datadog Cluster Agent: {{ .ConnectionError }} - {{- end }} - {{- if not .Version }} - - Could not retrieve the version of the Datadog Cluster Agent. - {{ else }} - Successfully connected to the Datadog Cluster Agent. - - Running: {{ .Version }} - {{- end }} -{{- end }} diff --git a/pkg/status/render/templates/collector.tmpl b/pkg/status/render/templates/collector.tmpl deleted file mode 100644 index 222c18f1bbad47..00000000000000 --- a/pkg/status/render/templates/collector.tmpl +++ /dev/null @@ -1,147 +0,0 @@ -{{/* -NOTE: Changes made to this template should be reflected on the following templates, if applicable: -* cmd/agent/gui/views/templates/collectorStatus.tmpl -* cmd/agent/gui/views/templates/singleCheck.tmpl -*/}}========= -Collector -========= -{{- define "longRunningCheckStats" -}} - Instance ID: {{.CheckID}} {{status .}} - Long Running Check: true - Configuration Source: {{.CheckConfigSource}} - Total Metric Samples: {{humanize .TotalMetricSamples}} - Total Events: {{humanize .TotalEvents}} - {{- range $k, $v := .TotalEventPlatformEvents }} - Total {{ $k }}: {{humanize $v}} - {{- end }} - Total Service Checks: {{humanize .TotalServiceChecks}} - {{- if .TotalHistogramBuckets}} - Total Histogram Buckets: {{humanize .TotalHistogramBuckets}} - {{- end }} -{{- end }} -{{- define "checkStats" -}} - Instance ID: {{.CheckID}} {{status .}} - Configuration Source: {{.CheckConfigSource}} - Total Runs: {{humanize .TotalRuns}} - Metric Samples: Last Run: {{humanize .MetricSamples}}, Total: {{humanize .TotalMetricSamples}} - Events: Last Run: {{humanize .Events}}, Total: {{humanize .TotalEvents}} - {{- $instance := . }} - {{- range $k, $v := .TotalEventPlatformEvents }} - {{ $k }}: Last Run: {{humanize (index $instance.EventPlatformEvents $k) }}, Total: {{humanize $v}} - {{- end }} - Service Checks: Last Run: {{humanize .ServiceChecks}}, Total: {{humanize .TotalServiceChecks}} - {{- if .TotalHistogramBuckets}} - Histogram Buckets: Last Run: {{humanize .HistogramBuckets}}, Total: {{humanize .TotalHistogramBuckets}} - {{- end }} - Average Execution Time : {{humanizeDuration .AverageExecutionTime "ms"}} - Last Execution Date : {{formatUnixTime .UpdateTimestamp}} - Last Successful Execution Date : {{ if .LastSuccessDate }}{{formatUnixTime .LastSuccessDate}}{{ else }}Never{{ end }} -{{- end }} -{{- with .pythonInit -}} - {{- if .Errors }} - Error initializing Python - ========================= - {{ range $err := .Errors -}} - - {{ $err }} - {{ end }} - {{- end -}} -{{- end }} - - Running Checks - ============== -{{- with .runnerStats }} - {{- if and (not .Runs) (not .Checks)}} - No checks have run yet - {{end -}} - - {{- range $CheckName, $CheckInstances := .Checks}} - {{ $version := version $CheckInstances }} - {{$CheckName}}{{ if $version }} ({{$version}}){{ end }} - {{printDashes $CheckName "-"}}{{- if $version }}{{printDashes $version "-"}}---{{ end }} - {{- range $instance := $CheckInstances }} - {{ if .LongRunning -}} - {{ template "longRunningCheckStats" . }} - {{- else -}} - {{ template "checkStats" . }} - {{- end }} - {{- if $.inventories }} - {{- if index $.inventories .CheckID }} - metadata: - {{- range $k, $v := index $.inventories .CheckID }} - {{ $k }}: {{ $v }} - {{- end }} - {{- end }} - {{- end }} - {{if .LastError -}} - Error: {{lastErrorMessage .LastError}} - {{lastErrorTraceback .LastError -}} - {{- end }} - {{- if .LastWarnings -}} - {{- range .LastWarnings }} - Warning: {{.}} - {{ end -}} - {{- end }} - {{- end }} - {{- end }} -{{- end }} - -{{- with .pyLoaderStats }} - {{- if .Py3Warnings }} - Python 3 Linter Warnings - ======================= - {{- range $CheckName, $warnings := .Py3Warnings }} - {{ $CheckName }} - {{printDashes $CheckName "-"}} - {{- range $idx, $warning := $warnings}} - {{$warning}} - {{- end }} - {{end}} - {{- end }} - {{- if .ConfigureErrors }} - Check Initialization Errors - =========================== - - {{ range $CheckName, $errors := .ConfigureErrors }} - {{ $CheckName }} - {{printDashes $CheckName "-"}} - {{- range $idx, $err := $errors}} - - instance {{$idx}}: - - {{$err}} - {{- end }} - {{- end}} - {{- end }} -{{- end }} - -{{- with .autoConfigStats }} - {{- if .ConfigErrors}} - Config Errors - ============== - {{- range $checkname, $error := .ConfigErrors }} - {{$checkname}} - {{printDashes $checkname "-"}} - {{$error}} - {{- end }} - {{- end}} -{{- end }} - -{{- with .checkSchedulerStats }} - {{- if .LoaderErrors}} - Loading Errors - ============== - {{- range $checkname, $errors := .LoaderErrors }} - {{$checkname}} - {{printDashes $checkname "-"}} - {{- range $kind, $err := $errors -}} - {{- if eq $kind "Python Check Loader" }} - {{$kind}}: - {{$err}} - {{ else }} - {{$kind}}: - {{$err}} - {{ end }} - {{- end }} - {{- end }} - {{- end}} -{{- end }} diff --git a/pkg/status/render/templates/collectorHTML.tmpl b/pkg/status/render/templates/collectorHTML.tmpl deleted file mode 100644 index 24006fefcefd83..00000000000000 --- a/pkg/status/render/templates/collectorHTML.tmpl +++ /dev/null @@ -1,159 +0,0 @@ -{{- define "longRunningCheckStats" -}} - Instance ID: {{.CheckID}} {{status .}}
- Long Running Check: true
- Total Metrics Samples: {{humanize .TotalMetricSamples}}
- Total Events: {{humanize .TotalEvents}}
- {{- range $k, $v := .TotalEventPlatformEvents }} - Total {{ $k }}: {{humanize $v}}
- {{- end -}} - Total Service Checks: {{humanize .TotalServiceChecks}}
- {{- if .TotalHistogramBuckets}} - Histogram Buckets: {{humanize .HistogramBuckets}}, Total: {{humanize .TotalHistogramBuckets}}
- {{- end -}} -{{- end -}} -{{- define "checkStats" -}} - Instance ID: {{.CheckID}} {{status .}}
- Total Runs: {{humanize .TotalRuns}}
- Metric Samples: {{humanize .MetricSamples}}, Total: {{humanize .TotalMetricSamples}}
- Events: {{humanize .Events}}, Total: {{humanize .TotalEvents}}
- {{- $instance := . }} - {{- range $k, $v := .TotalEventPlatformEvents }} - {{ $k }}: Last Run: {{humanize (index $instance.EventPlatformEvents $k) }}, Total: {{humanize $v}}
- {{- end -}} - Service Checks: {{humanize .ServiceChecks}}, Total: {{humanize .TotalServiceChecks}}
- {{- if .TotalHistogramBuckets}} - Histogram Buckets: {{humanize .HistogramBuckets}}, Total: {{humanize .TotalHistogramBuckets}}
- {{- end -}} - Average Execution Time : {{humanizeDuration .AverageExecutionTime "ms"}}
- Last Execution Date : {{formatUnixTime .UpdateTimestamp}}
- Last Successful Execution Date : {{ if .LastSuccessDate }}{{formatUnixTime .LastSuccessDate}}{{ else }}Never{{ end }}
-{{- end -}} - -{{ with .pythonInit }} - {{- if .Errors }} -
- Error initializing Python - - {{ range $err := .Errors -}} - - {{ $err -}} - - {{ end }} - - {{- end -}} -
-{{- end }} - -
- Running Checks - - {{- with .runnerStats -}} - {{- if and (not .Runs) (not .Checks)}} - No checks have run yet - {{end -}} - {{- range $CheckName, $CheckInstances := .Checks}} - {{ $version := version $CheckInstances}} - {{$CheckName}}{{ if $version }} ({{$version}}){{ end }} - {{- range $instance := $CheckInstances }} - - {{ if .LongRunning -}} - {{ template "longRunningCheckStats" . }} - {{- else -}} - {{ template "checkStats" . }} - {{- end }} - {{- if index $.inventories .CheckID }} - Metadata:
- - {{- range $k, $v := index $.inventories .CheckID }} - {{ $k }}: {{ $v }}
- {{- end }} -
- {{- end }} - {{- if .LastError}} - Error: {{lastErrorMessage .LastError}}
- {{lastErrorTraceback .LastError -}} - {{- end -}} - {{- if .LastWarnings}} - {{- range .LastWarnings }} - Warning: {{.}}
- {{- end -}} - {{- end -}} -
- {{ end }} - {{- end -}} - {{- end -}} - -
- -{{- with .pyLoaderStats }} - {{- if .Py3Warnings }} -
- Python 3 Linter Warnings - - {{ range $checkname, $warnings := .Py3Warnings }} - {{$checkname}} - - {{- range $idx, $warning := $warnings}} - {{pythonLoaderError $warning}}
- {{- end }} -
- {{- end}} -
-
- {{- end }} - {{- if .ConfigureErrors }} -
- Check Initialization Errors - - {{ range $checkname, $errors := .ConfigureErrors }} - {{$checkname}} - - {{- range $idx, $err := $errors}} - Instance {{$idx}} - - {{ pythonLoaderError $err }} - - {{- end }} - - {{- end}} - -
- {{- end }} -{{- end }} - -{{- with .autoConfigStats -}} - {{- if .ConfigErrors}} -
- Config Errors - - {{- range $checkname, $error := .ConfigErrors}} - {{$checkname}} - - {{ $error -}} - - {{end -}} - -
- {{- end}} -{{- end}} -{{- with .checkSchedulerStats }} - {{- if .LoaderErrors}} -
- Loading Errors - - {{- range $checkname, $errors := .LoaderErrors}} - {{$checkname}} - - {{- range $kind, $err := $errors -}} - {{- if eq $kind "Python Check Loader"}} - {{$kind}}: {{ pythonLoaderError $err -}}
- {{- else}} - {{$kind}}: {{ $err -}}
- {{end -}} - {{end -}} -
- {{end -}} -
-
- {{- end}} -{{end -}} diff --git a/pkg/status/render/templates/compliance.tmpl b/pkg/status/render/templates/compliance.tmpl deleted file mode 100644 index 29656b7100fc96..00000000000000 --- a/pkg/status/render/templates/compliance.tmpl +++ /dev/null @@ -1,66 +0,0 @@ -========== -Compliance -========== -{{ if not .complianceStatus}} - Not enabled -{{- else}} - {{- with .complianceStatus}} - {{ if .endpoints }} - {{- range $endpoint := .endpoints }} - {{ $endpoint }} - {{- end }} - {{- end }} - {{- end }} - - Checks - ====== - {{ $runnerStats := .runnerStats }} - {{- range $Check := .complianceChecks }} - {{ $Check.Name }} - {{printDashes $Check.Name "-"}} - Framework: {{ $Check.Framework }} ({{ $Check.Version }}) - Source: {{ $Check.Source }} - {{- if $Check.InitError }} - Configuration: [{{ yellowText $Check.InitError }}] - {{- else }} - Configuration: [{{ greenText "OK"}}] - {{- if $Check.LastEvent }} - - Report: - Result: {{ complianceResult $Check.LastEvent.result }} - Data: - {{- range $k, $v := $Check.LastEvent.data }} - {{ $k }}: {{ $v }} - {{- end }} - {{- end }} - {{- if and $runnerStats.Checks (index $runnerStats.Checks $Check.Name) }} - {{ $checkInstances := index $runnerStats.Checks $Check.Name }} - {{- range $checkInstances }} - Total Runs: {{humanize .TotalRuns}} - Average Execution Time : {{humanizeDuration .AverageExecutionTime "ms"}} - Last Execution Date : {{formatUnixTime .UpdateTimestamp}} - Last Successful Execution Date : {{ if .LastSuccessDate }}{{formatUnixTime .LastSuccessDate}}{{ else }}Never{{ end }} - {{- if $.CheckMetadata }} - {{- if index $.CheckMetadata .CheckID }} - metadata: - {{- range $k, $v := index $.CheckMetadata .CheckID }} - {{ $k }}: {{ $v }} - {{- end }} - {{- end }} - {{- end }} - {{- if .LastError }} - Error: {{lastErrorMessage .LastError}} - {{lastErrorTraceback .LastError -}} - {{- end }} - {{- if .LastWarnings }} - {{- range .LastWarnings }} - Warning: {{.}} - {{- end }} - {{- end }} - {{- end }} - {{- else }} - {{ greenText "Check has not run yet" }} - {{- end }} - {{- end }} - {{ end }} -{{- end }} diff --git a/pkg/status/render/templates/dogstatsd.tmpl b/pkg/status/render/templates/dogstatsd.tmpl deleted file mode 100644 index 530a418daa4c0e..00000000000000 --- a/pkg/status/render/templates/dogstatsd.tmpl +++ /dev/null @@ -1,14 +0,0 @@ -{{/* -NOTE: Changes made to this template should be reflected on the following templates, if applicable: -* cmd/agent/gui/views/templates/generalStatus.tmpl -*/}} -========= -DogStatsD -========= -{{- with .dogstatsdStats -}} -{{- range $key, $value := .}} - {{formatTitle $key}}: {{humanize $value}} -{{- end }} -{{- end }} - -Tip: For troubleshooting, enable 'dogstatsd_metrics_stats_enable' in the main datadog.yaml file to generate Dogstatsd logs. Once 'dogstatsd_metrics_stats_enable' is enabled, users can also use 'dogstatsd-stats' command to get visibility of the latest collected metrics. diff --git a/pkg/status/render/templates/endpoints.tmpl b/pkg/status/render/templates/endpoints.tmpl deleted file mode 100644 index 968bcf3065c0c2..00000000000000 --- a/pkg/status/render/templates/endpoints.tmpl +++ /dev/null @@ -1,18 +0,0 @@ -{{/* -NOTE: Changes made to this template should be reflected on the following templates, if applicable: -* cmd/agent/gui/views/templates/generalStatus.tmpl -*/}}========== -Endpoints -========== -{{- with .endpointsInfos -}} -{{ range $key, $value := .}} - {{$key}} - API Key{{ if gt (len $value) 1}}s{{end}} ending with: - {{- range $idx, $apikey := $value }} - - {{$apikey}} - {{- end}} - {{- end}} -{{- else }} - -No endpoints information. The agent may be misconfigured. -{{end }} - diff --git a/pkg/status/render/templates/forwarder.tmpl b/pkg/status/render/templates/forwarder.tmpl deleted file mode 100644 index 93e7352045807b..00000000000000 --- a/pkg/status/render/templates/forwarder.tmpl +++ /dev/null @@ -1,93 +0,0 @@ -{{/* -NOTE: Changes made to this template should be reflected on the following templates, if applicable: -* cmd/agent/gui/views/templates/generalStatus.tmpl -*/}}========= -Forwarder -========= -{{with .forwarderStats -}} -{{ if .Transactions }} - Transactions - ============ - {{- range $key, $value := .Transactions }} - {{- if and (ne $key "InputBytesByEndpoint") (ne $key "InputCountByEndpoint") (ne $key "DroppedByEndpoint") (ne $key "RequeuedByEndpoint") (ne $key "RetriedByEndpoint") (ne $key "Success") (ne $key "SuccessByEndpoint") (ne $key "SuccessBytesByEndpoint") (ne $key "Errors") (ne $key "ErrorsByType") (ne $key "HTTPErrors") (ne $key "HTTPErrorsByCode") (ne $key "ConnectionEvents")}} - {{$key}}: {{humanize $value}} - {{- end}} - {{- end}} - {{- if .Transactions.DroppedOnInput }} - - Warning: the forwarder dropped transactions, there is probably an issue with your network - More info at https://github.com/DataDog/datadog-agent/tree/main/docs/agent/status.md - {{- end}} - {{- if .Transactions.Success}} - - Transaction Successes - ===================== - Total number: {{.Transactions.Success}} - Successes By Endpoint: - {{- range $type, $count := .Transactions.SuccessByEndpoint }} - {{- if $count }} - {{$type}}: {{humanize $count}} - {{- end}} - {{- end}} - {{- end}} - {{- if .Transactions.Errors }} - - Transaction Errors - ================== - Total number: {{.Transactions.Errors}} - Errors By Type: - {{- range $type, $count := .Transactions.ErrorsByType }} - {{- if $count }} - {{$type}}: {{humanize $count}} - {{- end}} - {{- end}} - {{- end}} - {{- if .Transactions.HTTPErrors }} - - HTTP Errors - ================== - Total number: {{.Transactions.HTTPErrors}} - HTTP Errors By Code: - {{- range $code, $count := .Transactions.HTTPErrorsByCode }} - {{- if $count}} - {{$code}}: {{humanize $count}} - {{- end}} - {{- end}} - {{- end}} -{{- end}} - - On-disk storage - =============== - {{- if .forwarder_storage_max_size_in_bytes }} - {{- if .FileStorage.CurrentSizeInBytes }} - Disk usage in bytes: {{ .FileStorage.CurrentSizeInBytes }} - Current number of files: {{ .FileStorage.FilesCount }} - Number of files dropped: {{ .FileStorage.FilesRemovedCount }} - Deserialization errors count: {{ .FileStorage.DeserializeErrorsCount }} - Outdated files removed at startup: {{ .RemovalPolicy.OutdatedFilesCount }} - {{- else }} - Enabled, not in-use. - {{- end}} - {{- else }} - On-disk storage is disabled. Configure `forwarder_storage_max_size_in_bytes` to enable it. - {{- end}} - -{{- if .APIKeyStatus }} - - API Keys status - =============== - {{- range $key, $value := .APIKeyStatus }} - {{$key}}: {{$value}} - {{- end }} -{{- end}} - -{{- if .APIKeyFailure }} - - API Keys errors - =============== - {{- range $key, $value := .APIKeyFailure }} - {{yellowText $key}}{{yellowText ":"}} {{yellowText $value}} - {{- end }} -{{- end}} -{{- end}} - diff --git a/pkg/status/render/templates/header.tmpl b/pkg/status/render/templates/header.tmpl deleted file mode 100644 index e698ebb382299e..00000000000000 --- a/pkg/status/render/templates/header.tmpl +++ /dev/null @@ -1,266 +0,0 @@ -{{/* -NOTE: Changes made to this template should be reflected on the following templates, if applicable: -* cmd/agent/gui/views/templates/generalStatus.tmpl -*/}} -{{printDashes .title "="}} -{{.title}} -{{printDashes .title "="}} - - Status date: {{ formatUnixTime .time_nano }} - Agent start: {{ formatUnixTime .agent_start_nano }} - Pid: {{.pid}} - Go Version: {{.go_version}} - {{- if .python_version }} - Python Version: {{.python_version}} - {{- end }} - Build arch: {{.build_arch}} - Agent flavor: {{.flavor}} - {{- if and (.runnerStats.Workers) (.runnerStats.Workers.Count) }} - Check Runners: {{.runnerStats.Workers.Count}} - {{- end }} - {{- if .config.log_file}} - Log File: {{.config.log_file}} - {{- end }} - Log Level: {{.config.log_level}} - - Paths - ===== - Config File: {{if .conf_file}}{{.conf_file}}{{else}}There is no config file{{end}} - conf.d: {{.config.confd_path}} - {{- if .config.additional_checksd }} - checks.d: {{.config.additional_checksd}} - {{- end }} - - Clocks - ====== - {{- if .ntpOffset }} - NTP offset: {{ humanizeDuration .ntpOffset "s"}} - {{- if ntpWarning .ntpOffset}} - {{yellowText "NTP offset is high. Datadog may ignore metrics sent by this Agent."}} - {{- end }} - {{- end }} - System time: {{ formatUnixTime .time_nano }} - -{{- if .hostinfo }} - - Host Info - ========= - {{- range $name, $value := .hostinfo -}} - {{- if and (ne $name "hostname") (ne $name "hostid") ($value) }} - {{$name}}: {{if eq $name "bootTime" }}{{ formatUnixTime $value }}{{ else }}{{if eq $name "uptime" }}{{ humanizeDuration $value "s"}}{{ else }}{{ $value }}{{ end }}{{ end }} - {{- end }} - {{- end }} -{{- end }} - - Hostnames - ========= - {{- range $name, $value := .metadata.meta -}} - {{- if and (ne $name "timezones") ($value) }} - {{$name}}: {{$value}} - {{- end }} - {{- end }} - {{- if .hostTags }} - {{- if gt (len .hostTags) 0 }} - host tags: - {{- range $tag := .hostTags}} - {{$tag}} - {{- end }} - {{- end }} - {{- end }} - hostname provider: {{.hostnameStats.provider}} - {{- if gt (len .hostnameStats.errors) 0 }} - unused hostname providers: - {{- end }} - {{- range $name, $value := .hostnameStats.errors -}} - {{- if ne $name "all" }} - {{$name}}: {{$value}} - {{- end}} - {{- end }} - {{- if .hostnameStats.errors.all }} - error: {{.hostnameStats.errors.all}} - {{- end }} - - Metadata - ======== - {{- range $key, $value := .agent_metadata }} - {{ $key }}: {{ $value }} - {{- end }} - -{{- if eq .config.fips_enabled "true" }} - - FIPS proxy - ========== - FIPS proxy is enabled. All communication to Datadog is routed to a local FIPS proxy: - - Local address: {{ .config.fips_local_address }} - - Starting port: {{ .config.fips_port_range_start }} -{{- end }} - -{{- if .TransportWarnings }} - - Transport Proxy Warnings - ======================== - {{- if .NoProxyIgnoredWarningMap }} - The requests to the following hosts use a proxy - but will ignore the proxy in future Agent versions based on the no_proxy setting. - Enable the new behavior now with no_proxy_nonexact_match: true - {{- range .NoProxyIgnoredWarningMap }} - {{ . }} - {{- end }} - - {{- end }} - {{- if .NoProxyUsedInFuture }} - The following hosts did not use a proxy - but will use the proxy in future Agent versions with the no_proxy setting. - Enable the new behavior now with no_proxy_nonexact_match: true - {{- range .NoProxyUsedInFuture }} - {{ . }} - {{- end }} - - {{- end }} - {{- if .NoProxyChanged }} - The following hosts proxy behavior will change in a future Agent version. - Enable the new behavior now with no_proxy_nonexact_match: true - {{- range .NoProxyChanged }} - {{ . }} - {{- end }} - {{- end }} -{{- end }} - -{{- if .leaderelection}} - -Leader Election -=============== - Leader Election Status: {{.leaderelection.status}} - {{- if eq .leaderelection.status "Failing"}} - Error: {{.leaderelection.error}} - {{else}} - Leader Name is: {{.leaderelection.leaderName}} - Last Acquisition of the lease: {{.leaderelection.acquiredTime}} - Renewed leadership: {{.leaderelection.renewedTime}} - Number of leader transitions: {{.leaderelection.transitions}} - {{- end}} -{{- end}} - -{{- if .custommetrics }} - -Custom Metrics Server -===================== - {{- if .custommetrics.Error }} - Error: {{ .custommetrics.Error }} - {{- else if .custommetrics.Disabled }} - Disabled: {{ .custommetrics.Disabled }} - {{- else }} - - Data sources - ------------ - {{- if .externalmetrics }} - {{- if .externalmetrics.client }} - URL: {{ .externalmetrics.client.url }} - {{- else if .externalmetrics.clients }} - {{- range $client := .externalmetrics.clients }} - - URL: {{ $client.url }} [{{ $client.status }}] - Last failure: {{ $client.lastFailure }} - Last Success: {{ $client.lastSuccess }} - {{- end }} - {{- end }} - {{- end }} - - {{ if .custommetrics.NoStatus }} - {{ .custommetrics.NoStatus }} - {{ else }} - ConfigMap name: {{ .custommetrics.Cmname }} - {{- if .custommetrics.StoreError }} - Error: {{ .custommetrics.StoreError }} - {{ else }} - External Metrics - ---------------- - {{- if .custommetrics.External.ListError }} - Error: {{ .custommetrics.External.ListError }} - {{ else }} - Total: {{ .custommetrics.External.Total }} - Valid: {{ .custommetrics.External.Valid }} - {{ range $metric := .custommetrics.External.Metrics }} - * {{$metric.reference.type}} pod autoscaler: {{$metric.reference.namespace}}/{{$metric.reference.name}} - Metric name: {{$metric.metricName}} - Labels: - {{- range $k, $v := $metric.labels }} - - {{$k}}: {{$v}} - {{- end }} - Value: {{ humanize $metric.value}} - Timestamp: {{ formatUnixTime $metric.ts}} - Valid: {{$metric.valid}} - {{- end }} - {{- end }} - {{- end }} - {{- end }} - {{- end }} -{{- end }} - -{{- if .clusterchecks }} - -Cluster Checks Dispatching -========================== -{{- if .clusterchecks.Leader }} - {{- if .clusterchecks.Active }} - Status: Leader, serving requests - Active agents: {{ .clusterchecks.NodeCount }} - Check Configurations: {{ .clusterchecks.TotalConfigs }} - - Dispatched: {{ .clusterchecks.ActiveConfigs }} - - Unassigned: {{ .clusterchecks.DanglingConfigs }} - {{- else }} - Status: Leader, warming up - {{- end }} -{{- else if .clusterchecks.Follower }} -{{- if .clusterchecks.LeaderIP }} - Status: Follower, redirecting to leader at {{ .clusterchecks.LeaderIP }} - {{- else }} - Status: Follower, no leader found - {{- end }} -{{- else }} - Status: unknown -{{- end }} -{{- end }} - -{{- if .admissionWebhook }} - -Admission Controller -==================== - {{- if .admissionWebhook.Error }} - Error: {{ .admissionWebhook.Error }} - {{ else }} - {{- if .admissionWebhook.Disabled }} - Disabled: {{ .admissionWebhook.Disabled }} - {{ else }} - {{ if .admissionWebhook.WebhookError }} - MutatingWebhookConfigurations name: {{ .admissionWebhook.WebhookName }} - Error: {{ .admissionWebhook.WebhookError }} - {{- end }} - {{- if .admissionWebhook.Webhooks }} - Webhooks info - ------------- - MutatingWebhookConfigurations name: {{ .admissionWebhook.Webhooks.Name }} - Created at: {{ .admissionWebhook.Webhooks.CreatedAt }} - - {{- range $name, $config := .admissionWebhook.Webhooks.Webhooks }} - --------- - Name: {{ $name }} - {{- range $k, $v := $config }} - {{$k}}: {{$v}} - {{- end }} - {{- end }} - {{- end }} - {{ if .admissionWebhook.SecretError }} - Secret name: {{ .admissionWebhook.SecretName }} - Error: {{ .admissionWebhook.SecretError }} - {{- end }} - {{- if .admissionWebhook.Secret }} - Secret info - ----------- - Secret name: {{ .admissionWebhook.Secret.Name }} - Secret namespace: {{ .admissionWebhook.Secret.Namespace }} - Created at: {{ .admissionWebhook.Secret.CreatedAt }} - CA bundle digest: {{ .admissionWebhook.Secret.CABundleDigest }} - Duration before certificate expiration: {{ .admissionWebhook.Secret.CertValidDuration }} - {{- end }} - {{- end }} - {{- end }} -{{- end }} -{{/* this line intentionally left blank */}} diff --git a/pkg/status/render/templates/jmxfetch.tmpl b/pkg/status/render/templates/jmxfetch.tmpl deleted file mode 100644 index 65315b6c36ce3c..00000000000000 --- a/pkg/status/render/templates/jmxfetch.tmpl +++ /dev/null @@ -1,74 +0,0 @@ -{{/* -NOTE: Changes made to this template should be reflected on the following templates, if applicable: -* cmd/agent/gui/views/templates/generalStatus.tmpl -*/}}======== -JMXFetch -======== -{{ if .JMXStartupError.LastError }} - JMX startup errors - ================== - Error: {{ .JMXStartupError.LastError }} - Date: {{ formatUnixTime .JMXStartupError.Timestamp }} -{{ end -}} -{{ with .JMXStatus }} - Information - ================== - {{- range $k,$v := .info }} - {{ $k }} : {{ $v }} - {{- end }} - {{- if .errors }} - Socket errors: {{ .errors }} - {{- end }} - {{- if and (not .timestamp) (not .checks) }} - no JMX status available - {{- else }} - Initialized checks - ================== - {{- if (not .checks.initialized_checks)}} - no checks - {{ else }} - {{- range $check,$instances := .checks.initialized_checks }} - {{ $check -}} - {{- range $instance := $instances }} - - instance_name: {{ .instance_name }} - metric_count: {{ .metric_count }} - service_check_count: {{ .service_check_count }} - message: {{ .message }} - status: {{ .status }} - {{- end -}} - {{- end }} - {{- end }} - Failed checks - ============= - {{- if (not .checks.failed_checks)}} - no checks - {{ else }} - {{- range $check,$instances := .checks.failed_checks }} - {{ $check }} - {{- range $instance := $instances }} - {{- range $k,$v := $instance }} - {{ $k }} : {{ $v }} - {{- end }} - {{- end }} - {{- end }} - {{- end }} - {{- end }} -{{- end }} -{{- if .verbose }} - {{ with .JMXStatus }} - Internal JMXFetch Telemetry - =========================== - {{- if .checks.initialized_checks }} - {{- range $check,$instances := .checks.initialized_checks }} - {{- range $instance := $instances }} - - instance_name: {{ .instance_name }} - instance_bean_count: {{ .instance_bean_count }} - instance_attribute_count: {{ .instance_attribute_count }} - instance_metric_count: {{ .instance_metric_count }} - instance_wildcard_domain_query_count: {{ .instance_wildcard_domain_query_count }} - instance_bean_match_ratio: {{ .instance_bean_match_ratio }} - {{- end -}} - {{- end }} - {{- end }} - {{- end }} -{{- end }} diff --git a/pkg/status/render/templates/logsagent.tmpl b/pkg/status/render/templates/logsagent.tmpl deleted file mode 100644 index 25488a711b1798..00000000000000 --- a/pkg/status/render/templates/logsagent.tmpl +++ /dev/null @@ -1,112 +0,0 @@ -{{- /* -NOTE: Changes made to this template should be reflected on the following templates, if applicable: -* cmd/agent/gui/views/templates/generalStatus.tmpl -*/ -}} -========== -Logs Agent -========== -{{ with .logsStats }} -{{- if eq .is_running false }} - Logs Agent is not running -{{- end }} - -{{- if .endpoints }} - - {{- range $endpoint := .endpoints }} - {{ $endpoint }} - {{- end }} -{{- end }} - -{{- if and (eq .use_http false) (eq .is_running true) }} - - You are currently sending Logs to Datadog through TCP (either because logs_config.force_use_tcp or logs_config.socks5_proxy_address is set or the HTTP connectivity test has failed). To benefit from increased reliability and better network performances, we strongly encourage switching over to compressed HTTPS which is now the default protocol. -{{ end }} - -{{- if .metrics }} - - {{- range $metric_name, $metric_value := .metrics }} - {{$metric_name}}: {{$metric_value}} - {{- end }} -{{- end }} - -{{- if .process_file_stats }} - {{- range $metric_name, $metric_value := .process_file_stats }} - {{$metric_name}}: {{printf "%.0f" $metric_value}} - {{- end}} -{{- end}} - -{{- if .errors }} - - Errors - {{ printDashes "Errors" "=" }} - {{- range $error := .errors }} - {{ $error }} - {{- end }} -{{- end }} - -{{- if .warnings }} - - Warnings - {{ printDashes "warnings" "=" }} - {{- range $warning := .warnings }} - {{ $warning }} - {{- end }} -{{- end }} - -{{- if .integrations }} - ============ - Integrations - ============ - {{- range .integrations }} - - {{ .name }} - {{ printDashes .name "-" }} - {{- range .sources }} - - Type: {{ .type }} - {{- range $key, $value := .configuration }} - {{$key}}: {{$value}} - {{- end }} - Status: {{ .status }} - {{- range $message := .messages }} - {{ $message }} - {{- end }} - {{- if .inputs }} - Inputs: - {{- range $input := .inputs }} - {{$input}} - {{- end }} - {{- end }} - {{- if .info }} - {{- range $key, $value := .info }} {{ $len := len $value }} {{ if eq $len 1 }} - {{$key}}: {{index $value 0}} {{ else }} - {{$key}}: - {{- range $inf := $value }} - {{ $inf }} - {{- end }} - {{- end }} - {{- end }} - {{- end }} - {{- end }} - {{- end }} -{{- end }} -{{- if .tailers }} - ======= - Tailers - ======= - {{- range .tailers }} - - - ID: {{ .id }} - Type: {{ .type }} - {{- if .info }} - {{- range $key, $value := .info }} {{ $len := len $value }} {{ if eq $len 1 }} - {{$key}}: {{index $value 0}} {{ else }} - {{$key}}: - {{- range $inf := $value }} - {{ $inf }} - {{- end }} - {{- end }} - {{- end }} - {{- end }} - {{- end }} -{{- end }} -{{- end }} diff --git a/pkg/status/render/templates/netflow.tmpl b/pkg/status/render/templates/netflow.tmpl deleted file mode 100644 index cf889c2129e7d6..00000000000000 --- a/pkg/status/render/templates/netflow.tmpl +++ /dev/null @@ -1,35 +0,0 @@ -{{- with .netflowStats }} -========= -NetFlow -========= - Total Listeners: {{.TotalListeners}} - Open Listeners: {{.OpenListeners}} - Closed Listeners: {{.ClosedListeners}} - {{ if .OpenListeners }} - === Open Listener Details === - {{- range $index, $NetflowListenerStatus := .WorkingListenerDetails }} - --------- - BindHost: {{$NetflowListenerStatus.Config.BindHost}} - FlowType: {{$NetflowListenerStatus.Config.FlowType}} - Port: {{$NetflowListenerStatus.Config.Port}} - Workers: {{$NetflowListenerStatus.Config.Workers}} - Namespace: {{$NetflowListenerStatus.Config.Namespace}} - Flows Received: {{$NetflowListenerStatus.FlowCount}} - --------- - {{- end }} - {{ end }} - - {{ if .ClosedListeners }} - === Closed Listener Details === - {{- range $index, $NetflowListenerStatus := .ClosedListenerDetails }} - --------- - BindHost: {{$NetflowListenerStatus.Config.BindHost}} - FlowType: {{$NetflowListenerStatus.Config.FlowType}} - Port: {{$NetflowListenerStatus.Config.Port}} - Workers: {{$NetflowListenerStatus.Config.Workers}} - Namespace: {{$NetflowListenerStatus.Config.Namespace}} - Error: {{$NetflowListenerStatus.Error}} - --------- - {{- end }} - {{ end }} -{{- end }} diff --git a/pkg/status/render/templates/orchestrator.tmpl b/pkg/status/render/templates/orchestrator.tmpl deleted file mode 100644 index bcc6f672685059..00000000000000 --- a/pkg/status/render/templates/orchestrator.tmpl +++ /dev/null @@ -1,98 +0,0 @@ -{{/* -*/}} -{{ with .orchestrator }} -===================== -Orchestrator Explorer -===================== - Collection Status: {{ .CollectionWorking }} -{{- if .Error }} - Error: {{ .Error }} -{{- end }} -{{- if .Disabled }} - Disabled: {{ .Disabled }} -{{- end }} -{{- if .ClusterIDError }} - Cluster ID error: {{.ClusterIDError}} -{{- end }} -{{- if .ClusterName }} - Cluster Name: {{.ClusterName}} -{{- end }} -{{- if .ClusterID }} - Cluster ID: {{.ClusterID}} -{{- end }} -{{- if .ClusterNameError }} - Cluster ID error: {{.ClusterNameError}} -{{- end }} - -{{- if .ContainerScrubbing }} - {{.ContainerScrubbing}} -{{- end}} -{{- if .ManifestCollection }} - {{.ManifestCollection}} -{{- end}} -{{- if and (not .Error) (not .Disabled) }} -{{/* this line intentionally left blank */}} - ====================== - Orchestrator Endpoints - ====================== - {{- range $key, $values := .OrchestratorEndpoints}} - {{- if gt (len $values) 1}} - {{$key}} - API Keys ending with: - {{- range $values }} - - {{ . }} - {{- end}} - {{- else}} - {{$key}} - API Key ending with: {{index $values 0}} - {{- end}} - {{- end}} - -{{- if .LeaderError }} - Leader election error: {{.ClusterIDError}} -{{else}} -{{/* this line intentionally left blank */}} -{{- if .Leader }} - =========== - Cache Stats - =========== - Elements in the cache: {{.CacheNumber}} -{{range $index, $element := .CacheInformation}} - {{ $element.NodeType }} - Last Run: (Hits: {{$element.CacheHits}} Miss: {{$element.CacheMiss}}) | Total: (Hits: {{$element.TotalHits}} Miss: {{$element.TotalMiss}}) -{{end}} -{{- if .SkippedResources }} - ================= - Skipped Resources - ================= - {{- range $name, $reason := .SkippedResources}} - {{$name}} : {{$reason}} - {{- end}} -{{- end}} -{{- if .ManifestCollection }} - ===================== - Manifest Buffer Stats - ===================== - Buffer Flushed : {{.BufferFlushed}} times - Last Time Flushed Manifests : {{.ManifestsFlushedLastTime}} - ============================== - Manifests Flushed Per Resource - ============================== - {{- range $name, $metric := .ManifestBuffer }} - {{$name}} : {{$metric}} - {{- end }} -{{- end}} -{{- if .CLCEnabled }} - ================================================== - Dispatched Configurations on Cluster Check Runners - ================================================== - To print orchestrator check details run agent clusterchecks --check orchestrator -{{end}} -{{else}} -{{- if .LeaderName }} - Status: Follower, cluster agent leader is: {{ .LeaderName }} -{{else}} - Leader election in progress, see dedicated section for more info -{{- end}} -{{- end}} -{{- end}} -{{- end}} -{{ end }} diff --git a/pkg/status/render/templates/otlp.tmpl b/pkg/status/render/templates/otlp.tmpl deleted file mode 100644 index 42cd519f8fdf50..00000000000000 --- a/pkg/status/render/templates/otlp.tmpl +++ /dev/null @@ -1,13 +0,0 @@ -{{/* -NOTE: Changes made to this template should be reflected on the following templates, if applicable: -* cmd/agent/gui/views/templates/generalStatus.tmpl -*/}} -{{- with .otlp }} -==== -OTLP -==== - - Status: {{ if .otlpStatus }}Enabled{{else}}Not enabled{{ end }} - Collector status: {{ .otlpCollectorStatus }} - {{ if .otlpCollectorStatusErr }}Error: {{ .otlpCollectorStatusErr }}{{ end }} -{{- end -}} diff --git a/pkg/status/render/templates/process-agent.tmpl b/pkg/status/render/templates/process-agent.tmpl deleted file mode 100644 index ef1e878b963499..00000000000000 --- a/pkg/status/render/templates/process-agent.tmpl +++ /dev/null @@ -1,75 +0,0 @@ -{{/* -NOTE: Changes made to this template should be reflected on the following templates, if applicable: -* cmd/agent/gui/views/templates/generalStatus.tmpl -*/}} -============= -Process Agent -============= -{{- with .processAgentStatus }} -{{- if .error }} - - Status: Not running or unreachable -{{- else }} - - Version: {{ .core.version }} - Status date: {{ formatUnixTime .date }} - Process Agent Start: {{ formatUnixTime .expvars.uptime_nano }} - Pid: {{ .expvars.pid }} - Go Version: {{ .core.go_version }} - Build arch: {{ .core.build_arch }} - Log Level: {{ .core.config.log_level }} - Enabled Checks: {{ .expvars.enabled_checks }} - Allocated Memory: {{ humanize .expvars.memstats.alloc }} bytes - Hostname: {{ .core.metadata.meta.hostname }} - {{- if .expvars.system_probe_process_module_enabled }} - System Probe Process Module Status: Running - {{- else}} - System Probe Process Module Status: Not running - {{- end}} - Process Language Detection Enabled: {{ if .expvars.language_detection_enabled }}True{{ else }}False{{ end }} - - ================= - Process Endpoints - ================= - {{- with .expvars.endpoints}} - {{- range $key, $value := .}} - {{$key}} - API Key{{ if gt (len $value) 1}}s{{end}} ending with: - {{- range $idx, $apikey := $value }} - - {{$apikey}} - {{- end}} - {{- end}} - {{- else }} - - No endpoints information. The agent may be misconfigured. - {{- end }} - - ========= - Collector - ========= - Last collection time: {{.expvars.last_collect_time}} - Docker socket: {{.expvars.docker_socket}} - Number of processes: {{.expvars.process_count}} - Number of containers: {{.expvars.container_count}} - Process Queue length: {{.expvars.process_queue_size}} - RTProcess Queue length: {{.expvars.rtprocess_queue_size}} - Connections Queue length: {{.expvars.connections_queue_size}} - Event Queue length: {{.expvars.event_queue_size}} - Pod Queue length: {{.expvars.pod_queue_size}} - Process Bytes enqueued: {{.expvars.process_queue_bytes}} - RTProcess Bytes enqueued: {{.expvars.rtprocess_queue_bytes}} - Connections Bytes enqueued: {{.expvars.connections_queue_bytes}} - Event Bytes enqueued: {{.expvars.event_queue_bytes}} - Pod Bytes enqueued: {{.expvars.pod_queue_bytes}} - Drop Check Payloads: {{.expvars.drop_check_payloads}} - - ========== - Extractors - ========== - - Workloadmeta - ============ - Cache size: {{.expvars.workloadmeta_extractor_cache_size}} - Stale diffs discarded: {{.expvars.workloadmeta_extractor_stale_diffs}} - Diffs dropped: {{.expvars.workloadmeta_extractor_diffs_dropped}} -{{- end }} -{{- end }} diff --git a/pkg/status/render/templates/remoteconfig.tmpl b/pkg/status/render/templates/remoteconfig.tmpl deleted file mode 100644 index 687d1bff7616fa..00000000000000 --- a/pkg/status/render/templates/remoteconfig.tmpl +++ /dev/null @@ -1,18 +0,0 @@ -{{/* -NOTE: Changes made to this template should be reflected on the following templates, if applicable: -* cmd/agent/gui/views/templates/generalStatus.tmpl -*/}} -==================== -Remote Configuration -==================== - {{ with .remoteConfiguration }} - {{ if not .disabledReason }} - Organization enabled: {{ if and .orgEnabled (eq .orgEnabled "true") }}True{{ else }}False{{ end }} - API Key: {{ if and .apiKeyScoped (eq .apiKeyScoped "true") }}Authorized{{ else }}Not authorized, add the Remote Configuration Read permission to enable it for this agent.{{ end }} - Last error: {{ if .lastError }}{{ .lastError }}{{ else }}None{{ end }} - {{ else }} - Remote Configuration is disabled because {{ .disabledReason }} - {{ end }} - {{ else }} - Remote Configuration is disabled - {{ end }} diff --git a/pkg/status/render/templates/rendererrors.tmpl b/pkg/status/render/templates/rendererrors.tmpl deleted file mode 100644 index 140b6a4e470254..00000000000000 --- a/pkg/status/render/templates/rendererrors.tmpl +++ /dev/null @@ -1,11 +0,0 @@ -{{/* -NOTE: Changes made to this template should be reflected on the following templates, if applicable: -* cmd/agent/gui/views/templates/generalStatus.tmpl -*/}}{{ if gt (len .) 0 }} -==================== -Status render errors -==================== -{{- range $err := . }} - - {{ $err }} -{{ end }} -{{ end }} diff --git a/pkg/status/render/templates/runtimesecurity.tmpl b/pkg/status/render/templates/runtimesecurity.tmpl deleted file mode 100644 index 542c7082e2fa4a..00000000000000 --- a/pkg/status/render/templates/runtimesecurity.tmpl +++ /dev/null @@ -1,83 +0,0 @@ -================ -Runtime Security -================ - -{{- if not .runtimeSecurityStatus}} - Not enabled -{{- else}} - {{- with .runtimeSecurityStatus}} - {{ if .endpoints }} - {{- range $endpoint := .endpoints }} - {{ $endpoint }} - {{- end }} - {{- end }} - Connected: {{.connected}} - Events received: {{.eventReceived}} - - Self Tests - ========== - - Last execution: {{ .selfTests.LastTimestamp }} - {{ if .selfTests.Success }} - Succeeded: - {{- range $test := .selfTests.Success }} - - {{ $test }} - {{- end }} - {{- else }} - Succeeded: none - {{- end }} - {{ if .selfTests.Fails }} - Failed: - {{- range $test := .selfTests.Fails }} - - {{ $test }} - {{- end }} - {{- else }} - Failed: none - {{- end }} - - Policies - ======== - {{ range $policy := .policiesStatus }} - {{ $policy.name }}: - source: {{ $policy.source }} - rules: - {{- range $status := $policy.Status }} - - {{ $status.ID }}: {{ $status.Status }}{{- if $status.Error }} ({{- $status.Error }}){{- end }} - {{- end }} - {{ end }} - - {{- with .environment }} - - Environment - =========== - {{- if .warnings }} - Warnings: - {{- range $warning := .warnings }} - - {{ $warning }} - {{- end }} - {{- end }} - {{ if .kernelLockdown }} - Kernel lockdown: {{ .kernelLockdown }} - {{- end }} - {{- if .mmapableMaps }} - Use eBPF mmapable maps: {{ .mmapableMaps }} - {{- end }} - {{- if .ringBuffer }} - Use eBPF ring buffer: {{ .ringBuffer }} - {{- end }} - {{ if .constantFetchers }} - Available constant fetchers - =========================== - {{ range $fetcher := .constantFetchers.Fetchers }} - {{ $fetcher }} - {{- end }} - - Constants - ========= - {{ range $constant := .constantFetchers.Values }} - {{ $constant.ID }} = {{ $constant.Value }} (from {{ $constant.Source }}) - {{- end }} - {{- end }} - {{- end }} - {{- end }} -{{- end }} diff --git a/pkg/status/render/templates/snmp-traps.tmpl b/pkg/status/render/templates/snmp-traps.tmpl deleted file mode 100644 index 01a88bcec3a740..00000000000000 --- a/pkg/status/render/templates/snmp-traps.tmpl +++ /dev/null @@ -1,15 +0,0 @@ -{{/* -NOTE: Changes made to this template should be reflected on the following templates, if applicable: -* cmd/agent/gui/views/templates/generalStatus.tmpl -*/}} -{{- with .snmpTrapsStats }} -========== -SNMP Traps -========== -{{- if .error }} - Error: {{.error}} -{{- end }} -{{- range $key, $value := .metrics}} - {{formatTitle $key}}: {{humanize $value}} -{{- end }} -{{- end -}} diff --git a/pkg/status/render/templates/systemprobe.tmpl b/pkg/status/render/templates/systemprobe.tmpl deleted file mode 100644 index 514d5395124d32..00000000000000 --- a/pkg/status/render/templates/systemprobe.tmpl +++ /dev/null @@ -1,92 +0,0 @@ -{{- with .systemProbeStats}} -============ -System Probe -============ - -{{- if .Errors }} - Status: Not running or unreachable - Error: {{ .Errors }} -{{- else }} - Status: Running - Uptime: {{ .uptime }} - Last Updated: {{ formatUnixTime .updated_at }} -{{- end }} -{{- if .network_tracer }} - - USM - === - Status: {{ .network_tracer.universal_service_monitoring.state }} - {{- if .network_tracer.universal_service_monitoring.error }} - Error: {{ .network_tracer.universal_service_monitoring.error }} - {{- end }} - {{- if .network_tracer.universal_service_monitoring.last_check }} - Last Check: {{ formatUnixTime .network_tracer.universal_service_monitoring.last_check }} - {{- end }} - - NPM - === - {{- if .network_tracer.Error }} - Status: Not running - Error: {{ .network_tracer.Error }} - {{- else }} - Status: Running - {{- if .network_tracer.tracer.last_check }} - Last Check: {{ formatUnixTime .network_tracer.tracer.last_check }} - {{- end }} - {{- if .network_tracer.state.clients }} - Client Count: {{ len .network_tracer.state.clients }} - {{- end }} - {{- end }} -{{- end }} -{{- if .oom_kill_probe }} - - OOM Kill - ======== - {{- if .oom_kill_probe.Error }} - Status: Not running - Error: {{ .oom_kill_probe.Error }} - {{- else }} - Status: Running - {{- if .oom_kill_probe.last_check }} - Last Check: {{ formatUnixTime .oom_kill_probe.last_check }} - {{- end }} - {{- end }} -{{- end }} -{{- if .tcp_queue_length_tracer }} - - TCP Queue Length - ================ - {{- if .tcp_queue_length_tracer.Error }} - Status: Not running - Error: {{ .tcp_queue_length_tracer.Error }} - {{- else }} - Status: Running - {{- if .tcp_queue_length_tracer.last_check }} - Last Check: {{ formatUnixTime .tcp_queue_length_tracer.last_check }} - {{- end }} - {{- end }} -{{- end }} -{{- if .event_monitor }} - - Event Monitor - ================ - {{- if .event_monitor.Error }} - Status: Not running - Error: {{ .event_monitor.Error }} - {{- else }} - Status: Running - {{- end }} -{{- end }} -{{- if .process }} - - Process - ======= - {{- if .process.Error }} - Status: Not running - Error: {{ .process.Error }} - {{- else }} - Status: Running - {{- end }} -{{- end }} -{{- end }} - diff --git a/pkg/status/render/templates/trace-agent.tmpl b/pkg/status/render/templates/trace-agent.tmpl deleted file mode 100644 index cc91c088920321..00000000000000 --- a/pkg/status/render/templates/trace-agent.tmpl +++ /dev/null @@ -1,53 +0,0 @@ -{{/* -NOTE: Changes made to this template should be reflected on the following templates, if applicable: -* cmd/agent/gui/views/templates/generalStatus.tmpl -*/}} -========= -APM Agent -========= -{{- with .apmStats }} -{{- if .error }} - - Status: Not running or unreachable on localhost:{{.port}}. - Error: {{.error}} -{{- else}} - Status: Running - Pid: {{.pid}} - Uptime: {{.uptime}} seconds - Mem alloc: {{humanize .memstats.Alloc}} bytes - Hostname: {{.config.Hostname}} - Receiver: {{.config.ReceiverHost}}:{{.config.ReceiverPort}} - Endpoints: - {{- range $i, $e := .config.Endpoints}} - {{ $e.Host }} - {{- end }} - - Receiver (previous minute) - ========================== - {{- if eq (len .receiver) 0}} - No traces received in the previous minute. - {{- end -}} - {{range $i, $ts := .receiver }} - From {{if $ts.Lang}}{{ $ts.Lang }} {{ $ts.LangVersion }} ({{ $ts.Interpreter }}), client {{ $ts.TracerVersion }}{{else}}unknown clients{{end}} - Traces received: {{ $ts.TracesReceived }} ({{ humanize $ts.TracesBytes }} bytes) - Spans received: {{ $ts.SpansReceived }} - {{ with $ts.WarnString }} - WARNING: {{ . }} - {{end}} - {{- end}} - {{range $key, $value := .ratebyservice_filtered -}} - {{- if eq $key "service:,env:" -}} - Default priority sampling rate: {{percent $value}}% - {{- else}} - Priority sampling rate for '{{ $key }}': {{percent $value}}% - {{- end}} - {{- end }} - - Writer (previous minute) - ======================== - Traces: {{.trace_writer.Payloads}} payloads, {{.trace_writer.Traces}} traces, {{.trace_writer.Events}} events, {{humanize .trace_writer.Bytes}} bytes - {{- if gt .trace_writer.Errors 0.0}}WARNING: Traces API errors (1 min): {{.trace_writer.Errors}}{{end}} - Stats: {{.stats_writer.Payloads}} payloads, {{.stats_writer.StatsBuckets}} stats buckets, {{humanize .stats_writer.Bytes}} bytes - {{- if gt .stats_writer.Errors 0.0}}WARNING: Stats API errors (1 min): {{.stats_writer.Errors}}{{end}} -{{- end}} -{{- end}} diff --git a/pkg/status/snmptraps/snmptraps.go b/pkg/status/snmptraps/snmptraps.go deleted file mode 100644 index e30e54037b0eab..00000000000000 --- a/pkg/status/snmptraps/snmptraps.go +++ /dev/null @@ -1,20 +0,0 @@ -// Unless explicitly stated otherwise all files in this repository are licensed -// under the Apache License Version 2.0. -// This product includes software developed at Datadog (https://www.datadoghq.com/). -// Copyright 2016-present Datadog, Inc. - -// Package snmptraps fetch information needed to render the 'snmptraps' section of the status page. -package snmptraps - -import ( - trapsconfig "github.com/DataDog/datadog-agent/comp/snmptraps/config" - "github.com/DataDog/datadog-agent/comp/snmptraps/status/statusimpl" - "github.com/DataDog/datadog-agent/pkg/config" -) - -// PopulateStatus populates the status stats -func PopulateStatus(stats map[string]interface{}) { - if trapsconfig.IsEnabled(config.Datadog) { - stats["snmpTrapsStats"] = statusimpl.GetStatus() - } -} diff --git a/pkg/status/status.go b/pkg/status/status.go index 9d42524da064b6..9c36968ad31be4 100644 --- a/pkg/status/status.go +++ b/pkg/status/status.go @@ -9,137 +9,8 @@ package status import ( "encoding/json" "expvar" - "strings" - - hostMetadataUtils "github.com/DataDog/datadog-agent/comp/metadata/host/hostimpl/utils" - "github.com/DataDog/datadog-agent/comp/metadata/inventoryagent" - "github.com/DataDog/datadog-agent/pkg/collector/python" - "github.com/DataDog/datadog-agent/pkg/config" - logsStatus "github.com/DataDog/datadog-agent/pkg/logs/status" - "github.com/DataDog/datadog-agent/pkg/status/apm" - "github.com/DataDog/datadog-agent/pkg/status/autodiscovery" - "github.com/DataDog/datadog-agent/pkg/status/clusteragent" - commonStatus "github.com/DataDog/datadog-agent/pkg/status/common" - "github.com/DataDog/datadog-agent/pkg/status/endpoints" - "github.com/DataDog/datadog-agent/pkg/status/jmx" - "github.com/DataDog/datadog-agent/pkg/status/otlp" - "github.com/DataDog/datadog-agent/pkg/status/processagent" - "github.com/DataDog/datadog-agent/pkg/status/remoteconfiguration" - "github.com/DataDog/datadog-agent/pkg/status/render" - "github.com/DataDog/datadog-agent/pkg/status/systemprobe" - httputils "github.com/DataDog/datadog-agent/pkg/util/http" ) -// GetStatus grabs the status from expvar and puts it into a map -func GetStatus(verbose bool, invAgent inventoryagent.Component) (map[string]interface{}, error) { - stats, err := commonStatus.GetStatus(invAgent) - if err != nil { - return nil, err - } - stats["verbose"] = verbose - stats["config"] = getPartialConfig() - metadata := stats["metadata"].(*hostMetadataUtils.Payload) - hostTags := make([]string, 0, len(metadata.HostTags.System)+len(metadata.HostTags.GoogleCloudPlatform)) - hostTags = append(hostTags, metadata.HostTags.System...) - hostTags = append(hostTags, metadata.HostTags.GoogleCloudPlatform...) - stats["hostTags"] = hostTags - - pythonVersion := python.GetPythonVersion() - stats["python_version"] = strings.Split(pythonVersion, " ")[0] - stats["hostinfo"] = hostMetadataUtils.GetInformation() - - jmx.PopulateStatus(stats) - - stats["logsStats"] = logsStatus.Get(verbose) - - otlp.PopulateStatus(stats) - - endpoints.PopulateStatus(stats) - - if config.Datadog.GetBool("cluster_agent.enabled") || config.Datadog.GetBool("cluster_checks.enabled") { - clusteragent.GetDCAStatus(stats) - } - - if config.SystemProbe.GetBool("system_probe_config.enabled") { - systemprobe.GetStatus(stats, config.SystemProbe.GetString("system_probe_config.sysprobe_socket")) - } - - stats["processAgentStatus"] = processagent.GetStatus() - stats["apmStats"] = apm.GetAPMStatus() - - if !config.Datadog.GetBool("no_proxy_nonexact_match") { - stats["TransportWarnings"] = httputils.GetNumberOfWarnings() > 0 - stats["NoProxyIgnoredWarningMap"] = httputils.GetProxyIgnoredWarnings() - stats["NoProxyUsedInFuture"] = httputils.GetProxyUsedInFutureWarnings() - stats["NoProxyChanged"] = httputils.GetProxyIgnoredWarnings() - } - - if config.IsContainerized() { - autodiscovery.PopulateStatus(stats) - } - - remoteconfiguration.PopulateStatus(stats) - return stats, nil -} - -// GetAndFormatStatus gets and formats the status all in one go -func GetAndFormatStatus(invAgent inventoryagent.Component) ([]byte, error) { - s, err := GetStatus(true, invAgent) - if err != nil { - return nil, err - } - - statusJSON, err := json.Marshal(s) - if err != nil { - return nil, err - } - - st, err := render.FormatStatus(statusJSON) - if err != nil { - return nil, err - } - - return []byte(st), nil -} - -// GetAndFormatSecurityAgentStatus gets and formats the security agent status -func GetAndFormatSecurityAgentStatus(runtimeStatus, complianceStatus map[string]interface{}) ([]byte, error) { - // inventory metadata is not enabled in the security agent, we pass nil to GetStatus - s, err := GetStatus(true, nil) - if err != nil { - return nil, err - } - s["runtimeSecurityStatus"] = runtimeStatus - s["complianceStatus"] = complianceStatus - - statusJSON, err := json.Marshal(s) - if err != nil { - return nil, err - } - - st, err := render.FormatSecurityAgentStatus(statusJSON) - if err != nil { - return nil, err - } - - return []byte(st), nil -} - -// getPartialConfig returns config parameters of interest for the status page -func getPartialConfig() map[string]string { - conf := make(map[string]string) - conf["log_file"] = config.Datadog.GetString("log_file") - conf["log_level"] = config.Datadog.GetString("log_level") - conf["confd_path"] = config.Datadog.GetString("confd_path") - conf["additional_checksd"] = config.Datadog.GetString("additional_checksd") - - conf["fips_enabled"] = config.Datadog.GetString("fips.enabled") - conf["fips_local_address"] = config.Datadog.GetString("fips.local_address") - conf["fips_port_range_start"] = config.Datadog.GetString("fips.port_range_start") - - return conf -} - // GetExpvarRunnerStats grabs the status of the runner from expvar // and puts it into a CLCChecks struct func GetExpvarRunnerStats() (CLCChecks, error) { From 85871eadd769876875e715f71634ff638caae649 Mon Sep 17 00:00:00 2001 From: pducolin <45568537+pducolin@users.noreply.github.com> Date: Fri, 8 Mar 2024 13:13:23 +0100 Subject: [PATCH 092/155] [e2e] bump test-infra (#23569) Changelog: https://github.com/DataDog/test-infra-definitions/compare/a1d921006e35...6dbc5dad4e60 --- test/new-e2e/go.mod | 2 +- test/new-e2e/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/test/new-e2e/go.mod b/test/new-e2e/go.mod index 7e6ac0052560e0..f987de4d5a4959 100644 --- a/test/new-e2e/go.mod +++ b/test/new-e2e/go.mod @@ -27,7 +27,7 @@ require ( // `TEST_INFRA_DEFINITIONS_BUILDIMAGES` matches the commit sha in the module version // Example: github.com/DataDog/test-infra-definitions v0.0.0-YYYYMMDDHHmmSS-0123456789AB // => TEST_INFRA_DEFINITIONS_BUILDIMAGES: 0123456789AB - github.com/DataDog/test-infra-definitions v0.0.0-20240306160032-a1d921006e35 + github.com/DataDog/test-infra-definitions v0.0.0-20240308103459-6dbc5dad4e60 github.com/aws/aws-sdk-go-v2 v1.25.2 github.com/aws/aws-sdk-go-v2/config v1.27.6 github.com/aws/aws-sdk-go-v2/service/ec2 v1.138.1 diff --git a/test/new-e2e/go.sum b/test/new-e2e/go.sum index efd9182f148bbc..f719d01f3618b9 100644 --- a/test/new-e2e/go.sum +++ b/test/new-e2e/go.sum @@ -12,8 +12,8 @@ github.com/DataDog/datadog-api-client-go/v2 v2.19.0 h1:Wvz/63/q39EpVwSH1T8jVyRvP github.com/DataDog/datadog-api-client-go/v2 v2.19.0/go.mod h1:oD5Lx8Li3oPRa/BSBenkn4i48z+91gwYORF/+6ph71g= github.com/DataDog/mmh3 v0.0.0-20200805151601-30884ca2197a h1:m9REhmyaWD5YJ0P53ygRHxKKo+KM+nw+zz0hEdKztMo= github.com/DataDog/mmh3 v0.0.0-20200805151601-30884ca2197a/go.mod h1:SvsjzyJlSg0rKsqYgdcFxeEVflx3ZNAyFfkUHP0TxXg= -github.com/DataDog/test-infra-definitions v0.0.0-20240306160032-a1d921006e35 h1:a53/jzR6IVWpq8ZvnxAV5wcqrlNl7uhvOtaO2FubRFc= -github.com/DataDog/test-infra-definitions v0.0.0-20240306160032-a1d921006e35/go.mod h1:e2N24reKK2YalYpReudXYPTIiCRU+mWBq8vKVaYrQ7E= +github.com/DataDog/test-infra-definitions v0.0.0-20240308103459-6dbc5dad4e60 h1:tqcSA47YHKr+5xucM9Ffu7hNti73o55APnoSFPauYDk= +github.com/DataDog/test-infra-definitions v0.0.0-20240308103459-6dbc5dad4e60/go.mod h1:e2N24reKK2YalYpReudXYPTIiCRU+mWBq8vKVaYrQ7E= github.com/DataDog/zstd v1.5.2 h1:vUG4lAyuPCXO0TLbXvPv7EB7cNK1QV/luu55UHLrrn8= github.com/DataDog/zstd v1.5.2/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/DataDog/zstd_0 v0.0.0-20210310093942-586c1286621f h1:5Vuo4niPKFkfwW55jV4vY0ih3VQ9RaQqeqY67fvRn8A= From 8a60fef769af334ad11f2499b1c0b46a2c2e3781 Mon Sep 17 00:00:00 2001 From: AliDatadog <125997632+AliDatadog@users.noreply.github.com> Date: Fri, 8 Mar 2024 14:39:49 +0100 Subject: [PATCH 093/155] unmark TestSBOM as flaky (#23565) --- test/new-e2e/tests/containers/k8s_test.go | 3 --- 1 file changed, 3 deletions(-) diff --git a/test/new-e2e/tests/containers/k8s_test.go b/test/new-e2e/tests/containers/k8s_test.go index 4a5d38e2ff3965..92b635e5c4a9b7 100644 --- a/test/new-e2e/tests/containers/k8s_test.go +++ b/test/new-e2e/tests/containers/k8s_test.go @@ -794,9 +794,6 @@ func (suite *k8sSuite) TestContainerImage() { } func (suite *k8sSuite) TestSBOM() { - // TODO: https://datadoghq.atlassian.net/browse/CONTINT-3776 - suite.T().Skip("CONTINT-3776: SBOM test is flaky") - suite.EventuallyWithTf(func(c *assert.CollectT) { sbomIDs, err := suite.Fakeintake.GetSBOMIDs() // Can be replaced by require.NoErrorf(…) once https://github.com/stretchr/testify/pull/1481 is merged From 5d68596816649140d4305aacf430dd803cd7748d Mon Sep 17 00:00:00 2001 From: AliDatadog <125997632+AliDatadog@users.noreply.github.com> Date: Fri, 8 Mar 2024 14:47:22 +0100 Subject: [PATCH 094/155] [CONTINT-3558] Add e2e tests for APM origin detection on k8s (#22969) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * implement e2e test for APM origin detection * remove test of cgroup version * only test the namespace workload-tracegen * simplify the logic with two separate tests for TCP and UDS * iterate from the most recent traces * bump test infra definitions * fix image_tag issue * add docker_image and image_tag to ecs suite * rebump * hardcode the image tag * Update test/new-e2e/tests/containers/k8s_test.go Co-authored-by: Lénaïc Huard * Update test/new-e2e/tests/containers/k8s_test.go Co-authored-by: Lénaïc Huard * Remove the `require` func Co-authored-by: Lénaïc Huard * Update error message Co-authored-by: Lénaïc Huard * Iterate in normal order Co-authored-by: Lénaïc Huard * Rename test --------- Co-authored-by: Lénaïc Huard --- test/new-e2e/tests/containers/k8s_test.go | 61 +++++++++++++++++++++-- 1 file changed, 58 insertions(+), 3 deletions(-) diff --git a/test/new-e2e/tests/containers/k8s_test.go b/test/new-e2e/tests/containers/k8s_test.go index 92b635e5c4a9b7..ebba18c9422f65 100644 --- a/test/new-e2e/tests/containers/k8s_test.go +++ b/test/new-e2e/tests/containers/k8s_test.go @@ -14,15 +14,15 @@ import ( "github.com/DataDog/agent-payload/v5/cyclonedx_v1_4" "github.com/DataDog/agent-payload/v5/sbom" - "github.com/samber/lo" - "gopkg.in/zorkian/go-datadog-api.v2" - "github.com/DataDog/datadog-agent/pkg/util/pointer" "github.com/DataDog/datadog-agent/test/fakeintake/aggregator" fakeintake "github.com/DataDog/datadog-agent/test/fakeintake/client" + "gopkg.in/zorkian/go-datadog-api.v2" "github.com/fatih/color" + "github.com/samber/lo" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/fields" @@ -36,6 +36,9 @@ import ( const ( kubeNamespaceDogstatsWorkload = "workload-dogstatsd" kubeNamespaceDogstatsStandaloneWorkload = "workload-dogstatsd-standalone" + kubeNamespaceTracegenWorkload = "workload-tracegen" + kubeDeploymentTracegenTCPWorkload = "tracegen-tcp" + kubeDeploymentTracegenUDSWorkload = "tracegen-uds" ) var GitCommit string @@ -1033,3 +1036,55 @@ func (suite *k8sSuite) podExec(namespace, pod, container string, cmd []string) ( return stdoutSb.String(), stderrSb.String(), nil } + +func (suite *k8sSuite) TestTraceUDS() { + suite.testTrace(kubeDeploymentTracegenUDSWorkload) +} + +func (suite *k8sSuite) TestTraceTCP() { + suite.testTrace(kubeDeploymentTracegenTCPWorkload) +} + +// testTrace verifies that traces are tagged with container and pod tags. +func (suite *k8sSuite) testTrace(kubeDeployment string) { + suite.EventuallyWithTf(func(c *assert.CollectT) { + traces, cerr := suite.Fakeintake.GetTraces() + // Can be replaced by require.NoErrorf(…) once https://github.com/stretchr/testify/pull/1481 is merged + if !assert.NoErrorf(c, cerr, "Failed to query fake intake") { + return + } + + var err error + // Iterate starting from the most recent traces + for _, trace := range traces { + tags := lo.MapToSlice(trace.Tags, func(k string, v string) string { + return k + ":" + v + }) + // Assert origin detection is working properly + err = assertTags(tags, []*regexp.Regexp{ + regexp.MustCompile(`^container_id:`), + regexp.MustCompile(`^container_name:` + kubeDeployment + `$`), + regexp.MustCompile(`^display_container_name:` + kubeDeployment + `_` + kubeDeployment + `-[[:alnum:]]+-[[:alnum:]]+$`), + regexp.MustCompile(`^git.commit.sha:`), + regexp.MustCompile(`^git.repository_url:https://github.com/DataDog/test-infra-definitions$`), + regexp.MustCompile(`^image_id:`), // field is inconsistent. it can be a hash or an image + hash + regexp.MustCompile(`^image_name:ghcr.io/datadog/apps-tracegen$`), + regexp.MustCompile(`^image_tag:main$`), + regexp.MustCompile(`^kube_container_name:` + kubeDeployment + `$`), + regexp.MustCompile(`^kube_deployment:` + kubeDeployment + `$`), + regexp.MustCompile(`^kube_namespace:` + kubeNamespaceTracegenWorkload + `$`), + regexp.MustCompile(`^kube_ownerref_kind:replicaset$`), + regexp.MustCompile(`^kube_ownerref_name:` + kubeDeployment + `-[[:alnum:]]+$`), + regexp.MustCompile(`^kube_replica_set:` + kubeDeployment + `-[[:alnum:]]+$`), + regexp.MustCompile(`^kube_qos:burstable$`), + regexp.MustCompile(`^pod_name:` + kubeDeployment + `-[[:alnum:]]+-[[:alnum:]]+$`), + regexp.MustCompile(`^pod_phase:running$`), + regexp.MustCompile(`^short_image:apps-tracegen$`), + }) + if err == nil { + break + } + } + require.NoErrorf(c, err, "Failed finding trace with proper tags") + }, 2*time.Minute, 10*time.Second, "Failed finding trace with proper tags") +} From ae825812058ad88e75ab4b2f3de114248ea25342 Mon Sep 17 00:00:00 2001 From: William Yu <7888158+wiyu@users.noreply.github.com> Date: Fri, 8 Mar 2024 10:23:55 -0500 Subject: [PATCH 095/155] [PROCS-3723][PROCS-3724] Use the process agent component in core agent(linux only) and process-agent (#23310) Co-authored-by: daniel-taf --- cmd/agent/subcommands/run/command.go | 7 ++ cmd/agent/subcommands/run/command_windows.go | 3 + cmd/process-agent/command/main_common.go | 34 ++++++++-- comp/process/agent/agent_fallback.go | 21 ++++++ .../agent/{agentimpl => }/agent_linux.go | 24 ++++--- comp/process/agent/agentimpl/agent.go | 66 +++++++------------ .../process/agent/agentimpl/agent_fallback.go | 18 ----- .../agent/agentimpl/agent_linux_test.go | 10 +-- comp/process/agent/agentimpl/agent_test.go | 10 +-- comp/process/agent/component.go | 2 + comp/process/bundle.go | 9 +-- comp/process/bundle_test.go | 5 ++ comp/process/runner/runnerimpl/runner.go | 24 ++++--- comp/process/runner/runnerimpl/runner_test.go | 15 +++++ .../submitter/submitterimpl/submitter.go | 29 ++++---- .../submitter/submitterimpl/submitter_mock.go | 2 + go.mod | 2 +- pkg/process/checks/host_info.go | 11 ++++ pkg/process/checks/host_info_test.go | 6 ++ pkg/process/runner/collector_api_test.go | 5 +- pkg/process/runner/runner.go | 47 ++++++++----- pkg/process/runner/submitter.go | 11 +++- ...-in-core-agent-linux-c19289949eb0d602.yaml | 6 ++ .../config/process_check_in_core_agent.yaml | 10 +++ test/new-e2e/tests/process/linux_test.go | 37 ++++++++++- test/new-e2e/tests/process/testing.go | 11 ++++ 26 files changed, 298 insertions(+), 127 deletions(-) create mode 100644 comp/process/agent/agent_fallback.go rename comp/process/agent/{agentimpl => }/agent_linux.go (63%) delete mode 100644 comp/process/agent/agentimpl/agent_fallback.go create mode 100644 releasenotes/notes/process-agent-run-in-core-agent-linux-c19289949eb0d602.yaml create mode 100644 test/new-e2e/tests/process/config/process_check_in_core_agent.yaml diff --git a/cmd/agent/subcommands/run/command.go b/cmd/agent/subcommands/run/command.go index 34d04143c4d430..0fc35050110286 100644 --- a/cmd/agent/subcommands/run/command.go +++ b/cmd/agent/subcommands/run/command.go @@ -47,6 +47,8 @@ import ( "github.com/DataDog/datadog-agent/comp/core/flare" "github.com/DataDog/datadog-agent/comp/core/log" "github.com/DataDog/datadog-agent/comp/core/log/logimpl" + "github.com/DataDog/datadog-agent/comp/process" + "github.com/DataDog/datadog-agent/comp/core/secrets" "github.com/DataDog/datadog-agent/comp/core/status" "github.com/DataDog/datadog-agent/comp/core/status/statusimpl" @@ -83,6 +85,7 @@ import ( netflowServer "github.com/DataDog/datadog-agent/comp/netflow/server" "github.com/DataDog/datadog-agent/comp/otelcol" otelcollector "github.com/DataDog/datadog-agent/comp/otelcol/collector" + processAgent "github.com/DataDog/datadog-agent/comp/process/agent" processagentStatusImpl "github.com/DataDog/datadog-agent/comp/process/status/statusimpl" remoteconfig "github.com/DataDog/datadog-agent/comp/remote-config" "github.com/DataDog/datadog-agent/comp/remote-config/rcclient" @@ -199,6 +202,7 @@ func run(log log.Component, sharedSerializer serializer.MetricSerializer, cliParams *cliParams, logsAgent optional.Option[logsAgent.Component], + processAgent processAgent.Component, otelcollector otelcollector.Component, _ host.Component, _ inventoryagent.Component, @@ -265,6 +269,7 @@ func run(log log.Component, taggerComp, rcclient, logsAgent, + processAgent, forwarder, sharedSerializer, otelcollector, @@ -383,6 +388,7 @@ func getSharedFxOption() fx.Option { netflow.Bundle(), snmptraps.Bundle(), collectorimpl.Module(), + process.Bundle(), ) } @@ -399,6 +405,7 @@ func startAgent( taggerComp tagger.Component, rcclient rcclient.Component, logsAgent optional.Option[logsAgent.Component], + _ processAgent.Component, _ defaultforwarder.Component, _ serializer.MetricSerializer, otelcollector otelcollector.Component, diff --git a/cmd/agent/subcommands/run/command_windows.go b/cmd/agent/subcommands/run/command_windows.go index c95d2465881559..fb9b1862cf4f54 100644 --- a/cmd/agent/subcommands/run/command_windows.go +++ b/cmd/agent/subcommands/run/command_windows.go @@ -61,6 +61,7 @@ import ( "github.com/DataDog/datadog-agent/comp/metadata/runner" netflowServer "github.com/DataDog/datadog-agent/comp/netflow/server" otelcollector "github.com/DataDog/datadog-agent/comp/otelcol/collector" + processAgent "github.com/DataDog/datadog-agent/comp/process/agent" "github.com/DataDog/datadog-agent/comp/remote-config/rcclient" "github.com/DataDog/datadog-agent/pkg/serializer" "github.com/DataDog/datadog-agent/pkg/util/fxutil" @@ -95,6 +96,7 @@ func StartAgentWithDefaults(ctxChan <-chan context.Context) (<-chan error, error rcclient rcclient.Component, forwarder defaultforwarder.Component, logsAgent optional.Option[logsAgent.Component], + processAgent processAgent.Component, metadataRunner runner.Component, sharedSerializer serializer.MetricSerializer, otelcollector otelcollector.Component, @@ -126,6 +128,7 @@ func StartAgentWithDefaults(ctxChan <-chan context.Context) (<-chan error, error taggerComp, rcclient, logsAgent, + processAgent, forwarder, sharedSerializer, otelcollector, diff --git a/cmd/process-agent/command/main_common.go b/cmd/process-agent/command/main_common.go index 29038c38614732..c2f7acee85cba6 100644 --- a/cmd/process-agent/command/main_common.go +++ b/cmd/process-agent/command/main_common.go @@ -8,6 +8,7 @@ package command import ( "context" + "errors" "fmt" "os" @@ -20,6 +21,7 @@ import ( logComponent "github.com/DataDog/datadog-agent/comp/core/log" "github.com/DataDog/datadog-agent/comp/core/secrets" "github.com/DataDog/datadog-agent/comp/core/status" + coreStatusImpl "github.com/DataDog/datadog-agent/comp/core/status/statusimpl" "github.com/DataDog/datadog-agent/comp/core/sysprobeconfig" "github.com/DataDog/datadog-agent/comp/core/sysprobeconfig/sysprobeconfigimpl" "github.com/DataDog/datadog-agent/comp/core/tagger" @@ -28,11 +30,12 @@ import ( compstatsd "github.com/DataDog/datadog-agent/comp/dogstatsd/statsd" hostMetadataUtils "github.com/DataDog/datadog-agent/comp/metadata/host/hostimpl/utils" "github.com/DataDog/datadog-agent/comp/process" + "github.com/DataDog/datadog-agent/comp/process/agent" "github.com/DataDog/datadog-agent/comp/process/apiserver" "github.com/DataDog/datadog-agent/comp/process/expvars" "github.com/DataDog/datadog-agent/comp/process/hostinfo" "github.com/DataDog/datadog-agent/comp/process/profiler" - "github.com/DataDog/datadog-agent/comp/process/runner" + "github.com/DataDog/datadog-agent/comp/process/status/statusimpl" "github.com/DataDog/datadog-agent/comp/process/types" remoteconfig "github.com/DataDog/datadog-agent/comp/remote-config" "github.com/DataDog/datadog-agent/comp/remote-config/rcclient" @@ -58,6 +61,9 @@ to your datadog.yaml file. Exiting.` ) +// errAgentDisabled indicates that the process-agent wasn't enabled through environment variable or config. +var errAgentDisabled = errors.New("process-agent not enabled") + func runAgent(ctx context.Context, globalParams *GlobalParams) error { if globalParams.PidFilePath != "" { err := pidfile.WritePID(globalParams.PidFilePath) @@ -133,6 +139,10 @@ func runApp(ctx context.Context, globalParams *GlobalParams) error { // Provide tagger module tagger.Module(), + // Provide status modules + statusimpl.Module(), + coreStatusImpl.Module(), + // Provide statsd client module compstatsd.Module(), @@ -169,14 +179,18 @@ func runApp(ctx context.Context, globalParams *GlobalParams) error { // Invoke the components that we want to start fx.Invoke(func( - runner.Component, - profiler.Component, - expvars.Component, - apiserver.Component, + _ profiler.Component, + _ expvars.Component, + _ apiserver.Component, // TODO: This is needed by the container-provider which is not currently a component. // We should ensure the tagger is a dependency when converting to a component. - tagger.Component, - ) { + _ tagger.Component, + processAgent agent.Component, + ) error { + if !processAgent.Enabled() { + return errAgentDisabled + } + return nil }), // Initialize the remote-config client to update the runtime settings @@ -190,6 +204,12 @@ func runApp(ctx context.Context, globalParams *GlobalParams) error { ) if err := app.Err(); err != nil { + + if errors.Is(err, errAgentDisabled) { + log.Info("process-agent is not enabled, exiting...") + return nil + } + // At this point it is not guaranteed that the logger has been successfully initialized. We should fall back to // stdout just in case. if appInitDeps.Logger == nil { diff --git a/comp/process/agent/agent_fallback.go b/comp/process/agent/agent_fallback.go new file mode 100644 index 00000000000000..0ea2f081146847 --- /dev/null +++ b/comp/process/agent/agent_fallback.go @@ -0,0 +1,21 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2024-present Datadog, Inc. + +//go:build !linux + +package agent + +import ( + "github.com/DataDog/datadog-agent/comp/core/config" + logComponent "github.com/DataDog/datadog-agent/comp/core/log" + "github.com/DataDog/datadog-agent/comp/process/types" + "github.com/DataDog/datadog-agent/pkg/util/flavor" +) + +// Enabled determines whether the process agent is enabled based on the configuration +// The process-agent always runs as a stand-alone agent in all non-linux platforms +func Enabled(_ config.Component, _ []types.CheckComponent, _ logComponent.Component) bool { + return flavor.GetFlavor() == flavor.ProcessAgent +} diff --git a/comp/process/agent/agentimpl/agent_linux.go b/comp/process/agent/agent_linux.go similarity index 63% rename from comp/process/agent/agentimpl/agent_linux.go rename to comp/process/agent/agent_linux.go index 16f6e68df59bef..5ded30575b6c05 100644 --- a/comp/process/agent/agentimpl/agent_linux.go +++ b/comp/process/agent/agent_linux.go @@ -5,25 +5,28 @@ //go:build linux -package agentimpl +package agent import ( + "github.com/DataDog/datadog-agent/comp/core/config" + logComponent "github.com/DataDog/datadog-agent/comp/core/log" + "github.com/DataDog/datadog-agent/comp/process/types" "github.com/DataDog/datadog-agent/pkg/process/checks" "github.com/DataDog/datadog-agent/pkg/util/flavor" ) -// agentEnabled determines whether the process agent is enabled based on the configuration. +// Enabled determines whether the process agent is enabled based on the configuration. // The process-agent component on linux can be run in the core agent or as a standalone process-agent // depending on the configuration. -// It will run as a standalone Process-agent if 'run_in_core_agent' is not enabled or a the connections/NPM check is +// It will run as a standalone Process-agent if 'run_in_core_agent' is not enabled or the connections/NPM check is // enabled. // If 'run_in_core_agent' flag is enabled and the connections/NPM check is not enabled, the process-agent will run in // the core agent. -func agentEnabled(p processAgentParams) bool { - runInCoreAgent := p.Config.GetBool("process_config.run_in_core_agent.enabled") +func Enabled(config config.Component, checkComponents []types.CheckComponent, log logComponent.Component) bool { + runInCoreAgent := config.GetBool("process_config.run_in_core_agent.enabled") var npmEnabled bool - for _, check := range p.Checks { + for _, check := range checkComponents { if check.Object().Name() == checks.ConnectionsCheckName && check.Object().IsEnabled() { npmEnabled = true break @@ -34,16 +37,21 @@ func agentEnabled(p processAgentParams) bool { case flavor.ProcessAgent: if npmEnabled { if runInCoreAgent { - p.Log.Warn("Network Performance Monitoring is not supported in the core agent. " + + log.Warn("Network Performance Monitoring is not supported in the core agent. " + "The process-agent will be enabled as a standalone agent") } return true } + + if runInCoreAgent { + log.Info("The process checks will run in the core agent") + } + return !runInCoreAgent case flavor.DefaultAgent: if npmEnabled { if runInCoreAgent { - p.Log.Error("Network Performance Monitoring is not supported in the core agent. " + + log.Error("Network Performance Monitoring is not supported in the core agent. " + "Please ensure the process-agent is enabled as a standalone agent to collect " + "process, container and network performance metrics.") } diff --git a/comp/process/agent/agentimpl/agent.go b/comp/process/agent/agentimpl/agent.go index 2f4eb4472e5db8..7141bbdf6cfbf3 100644 --- a/comp/process/agent/agentimpl/agent.go +++ b/comp/process/agent/agentimpl/agent.go @@ -7,19 +7,16 @@ package agentimpl import ( - "context" - - "github.com/opentracing/opentracing-go/log" "go.uber.org/fx" "github.com/DataDog/datadog-agent/comp/core/config" logComponent "github.com/DataDog/datadog-agent/comp/core/log" "github.com/DataDog/datadog-agent/comp/process/agent" "github.com/DataDog/datadog-agent/comp/process/runner" + submitterComp "github.com/DataDog/datadog-agent/comp/process/submitter" "github.com/DataDog/datadog-agent/comp/process/types" "github.com/DataDog/datadog-agent/pkg/process/checks" "github.com/DataDog/datadog-agent/pkg/util/fxutil" - "github.com/DataDog/datadog-agent/pkg/util/optional" ) const ( @@ -41,22 +38,25 @@ func Module() fxutil.Module { type processAgentParams struct { fx.In - Lc fx.Lifecycle - Log logComponent.Component - Config config.Component - Checks []types.CheckComponent `group:"check"` - Runner runner.Component + Lc fx.Lifecycle + Log logComponent.Component + Config config.Component + Checks []types.CheckComponent `group:"check"` + Runner runner.Component + Submitter submitterComp.Component } type processAgent struct { - Checks []checks.Check - Log logComponent.Component - Runner runner.Component + enabled bool + Checks []checks.Check + Log logComponent.Component } -func newProcessAgent(p processAgentParams) optional.Option[agent.Component] { - if !agentEnabled(p) { - return optional.NewNoneOption[agent.Component]() +func newProcessAgent(p processAgentParams) agent.Component { + if !agent.Enabled(p.Config, p.Checks, p.Log) { + return processAgent{ + enabled: false, + } } enabledChecks := make([]checks.Check, 0, len(p.Checks)) @@ -70,37 +70,21 @@ func newProcessAgent(p processAgentParams) optional.Option[agent.Component] { // Look to see if any checks are enabled, if not, return since the agent doesn't need to be enabled. if len(enabledChecks) == 0 { p.Log.Info(agentDisabledMessage) - return optional.NewNoneOption[agent.Component]() + return processAgent{ + enabled: false, + } } processAgentComponent := processAgent{ - Checks: enabledChecks, - Log: p.Log, - Runner: p.Runner, - } - - p.Lc.Append(fx.Hook{ - OnStart: processAgentComponent.start, - OnStop: processAgentComponent.stop, - }) - - return optional.NewOption[agent.Component](processAgentComponent) -} - -func (p processAgent) start(ctx context.Context) error { - p.Log.Info("process-agent starting") - - chks := make([]string, 0, len(p.Checks)) - for _, check := range p.Checks { - chks = append(chks, check.Name()) + enabled: true, + Checks: enabledChecks, + Log: p.Log, } - p.Log.Info("process-agent checks", log.Object("checks", chks)) - return p.Runner.Run(ctx) + return processAgentComponent } -func (p processAgent) stop(_ context.Context) error { - p.Log.Info("process-agent stopping") - - return nil +// Enabled determines whether the process agent is enabled based on the configuration. +func (p processAgent) Enabled() bool { + return p.enabled } diff --git a/comp/process/agent/agentimpl/agent_fallback.go b/comp/process/agent/agentimpl/agent_fallback.go deleted file mode 100644 index f87c2df42c2e0e..00000000000000 --- a/comp/process/agent/agentimpl/agent_fallback.go +++ /dev/null @@ -1,18 +0,0 @@ -// Unless explicitly stated otherwise all files in this repository are licensed -// under the Apache License Version 2.0. -// This product includes software developed at Datadog (https://www.datadoghq.com/). -// Copyright 2024-present Datadog, Inc. - -//go:build !linux - -package agentimpl - -import ( - "github.com/DataDog/datadog-agent/pkg/util/flavor" -) - -// agentEnabled determines whether the process agent is enabled based on the configuration -// The process-agent always runs as a stand alone agent in all non-linux platforms -func agentEnabled(_ processAgentParams) bool { - return flavor.GetFlavor() == flavor.ProcessAgent -} diff --git a/comp/process/agent/agentimpl/agent_linux_test.go b/comp/process/agent/agentimpl/agent_linux_test.go index fab85f51bc0d0c..40473c340638e6 100644 --- a/comp/process/agent/agentimpl/agent_linux_test.go +++ b/comp/process/agent/agentimpl/agent_linux_test.go @@ -25,7 +25,6 @@ import ( checkMocks "github.com/DataDog/datadog-agent/pkg/process/checks/mocks" "github.com/DataDog/datadog-agent/pkg/util/flavor" "github.com/DataDog/datadog-agent/pkg/util/fxutil" - "github.com/DataDog/datadog-agent/pkg/util/optional" ) func TestProcessAgentComponentOnLinux(t *testing.T) { @@ -103,7 +102,11 @@ func TestProcessAgentComponentOnLinux(t *testing.T) { for _, tc := range tests { t.Run(tc.name, func(t *testing.T) { + originalFlavor := flavor.GetFlavor() flavor.SetFlavor(tc.agentFlavor) + defer func() { + flavor.SetFlavor(originalFlavor) + }() opts := []fx.Option{ runnerimpl.Module(), @@ -133,9 +136,8 @@ func TestProcessAgentComponentOnLinux(t *testing.T) { })) } - agt := fxutil.Test[optional.Option[agent.Component]](t, fx.Options(opts...)) - _, ok := agt.Get() - assert.Equal(t, tc.expected, ok) + agentComponent := fxutil.Test[agent.Component](t, fx.Options(opts...)) + assert.Equal(t, tc.expected, agentComponent.Enabled()) }) } } diff --git a/comp/process/agent/agentimpl/agent_test.go b/comp/process/agent/agentimpl/agent_test.go index 27f124cc358e2f..17eb8c934a8cad 100644 --- a/comp/process/agent/agentimpl/agent_test.go +++ b/comp/process/agent/agentimpl/agent_test.go @@ -21,7 +21,6 @@ import ( "github.com/DataDog/datadog-agent/comp/process/submitter/submitterimpl" "github.com/DataDog/datadog-agent/pkg/util/flavor" "github.com/DataDog/datadog-agent/pkg/util/fxutil" - "github.com/DataDog/datadog-agent/pkg/util/optional" ) func TestProcessAgentComponent(t *testing.T) { @@ -53,7 +52,11 @@ func TestProcessAgentComponent(t *testing.T) { for _, tc := range tests { t.Run(tc.name, func(t *testing.T) { + originalFlavor := flavor.GetFlavor() flavor.SetFlavor(tc.agentFlavor) + defer func() { + flavor.SetFlavor(originalFlavor) + }() opts := []fx.Option{ runnerimpl.Module(), @@ -67,9 +70,8 @@ func TestProcessAgentComponent(t *testing.T) { opts = append(opts, processcheckimpl.MockModule()) } - agt := fxutil.Test[optional.Option[agent.Component]](t, fx.Options(opts...)) - _, ok := agt.Get() - assert.Equal(t, tc.expected, ok) + agentComponent := fxutil.Test[agent.Component](t, fx.Options(opts...)) + assert.Equal(t, tc.expected, agentComponent.Enabled()) }) } } diff --git a/comp/process/agent/component.go b/comp/process/agent/component.go index ec2d19baca4679..ecf92e3a5dfcc7 100644 --- a/comp/process/agent/component.go +++ b/comp/process/agent/component.go @@ -10,4 +10,6 @@ package agent // Component is the process agent component type type Component interface { + // Enabled returns whether the process agent is enabled + Enabled() bool } diff --git a/comp/process/bundle.go b/comp/process/bundle.go index bccf2734b8341c..73a8d9b7f5e81c 100644 --- a/comp/process/bundle.go +++ b/comp/process/bundle.go @@ -12,7 +12,7 @@ package process import ( - coreStatusImpl "github.com/DataDog/datadog-agent/comp/core/status/statusimpl" + "github.com/DataDog/datadog-agent/comp/process/agent/agentimpl" "github.com/DataDog/datadog-agent/comp/process/apiserver" "github.com/DataDog/datadog-agent/comp/process/connectionscheck/connectionscheckimpl" "github.com/DataDog/datadog-agent/comp/process/containercheck/containercheckimpl" @@ -25,7 +25,6 @@ import ( "github.com/DataDog/datadog-agent/comp/process/profiler/profilerimpl" "github.com/DataDog/datadog-agent/comp/process/rtcontainercheck/rtcontainercheckimpl" "github.com/DataDog/datadog-agent/comp/process/runner/runnerimpl" - "github.com/DataDog/datadog-agent/comp/process/status/statusimpl" "github.com/DataDog/datadog-agent/comp/process/submitter/submitterimpl" "github.com/DataDog/datadog-agent/pkg/util/fxutil" ) @@ -33,6 +32,8 @@ import ( // team: processes // Bundle defines the fx options for this bundle. +// Do not add modules not owned by the processes team here as it breaks fx best practices +// See: https://uber-go.github.io/fx/modules.html#don-t-provide-what-you-don-t-own func Bundle() fxutil.BundleOptions { return fxutil.Bundle( runnerimpl.Module(), @@ -47,10 +48,10 @@ func Bundle() fxutil.BundleOptions { rtcontainercheckimpl.Module(), processdiscoverycheckimpl.Module(), + agentimpl.Module(), + hostinfoimpl.Module(), expvarsimpl.Module(), - statusimpl.Module(), - coreStatusImpl.Module(), apiserver.Module(), forwardersimpl.Module(), diff --git a/comp/process/bundle_test.go b/comp/process/bundle_test.go index ba23440313ded8..5b191b54e4b6de 100644 --- a/comp/process/bundle_test.go +++ b/comp/process/bundle_test.go @@ -19,6 +19,9 @@ import ( "github.com/DataDog/datadog-agent/comp/core/tagger" "github.com/DataDog/datadog-agent/comp/core/workloadmeta" "github.com/DataDog/datadog-agent/comp/process/runner" + + coreStatusImpl "github.com/DataDog/datadog-agent/comp/core/status/statusimpl" + "github.com/DataDog/datadog-agent/comp/process/status/statusimpl" "github.com/DataDog/datadog-agent/comp/process/types" "github.com/DataDog/datadog-agent/pkg/collector/python" "github.com/DataDog/datadog-agent/pkg/util/fxutil" @@ -36,6 +39,8 @@ func TestBundleDependencies(t *testing.T) { fx.Provide(func() types.CheckComponent { return nil }), core.MockBundle(), workloadmeta.Module(), + coreStatusImpl.Module(), + statusimpl.Module(), fx.Supply(tagger.NewFakeTaggerParams()), fx.Supply( status.Params{ diff --git a/comp/process/runner/runnerimpl/runner.go b/comp/process/runner/runnerimpl/runner.go index bb551352d19807..f455ab75929d18 100644 --- a/comp/process/runner/runnerimpl/runner.go +++ b/comp/process/runner/runnerimpl/runner.go @@ -12,7 +12,9 @@ import ( "go.uber.org/fx" "github.com/DataDog/datadog-agent/comp/core/config" + "github.com/DataDog/datadog-agent/comp/core/log" "github.com/DataDog/datadog-agent/comp/core/sysprobeconfig" + "github.com/DataDog/datadog-agent/comp/process/agent" "github.com/DataDog/datadog-agent/comp/process/hostinfo" "github.com/DataDog/datadog-agent/comp/process/runner" "github.com/DataDog/datadog-agent/comp/process/submitter" @@ -22,6 +24,9 @@ import ( "github.com/DataDog/datadog-agent/pkg/util/fxutil" ) +// for testing +var agentEnabled = agent.Enabled + // Module defines the fx options for this component. func Module() fxutil.Module { return fxutil.Component( @@ -36,7 +41,8 @@ type runnerImpl struct { type dependencies struct { fx.In - Lc fx.Lifecycle + Lc fx.Lifecycle + Log log.Component Submitter submitter.Component RTNotifier <-chan types.RTResponse `optional:"true"` @@ -55,24 +61,26 @@ func newRunner(deps dependencies) (runner.Component, error) { } c.Submitter = deps.Submitter - runner := &runnerImpl{ + runnerComponent := &runnerImpl{ checkRunner: c, providedChecks: checks, } - deps.Lc.Append(fx.Hook{ - OnStart: runner.Run, - OnStop: runner.Stop, - }) + if agentEnabled(deps.Config, deps.Checks, deps.Log) { + deps.Lc.Append(fx.Hook{ + OnStart: runnerComponent.Run, + OnStop: runnerComponent.stop, + }) + } - return runner, nil + return runnerComponent, nil } func (r *runnerImpl) Run(context.Context) error { return r.checkRunner.Run() } -func (r *runnerImpl) Stop(context.Context) error { +func (r *runnerImpl) stop(context.Context) error { r.checkRunner.Stop() return nil } diff --git a/comp/process/runner/runnerimpl/runner_test.go b/comp/process/runner/runnerimpl/runner_test.go index 1f62c549305f3d..e92dc610b0093f 100644 --- a/comp/process/runner/runnerimpl/runner_test.go +++ b/comp/process/runner/runnerimpl/runner_test.go @@ -16,6 +16,7 @@ import ( "github.com/DataDog/datadog-agent/comp/core" "github.com/DataDog/datadog-agent/comp/core/config" + "github.com/DataDog/datadog-agent/comp/core/log" "github.com/DataDog/datadog-agent/comp/process/containercheck/containercheckimpl" "github.com/DataDog/datadog-agent/comp/process/hostinfo/hostinfoimpl" "github.com/DataDog/datadog-agent/comp/process/processcheck/processcheckimpl" @@ -38,6 +39,8 @@ func TestRunnerLifecycle(t *testing.T) { } func TestRunnerRealtime(t *testing.T) { + enableProcessAgent(t) + t.Run("rt allowed", func(t *testing.T) { rtChan := make(chan types.RTResponse) @@ -59,6 +62,7 @@ func TestRunnerRealtime(t *testing.T) { hostinfoimpl.MockModule(), core.MockBundle(), )) + rtChan <- types.RTResponse{ &model.CollectorStatus{ ActiveClients: 1, @@ -131,3 +135,14 @@ func TestProvidedChecks(t *testing.T) { assert.Len(t, providedChecks, 2) } + +// enableProcessAgent overrides the process agent enabled function to always return true start/stop the runner +func enableProcessAgent(t *testing.T) { + previousFn := agentEnabled + agentEnabled = func(_ config.Component, _ []types.CheckComponent, _ log.Component) bool { + return true + } + t.Cleanup(func() { + agentEnabled = previousFn + }) +} diff --git a/comp/process/submitter/submitterimpl/submitter.go b/comp/process/submitter/submitterimpl/submitter.go index 415a5a9786ad24..9302618d6c4abc 100644 --- a/comp/process/submitter/submitterimpl/submitter.go +++ b/comp/process/submitter/submitterimpl/submitter.go @@ -15,6 +15,7 @@ import ( "github.com/DataDog/datadog-agent/comp/core/config" "github.com/DataDog/datadog-agent/comp/core/log" + "github.com/DataDog/datadog-agent/comp/process/agent" "github.com/DataDog/datadog-agent/comp/process/forwarders" "github.com/DataDog/datadog-agent/comp/process/hostinfo" submitterComp "github.com/DataDog/datadog-agent/comp/process/submitter" @@ -36,12 +37,13 @@ type submitterImpl struct { type dependencies struct { fx.In - Lc fx.Lifecycle + Lc fx.Lifecycle + Log log.Component - HostInfo hostinfo.Component Config config.Component - Log log.Component + Checks []types.CheckComponent `group:"check"` Forwarders forwarders.Component + HostInfo hostinfo.Component } type result struct { @@ -57,15 +59,18 @@ func newSubmitter(deps dependencies) (result, error) { return result{}, err } - deps.Lc.Append(fx.Hook{ - OnStart: func(context.Context) error { - return s.Start() - }, - OnStop: func(context.Context) error { - s.Stop() - return nil - }, - }) + if agent.Enabled(deps.Config, deps.Checks, deps.Log) { + deps.Lc.Append(fx.Hook{ + OnStart: func(context.Context) error { + return s.Start() + }, + OnStop: func(context.Context) error { + s.Stop() + return nil + }, + }) + } + return result{ Submitter: &submitterImpl{ s: s, diff --git a/comp/process/submitter/submitterimpl/submitter_mock.go b/comp/process/submitter/submitterimpl/submitter_mock.go index 3afaba55de4eae..3c522d1e63b0aa 100644 --- a/comp/process/submitter/submitterimpl/submitter_mock.go +++ b/comp/process/submitter/submitterimpl/submitter_mock.go @@ -26,6 +26,8 @@ func MockModule() fxutil.Module { func newMock(t testing.TB) submitterComp.Component { s := mocks.NewSubmitter(t) + s.On("Start").Maybe().Return(nil) + s.On("Stop").Maybe() s.On("Submit", mock.Anything, mock.Anything, mock.Anything).Maybe() return s } diff --git a/go.mod b/go.mod index 7e0be8192a1277..3891e9c948328d 100644 --- a/go.mod +++ b/go.mod @@ -478,7 +478,7 @@ require ( github.com/nwaples/rardecode v1.1.0 // indirect github.com/oklog/ulid v1.3.1 // indirect github.com/opencontainers/selinux v1.11.0 // indirect - github.com/opentracing/opentracing-go v1.2.0 + github.com/opentracing/opentracing-go v1.2.0 // indirect github.com/outcaste-io/ristretto v0.2.3 // indirect github.com/owenrumney/go-sarif/v2 v2.3.0 // indirect github.com/package-url/packageurl-go v0.1.2 // indirect diff --git a/pkg/process/checks/host_info.go b/pkg/process/checks/host_info.go index 021412fd32ac56..3ee99d9516954a 100644 --- a/pkg/process/checks/host_info.go +++ b/pkg/process/checks/host_info.go @@ -20,7 +20,9 @@ import ( "github.com/DataDog/datadog-agent/pkg/config" pb "github.com/DataDog/datadog-agent/pkg/proto/pbgo/core" "github.com/DataDog/datadog-agent/pkg/util/fargate" + "github.com/DataDog/datadog-agent/pkg/util/flavor" ddgrpc "github.com/DataDog/datadog-agent/pkg/util/grpc" + "github.com/DataDog/datadog-agent/pkg/util/hostname" "github.com/DataDog/datadog-agent/pkg/util/hostname/validate" "github.com/DataDog/datadog-agent/pkg/util/log" ) @@ -63,6 +65,15 @@ func resolveHostName(config config.Reader) (string, error) { agentBin := config.GetString("process_config.dd_agent_bin") connectionTimeout := config.GetDuration("process_config.grpc_connection_timeout_secs") * time.Second var err error + // TODO: We should migrate to the common hostname component + if flavor.GetFlavor() != flavor.ProcessAgent { + hostName, err = hostname.Get(context.TODO()) + if err != nil { + return "", fmt.Errorf("error while getting hostname: %v", err) + } + return hostName, nil + } + hostName, err = getHostname(context.Background(), agentBin, connectionTimeout) if err != nil { return "", log.Errorf("cannot get hostname: %v", err) diff --git a/pkg/process/checks/host_info_test.go b/pkg/process/checks/host_info_test.go index 235e44756a8c0b..d1fbebbfcf2068 100644 --- a/pkg/process/checks/host_info_test.go +++ b/pkg/process/checks/host_info_test.go @@ -21,6 +21,7 @@ import ( "github.com/DataDog/datadog-agent/pkg/config" pb "github.com/DataDog/datadog-agent/pkg/proto/pbgo/core" pbmocks "github.com/DataDog/datadog-agent/pkg/proto/pbgo/mocks/core" + "github.com/DataDog/datadog-agent/pkg/util/flavor" ) func TestGetHostname(t *testing.T) { @@ -81,6 +82,11 @@ func TestGetHostnameFromCmd(t *testing.T) { } func TestInvalidHostname(t *testing.T) { + oldFlavor := flavor.GetFlavor() + defer flavor.SetFlavor(oldFlavor) + + flavor.SetFlavor(flavor.ProcessAgent) + cfg := config.Mock(t) // Lower the GRPC timeout, otherwise the test will time out in CI diff --git a/pkg/process/runner/collector_api_test.go b/pkg/process/runner/collector_api_test.go index c7aa9fd247e883..73ec7074c90c62 100644 --- a/pkg/process/runner/collector_api_test.go +++ b/pkg/process/runner/collector_api_test.go @@ -455,8 +455,9 @@ func runCollectorTestWithAPIKeys(t *testing.T, check checks.Check, epConfig *end hostInfo := &checks.HostInfo{ HostName: testHostName, } - c, err := NewRunnerWithChecks(mockConfig, []checks.Check{check}, true, nil) - check.Init(nil, hostInfo, true) + c, err := NewRunnerWithChecks(mockConfig, nil, hostInfo, []checks.Check{check}, true, nil) + assert.NoError(t, err) + err = check.Init(nil, hostInfo, true) assert.NoError(t, err) deps := newSubmitterDepsWithConfig(t, mockConfig) c.Submitter, err = NewSubmitter(mockConfig, deps.Log, deps.Forwarders, hostInfo.HostName) diff --git a/pkg/process/runner/runner.go b/pkg/process/runner/runner.go index 83a5feb998dc92..ef4e9269088a0f 100644 --- a/pkg/process/runner/runner.go +++ b/pkg/process/runner/runner.go @@ -54,7 +54,9 @@ type Runner interface{} // CheckRunner will collect metrics from the local system and ship to the backend. type CheckRunner struct { - config ddconfig.Reader + config ddconfig.Reader + sysProbeCfg *checks.SysProbeConfig + hostInfo *checks.HostInfo // required for being able to start and stop the collector wg *sync.WaitGroup @@ -71,7 +73,8 @@ type CheckRunner struct { orchestrator *oconfig.OrchestratorConfig // counters for each type of check - runCounters sync.Map + runCounters sync.Map + enabledChecks []checks.Check // Controls the real-time interval, can change live. @@ -93,36 +96,45 @@ func (l *CheckRunner) RunRealTime() bool { } // NewRunner creates a new CheckRunner -func NewRunner(config ddconfig.Reader, sysCfg *sysconfigtypes.Config, hostInfo *checks.HostInfo, enabledChecks []checks.Check, rtNotifierChan <-chan types.RTResponse) (*CheckRunner, error) { +func NewRunner( + config ddconfig.Reader, + sysCfg *sysconfigtypes.Config, + hostInfo *checks.HostInfo, + enabledChecks []checks.Check, + rtNotifierChan <-chan types.RTResponse, +) (*CheckRunner, error) { runRealTime := !config.GetBool("process_config.disable_realtime_checks") - cfg := &checks.SysProbeConfig{} + sysProbeCfg := &checks.SysProbeConfig{} if sysCfg != nil && sysCfg.Enabled { // If the sysprobe module is enabled, the process check can call out to the sysprobe for privileged stats _, processModuleEnabled := sysCfg.EnabledModules[sysconfig.ProcessModule] - cfg.ProcessModuleEnabled = processModuleEnabled - cfg.MaxConnsPerMessage = sysCfg.MaxConnsPerMessage - cfg.SystemProbeAddress = sysCfg.SocketAddress + sysProbeCfg.ProcessModuleEnabled = processModuleEnabled + sysProbeCfg.MaxConnsPerMessage = sysCfg.MaxConnsPerMessage + sysProbeCfg.SystemProbeAddress = sysCfg.SocketAddress } - for _, c := range enabledChecks { - if err := c.Init(cfg, hostInfo, false); err != nil { - return nil, err - } - } - - return NewRunnerWithChecks(config, enabledChecks, runRealTime, rtNotifierChan) + return NewRunnerWithChecks(config, sysProbeCfg, hostInfo, enabledChecks, runRealTime, rtNotifierChan) } // NewRunnerWithChecks creates a new CheckRunner -func NewRunnerWithChecks(config ddconfig.Reader, checks []checks.Check, runRealTime bool, rtNotifierChan <-chan types.RTResponse) (*CheckRunner, error) { +func NewRunnerWithChecks( + config ddconfig.Reader, + sysProbeCfg *checks.SysProbeConfig, + hostInfo *checks.HostInfo, + checks []checks.Check, + runRealTime bool, + rtNotifierChan <-chan types.RTResponse, +) (*CheckRunner, error) { orchestrator := oconfig.NewDefaultOrchestratorConfig() if err := orchestrator.Load(); err != nil { return nil, err } return &CheckRunner{ - config: config, + hostInfo: hostInfo, + config: config, + sysProbeCfg: sysProbeCfg, wg: &sync.WaitGroup{}, stop: make(chan struct{}), @@ -278,6 +290,9 @@ func (l *CheckRunner) Run() error { } for _, c := range l.enabledChecks { + if err := c.Init(l.sysProbeCfg, l.hostInfo, false); err != nil { + return err + } runner, err := l.runnerForCheck(c) if err != nil { return fmt.Errorf("error starting check %s: %s", c.Name(), err) diff --git a/pkg/process/runner/submitter.go b/pkg/process/runner/submitter.go index 48820c64f627fa..2c8f065c6a8b2c 100644 --- a/pkg/process/runner/submitter.go +++ b/pkg/process/runner/submitter.go @@ -15,6 +15,7 @@ import ( "time" model "github.com/DataDog/agent-payload/v5/process" + "github.com/DataDog/datadog-agent/comp/core/config" "github.com/DataDog/datadog-agent/comp/core/log" "github.com/DataDog/datadog-agent/comp/forwarder/defaultforwarder" @@ -60,6 +61,10 @@ type CheckSubmitter struct { connectionsForwarder defaultforwarder.Component eventForwarder defaultforwarder.Component + // Endpoints for logging purposes + processAPIEndpoints []apicfg.Endpoint + processEventsAPIEndpoints []apicfg.Endpoint + hostname string exit chan struct{} @@ -127,7 +132,6 @@ func NewSubmitter(config config.Component, log log.Component, forwarders forward return nil, err } - printStartMessage(log, hostname, processAPIEndpoints, processEventsAPIEndpoints) return &CheckSubmitter{ log: log, processResults: processResults, @@ -140,6 +144,9 @@ func NewSubmitter(config config.Component, log log.Component, forwarders forward connectionsForwarder: forwarders.GetConnectionsForwarder(), eventForwarder: forwarders.GetEventForwarder(), + processAPIEndpoints: processAPIEndpoints, + processEventsAPIEndpoints: processEventsAPIEndpoints, + hostname: hostname, dropCheckPayloads: dropCheckPayloads, @@ -176,6 +183,8 @@ func (s *CheckSubmitter) Submit(start time.Time, name string, messages *types.Pa //nolint:revive // TODO(PROC) Fix revive linter func (s *CheckSubmitter) Start() error { + printStartMessage(s.log, s.hostname, s.processAPIEndpoints, s.processEventsAPIEndpoints) + if err := s.processForwarder.Start(); err != nil { return fmt.Errorf("error starting forwarder: %s", err) } diff --git a/releasenotes/notes/process-agent-run-in-core-agent-linux-c19289949eb0d602.yaml b/releasenotes/notes/process-agent-run-in-core-agent-linux-c19289949eb0d602.yaml new file mode 100644 index 00000000000000..eb03f0133be910 --- /dev/null +++ b/releasenotes/notes/process-agent-run-in-core-agent-linux-c19289949eb0d602.yaml @@ -0,0 +1,6 @@ +--- +features: + - | + Experimental: The process-agent checks (process, container, and process-discovery) can be run from the Core Agent in + Linux. This feature can be toggled on by setting the `process_config.run_in_core_agent.enabled` flag to `true` in + the `datadog.yaml` file. This feature is disabled by default. diff --git a/test/new-e2e/tests/process/config/process_check_in_core_agent.yaml b/test/new-e2e/tests/process/config/process_check_in_core_agent.yaml new file mode 100644 index 00000000000000..53c59c13e4c253 --- /dev/null +++ b/test/new-e2e/tests/process/config/process_check_in_core_agent.yaml @@ -0,0 +1,10 @@ +process_config: + process_collection: + enabled: true + container_collection: + enabled: false + process_discovery: + enabled: false + + run_in_core_agent: + enabled: true diff --git a/test/new-e2e/tests/process/linux_test.go b/test/new-e2e/tests/process/linux_test.go index d232be330c1488..44f57b200251df 100644 --- a/test/new-e2e/tests/process/linux_test.go +++ b/test/new-e2e/tests/process/linux_test.go @@ -24,7 +24,9 @@ type linuxTestSuite struct { } func TestLinuxTestSuite(t *testing.T) { - e2e.Run(t, &linuxTestSuite{}, e2e.WithProvisioner(awshost.Provisioner(awshost.WithAgentOptions(agentparams.WithAgentConfig(processCheckConfigStr))))) + e2e.Run(t, &linuxTestSuite{}, + e2e.WithProvisioner(awshost.Provisioner(awshost.WithAgentOptions(agentparams.WithAgentConfig(processCheckConfigStr)))), + ) } func (s *linuxTestSuite) SetupSuite() { @@ -98,6 +100,39 @@ func (s *linuxTestSuite) TestProcessCheckWithIO() { assertProcessCollected(t, payloads, true, "stress") } +func (s *linuxTestSuite) TestProcessChecksInCoreAgent() { + t := s.T() + s.UpdateEnv(awshost.Provisioner(awshost.WithAgentOptions(agentparams.WithAgentConfig(processCheckInCoreAgentConfigStr)))) + + assert.EventuallyWithT(t, func(collect *assert.CollectT) { + assertRunningChecks(collect, s.Env().RemoteHost, []string{}, false, "sudo datadog-agent status --json") + }, 1*time.Minute, 5*time.Second) + + // Verify that the process agent is not running + assert.EventuallyWithT(t, func(collect *assert.CollectT) { + status := s.Env().RemoteHost.MustExecute("/opt/datadog-agent/embedded/bin/process-agent status") + assert.Contains(t, status, "The Process Agent is not running") + }, 1*time.Minute, 5*time.Second) + + // Flush fake intake to remove any payloads which may have + s.Env().FakeIntake.Client().FlushServerAndResetAggregators() + + var payloads []*aggregator.ProcessPayload + assert.EventuallyWithT(t, func(c *assert.CollectT) { + var err error + payloads, err = s.Env().FakeIntake.Client().GetProcesses() + assert.NoError(c, err, "failed to get process payloads from fakeintake") + + // Wait for two payloads, as processes must be detected in two check runs to be returned + assert.GreaterOrEqual(c, len(payloads), 2, "fewer than 2 payloads returned") + }, 2*time.Minute, 10*time.Second) + + assertProcessCollected(t, payloads, false, "stress") + + // check that the process agent is not collected as it should not be running + requireProcessNotCollected(t, payloads, "process-agent") +} + func (s *linuxTestSuite) TestManualProcessCheck() { check := s.Env().RemoteHost.MustExecute("sudo /opt/datadog-agent/embedded/bin/process-agent check process --json") diff --git a/test/new-e2e/tests/process/testing.go b/test/new-e2e/tests/process/testing.go index 88dfaebc5bbfae..ae66ee36f162d7 100644 --- a/test/new-e2e/tests/process/testing.go +++ b/test/new-e2e/tests/process/testing.go @@ -25,6 +25,9 @@ var processCheckConfigStr string //go:embed config/process_discovery_check.yaml var processDiscoveryCheckConfigStr string +//go:embed config/process_check_in_core_agent.yaml +var processCheckInCoreAgentConfigStr string + //go:embed config/system_probe.yaml var systemProbeConfigStr string @@ -73,6 +76,14 @@ func assertProcessCollected( assert.True(t, populated, "no %s process had all data populated", process) } +// requireProcessNotCollected asserts that the given process is NOT collected by the process check +func requireProcessNotCollected(t *testing.T, payloads []*aggregator.ProcessPayload, process string) { + for _, payload := range payloads { + found, _ := findProcess(process, payload.Processes, false) + require.False(t, found, "%s process found", process) + } +} + // findProcess returns whether the process with the given name exists in the given list of // processes and whether it has the expected data populated func findProcess( From 925ec45065aeb1ec052888bfd99a300f1e04d806 Mon Sep 17 00:00:00 2001 From: Usama Saqib Date: Fri, 8 Mar 2024 17:01:28 +0100 Subject: [PATCH 096/155] Enable KMT for system-probe tests (#23573) * remove allow_failure from KMT jobs * fix trigger path --- .gitlab-ci.yml | 4 ++-- .gitlab/kernel_matrix_testing/common.yml | 2 -- .gitlab/kernel_matrix_testing/security_agent.yml | 1 + .gitlab/kernel_matrix_testing/system_probe.yml | 2 -- 4 files changed, 3 insertions(+), 6 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index fc5837955c71d6..3006d108d7a496 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1011,8 +1011,8 @@ workflow: - test/kitchen/test/integration/win-sysprobe-test/**/* - .gitlab/functional_test/system_probe_windows.yml - .gitlab/functional_test_sysprobe/system_probe.yml - - .gitlab/kernel_version_testing/system_probe.yml - - .gitlab/kernel_version_testing/common.yml + - .gitlab/kernel_matrix_testing/system_probe.yml + - .gitlab/kernel_matrix_testing/common.yml - test/new-e2e/system-probe/**/* - test/new-e2e/scenarios/system-probe/**/* - test/new-e2e/runner/**/* diff --git a/.gitlab/kernel_matrix_testing/common.yml b/.gitlab/kernel_matrix_testing/common.yml index bbd83316dad2c6..effdee663bae3f 100644 --- a/.gitlab/kernel_matrix_testing/common.yml +++ b/.gitlab/kernel_matrix_testing/common.yml @@ -79,7 +79,6 @@ .package_dependencies: stage: kernel_matrix_testing_prepare image: 486234852809.dkr.ecr.us-east-1.amazonaws.com/ci/datadog-agent-buildimages/system-probe_x64$DATADOG_AGENT_SYSPROBE_BUILDIMAGES_SUFFIX:$DATADOG_AGENT_SYSPROBE_BUILDIMAGES - allow_failure: true before_script: - !reference [.kernel_matrix_testing_new_profile] - !reference [.write_ssh_key_file] @@ -169,7 +168,6 @@ # -- Test runners .kernel_matrix_testing_run_tests: - allow_failure: true variables: AWS_EC2_SSH_KEY_FILE: $CI_PROJECT_DIR/ssh_key RETRY: 2 diff --git a/.gitlab/kernel_matrix_testing/security_agent.yml b/.gitlab/kernel_matrix_testing/security_agent.yml index 7a5a886dbc5ed2..8df35abcb5137e 100644 --- a/.gitlab/kernel_matrix_testing/security_agent.yml +++ b/.gitlab/kernel_matrix_testing/security_agent.yml @@ -122,6 +122,7 @@ upload_security_agent_tests_arm64: .kernel_matrix_testing_run_security_agent_tests: extends: .kernel_matrix_testing_run_tests + allow_failure: true stage: kernel_matrix_testing_security_agent rules: !reference [.on_security_agent_changes_or_manual] variables: diff --git a/.gitlab/kernel_matrix_testing/system_probe.yml b/.gitlab/kernel_matrix_testing/system_probe.yml index 0fb865df24d1b1..6949a2e6dc0aee 100644 --- a/.gitlab/kernel_matrix_testing/system_probe.yml +++ b/.gitlab/kernel_matrix_testing/system_probe.yml @@ -55,7 +55,6 @@ pull_test_dockers_arm64: stage: kernel_matrix_testing_prepare image: 486234852809.dkr.ecr.us-east-1.amazonaws.com/ci/datadog-agent-buildimages/system-probe_x64$DATADOG_AGENT_SYSPROBE_BUILDIMAGES_SUFFIX:$DATADOG_AGENT_SYSPROBE_BUILDIMAGES tags: ["arch:amd64"] - allow_failure: true script: # Build dependencies directory - mkdir -p $DEPENDENCIES @@ -132,7 +131,6 @@ kernel_matrix_testing_setup_env_system_probe_x64: .upload_system_probe_tests: stage: kernel_matrix_testing_prepare - allow_failure: true rules: !reference [.on_system_probe_or_e2e_changes_or_manual] before_script: - !reference [.retrieve_linux_go_deps] From 4eadfd904eb00dd8859c1017627a4ddfc33c6b59 Mon Sep 17 00:00:00 2001 From: Nicolas Guerguadj <35628945+Kaderinho@users.noreply.github.com> Date: Fri, 8 Mar 2024 17:06:19 +0100 Subject: [PATCH 097/155] tests: add e2e test for flare profiling option (#23567) Signed-off-by: Nicolas Guerguadj --- .../flare/flare_common_test.go | 14 ++++++++++++++ .../agent-subcommands/flare/flare_files.go | 18 ++++++++++++++++++ .../agent-subcommands/flare/flare_nix_test.go | 3 +-- 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/test/new-e2e/tests/agent-subcommands/flare/flare_common_test.go b/test/new-e2e/tests/agent-subcommands/flare/flare_common_test.go index a79a9a7f296518..d25b5d42d2fd18 100644 --- a/test/new-e2e/tests/agent-subcommands/flare/flare_common_test.go +++ b/test/new-e2e/tests/agent-subcommands/flare/flare_common_test.go @@ -63,6 +63,20 @@ func (v *baseFlareSuite) TestLocalFlareDefaultFiles() { assertEtcFolderOnlyContainsConfigFile(v.T(), flare) } +func (v *baseFlareSuite) TestFlareProfiling() { + args := agentclient.WithArgs([]string{"--email", "e2e@test.com", "--send", "--profile", "31", + "--profile-blocking", "--profile-blocking-rate", "5000", "--profile-mutex", "--profile-mutex-fraction", "200"}) + flare, logs := requestAgentFlareAndFetchFromFakeIntake(v, args) + + assert.Contains(v.T(), logs, "Setting runtime_mutex_profile_fraction to 200") + assert.Contains(v.T(), logs, "Setting runtime_block_profile_rate to 5000") + assert.Contains(v.T(), logs, "Getting a 31s profile snapshot from core.") + assert.Contains(v.T(), logs, "Getting a 31s profile snapshot from security-agent.") + assert.Contains(v.T(), logs, "Getting a 31s profile snapshot from process.") + + assertFilesExist(v.T(), flare, profilingFiles) +} + func requestAgentFlareAndFetchFromFakeIntake(v *baseFlareSuite, flareArgs ...agentclient.AgentArgsOption) (flare.Flare, string) { // Wait for the fakeintake to be ready to avoid 503 when sending the flare assert.EventuallyWithT(v.T(), func(c *assert.CollectT) { diff --git a/test/new-e2e/tests/agent-subcommands/flare/flare_files.go b/test/new-e2e/tests/agent-subcommands/flare/flare_files.go index dada5ec05b7d07..f2550ecdd3b144 100644 --- a/test/new-e2e/tests/agent-subcommands/flare/flare_files.go +++ b/test/new-e2e/tests/agent-subcommands/flare/flare_files.go @@ -84,6 +84,24 @@ var windowsFiles = []string{ "datadog.reg", } +var profilingFiles = []string{ + "profiles/core-1st-heap.pprof", + "profiles/core-2nd-heap.pprof", + "profiles/core-block.pprof", + "profiles/core-cpu.pprof", + "profiles/core-mutex.pprof", + "profiles/process-1st-heap.pprof", + "profiles/process-2nd-heap.pprof", + "profiles/process-block.pprof", + "profiles/process-cpu.pprof", + "profiles/process-mutex.pprof", + "profiles/trace-1st-heap.pprof", + "profiles/trace-2nd-heap.pprof", + "profiles/trace-block.pprof", + "profiles/trace-cpu.pprof", + "profiles/trace-mutex.pprof", +} + // untestedFiles contains some untested files that needs specific scenario which should be added later. // //nolint:unused diff --git a/test/new-e2e/tests/agent-subcommands/flare/flare_nix_test.go b/test/new-e2e/tests/agent-subcommands/flare/flare_nix_test.go index dbaf0d308b8471..117c4a91077fd5 100644 --- a/test/new-e2e/tests/agent-subcommands/flare/flare_nix_test.go +++ b/test/new-e2e/tests/agent-subcommands/flare/flare_nix_test.go @@ -11,11 +11,10 @@ import ( "strings" "testing" - "github.com/DataDog/test-infra-definitions/components/datadog/agentparams" - "github.com/DataDog/datadog-agent/test/new-e2e/pkg/e2e" awshost "github.com/DataDog/datadog-agent/test/new-e2e/pkg/environments/aws/host" "github.com/DataDog/datadog-agent/test/new-e2e/pkg/utils/e2e/client/agentclient" + "github.com/DataDog/test-infra-definitions/components/datadog/agentparams" ) //go:embed fixtures/datadog-agent.yaml From cef3d2c2b8ad38b09ac61714ebe91b6d93cfdb5e Mon Sep 17 00:00:00 2001 From: AliDatadog <125997632+AliDatadog@users.noreply.github.com> Date: Fri, 8 Mar 2024 17:18:22 +0100 Subject: [PATCH 098/155] [CONTINT-3909] Add tests for dogstatsd origin detection on ECS (#23532) * test dogstatsd origin origin detection on UDP for ECS tests * add tag filter in testDogstatsd --- test/new-e2e/tests/containers/ecs_test.go | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/test/new-e2e/tests/containers/ecs_test.go b/test/new-e2e/tests/containers/ecs_test.go index c8ef3e53015955..bdf279f50dfefd 100644 --- a/test/new-e2e/tests/containers/ecs_test.go +++ b/test/new-e2e/tests/containers/ecs_test.go @@ -402,17 +402,27 @@ func (suite *ecsSuite) TestCPU() { }) } -func (suite *ecsSuite) TestDogstatsd() { - // Test dogstatsd origin detection with UDS +func (suite *ecsSuite) TestDogtstatsdUDS() { + suite.testDogstatsd("dogstatsd-uds") +} + +func (suite *ecsSuite) TestDogtstatsdUDP() { + suite.testDogstatsd("dogstatsd-udp") +} + +func (suite *ecsSuite) testDogstatsd(taskName string) { suite.testMetric(&testMetricArgs{ Filter: testMetricFilterArgs{ Name: "custom.metric", + Tags: []string{ + `^task_name:.*-` + taskName + `-ec2$`, + }, }, Expect: testMetricExpectArgs{ Tags: &[]string{ `^cluster_name:` + regexp.QuoteMeta(suite.ecsClusterName) + `$`, `^container_id:`, - `^container_name:ecs-.*-dogstatsd-uds-ec2-`, + `^container_name:ecs-.*-` + taskName + `-ec2-`, `^docker_image:ghcr.io/datadog/apps-dogstatsd:main$`, `^ecs_cluster_name:` + regexp.QuoteMeta(suite.ecsClusterName) + `$`, `^ecs_container_name:dogstatsd$`, @@ -424,8 +434,8 @@ func (suite *ecsSuite) TestDogstatsd() { `^series:`, `^short_image:apps-dogstatsd$`, `^task_arn:`, - `^task_family:.*-dogstatsd-uds-ec2$`, - `^task_name:.*-dogstatsd-uds-ec2$`, + `^task_family:.*-` + taskName + `-ec2$`, + `^task_name:.*-` + taskName + `-ec2$`, `^task_version:[[:digit:]]+$`, }, }, From e5842ad826cfba74a0e0ebfa12b6e736f8f755a6 Mon Sep 17 00:00:00 2001 From: Nenad Noveljic <18366081+nenadnoveljic@users.noreply.github.com> Date: Fri, 8 Mar 2024 17:59:32 +0100 Subject: [PATCH 099/155] Add service config parameter (#23561) --- .../dist/conf.d/oracle-dbm.d/conf.yaml.example | 14 +++++++++++++- .../corechecks/oracle-dbm/config/config.go | 12 ++++++++++++ .../oracle-service-config-20db92c3b4d9f118.yaml | 11 +++++++++++ 3 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 releasenotes/notes/oracle-service-config-20db92c3b4d9f118.yaml diff --git a/cmd/agent/dist/conf.d/oracle-dbm.d/conf.yaml.example b/cmd/agent/dist/conf.d/oracle-dbm.d/conf.yaml.example index 9bd0eaa1f5c0fe..a48cf1a3688b3e 100644 --- a/cmd/agent/dist/conf.d/oracle-dbm.d/conf.yaml.example +++ b/cmd/agent/dist/conf.d/oracle-dbm.d/conf.yaml.example @@ -16,7 +16,12 @@ init_config: # - query: # columns: # tags: - + # + ## @param service - string - optional + ## Attach the tag `service:` to every metric, event, and service check emitted by this integration. + ## + # + # service: ## Every instance is scheduled independent of the others. # @@ -113,6 +118,13 @@ instances: # - : # - : + ## @param service - string - optional + ## Attach the tag `service:` to every metric, event, and service check emitted by this integration. + ## + ## Overrides any `service` defined in the `init_config` section. + # + # service: + ## Configure collection of query samples # # query_samples: diff --git a/pkg/collector/corechecks/oracle-dbm/config/config.go b/pkg/collector/corechecks/oracle-dbm/config/config.go index 5340767563ca29..966af402211b77 100644 --- a/pkg/collector/corechecks/oracle-dbm/config/config.go +++ b/pkg/collector/corechecks/oracle-dbm/config/config.go @@ -25,6 +25,7 @@ type InitConfig struct { MinCollectionInterval int `yaml:"min_collection_interval"` CustomQueries []CustomQuery `yaml:"custom_queries"` UseInstantClient bool `yaml:"use_instant_client"` + Service string `yaml:"service"` } //nolint:revive // TODO(DBM) Fix revive linter @@ -149,6 +150,7 @@ type InstanceConfig struct { ResourceManager resourceManagerConfig `yaml:"resource_manager"` Locks locksConfig `yaml:"locks"` OnlyCustomQueries bool `yaml:"only_custom_queries"` + Service string `yaml:"service"` } // CheckConfig holds the config needed for an integration instance to run. @@ -264,6 +266,16 @@ func NewCheckConfig(rawInstance integration.Data, rawInitConfig integration.Data warnDeprecated("use_instant_client", "oracle_client in instance config") } + var service string + if instance.Service != "" { + service = instance.Service + } else if initCfg.Service != "" { + service = initCfg.Service + } + if service != "" { + instance.Tags = append(instance.Tags, fmt.Sprintf("service:%s", service)) + } + c := &CheckConfig{ InstanceConfig: instance, InitConfig: initCfg, diff --git a/releasenotes/notes/oracle-service-config-20db92c3b4d9f118.yaml b/releasenotes/notes/oracle-service-config-20db92c3b4d9f118.yaml new file mode 100644 index 00000000000000..5c1ffc7ef23b7a --- /dev/null +++ b/releasenotes/notes/oracle-service-config-20db92c3b4d9f118.yaml @@ -0,0 +1,11 @@ +# Each section from every release note are combined when the +# CHANGELOG.rst is rendered. So the text needs to be worded so that +# it does not depend on any information only available in another +# section. This may mean repeating some details, but each section +# must be readable independently of the other. +# +# Each section note must be formatted as reStructuredText. +--- +enhancements: + - | + [oracle] Add ``service`` configuration parameter. From 9415d252dd96e980cbcb1dcf0e43dafec7410cc9 Mon Sep 17 00:00:00 2001 From: Usama Saqib Date: Fri, 8 Mar 2024 18:30:36 +0100 Subject: [PATCH 100/155] Upload logs from Libvirt as Gitlab artifacts (#23576) * restore qemu cmdline as artifact * copy all dns related files --- .gitlab/kernel_matrix_testing/common.yml | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/.gitlab/kernel_matrix_testing/common.yml b/.gitlab/kernel_matrix_testing/common.yml index effdee663bae3f..c9e31081c2b8b9 100644 --- a/.gitlab/kernel_matrix_testing/common.yml +++ b/.gitlab/kernel_matrix_testing/common.yml @@ -137,11 +137,15 @@ after_script: - export AWS_PROFILE=agent-qa-ci - !reference [.shared_filters_and_queries] - - mkdir -p $CI_PROJECT_DIR/libvirt/log/$ARCH $CI_PROJECT_DIR/libvirt/xml/$ARCH + - mkdir -p $CI_PROJECT_DIR/libvirt/log/$ARCH $CI_PROJECT_DIR/libvirt/xml $CI_PROJECT_DIR/libvirt/qemu $CI_PROJECT_DIR/libvirt/dnsmasq - !reference [.get_instance_ip_by_type] - ssh -o StrictHostKeyChecking=no -i $AWS_EC2_SSH_KEY_FILE "ubuntu@$INSTANCE_IP" "sudo virsh list --name | grep -v -E '^$' | xargs -I '{}' sh -c \"sudo virsh dumpxml '{}' > /tmp/ddvm-xml-'{}'.txt\"" - - scp -o StrictHostKeyChecking=no -i $AWS_EC2_SSH_KEY_FILE "ubuntu@$INSTANCE_IP:/tmp/ddvm-*.log" $CI_PROJECT_DIR/libvirt/log/$ARCH - - scp -o StrictHostKeyChecking=no -i $AWS_EC2_SSH_KEY_FILE "ubuntu@$INSTANCE_IP:/tmp/ddvm-xml-*" $CI_PROJECT_DIR/libvirt/xml/$ARCH + - ssh -o StrictHostKeyChecking=no -i $AWS_EC2_SSH_KEY_FILE "ubuntu@$INSTANCE_IP" "sudo virsh list --name | xargs -I '{}' sh -c \"sudo cp /var/log/libvirt/qemu/'{}'.log /tmp/qemu-ddvm-'{}'.log && sudo chown 1000:1000 /tmp/qemu-ddvm*\"" + - ssh -o StrictHostKeyChecking=no -i $AWS_EC2_SSH_KEY_FILE "ubuntu@$INSTANCE_IP" "mkdir /tmp/dnsmasq && sudo cp /var/lib/libvirt/dnsmasq/* /tmp/dnsmasq/ && sudo chown 1000:1000 /tmp/dnsmasq/*" + - scp -o StrictHostKeyChecking=no -i $AWS_EC2_SSH_KEY_FILE "ubuntu@$INSTANCE_IP:/tmp/ddvm-*.log" $CI_PROJECT_DIR/libvirt/log + - scp -o StrictHostKeyChecking=no -i $AWS_EC2_SSH_KEY_FILE "ubuntu@$INSTANCE_IP:/tmp/ddvm-xml-*" $CI_PROJECT_DIR/libvirt/xml + - scp -o StrictHostKeyChecking=no -i $AWS_EC2_SSH_KEY_FILE "ubuntu@$INSTANCE_IP:/tmp/qemu-ddvm-*.log" $CI_PROJECT_DIR/libvirt/qemu + - scp -o StrictHostKeyChecking=no -i $AWS_EC2_SSH_KEY_FILE "ubuntu@$INSTANCE_IP:/tmp/dnsmasq/*" $CI_PROJECT_DIR/libvirt/dnsmasq artifacts: when: always paths: From ee6d7eec560b850d02731423b9e14c5d6fa1cf48 Mon Sep 17 00:00:00 2001 From: louis-cqrl <93274433+louis-cqrl@users.noreply.github.com> Date: Fri, 8 Mar 2024 19:03:16 +0100 Subject: [PATCH 101/155] [ASCII-1227] Add init to loger to avoid bufferrisation (#23399) * feat(pkg/util/log/): Create log_init.go to initialize logger before running tests * fix(pkg/util/log/log.go): Re organize Lock and Unlock logic in 'ChangeLogLevel' and in 'ReplaceLogger' * fix(pkg/util/log/log.go): delete Lock status in subfunction 'func (sw *DatadogLogger) shouldLog(level seelog.LogLevel) bool' * fix(pkg/util/log/log.go): delete Lock status in multiple subfunctions to put it on upperfunctions' * fix(pkg/process/checks/host_info_test.go): Fix test due to init logger * fix(pkg/process/checks/host_info_test.go): lint correction: * Fix: Lint correction * test add init fine for logger * fix commit history * fix(pkg/util/log/log_init.go): linter * Fix(pkg/util/log/log.go): fix version * fix(pkg/util/log/log*.go): Clean comments, reduce lock time if possible * fix(pkg/util/log/log.go): Clean comments * fix(pkg/util/log/log.go): lint of flush function * fix(pkg/util/log/log.go): unreachable unlock * fix(pkg/util/log/log.go): linter * Fix(pkg/util/log/log.go): fix version * Fix(pkg/util/log/log.go): remove comment --- pkg/process/checks/host_info_test.go | 2 +- pkg/util/log/log.go | 234 +++++++++++++++++++-------- pkg/util/log/log_test_init.go | 22 +++ 3 files changed, 192 insertions(+), 66 deletions(-) create mode 100644 pkg/util/log/log_test_init.go diff --git a/pkg/process/checks/host_info_test.go b/pkg/process/checks/host_info_test.go index d1fbebbfcf2068..95b667805be843 100644 --- a/pkg/process/checks/host_info_test.go +++ b/pkg/process/checks/host_info_test.go @@ -141,6 +141,6 @@ func fakeExecCommand(command string, args ...string) *exec.Cmd { cs := []string{"-test.run=TestGetHostnameShellCmd", "--", command} cs = append(cs, args...) cmd := exec.Command(os.Args[0], cs...) - cmd.Env = []string{"GO_TEST_PROCESS=1"} + cmd.Env = []string{"GO_TEST_PROCESS=1", "DD_LOG_LEVEL=info"} // Set LOG LEVEL to info return cmd } diff --git a/pkg/util/log/log.go b/pkg/util/log/log.go index 92cd71da38f2d5..5b695b3334cf1f 100644 --- a/pkg/util/log/log.go +++ b/pkg/util/log/log.go @@ -108,9 +108,8 @@ func addLogToBuffer(logHandle func()) { logsBuffer = append(logsBuffer, logHandle) } +// This function should be called with `sw.l` held func (sw *DatadogLogger) replaceInnerLogger(l seelog.LoggerInterface) seelog.LoggerInterface { - sw.l.Lock() - defer sw.l.Unlock() old := sw.inner sw.inner = l @@ -118,30 +117,22 @@ func (sw *DatadogLogger) replaceInnerLogger(l seelog.LoggerInterface) seelog.Log return old } +// This function should be called with `sw.l` held func (sw *DatadogLogger) changeLogLevel(level string) error { - sw.l.Lock() - defer sw.l.Unlock() - lvl, ok := seelog.LogLevelFromString(strings.ToLower(level)) if !ok { return errors.New("bad log level") } - logger.Load().level = lvl + sw.level = lvl return nil } +// This function should be called with `sw.l` held func (sw *DatadogLogger) shouldLog(level seelog.LogLevel) bool { - sw.l.RLock() - shouldLog := level >= sw.level - sw.l.RUnlock() - - return shouldLog + return level >= sw.level } func (sw *DatadogLogger) registerAdditionalLogger(n string, l seelog.LoggerInterface) error { - sw.l.Lock() - defer sw.l.Unlock() - if sw.extra == nil { return errors.New("logger not fully initialized, additional logging unavailable") } @@ -178,6 +169,7 @@ func (sw *loggerPointer) trace(s string) { func (sw *loggerPointer) traceStackDepth(s string, depth int) { l := sw.Load() scrubbed := l.scrub(s) + l.inner.SetAdditionalStackDepth(defaultStackDepth + depth) //nolint:errcheck l.inner.Trace(scrubbed) l.inner.SetAdditionalStackDepth(defaultStackDepth) //nolint:errcheck @@ -392,9 +384,6 @@ func (sw *loggerPointer) criticalf(format string, params ...interface{}) error { // getLogLevel returns the current log level func (sw *DatadogLogger) getLogLevel() seelog.LogLevel { - sw.l.RLock() - defer sw.l.RUnlock() - return sw.level } @@ -452,33 +441,58 @@ func formatErrorc(message string, context ...interface{}) error { // scrubAndLogFunc, and treating the variadic args as the message. func log(logLevel seelog.LogLevel, bufferFunc func(), scrubAndLogFunc func(string), v ...interface{}) { l := logger.Load() - if l != nil && l.inner != nil && l.shouldLog(logLevel) { + + if l == nil { + addLogToBuffer(bufferFunc) + return + } + + l.l.Lock() + defer l.l.Unlock() + + isInnerNil := l.inner == nil + + if !isInnerNil && l.shouldLog(logLevel) { s := BuildLogEntry(v...) - l.l.Lock() - defer l.l.Unlock() + scrubAndLogFunc(s) - } else if l == nil || l.inner == nil { + } else if isInnerNil { addLogToBuffer(bufferFunc) } } func logWithError(logLevel seelog.LogLevel, bufferFunc func(), scrubAndLogFunc func(string) error, fallbackStderr bool, v ...interface{}) error { l := logger.Load() - if l != nil && l.inner != nil && l.shouldLog(logLevel) { + + if l == nil { + addLogToBuffer(bufferFunc) + err := formatError(v...) + if fallbackStderr { + fmt.Fprintf(os.Stderr, "%s: %s\n", logLevel.String(), err.Error()) + } + return err + } + + l.l.Lock() + + isInnerNil := l.inner == nil + + if !isInnerNil && l.shouldLog(logLevel) { s := BuildLogEntry(v...) - l.l.Lock() defer l.l.Unlock() return scrubAndLogFunc(s) - } else if l == nil || l.inner == nil { + } else if isInnerNil { addLogToBuffer(bufferFunc) } - err := formatError(v...) + l.l.Unlock() + + err := formatError(v...) // Originally (PR 6436) fallbackStderr check had been added to handle a small window // where error messages had been lost before Logger had been initialized. Adjusting // just for that case because if the error log should not be logged - because it has // been suppressed then it should be taken into account. - if fallbackStderr && (l == nil || l.inner == nil) { + if fallbackStderr && isInnerNil { fmt.Fprintf(os.Stderr, "%s: %s\n", logLevel.String(), err.Error()) } return err @@ -486,31 +500,55 @@ func logWithError(logLevel seelog.LogLevel, bufferFunc func(), scrubAndLogFunc f func logFormat(logLevel seelog.LogLevel, bufferFunc func(), scrubAndLogFunc func(string, ...interface{}), format string, params ...interface{}) { l := logger.Load() - if l != nil && l.inner != nil && l.shouldLog(logLevel) { - l.l.Lock() - defer l.l.Unlock() + + if l == nil { + addLogToBuffer(bufferFunc) + return + } + + l.l.Lock() + defer l.l.Unlock() + + isInnerNil := l.inner == nil + + if !isInnerNil && l.shouldLog(logLevel) { scrubAndLogFunc(format, params...) - } else if l == nil || l.inner == nil { + } else if isInnerNil { addLogToBuffer(bufferFunc) } } func logFormatWithError(logLevel seelog.LogLevel, bufferFunc func(), scrubAndLogFunc func(string, ...interface{}) error, format string, fallbackStderr bool, params ...interface{}) error { l := logger.Load() - if l != nil && l.inner != nil && l.shouldLog(logLevel) { - l.l.Lock() + + if l == nil { + addLogToBuffer(bufferFunc) + err := formatErrorf(format, params...) + if fallbackStderr { + fmt.Fprintf(os.Stderr, "%s: %s\n", logLevel.String(), err.Error()) + } + return err + } + + l.l.Lock() + + isInnerNil := l.inner == nil + + if !isInnerNil && l.shouldLog(logLevel) { defer l.l.Unlock() return scrubAndLogFunc(format, params...) - } else if l == nil || l.inner == nil { + } else if isInnerNil { addLogToBuffer(bufferFunc) } - err := formatErrorf(format, params...) + l.l.Unlock() + + err := formatErrorf(format, params...) // Originally (PR 6436) fallbackStderr check had been added to handle a small window // where error messages had been lost before Logger had been initialized. Adjusting // just for that case because if the error log should not be logged - because it has // been suppressed then it should be taken into account. - if fallbackStderr && (l == nil || l.inner == nil) { + if fallbackStderr && isInnerNil { fmt.Fprintf(os.Stderr, "%s: %s\n", logLevel.String(), err.Error()) } return err @@ -518,33 +556,58 @@ func logFormatWithError(logLevel seelog.LogLevel, bufferFunc func(), scrubAndLog func logContext(logLevel seelog.LogLevel, bufferFunc func(), scrubAndLogFunc func(string), message string, depth int, context ...interface{}) { l := logger.Load() - if l != nil && l.inner != nil && l.shouldLog(logLevel) { - l.l.Lock() - defer l.l.Unlock() + + if l == nil { + addLogToBuffer(bufferFunc) + return + } + + l.l.Lock() + defer l.l.Unlock() + + isInnerNil := l.inner == nil + + if !isInnerNil && l.shouldLog(logLevel) { l.inner.SetContext(context) l.inner.SetAdditionalStackDepth(defaultStackDepth + depth) //nolint:errcheck scrubAndLogFunc(message) l.inner.SetContext(nil) l.inner.SetAdditionalStackDepth(defaultStackDepth) //nolint:errcheck - } else if l == nil || l.inner == nil { + } else if isInnerNil { addLogToBuffer(bufferFunc) } } func logContextWithError(logLevel seelog.LogLevel, bufferFunc func(), scrubAndLogFunc func(string) error, message string, fallbackStderr bool, depth int, context ...interface{}) error { l := logger.Load() - if l != nil && l.inner != nil && l.shouldLog(logLevel) { - l.l.Lock() - defer l.l.Unlock() + + if l == nil { + addLogToBuffer(bufferFunc) + err := formatErrorc(message, context...) + if fallbackStderr { + fmt.Fprintf(os.Stderr, "%s: %s\n", logLevel.String(), err.Error()) + } + return err + } + + l.l.Lock() + + isInnerNil := l.inner == nil + + if !isInnerNil && l.shouldLog(logLevel) { l.inner.SetContext(context) l.inner.SetAdditionalStackDepth(defaultStackDepth + depth) //nolint:errcheck err := scrubAndLogFunc(message) l.inner.SetContext(nil) l.inner.SetAdditionalStackDepth(defaultStackDepth) //nolint:errcheck + defer l.l.Unlock() return err - } else if l == nil || l.inner == nil { + } else if isInnerNil { addLogToBuffer(bufferFunc) } + + l.l.Unlock() + err := formatErrorc(message, context...) if fallbackStderr { fmt.Fprintf(os.Stderr, "%s: %s\n", logLevel.String(), err.Error()) @@ -835,29 +898,50 @@ func JMXInfo(v ...interface{}) { // Flush flushes the underlying inner log func Flush() { l := logger.Load() - if l != nil && l.inner != nil { - l.inner.Flush() + if l != nil { + l.l.Lock() + if l.inner != nil { + l.inner.Flush() + } + l.l.Unlock() } l = jmxLogger.Load() - if l != nil && l.inner != nil { - l.inner.Flush() + if l != nil { + l.l.Lock() + if l.inner != nil { + l.inner.Flush() + } + l.l.Unlock() } } // ReplaceLogger allows replacing the internal logger, returns old logger func ReplaceLogger(li seelog.LoggerInterface) seelog.LoggerInterface { l := logger.Load() - if l != nil && l.inner != nil { - return l.replaceInnerLogger(li) + if l == nil { + return nil // Return nil if logger is not initialized } - return nil + l.l.Lock() + defer l.l.Unlock() + if l.inner == nil { + return nil // Return nil if logger.inner is not initialized + } + + return l.replaceInnerLogger(li) } // RegisterAdditionalLogger registers an additional logger for logging func RegisterAdditionalLogger(n string, li seelog.LoggerInterface) error { l := logger.Load() - if l != nil && l.inner != nil { + if l == nil { + return errors.New("cannot register: logger not initialized") + } + + l.l.Lock() + defer l.l.Unlock() + + if l.inner != nil { return l.registerAdditionalLogger(n, li) } @@ -868,6 +952,8 @@ func RegisterAdditionalLogger(n string, li seelog.LoggerInterface) error { func ShouldLog(lvl seelog.LogLevel) bool { l := logger.Load() if l != nil { + l.l.RLock() + defer l.l.RUnlock() return l.shouldLog(lvl) } return false @@ -877,7 +963,15 @@ func ShouldLog(lvl seelog.LogLevel) bool { // log level func GetLogLevel() (seelog.LogLevel, error) { l := logger.Load() - if l != nil && l.inner != nil { + + if l == nil { + return seelog.InfoLvl, errors.New("cannot get loglevel: logger not initialized") + } + + l.l.RLock() + defer l.l.RUnlock() + + if l.inner != nil { return l.getLogLevel(), nil } @@ -890,20 +984,30 @@ func GetLogLevel() (seelog.LogLevel, error) { // an existing one cannot be updated func ChangeLogLevel(li seelog.LoggerInterface, level string) error { l := logger.Load() - if l != nil && l.inner != nil { - err := l.changeLogLevel(level) - if err != nil { - return err - } - // See detailed explanation in SetupLogger(...) - err = li.SetAdditionalStackDepth(defaultStackDepth) - if err != nil { - return err - } + if l == nil { + return errors.New("cannot change loglevel: logger not initialized") + } + + l.l.Lock() + defer l.l.Unlock() + + if l.inner == nil { + return errors.New("cannot change loglevel: logger is initialized however logger.inner is nil") + } + + err := l.changeLogLevel(level) + if err != nil { + return err + } - l.replaceInnerLogger(li) - return nil + // See detailed explanation in SetupLogger(...) + err = li.SetAdditionalStackDepth(defaultStackDepth) + if err != nil { + return err } + + l.replaceInnerLogger(li) + return nil + // need to return something, just set to Info (expected default) - return errors.New("cannot change loglevel: logger not initialized") } diff --git a/pkg/util/log/log_test_init.go b/pkg/util/log/log_test_init.go new file mode 100644 index 00000000000000..7dd6bcd7e3c7c3 --- /dev/null +++ b/pkg/util/log/log_test_init.go @@ -0,0 +1,22 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +//go:build test + +package log + +import ( + "os" + + "github.com/cihub/seelog" +) + +func init() { + level := os.Getenv("DD_LOG_LEVEL") + if level == "" { + level = "debug" + } + SetupLogger(seelog.Default, level) +} From 627454c7d30fd69375d83b928d42e62282bdde78 Mon Sep 17 00:00:00 2001 From: Stanley Liu Date: Fri, 8 Mar 2024 14:33:57 -0500 Subject: [PATCH 102/155] Create modules in pkg/logs and move internal pkg/logs dependencies (#22663) * Decouple hostname into interface * Use hostname interface in pkg/logs * Change to alias * Fix go mod tidy * Add package comment * Rename interface to component, delete testutils mock, move hostname mock to hostnameinterface * Remove temporary constructors, make test method private * Fix component linting * Remove GetHostname from pkg/logs/message, add message hostname condition on processor * Move GetHostname tests to pkg/logs/internal/processor * Fix import * Add statusinterface and statusimpl * Add mock for statusimpl * Refactor pkg/logs to use config module and statusinterface * Make changes related to pkg/logs refactor * Move test_utils.go into a module and refactor * Add comment to statusimpl * Move statusimpl to comp/logs/agent/status.go, rename statusinterface.Component to statusinterface.Status * Add comment for alias * Replace statusProvider{} with NewStatusProvider() * Add modules * Add modules to modules.py * Add module for testutils * Remove go build test * Move pkg/logs/internal/processor to pkg/logs/processor * Move pkg/logs/internal/status to pkg/logs/logstatus * Move pkg/logs/internal/util/testutils to pkg/logs/util/testutils * Add missing replace statements * Add missing replace statement * Go mod tidy * Fix windowsevent tailer * Move pkg/logs/logstatus to pkg/logs/status/utils * Fix windowsevent tailer * invoke tidy-all * Move status.Provider reference to comp/logs/agent/status * Fix go modules * Fix go modules * Change return type and remove new interface * inv tidy-all * Fix lint * Fix lint * Fix dependency version --- comp/logs/agent/status.go | 31 +- go.mod | 28 +- pkg/logs/auditor/go.mod | 91 +++ pkg/logs/auditor/go.sum | 363 +++++++++ pkg/logs/client/go.mod | 131 ++++ pkg/logs/client/go.sum | 729 +++++++++++++++++ .../client/tcp/connection_manager_test.go | 2 +- pkg/logs/diagnostic/go.mod | 101 +++ pkg/logs/diagnostic/go.sum | 369 +++++++++ .../decoder/auto_multiline_handler.go | 2 +- pkg/logs/internal/decoder/decoder.go | 2 +- pkg/logs/internal/decoder/decoder_test.go | 2 +- pkg/logs/internal/decoder/file_decoder.go | 2 +- .../decoder/line_handler_benchmark_test.go | 2 +- .../internal/decoder/line_handler_test.go | 2 +- .../internal/decoder/multiline_handler.go | 2 +- pkg/logs/internal/util/test_utils.go | 2 +- .../launchers/container/tailerfactory/file.go | 2 +- pkg/logs/launchers/file/launcher.go | 2 +- pkg/logs/message/go.mod | 87 +++ pkg/logs/message/go.sum | 363 +++++++++ pkg/logs/metrics/go.mod | 48 ++ pkg/logs/metrics/go.sum | 90 +++ pkg/logs/pipeline/go.mod | 148 ++++ pkg/logs/pipeline/go.sum | 736 ++++++++++++++++++ pkg/logs/pipeline/pipeline.go | 2 +- pkg/logs/{internal => }/processor/encoder.go | 0 .../{internal => }/processor/encoder_test.go | 0 pkg/logs/processor/go.mod | 128 +++ pkg/logs/processor/go.sum | 391 ++++++++++ pkg/logs/{internal => }/processor/json.go | 0 .../processor/json_serverless.go | 0 .../{internal => }/processor/processor.go | 0 .../processor/processor_test.go | 0 pkg/logs/{internal => }/processor/proto.go | 0 pkg/logs/{internal => }/processor/raw.go | 0 pkg/logs/sender/go.mod | 133 ++++ pkg/logs/sender/go.sum | 729 +++++++++++++++++ pkg/logs/sources/go.mod | 85 ++ pkg/logs/sources/go.sum | 363 +++++++++ pkg/logs/sources/replaceable_source.go | 2 +- pkg/logs/sources/source.go | 2 +- pkg/logs/status/builder.go | 2 +- pkg/logs/status/status_test.go | 2 +- pkg/logs/status/statusinterface/go.mod | 3 + pkg/logs/status/statusinterface/go.sum | 0 pkg/logs/status/statusinterface/status.go | 4 - .../status/statusinterface/status_mock.go | 22 - pkg/logs/status/utils/go.mod | 14 + pkg/logs/status/utils/go.sum | 12 + .../{internal/status => status/utils}/info.go | 2 +- .../status => status/utils}/info_test.go | 2 +- .../status => status/utils}/status.go | 2 +- .../status => status/utils}/status_test.go | 2 +- pkg/logs/tailers/docker/tailer.go | 2 +- pkg/logs/tailers/file/tailer.go | 2 +- pkg/logs/tailers/file/tailer_test.go | 2 +- pkg/logs/tailers/journald/tailer.go | 4 +- pkg/logs/tailers/socket/tailer.go | 2 +- pkg/logs/tailers/tailer.go | 2 +- pkg/logs/tailers/tailer_tracker_test.go | 2 +- pkg/logs/tailers/windowsevent/tailer.go | 4 +- pkg/logs/util/testutils/go.mod | 83 ++ pkg/logs/util/testutils/go.sum | 363 +++++++++ .../util/testutils/test_utils.go | 2 - pkg/util/startstop/go.mod | 11 + pkg/util/startstop/go.sum | 10 + tasks/modules.py | 13 + 68 files changed, 5669 insertions(+), 72 deletions(-) create mode 100644 pkg/logs/auditor/go.mod create mode 100644 pkg/logs/auditor/go.sum create mode 100644 pkg/logs/client/go.mod create mode 100644 pkg/logs/client/go.sum create mode 100644 pkg/logs/diagnostic/go.mod create mode 100644 pkg/logs/diagnostic/go.sum create mode 100644 pkg/logs/message/go.mod create mode 100644 pkg/logs/message/go.sum create mode 100644 pkg/logs/metrics/go.mod create mode 100644 pkg/logs/metrics/go.sum create mode 100644 pkg/logs/pipeline/go.mod create mode 100644 pkg/logs/pipeline/go.sum rename pkg/logs/{internal => }/processor/encoder.go (100%) rename pkg/logs/{internal => }/processor/encoder_test.go (100%) create mode 100644 pkg/logs/processor/go.mod create mode 100644 pkg/logs/processor/go.sum rename pkg/logs/{internal => }/processor/json.go (100%) rename pkg/logs/{internal => }/processor/json_serverless.go (100%) rename pkg/logs/{internal => }/processor/processor.go (100%) rename pkg/logs/{internal => }/processor/processor_test.go (100%) rename pkg/logs/{internal => }/processor/proto.go (100%) rename pkg/logs/{internal => }/processor/raw.go (100%) create mode 100644 pkg/logs/sender/go.mod create mode 100644 pkg/logs/sender/go.sum create mode 100644 pkg/logs/sources/go.mod create mode 100644 pkg/logs/sources/go.sum create mode 100644 pkg/logs/status/statusinterface/go.mod create mode 100644 pkg/logs/status/statusinterface/go.sum create mode 100644 pkg/logs/status/utils/go.mod create mode 100644 pkg/logs/status/utils/go.sum rename pkg/logs/{internal/status => status/utils}/info.go (99%) rename pkg/logs/{internal/status => status/utils}/info_test.go (97%) rename pkg/logs/{internal/status => status/utils}/status.go (99%) rename pkg/logs/{internal/status => status/utils}/status_test.go (98%) create mode 100644 pkg/logs/util/testutils/go.mod create mode 100644 pkg/logs/util/testutils/go.sum rename pkg/logs/{internal => }/util/testutils/test_utils.go (98%) create mode 100644 pkg/util/startstop/go.mod create mode 100644 pkg/util/startstop/go.sum diff --git a/comp/logs/agent/status.go b/comp/logs/agent/status.go index 6ee301155b5304..e0dd2b33eac2fb 100644 --- a/comp/logs/agent/status.go +++ b/comp/logs/agent/status.go @@ -11,7 +11,6 @@ import ( "github.com/DataDog/datadog-agent/comp/core/status" logsStatus "github.com/DataDog/datadog-agent/pkg/logs/status" - "github.com/DataDog/datadog-agent/pkg/logs/status/statusinterface" ) //go:embed status_templates @@ -20,17 +19,20 @@ var templatesFS embed.FS // Only use for testing var logsProvider = logsStatus.Get -type statusProvider struct{} +// StatusProvider is the type for logs agent status methods +type StatusProvider struct{} -func (p statusProvider) Name() string { +// Name returns the name +func (p StatusProvider) Name() string { return "Logs Agent" } -func (p statusProvider) Section() string { +// Section returns the section +func (p StatusProvider) Section() string { return "Logs Agent" } -func (p statusProvider) getStatusInfo(verbose bool) map[string]interface{} { +func (p StatusProvider) getStatusInfo(verbose bool) map[string]interface{} { stats := make(map[string]interface{}) p.populateStatus(verbose, stats) @@ -38,36 +40,39 @@ func (p statusProvider) getStatusInfo(verbose bool) map[string]interface{} { return stats } -func (p statusProvider) populateStatus(verbose bool, stats map[string]interface{}) { +func (p StatusProvider) populateStatus(verbose bool, stats map[string]interface{}) { stats["logsStats"] = logsProvider(verbose) } -func (p statusProvider) JSON(verbose bool, stats map[string]interface{}) error { +// JSON populates the status map +func (p StatusProvider) JSON(verbose bool, stats map[string]interface{}) error { p.populateStatus(verbose, stats) return nil } -func (p statusProvider) Text(verbose bool, buffer io.Writer) error { +// Text renders the text output +func (p StatusProvider) Text(verbose bool, buffer io.Writer) error { return status.RenderText(templatesFS, "logsagent.tmpl", buffer, p.getStatusInfo(verbose)) } -func (p statusProvider) HTML(verbose bool, buffer io.Writer) error { +// HTML renders the HTML output +func (p StatusProvider) HTML(verbose bool, buffer io.Writer) error { return status.RenderHTML(templatesFS, "logsagentHTML.tmpl", buffer, p.getStatusInfo(verbose)) } // AddGlobalWarning keeps track of a warning message to display on the status. -func (p statusProvider) AddGlobalWarning(key string, warning string) { +func (p StatusProvider) AddGlobalWarning(key string, warning string) { logsStatus.AddGlobalWarning(key, warning) } // RemoveGlobalWarning loses track of a warning message // that does not need to be displayed on the status anymore. -func (p statusProvider) RemoveGlobalWarning(key string) { +func (p StatusProvider) RemoveGlobalWarning(key string) { logsStatus.RemoveGlobalWarning(key) } // NewStatusProvider fetches the status and returns a service wrapping it -func NewStatusProvider() statusinterface.Status { - return &statusProvider{} +func NewStatusProvider() *StatusProvider { + return &StatusProvider{} } diff --git a/go.mod b/go.mod index 3891e9c948328d..7d3fc533e4e660 100644 --- a/go.mod +++ b/go.mod @@ -48,6 +48,18 @@ replace ( github.com/DataDog/datadog-agent/pkg/config/utils => ./pkg/config/utils/ github.com/DataDog/datadog-agent/pkg/errors => ./pkg/errors github.com/DataDog/datadog-agent/pkg/gohai => ./pkg/gohai + github.com/DataDog/datadog-agent/pkg/logs/auditor => ./pkg/logs/auditor + github.com/DataDog/datadog-agent/pkg/logs/client => ./pkg/logs/client + github.com/DataDog/datadog-agent/pkg/logs/diagnostic => ./pkg/logs/diagnostic + github.com/DataDog/datadog-agent/pkg/logs/message => ./pkg/logs/message + github.com/DataDog/datadog-agent/pkg/logs/metrics => ./pkg/logs/metrics + github.com/DataDog/datadog-agent/pkg/logs/pipeline => ./pkg/logs/pipeline + github.com/DataDog/datadog-agent/pkg/logs/processor => ./pkg/logs/processor + github.com/DataDog/datadog-agent/pkg/logs/sender => ./pkg/logs/sender + github.com/DataDog/datadog-agent/pkg/logs/sources => ./pkg/logs/sources + github.com/DataDog/datadog-agent/pkg/logs/status/statusinterface => ./pkg/logs/status/statusinterface + github.com/DataDog/datadog-agent/pkg/logs/status/utils => ./pkg/logs/status/utils + github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ./pkg/logs/util/testutils github.com/DataDog/datadog-agent/pkg/metrics => ./pkg/metrics/ github.com/DataDog/datadog-agent/pkg/networkdevice/profile => ./pkg/networkdevice/profile github.com/DataDog/datadog-agent/pkg/obfuscate => ./pkg/obfuscate @@ -80,6 +92,7 @@ replace ( github.com/DataDog/datadog-agent/pkg/util/pointer => ./pkg/util/pointer github.com/DataDog/datadog-agent/pkg/util/scrubber => ./pkg/util/scrubber github.com/DataDog/datadog-agent/pkg/util/sort => ./pkg/util/sort/ + github.com/DataDog/datadog-agent/pkg/util/startstop => ./pkg/util/startstop github.com/DataDog/datadog-agent/pkg/util/statstracker => ./pkg/util/statstracker github.com/DataDog/datadog-agent/pkg/util/system => ./pkg/util/system github.com/DataDog/datadog-agent/pkg/util/system/socket => ./pkg/util/system/socket/ @@ -615,6 +628,17 @@ require ( github.com/DataDog/datadog-agent/pkg/config/setup v0.52.0-rc.3 github.com/DataDog/datadog-agent/pkg/config/utils v0.52.0-rc.3 github.com/DataDog/datadog-agent/pkg/errors v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/logs/auditor v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/logs/client v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/logs/diagnostic v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/logs/message v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/logs/metrics v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/logs/pipeline v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/logs/processor v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/logs/sender v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/logs/sources v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/logs/status/utils v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/logs/util/testutils v0.52.0-rc.3 github.com/DataDog/datadog-agent/pkg/metrics v0.52.0-rc.3 github.com/DataDog/datadog-agent/pkg/networkdevice/profile v0.52.0-rc.3 github.com/DataDog/datadog-agent/pkg/orchestrator/model v0.52.0-rc.3 @@ -638,7 +662,7 @@ require ( github.com/DataDog/datadog-agent/pkg/util/json v0.52.0-rc.3 github.com/DataDog/datadog-agent/pkg/util/optional v0.52.0-rc.3 github.com/DataDog/datadog-agent/pkg/util/sort v0.52.0-rc.3 - github.com/DataDog/datadog-agent/pkg/util/statstracker v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/util/startstop v0.52.0-rc.3 github.com/DataDog/datadog-agent/pkg/util/system v0.52.0-rc.3 github.com/DataDog/datadog-agent/pkg/util/testutil v0.52.0-rc.3 github.com/DataDog/datadog-agent/pkg/util/uuid v0.52.0-rc.3 @@ -681,7 +705,9 @@ require ( github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0 // indirect github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1 // indirect + github.com/DataDog/datadog-agent/pkg/logs/status/statusinterface v0.52.0-rc.3 // indirect github.com/DataDog/datadog-agent/pkg/util/buf v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/statstracker v0.52.0-rc.3 // indirect github.com/DataDog/datadog-agent/pkg/util/system/socket v0.52.0-rc.3 // indirect github.com/DataDog/datadog-api-client-go/v2 v2.13.0 // indirect github.com/DataDog/go-sqllexer v0.0.9 // indirect diff --git a/pkg/logs/auditor/go.mod b/pkg/logs/auditor/go.mod new file mode 100644 index 00000000000000..be9768efe283ef --- /dev/null +++ b/pkg/logs/auditor/go.mod @@ -0,0 +1,91 @@ +module github.com/DataDog/datadog-agent/pkg/logs/auditor + +go 1.21.7 + +replace ( + github.com/DataDog/datadog-agent/comp/core/secrets => ../../../comp/core/secrets + github.com/DataDog/datadog-agent/comp/logs/agent/config => ../../../comp/logs/agent/config + github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../collector/check/defaults + github.com/DataDog/datadog-agent/pkg/config/env => ../../config/env + github.com/DataDog/datadog-agent/pkg/config/model => ../../config/model + github.com/DataDog/datadog-agent/pkg/config/setup => ../../config/setup + github.com/DataDog/datadog-agent/pkg/config/utils => ../../config/utils + github.com/DataDog/datadog-agent/pkg/logs/message => ../message + github.com/DataDog/datadog-agent/pkg/logs/sources => ../sources + github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../status/utils + github.com/DataDog/datadog-agent/pkg/status/health => ../../status/health + github.com/DataDog/datadog-agent/pkg/util/executable => ../../util/executable + github.com/DataDog/datadog-agent/pkg/util/filesystem => ../../util/filesystem + github.com/DataDog/datadog-agent/pkg/util/hostname/validate => ../../util/hostname/validate + github.com/DataDog/datadog-agent/pkg/util/log => ../../util/log + github.com/DataDog/datadog-agent/pkg/util/optional => ../../util/optional + github.com/DataDog/datadog-agent/pkg/util/pointer => ../../util/pointer + github.com/DataDog/datadog-agent/pkg/util/scrubber => ../../util/scrubber + github.com/DataDog/datadog-agent/pkg/util/statstracker => ../../util/statstracker + github.com/DataDog/datadog-agent/pkg/util/system => ../../util/system + github.com/DataDog/datadog-agent/pkg/util/system/socket => ../../util/system/socket + github.com/DataDog/datadog-agent/pkg/util/winutil => ../../util/winutil + github.com/DataDog/datadog-agent/pkg/version => ../../version +) + +require ( + github.com/DataDog/datadog-agent/comp/logs/agent/config v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/logs/message v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/logs/sources v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/status/health v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/util/log v0.52.0-rc.3 + github.com/stretchr/testify v1.8.4 +) + +require ( + github.com/DataDog/datadog-agent/comp/core/secrets v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/collector/check/defaults v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/config/env v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/config/model v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/config/setup v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/config/utils v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/logs/status/utils v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/executable v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/filesystem v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/hostname/validate v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/optional v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/pointer v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/scrubber v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/statstracker v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/system v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/system/socket v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/winutil v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/version v0.52.0-rc.3 // indirect + github.com/DataDog/viper v1.12.0 // indirect + github.com/Microsoft/go-winio v0.6.1 // indirect + github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/fsnotify/fsnotify v1.7.0 // indirect + github.com/go-ole/go-ole v1.2.6 // indirect + github.com/hashicorp/hcl v1.0.0 // indirect + github.com/hectane/go-acl v0.0.0-20190604041725-da78bae5fc95 // indirect + github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 // indirect + github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect + github.com/magiconair/properties v1.8.1 // indirect + github.com/mitchellh/mapstructure v1.1.2 // indirect + github.com/pelletier/go-toml v1.2.0 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect + github.com/shirou/gopsutil/v3 v3.23.12 // indirect + github.com/shoenig/go-m1cpu v0.1.6 // indirect + github.com/spf13/afero v1.1.2 // indirect + github.com/spf13/cast v1.5.1 // indirect + github.com/spf13/jwalterweatherman v1.0.0 // indirect + github.com/spf13/pflag v1.0.5 // indirect + github.com/tklauser/go-sysconf v0.3.12 // indirect + github.com/tklauser/numcpus v0.6.1 // indirect + github.com/yusufpapurcu/wmi v1.2.3 // indirect + go.uber.org/atomic v1.11.0 // indirect + golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect + golang.org/x/mod v0.15.0 // indirect + golang.org/x/sys v0.17.0 // indirect + golang.org/x/text v0.9.0 // indirect + golang.org/x/tools v0.18.0 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect +) diff --git a/pkg/logs/auditor/go.sum b/pkg/logs/auditor/go.sum new file mode 100644 index 00000000000000..65c98677397f8d --- /dev/null +++ b/pkg/logs/auditor/go.sum @@ -0,0 +1,363 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/DataDog/datadog-agent/comp/core/config v0.52.0-rc.3 h1:N7cJMtcW9cmybQqwv421dXcfJEBtfRPacF9nBN3K0Iw= +github.com/DataDog/datadog-agent/comp/core/config v0.52.0-rc.3/go.mod h1:3s80Ae8qaPOWpwM75dnM1M9YWkr6+ckA9TKU2+/sa7Q= +github.com/DataDog/datadog-agent/comp/core/flare/types v0.52.0-rc.3 h1:pIGSbylKbhD1s06yGED9t9eFYKj2myu46k2OOIUCXAs= +github.com/DataDog/datadog-agent/comp/core/flare/types v0.52.0-rc.3/go.mod h1:h0h6cm8eqb1JnuqHMCdTir+c4IUlOUnOy6xrmvhQXOY= +github.com/DataDog/datadog-agent/comp/core/telemetry v0.52.0-rc.3 h1:+x4UVcnF4bSpSrWlu0e8LhmgcTlN7jH1XBodIist3wo= +github.com/DataDog/datadog-agent/comp/core/telemetry v0.52.0-rc.3/go.mod h1:d8HdAOKvYvCuXbY2ccGbhcJlABgg9qJkpx0WESJl0dE= +github.com/DataDog/datadog-agent/pkg/telemetry v0.52.0-rc.3 h1:WO0MM7nHQdT3LYc2VQbBUut0aGz0L92CF27vWfRbetE= +github.com/DataDog/datadog-agent/pkg/telemetry v0.52.0-rc.3/go.mod h1:zAr+W+gzODxPhlq9qVG1UwvItHRk+n/9XHXJ5Myeyp8= +github.com/DataDog/datadog-agent/pkg/util/fxutil v0.52.0-rc.3 h1:nX/9kjs+9Rb/fJVsPKWiw1pvVS8fHG5pum2C8GtheWI= +github.com/DataDog/datadog-agent/pkg/util/fxutil v0.52.0-rc.3/go.mod h1:+ViwDZ54Ox34yYqgYozTFx7xjXG/+IhhudfE1Nx/9+A= +github.com/DataDog/datadog-agent/pkg/util/testutil v0.52.0-rc.3 h1:C9hoL8b5XPv4PSToaUo3BmzS3HrcDti4XSXd3BJf4fU= +github.com/DataDog/datadog-agent/pkg/util/testutil v0.52.0-rc.3/go.mod h1:7/Dk+MI/JNkrYUYtR/LQG750a99T1/nCVNFjc7rLq4g= +github.com/DataDog/viper v1.12.0 h1:FufyZpZPxyszafSV5B8Q8it75IhhuJwH0T7QpT6HnD0= +github.com/DataDog/viper v1.12.0/go.mod h1:wDdUVJ2SHaMaPrCZrlRCObwkubsX8j5sme3LaR/SGTc= +github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= +github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +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= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/antihax/optional v0.0.0-20180407024304-ca021399b1a6/go.mod h1:V8iCPQYkqmusNa815XgQio277wI47sdRh1dUOLdyC6Q= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +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= +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +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.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= +github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575 h1:kHaBemcxl8o/pQ5VM1c8PVE1PubbNx3mjUr09OqWGCs= +github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575/go.mod h1:9d6lWj8KzO/fd/NrVaLscBKmPigpZpn5YawRPw+e3Yo= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/bbolt v1.3.3/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +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/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= +github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= +github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY= +github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= +github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +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.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +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.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-middleware v1.2.0/go.mod h1:mJzapYve32yjrKlk9GbyCZHuPgZsrbyIbyKhSzOpg6s= +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.13.0/go.mod h1:8XEsbTttt/W+VvjtQhLACqCisSPWTxCZ7sBRjU6iH9c= +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/hectane/go-acl v0.0.0-20190604041725-da78bae5fc95 h1:S4qyfL2sEm5Budr4KVMyEniCy+PbS55651I/a+Kn/NQ= +github.com/hectane/go-acl v0.0.0-20190604041725-da78bae5fc95/go.mod h1:QiyDdbZLaJ/mZP4Zwc9g2QsfaEA4o7XvvgZegSci5/E= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 h1:iQTw/8FWTuc7uiaSepXwyf3o52HaUYcV+Tu66S3F5GA= +github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +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/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= +github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= +github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4= +github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= +github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.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/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw= +github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +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.4.1/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= +github.com/prometheus/client_golang v1.17.0 h1:rl2sfwZMtSthVU752MqfjQozy7blglC+1SOtjMAMh+Q= +github.com/prometheus/client_golang v1.17.0/go.mod h1:VeL+gMmOAxkS2IqfCq0ZmHSL+LjWfWDUmp1mBz9JgUY= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= +github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= +github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= +github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY= +github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= +github.com/prometheus/procfs v0.11.1 h1:xRC8Iq1yyca5ypa9n1EZnWZkt7dwcoRPQwX/5gwaUuI= +github.com/prometheus/procfs v0.11.1/go.mod h1:eesXgaPo1q7lBpVMoMy0ZOFTth9hBn4W/y0/p/ScXhY= +github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/shirou/gopsutil/v3 v3.23.12 h1:z90NtUkp3bMtmICZKpC4+WaknU1eXtp5vtbQ11DgpE4= +github.com/shirou/gopsutil/v3 v3.23.12/go.mod h1:1FrWgea594Jp7qmjHUUPlJDTPgcsb9mGnXDxavtikzM= +github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM= +github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ= +github.com/shoenig/test v0.6.4 h1:kVTaSd7WLz5WZ2IaoM0RSzRsUD+m8wRR+5qvntpn4LU= +github.com/shoenig/test v0.6.4/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spf13/afero v1.1.2 h1:m8/z1t7/fwjysjQRYbP0RD+bUIF/8tJwPdEZsI83ACI= +github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA= +github.com/spf13/cast v1.5.1/go.mod h1:b9PdjNptOpzXr7Rq1q9gJML/2cdGQAo69NKzQ10KN48= +github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I= +github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0= +github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk= +github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +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/spf13/viper v1.6.2/go.mod h1:t3iDnF5Jlj76alVNuyFBk5oUMCvsrkbvZK0WQdfDi5k= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +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.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= +github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= +github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= +github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= +github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= +github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tmc/grpc-websocket-proxy v0.0.0-20200122045848-3419fae592fc/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= +github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= +github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/yusufpapurcu/wmi v1.2.3 h1:E1ctvB7uKFMOJw3fdOW32DwGE9I7t++CRUEMKvFoFiw= +github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.opentelemetry.io/otel v1.20.0 h1:vsb/ggIY+hUjD/zCAQHpzTmndPqv/ml2ArbsbfBYTAc= +go.opentelemetry.io/otel v1.20.0/go.mod h1:oUIGj3D77RwJdM6PPZImDpSZGDvkD9fhesHny69JFrs= +go.opentelemetry.io/otel/exporters/prometheus v0.42.0 h1:jwV9iQdvp38fxXi8ZC+lNpxjK16MRcZlpDYvbuO1FiA= +go.opentelemetry.io/otel/exporters/prometheus v0.42.0/go.mod h1:f3bYiqNqhoPxkvI2LrXqQVC546K7BuRDL/kKuxkujhA= +go.opentelemetry.io/otel/metric v1.20.0 h1:ZlrO8Hu9+GAhnepmRGhSU7/VkpjrNowxRN9GyKR4wzA= +go.opentelemetry.io/otel/metric v1.20.0/go.mod h1:90DRw3nfK4D7Sm/75yQ00gTJxtkBxX+wu6YaNymbpVM= +go.opentelemetry.io/otel/sdk v1.20.0 h1:5Jf6imeFZlZtKv9Qbo6qt2ZkmWtdWx/wzcCbNUlAWGM= +go.opentelemetry.io/otel/sdk v1.20.0/go.mod h1:rmkSx1cZCm/tn16iWDn1GQbLtsW/LvsdEEFzCSRM6V0= +go.opentelemetry.io/otel/sdk/metric v1.20.0 h1:5eD40l/H2CqdKmbSV7iht2KMK0faAIL2pVYzJOWobGk= +go.opentelemetry.io/otel/sdk/metric v1.20.0/go.mod h1:AGvpC+YF/jblITiafMTYgvRBUiwi9hZf0EYE2E5XlS8= +go.opentelemetry.io/otel/trace v1.20.0 h1:+yxVAPZPbQhbC3OfAkeIVTky6iTFpcr4SiY9om7mXSQ= +go.opentelemetry.io/otel/trace v1.20.0/go.mod h1:HJSK7F/hA5RlzpZ0zKDCHCDHm556LCDtKaAo6JmBFUU= +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.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= +go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= +go.uber.org/dig v1.17.0 h1:5Chju+tUvcC+N7N6EV08BJz41UZuO3BmHcN4A287ZLI= +go.uber.org/dig v1.17.0/go.mod h1:rTxpf7l5I0eBTlE6/9RL+lDybC7WFwY2QH55ZSjy1mU= +go.uber.org/fx v1.18.2 h1:bUNI6oShr+OVFQeU8cDNbnN7VFsu+SsjHzUF51V/GAU= +go.uber.org/fx v1.18.2/go.mod h1:g0V1KMQ66zIRk8bLu3Ea5Jt2w/cHlOIp4wdRsgh0JaY= +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.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.14.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= +go.uber.org/zap v1.23.0 h1:OjGQ5KQDEUawVHxNwQgPpiypGHOxo2mNZsOqTak4fFY= +go.uber.org/zap v1.23.0/go.mod h1:D+nX8jyLsMHMYrln8A0rJjFt/T/9/bGgIhAqxv5URuY= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 h1:LfspQV/FYTatPTr/3HzIcmiUFH7PGP+OQ6mgDYo3yuQ= +golang.org/x/exp v0.0.0-20240222234643-814bf88cf225/go.mod h1:CxmFvTBINI24O/j8iY7H1xHzx2i4OsyguNBmN/uPtqc= +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.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8= +golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +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-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181220203305-927f97764cc3/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-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191002035440-2ec189313ef0/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/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-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.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/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-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190529164535-6a60838ec259/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20220829200755-d48e67d00261/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/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-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-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +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= +golang.org/x/tools v0.18.0 h1:k8NLag8AGHnn+PHbl7g43CtqZAwG60vZkLqgyZgIHgQ= +golang.org/x/tools v0.18.0/go.mod h1:GL7B4CwcLLeo59yx/9UWWuNOW1n3VZ4f5axWfML7Lcg= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/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-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190927181202-20e1ac93f88c/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= +google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +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-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +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.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.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/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= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= diff --git a/pkg/logs/client/go.mod b/pkg/logs/client/go.mod new file mode 100644 index 00000000000000..ba5bca755903c5 --- /dev/null +++ b/pkg/logs/client/go.mod @@ -0,0 +1,131 @@ +module github.com/DataDog/datadog-agent/pkg/logs/client + +go 1.21.7 + +replace ( + github.com/DataDog/datadog-agent/comp/core/hostname/hostnameinterface => ../../../comp/core/hostname/hostnameinterface + github.com/DataDog/datadog-agent/comp/core/secrets => ../../../comp/core/secrets + github.com/DataDog/datadog-agent/comp/core/status => ../../../comp/core/status + github.com/DataDog/datadog-agent/comp/core/telemetry => ../../../comp/core/telemetry + github.com/DataDog/datadog-agent/comp/logs/agent/config => ../../../comp/logs/agent/config + github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../collector/check/defaults + github.com/DataDog/datadog-agent/pkg/config/env => ../../config/env + github.com/DataDog/datadog-agent/pkg/config/model => ../../config/model + github.com/DataDog/datadog-agent/pkg/config/setup => ../../config/setup + github.com/DataDog/datadog-agent/pkg/config/utils => ../../config/utils + github.com/DataDog/datadog-agent/pkg/logs/message => ../message + github.com/DataDog/datadog-agent/pkg/logs/metrics => ../metrics + github.com/DataDog/datadog-agent/pkg/logs/sources => ../sources + github.com/DataDog/datadog-agent/pkg/logs/status/statusinterface => ../status/statusinterface + github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../status/utils + github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../util/testutils + github.com/DataDog/datadog-agent/pkg/telemetry => ../../telemetry + github.com/DataDog/datadog-agent/pkg/util/backoff => ../../util/backoff + github.com/DataDog/datadog-agent/pkg/util/executable => ../../util/executable + github.com/DataDog/datadog-agent/pkg/util/filesystem => ../../util/filesystem + github.com/DataDog/datadog-agent/pkg/util/fxutil => ../../util/fxutil + github.com/DataDog/datadog-agent/pkg/util/hostname/validate => ../../util/hostname/validate + github.com/DataDog/datadog-agent/pkg/util/http => ../../util/http + github.com/DataDog/datadog-agent/pkg/util/log => ../../util/log + github.com/DataDog/datadog-agent/pkg/util/optional => ../../util/optional + github.com/DataDog/datadog-agent/pkg/util/pointer => ../../util/pointer + github.com/DataDog/datadog-agent/pkg/util/scrubber => ../../util/scrubber + github.com/DataDog/datadog-agent/pkg/util/statstracker => ../../util/statstracker + github.com/DataDog/datadog-agent/pkg/util/system => ../../util/system + github.com/DataDog/datadog-agent/pkg/util/system/socket => ../../util/system/socket + github.com/DataDog/datadog-agent/pkg/util/winutil => ../../util/winutil + github.com/DataDog/datadog-agent/pkg/version => ../../version +) + +require ( + github.com/DataDog/datadog-agent/comp/logs/agent/config v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/config/model v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/logs/message v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/logs/metrics v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/logs/sources v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/logs/status/statusinterface v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/logs/util/testutils v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/telemetry v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/util/backoff v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/util/http v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/util/log v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/util/pointer v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/version v0.52.0-rc.3 + github.com/stretchr/testify v1.8.4 + golang.org/x/net v0.21.0 +) + +require ( + github.com/DataDog/datadog-agent/comp/core/secrets v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/comp/core/telemetry v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/collector/check/defaults v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/config/env v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/config/setup v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/config/utils v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/logs/status/utils v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/executable v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/filesystem v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/fxutil v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/hostname/validate v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/optional v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/scrubber v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/statstracker v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/system v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/system/socket v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/winutil v0.52.0-rc.3 // indirect + github.com/DataDog/viper v1.12.0 // indirect + github.com/Microsoft/go-winio v0.6.1 // indirect + github.com/beorn7/perks v1.0.1 // indirect + github.com/cespare/xxhash/v2 v2.2.0 // indirect + github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/fsnotify/fsnotify v1.7.0 // indirect + github.com/go-logr/logr v1.3.0 // indirect + github.com/go-logr/stdr v1.2.2 // indirect + github.com/go-ole/go-ole v1.2.6 // indirect + github.com/golang/protobuf v1.5.3 // indirect + github.com/hashicorp/hcl v1.0.0 // indirect + github.com/hectane/go-acl v0.0.0-20190604041725-da78bae5fc95 // indirect + github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 // indirect + github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect + github.com/magiconair/properties v1.8.1 // indirect + github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect + github.com/mitchellh/mapstructure v1.1.2 // indirect + github.com/pelletier/go-toml v1.2.0 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect + github.com/prometheus/client_golang v1.17.0 // indirect + github.com/prometheus/client_model v0.5.0 // indirect + github.com/prometheus/common v0.44.0 // indirect + github.com/prometheus/procfs v0.11.1 // indirect + github.com/shirou/gopsutil/v3 v3.23.12 // indirect + github.com/shoenig/go-m1cpu v0.1.6 // indirect + github.com/spf13/afero v1.9.5 // indirect + github.com/spf13/cast v1.5.1 // indirect + github.com/spf13/cobra v1.7.0 // indirect + github.com/spf13/jwalterweatherman v1.0.0 // indirect + github.com/spf13/pflag v1.0.5 // indirect + github.com/tklauser/go-sysconf v0.3.12 // indirect + github.com/tklauser/numcpus v0.6.1 // indirect + github.com/yusufpapurcu/wmi v1.2.3 // indirect + go.opentelemetry.io/otel v1.20.0 // indirect + go.opentelemetry.io/otel/exporters/prometheus v0.42.0 // indirect + go.opentelemetry.io/otel/metric v1.20.0 // indirect + go.opentelemetry.io/otel/sdk v1.20.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.20.0 // indirect + go.opentelemetry.io/otel/trace v1.20.0 // indirect + go.uber.org/atomic v1.11.0 // indirect + go.uber.org/dig v1.17.0 // indirect + go.uber.org/fx v1.18.2 // indirect + go.uber.org/multierr v1.6.0 // indirect + go.uber.org/zap v1.23.0 // indirect + golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect + golang.org/x/mod v0.15.0 // indirect + golang.org/x/sys v0.17.0 // indirect + golang.org/x/text v0.14.0 // indirect + golang.org/x/tools v0.18.0 // indirect + google.golang.org/protobuf v1.31.0 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect +) diff --git a/pkg/logs/client/go.sum b/pkg/logs/client/go.sum new file mode 100644 index 00000000000000..5be4f3e3e54758 --- /dev/null +++ b/pkg/logs/client/go.sum @@ -0,0 +1,729 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= +cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= +cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= +cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= +cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= +cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= +cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= +cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +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/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/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/DataDog/datadog-agent/comp/core/config v0.52.0-rc.3 h1:N7cJMtcW9cmybQqwv421dXcfJEBtfRPacF9nBN3K0Iw= +github.com/DataDog/datadog-agent/comp/core/config v0.52.0-rc.3/go.mod h1:3s80Ae8qaPOWpwM75dnM1M9YWkr6+ckA9TKU2+/sa7Q= +github.com/DataDog/datadog-agent/comp/core/flare/types v0.52.0-rc.3 h1:pIGSbylKbhD1s06yGED9t9eFYKj2myu46k2OOIUCXAs= +github.com/DataDog/datadog-agent/comp/core/flare/types v0.52.0-rc.3/go.mod h1:h0h6cm8eqb1JnuqHMCdTir+c4IUlOUnOy6xrmvhQXOY= +github.com/DataDog/datadog-agent/pkg/util/testutil v0.52.0-rc.3 h1:C9hoL8b5XPv4PSToaUo3BmzS3HrcDti4XSXd3BJf4fU= +github.com/DataDog/datadog-agent/pkg/util/testutil v0.52.0-rc.3/go.mod h1:7/Dk+MI/JNkrYUYtR/LQG750a99T1/nCVNFjc7rLq4g= +github.com/DataDog/viper v1.12.0 h1:FufyZpZPxyszafSV5B8Q8it75IhhuJwH0T7QpT6HnD0= +github.com/DataDog/viper v1.12.0/go.mod h1:wDdUVJ2SHaMaPrCZrlRCObwkubsX8j5sme3LaR/SGTc= +github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= +github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +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= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/antihax/optional v0.0.0-20180407024304-ca021399b1a6/go.mod h1:V8iCPQYkqmusNa815XgQio277wI47sdRh1dUOLdyC6Q= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +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/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= +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= +github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575 h1:kHaBemcxl8o/pQ5VM1c8PVE1PubbNx3mjUr09OqWGCs= +github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575/go.mod h1:9d6lWj8KzO/fd/NrVaLscBKmPigpZpn5YawRPw+e3Yo= +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/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/bbolt v1.3.3/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +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/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +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/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= +github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= +github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +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= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY= +github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= +github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +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.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= +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.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +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.4.1/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.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.2/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.5/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.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +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-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= +github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-middleware v1.2.0/go.mod h1:mJzapYve32yjrKlk9GbyCZHuPgZsrbyIbyKhSzOpg6s= +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.13.0/go.mod h1:8XEsbTttt/W+VvjtQhLACqCisSPWTxCZ7sBRjU6iH9c= +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/hectane/go-acl v0.0.0-20190604041725-da78bae5fc95 h1:S4qyfL2sEm5Budr4KVMyEniCy+PbS55651I/a+Kn/NQ= +github.com/hectane/go-acl v0.0.0-20190604041725-da78bae5fc95/go.mod h1:QiyDdbZLaJ/mZP4Zwc9g2QsfaEA4o7XvvgZegSci5/E= +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/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +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/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 h1:iQTw/8FWTuc7uiaSepXwyf3o52HaUYcV+Tu66S3F5GA= +github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +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/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= +github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= +github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4= +github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= +github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +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/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= +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/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw= +github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +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.4.1/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= +github.com/prometheus/client_golang v1.17.0 h1:rl2sfwZMtSthVU752MqfjQozy7blglC+1SOtjMAMh+Q= +github.com/prometheus/client_golang v1.17.0/go.mod h1:VeL+gMmOAxkS2IqfCq0ZmHSL+LjWfWDUmp1mBz9JgUY= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= +github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= +github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= +github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY= +github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= +github.com/prometheus/procfs v0.11.1 h1:xRC8Iq1yyca5ypa9n1EZnWZkt7dwcoRPQwX/5gwaUuI= +github.com/prometheus/procfs v0.11.1/go.mod h1:eesXgaPo1q7lBpVMoMy0ZOFTth9hBn4W/y0/p/ScXhY= +github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= +github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/shirou/gopsutil/v3 v3.23.12 h1:z90NtUkp3bMtmICZKpC4+WaknU1eXtp5vtbQ11DgpE4= +github.com/shirou/gopsutil/v3 v3.23.12/go.mod h1:1FrWgea594Jp7qmjHUUPlJDTPgcsb9mGnXDxavtikzM= +github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM= +github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ= +github.com/shoenig/test v0.6.4 h1:kVTaSd7WLz5WZ2IaoM0RSzRsUD+m8wRR+5qvntpn4LU= +github.com/shoenig/test v0.6.4/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/afero v1.9.5 h1:stMpOSZFs//0Lv29HduCmli3GUfpFoF3Y1Q/aXj/wVM= +github.com/spf13/afero v1.9.5/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA= +github.com/spf13/cast v1.5.1/go.mod h1:b9PdjNptOpzXr7Rq1q9gJML/2cdGQAo69NKzQ10KN48= +github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I= +github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0= +github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk= +github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +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/spf13/viper v1.6.2/go.mod h1:t3iDnF5Jlj76alVNuyFBk5oUMCvsrkbvZK0WQdfDi5k= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +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.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= +github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= +github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= +github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= +github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= +github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tmc/grpc-websocket-proxy v0.0.0-20200122045848-3419fae592fc/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= +github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= +github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +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= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yusufpapurcu/wmi v1.2.3 h1:E1ctvB7uKFMOJw3fdOW32DwGE9I7t++CRUEMKvFoFiw= +github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +go.opentelemetry.io/otel v1.20.0 h1:vsb/ggIY+hUjD/zCAQHpzTmndPqv/ml2ArbsbfBYTAc= +go.opentelemetry.io/otel v1.20.0/go.mod h1:oUIGj3D77RwJdM6PPZImDpSZGDvkD9fhesHny69JFrs= +go.opentelemetry.io/otel/exporters/prometheus v0.42.0 h1:jwV9iQdvp38fxXi8ZC+lNpxjK16MRcZlpDYvbuO1FiA= +go.opentelemetry.io/otel/exporters/prometheus v0.42.0/go.mod h1:f3bYiqNqhoPxkvI2LrXqQVC546K7BuRDL/kKuxkujhA= +go.opentelemetry.io/otel/metric v1.20.0 h1:ZlrO8Hu9+GAhnepmRGhSU7/VkpjrNowxRN9GyKR4wzA= +go.opentelemetry.io/otel/metric v1.20.0/go.mod h1:90DRw3nfK4D7Sm/75yQ00gTJxtkBxX+wu6YaNymbpVM= +go.opentelemetry.io/otel/sdk v1.20.0 h1:5Jf6imeFZlZtKv9Qbo6qt2ZkmWtdWx/wzcCbNUlAWGM= +go.opentelemetry.io/otel/sdk v1.20.0/go.mod h1:rmkSx1cZCm/tn16iWDn1GQbLtsW/LvsdEEFzCSRM6V0= +go.opentelemetry.io/otel/sdk/metric v1.20.0 h1:5eD40l/H2CqdKmbSV7iht2KMK0faAIL2pVYzJOWobGk= +go.opentelemetry.io/otel/sdk/metric v1.20.0/go.mod h1:AGvpC+YF/jblITiafMTYgvRBUiwi9hZf0EYE2E5XlS8= +go.opentelemetry.io/otel/trace v1.20.0 h1:+yxVAPZPbQhbC3OfAkeIVTky6iTFpcr4SiY9om7mXSQ= +go.opentelemetry.io/otel/trace v1.20.0/go.mod h1:HJSK7F/hA5RlzpZ0zKDCHCDHm556LCDtKaAo6JmBFUU= +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.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= +go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= +go.uber.org/dig v1.17.0 h1:5Chju+tUvcC+N7N6EV08BJz41UZuO3BmHcN4A287ZLI= +go.uber.org/dig v1.17.0/go.mod h1:rTxpf7l5I0eBTlE6/9RL+lDybC7WFwY2QH55ZSjy1mU= +go.uber.org/fx v1.18.2 h1:bUNI6oShr+OVFQeU8cDNbnN7VFsu+SsjHzUF51V/GAU= +go.uber.org/fx v1.18.2/go.mod h1:g0V1KMQ66zIRk8bLu3Ea5Jt2w/cHlOIp4wdRsgh0JaY= +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.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= +go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.14.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= +go.uber.org/zap v1.23.0 h1:OjGQ5KQDEUawVHxNwQgPpiypGHOxo2mNZsOqTak4fFY= +go.uber.org/zap v1.23.0/go.mod h1:D+nX8jyLsMHMYrln8A0rJjFt/T/9/bGgIhAqxv5URuY= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +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-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= +golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 h1:LfspQV/FYTatPTr/3HzIcmiUFH7PGP+OQ6mgDYo3yuQ= +golang.org/x/exp v0.0.0-20240222234643-814bf88cf225/go.mod h1:CxmFvTBINI24O/j8iY7H1xHzx2i4OsyguNBmN/uPtqc= +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/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= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +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.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8= +golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +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-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/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-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/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-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= +golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/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-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +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-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/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-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/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-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190529164535-6a60838ec259/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/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-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220829200755-d48e67d00261/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/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-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-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/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-20190816200558-6889da9d5479/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-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= +golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +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-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-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +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-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-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +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= +golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= +golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= +golang.org/x/tools v0.18.0 h1:k8NLag8AGHnn+PHbl7g43CtqZAwG60vZkLqgyZgIHgQ= +golang.org/x/tools v0.18.0/go.mod h1:GL7B4CwcLLeo59yx/9UWWuNOW1n3VZ4f5axWfML7Lcg= +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/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= +google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= +google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= +google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= +google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= +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/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20190927181202-20e1ac93f88c/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= +google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +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-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +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.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= +google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= +google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +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.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= +google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +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-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +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.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.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/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-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= +rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= diff --git a/pkg/logs/client/tcp/connection_manager_test.go b/pkg/logs/client/tcp/connection_manager_test.go index 2eb8856161b207..b8eb4dd1ef37bc 100644 --- a/pkg/logs/client/tcp/connection_manager_test.go +++ b/pkg/logs/client/tcp/connection_manager_test.go @@ -16,9 +16,9 @@ import ( "github.com/DataDog/datadog-agent/comp/logs/agent/config" "github.com/DataDog/datadog-agent/pkg/logs/client" "github.com/DataDog/datadog-agent/pkg/logs/client/mock" - "github.com/DataDog/datadog-agent/pkg/logs/internal/util/testutils" "github.com/DataDog/datadog-agent/pkg/logs/sources" "github.com/DataDog/datadog-agent/pkg/logs/status/statusinterface" + "github.com/DataDog/datadog-agent/pkg/logs/util/testutils" "github.com/DataDog/datadog-agent/pkg/util/pointer" ) diff --git a/pkg/logs/diagnostic/go.mod b/pkg/logs/diagnostic/go.mod new file mode 100644 index 00000000000000..d093e311307339 --- /dev/null +++ b/pkg/logs/diagnostic/go.mod @@ -0,0 +1,101 @@ +module github.com/DataDog/datadog-agent/pkg/logs/diagnostic + +go 1.21.7 + +replace ( + github.com/DataDog/datadog-agent/comp/core/hostname/hostnameinterface => ../../../comp/core/hostname/hostnameinterface + github.com/DataDog/datadog-agent/comp/core/secrets => ../../../comp/core/secrets + github.com/DataDog/datadog-agent/comp/logs/agent/config => ../../../comp/logs/agent/config + github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../collector/check/defaults + github.com/DataDog/datadog-agent/pkg/config/env => ../../config/env + github.com/DataDog/datadog-agent/pkg/config/model => ../../config/model + github.com/DataDog/datadog-agent/pkg/config/setup => ../../config/setup + github.com/DataDog/datadog-agent/pkg/config/utils => ../../config/utils + github.com/DataDog/datadog-agent/pkg/logs/message => ../message + github.com/DataDog/datadog-agent/pkg/logs/sources => ../sources + github.com/DataDog/datadog-agent/pkg/logs/status/statusinterface => ../status/statusinterface + github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../status/utils + github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../util/testutils + github.com/DataDog/datadog-agent/pkg/util/executable => ../../util/executable + github.com/DataDog/datadog-agent/pkg/util/filesystem => ../../util/filesystem + github.com/DataDog/datadog-agent/pkg/util/fxutil => ../../util/fxutil + github.com/DataDog/datadog-agent/pkg/util/hostname/validate => ../../util/hostname/validate + github.com/DataDog/datadog-agent/pkg/util/log => ../../util/log + github.com/DataDog/datadog-agent/pkg/util/optional => ../../util/optional + github.com/DataDog/datadog-agent/pkg/util/pointer => ../../util/pointer + github.com/DataDog/datadog-agent/pkg/util/scrubber => ../../util/scrubber + github.com/DataDog/datadog-agent/pkg/util/statstracker => ../../util/statstracker + github.com/DataDog/datadog-agent/pkg/util/system => ../../util/system + github.com/DataDog/datadog-agent/pkg/util/system/socket => ../../util/system/socket + github.com/DataDog/datadog-agent/pkg/util/winutil => ../../util/winutil + github.com/DataDog/datadog-agent/pkg/version => ../../version +) + +require ( + github.com/DataDog/datadog-agent/comp/core/hostname/hostnameinterface v0.52.0-rc.3 + github.com/DataDog/datadog-agent/comp/logs/agent/config v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/logs/message v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/logs/sources v0.52.0-rc.3 + github.com/stretchr/testify v1.8.4 +) + +require ( + github.com/DataDog/datadog-agent/comp/core/secrets v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/collector/check/defaults v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/config/env v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/config/model v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/config/setup v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/config/utils v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/logs/status/utils v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/executable v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/filesystem v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/fxutil v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/hostname/validate v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/log v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/optional v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/pointer v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/scrubber v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/statstracker v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/system v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/system/socket v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/winutil v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/version v0.52.0-rc.3 // indirect + github.com/DataDog/viper v1.12.0 // indirect + github.com/Microsoft/go-winio v0.6.1 // indirect + github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/fsnotify/fsnotify v1.7.0 // indirect + github.com/go-ole/go-ole v1.2.6 // indirect + github.com/hashicorp/hcl v1.0.0 // indirect + github.com/hectane/go-acl v0.0.0-20190604041725-da78bae5fc95 // indirect + github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 // indirect + github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect + github.com/magiconair/properties v1.8.1 // indirect + github.com/mitchellh/mapstructure v1.1.2 // indirect + github.com/pelletier/go-toml v1.2.0 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect + github.com/shirou/gopsutil/v3 v3.23.12 // indirect + github.com/shoenig/go-m1cpu v0.1.6 // indirect + github.com/spf13/afero v1.1.2 // indirect + github.com/spf13/cast v1.5.1 // indirect + github.com/spf13/cobra v1.7.0 // indirect + github.com/spf13/jwalterweatherman v1.0.0 // indirect + github.com/spf13/pflag v1.0.5 // indirect + github.com/tklauser/go-sysconf v0.3.12 // indirect + github.com/tklauser/numcpus v0.6.1 // indirect + github.com/yusufpapurcu/wmi v1.2.3 // indirect + go.uber.org/atomic v1.11.0 // indirect + go.uber.org/dig v1.17.0 // indirect + go.uber.org/fx v1.18.2 // indirect + go.uber.org/multierr v1.6.0 // indirect + go.uber.org/zap v1.23.0 // indirect + golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect + golang.org/x/mod v0.15.0 // indirect + golang.org/x/sys v0.17.0 // indirect + golang.org/x/text v0.9.0 // indirect + golang.org/x/tools v0.18.0 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect +) diff --git a/pkg/logs/diagnostic/go.sum b/pkg/logs/diagnostic/go.sum new file mode 100644 index 00000000000000..f1b291aecf0014 --- /dev/null +++ b/pkg/logs/diagnostic/go.sum @@ -0,0 +1,369 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/DataDog/datadog-agent/comp/core/config v0.52.0-rc.3 h1:N7cJMtcW9cmybQqwv421dXcfJEBtfRPacF9nBN3K0Iw= +github.com/DataDog/datadog-agent/comp/core/config v0.52.0-rc.3/go.mod h1:3s80Ae8qaPOWpwM75dnM1M9YWkr6+ckA9TKU2+/sa7Q= +github.com/DataDog/datadog-agent/comp/core/flare/types v0.52.0-rc.3 h1:pIGSbylKbhD1s06yGED9t9eFYKj2myu46k2OOIUCXAs= +github.com/DataDog/datadog-agent/comp/core/flare/types v0.52.0-rc.3/go.mod h1:h0h6cm8eqb1JnuqHMCdTir+c4IUlOUnOy6xrmvhQXOY= +github.com/DataDog/datadog-agent/comp/core/telemetry v0.52.0-rc.3 h1:+x4UVcnF4bSpSrWlu0e8LhmgcTlN7jH1XBodIist3wo= +github.com/DataDog/datadog-agent/comp/core/telemetry v0.52.0-rc.3/go.mod h1:d8HdAOKvYvCuXbY2ccGbhcJlABgg9qJkpx0WESJl0dE= +github.com/DataDog/datadog-agent/pkg/telemetry v0.52.0-rc.3 h1:WO0MM7nHQdT3LYc2VQbBUut0aGz0L92CF27vWfRbetE= +github.com/DataDog/datadog-agent/pkg/telemetry v0.52.0-rc.3/go.mod h1:zAr+W+gzODxPhlq9qVG1UwvItHRk+n/9XHXJ5Myeyp8= +github.com/DataDog/datadog-agent/pkg/util/testutil v0.52.0-rc.3 h1:C9hoL8b5XPv4PSToaUo3BmzS3HrcDti4XSXd3BJf4fU= +github.com/DataDog/datadog-agent/pkg/util/testutil v0.52.0-rc.3/go.mod h1:7/Dk+MI/JNkrYUYtR/LQG750a99T1/nCVNFjc7rLq4g= +github.com/DataDog/viper v1.12.0 h1:FufyZpZPxyszafSV5B8Q8it75IhhuJwH0T7QpT6HnD0= +github.com/DataDog/viper v1.12.0/go.mod h1:wDdUVJ2SHaMaPrCZrlRCObwkubsX8j5sme3LaR/SGTc= +github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= +github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +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= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/antihax/optional v0.0.0-20180407024304-ca021399b1a6/go.mod h1:V8iCPQYkqmusNa815XgQio277wI47sdRh1dUOLdyC6Q= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +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/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= +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +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.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= +github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575 h1:kHaBemcxl8o/pQ5VM1c8PVE1PubbNx3mjUr09OqWGCs= +github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575/go.mod h1:9d6lWj8KzO/fd/NrVaLscBKmPigpZpn5YawRPw+e3Yo= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/bbolt v1.3.3/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +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/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= +github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= +github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY= +github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= +github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +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.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +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.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-middleware v1.2.0/go.mod h1:mJzapYve32yjrKlk9GbyCZHuPgZsrbyIbyKhSzOpg6s= +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.13.0/go.mod h1:8XEsbTttt/W+VvjtQhLACqCisSPWTxCZ7sBRjU6iH9c= +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/hectane/go-acl v0.0.0-20190604041725-da78bae5fc95 h1:S4qyfL2sEm5Budr4KVMyEniCy+PbS55651I/a+Kn/NQ= +github.com/hectane/go-acl v0.0.0-20190604041725-da78bae5fc95/go.mod h1:QiyDdbZLaJ/mZP4Zwc9g2QsfaEA4o7XvvgZegSci5/E= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 h1:iQTw/8FWTuc7uiaSepXwyf3o52HaUYcV+Tu66S3F5GA= +github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +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/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= +github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= +github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4= +github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= +github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= +github.com/pkg/errors v0.8.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/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw= +github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +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.4.1/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= +github.com/prometheus/client_golang v1.17.0 h1:rl2sfwZMtSthVU752MqfjQozy7blglC+1SOtjMAMh+Q= +github.com/prometheus/client_golang v1.17.0/go.mod h1:VeL+gMmOAxkS2IqfCq0ZmHSL+LjWfWDUmp1mBz9JgUY= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= +github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= +github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= +github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY= +github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= +github.com/prometheus/procfs v0.11.1 h1:xRC8Iq1yyca5ypa9n1EZnWZkt7dwcoRPQwX/5gwaUuI= +github.com/prometheus/procfs v0.11.1/go.mod h1:eesXgaPo1q7lBpVMoMy0ZOFTth9hBn4W/y0/p/ScXhY= +github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/shirou/gopsutil/v3 v3.23.12 h1:z90NtUkp3bMtmICZKpC4+WaknU1eXtp5vtbQ11DgpE4= +github.com/shirou/gopsutil/v3 v3.23.12/go.mod h1:1FrWgea594Jp7qmjHUUPlJDTPgcsb9mGnXDxavtikzM= +github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM= +github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ= +github.com/shoenig/test v0.6.4 h1:kVTaSd7WLz5WZ2IaoM0RSzRsUD+m8wRR+5qvntpn4LU= +github.com/shoenig/test v0.6.4/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spf13/afero v1.1.2 h1:m8/z1t7/fwjysjQRYbP0RD+bUIF/8tJwPdEZsI83ACI= +github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA= +github.com/spf13/cast v1.5.1/go.mod h1:b9PdjNptOpzXr7Rq1q9gJML/2cdGQAo69NKzQ10KN48= +github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I= +github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0= +github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk= +github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +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/spf13/viper v1.6.2/go.mod h1:t3iDnF5Jlj76alVNuyFBk5oUMCvsrkbvZK0WQdfDi5k= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +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.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= +github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= +github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= +github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= +github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= +github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tmc/grpc-websocket-proxy v0.0.0-20200122045848-3419fae592fc/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= +github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= +github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/yusufpapurcu/wmi v1.2.3 h1:E1ctvB7uKFMOJw3fdOW32DwGE9I7t++CRUEMKvFoFiw= +github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.opentelemetry.io/otel v1.20.0 h1:vsb/ggIY+hUjD/zCAQHpzTmndPqv/ml2ArbsbfBYTAc= +go.opentelemetry.io/otel v1.20.0/go.mod h1:oUIGj3D77RwJdM6PPZImDpSZGDvkD9fhesHny69JFrs= +go.opentelemetry.io/otel/exporters/prometheus v0.42.0 h1:jwV9iQdvp38fxXi8ZC+lNpxjK16MRcZlpDYvbuO1FiA= +go.opentelemetry.io/otel/exporters/prometheus v0.42.0/go.mod h1:f3bYiqNqhoPxkvI2LrXqQVC546K7BuRDL/kKuxkujhA= +go.opentelemetry.io/otel/metric v1.20.0 h1:ZlrO8Hu9+GAhnepmRGhSU7/VkpjrNowxRN9GyKR4wzA= +go.opentelemetry.io/otel/metric v1.20.0/go.mod h1:90DRw3nfK4D7Sm/75yQ00gTJxtkBxX+wu6YaNymbpVM= +go.opentelemetry.io/otel/sdk v1.20.0 h1:5Jf6imeFZlZtKv9Qbo6qt2ZkmWtdWx/wzcCbNUlAWGM= +go.opentelemetry.io/otel/sdk v1.20.0/go.mod h1:rmkSx1cZCm/tn16iWDn1GQbLtsW/LvsdEEFzCSRM6V0= +go.opentelemetry.io/otel/sdk/metric v1.20.0 h1:5eD40l/H2CqdKmbSV7iht2KMK0faAIL2pVYzJOWobGk= +go.opentelemetry.io/otel/sdk/metric v1.20.0/go.mod h1:AGvpC+YF/jblITiafMTYgvRBUiwi9hZf0EYE2E5XlS8= +go.opentelemetry.io/otel/trace v1.20.0 h1:+yxVAPZPbQhbC3OfAkeIVTky6iTFpcr4SiY9om7mXSQ= +go.opentelemetry.io/otel/trace v1.20.0/go.mod h1:HJSK7F/hA5RlzpZ0zKDCHCDHm556LCDtKaAo6JmBFUU= +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.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= +go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= +go.uber.org/dig v1.17.0 h1:5Chju+tUvcC+N7N6EV08BJz41UZuO3BmHcN4A287ZLI= +go.uber.org/dig v1.17.0/go.mod h1:rTxpf7l5I0eBTlE6/9RL+lDybC7WFwY2QH55ZSjy1mU= +go.uber.org/fx v1.18.2 h1:bUNI6oShr+OVFQeU8cDNbnN7VFsu+SsjHzUF51V/GAU= +go.uber.org/fx v1.18.2/go.mod h1:g0V1KMQ66zIRk8bLu3Ea5Jt2w/cHlOIp4wdRsgh0JaY= +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.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= +go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.14.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= +go.uber.org/zap v1.23.0 h1:OjGQ5KQDEUawVHxNwQgPpiypGHOxo2mNZsOqTak4fFY= +go.uber.org/zap v1.23.0/go.mod h1:D+nX8jyLsMHMYrln8A0rJjFt/T/9/bGgIhAqxv5URuY= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 h1:LfspQV/FYTatPTr/3HzIcmiUFH7PGP+OQ6mgDYo3yuQ= +golang.org/x/exp v0.0.0-20240222234643-814bf88cf225/go.mod h1:CxmFvTBINI24O/j8iY7H1xHzx2i4OsyguNBmN/uPtqc= +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.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8= +golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +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-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181220203305-927f97764cc3/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-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191002035440-2ec189313ef0/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/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-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.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/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-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190529164535-6a60838ec259/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20220829200755-d48e67d00261/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/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-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-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +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= +golang.org/x/tools v0.18.0 h1:k8NLag8AGHnn+PHbl7g43CtqZAwG60vZkLqgyZgIHgQ= +golang.org/x/tools v0.18.0/go.mod h1:GL7B4CwcLLeo59yx/9UWWuNOW1n3VZ4f5axWfML7Lcg= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/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-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190927181202-20e1ac93f88c/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= +google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +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-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +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.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.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/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= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= diff --git a/pkg/logs/internal/decoder/auto_multiline_handler.go b/pkg/logs/internal/decoder/auto_multiline_handler.go index 9f4f7c85385b04..894561f12289a4 100644 --- a/pkg/logs/internal/decoder/auto_multiline_handler.go +++ b/pkg/logs/internal/decoder/auto_multiline_handler.go @@ -15,9 +15,9 @@ import ( "github.com/benbjohnson/clock" - "github.com/DataDog/datadog-agent/pkg/logs/internal/status" "github.com/DataDog/datadog-agent/pkg/logs/message" "github.com/DataDog/datadog-agent/pkg/logs/sources" + status "github.com/DataDog/datadog-agent/pkg/logs/status/utils" "github.com/DataDog/datadog-agent/pkg/telemetry" "github.com/DataDog/datadog-agent/pkg/util/log" ) diff --git a/pkg/logs/internal/decoder/decoder.go b/pkg/logs/internal/decoder/decoder.go index 4c2dd7b3628e51..a1d748f7055908 100644 --- a/pkg/logs/internal/decoder/decoder.go +++ b/pkg/logs/internal/decoder/decoder.go @@ -15,9 +15,9 @@ import ( pkgConfig "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/logs/internal/framer" "github.com/DataDog/datadog-agent/pkg/logs/internal/parsers" - "github.com/DataDog/datadog-agent/pkg/logs/internal/status" "github.com/DataDog/datadog-agent/pkg/logs/message" "github.com/DataDog/datadog-agent/pkg/logs/sources" + status "github.com/DataDog/datadog-agent/pkg/logs/status/utils" "github.com/DataDog/datadog-agent/pkg/util/log" ) diff --git a/pkg/logs/internal/decoder/decoder_test.go b/pkg/logs/internal/decoder/decoder_test.go index d63e75b673ab5e..1a0a9d3522d56a 100644 --- a/pkg/logs/internal/decoder/decoder_test.go +++ b/pkg/logs/internal/decoder/decoder_test.go @@ -17,9 +17,9 @@ import ( "github.com/DataDog/datadog-agent/pkg/logs/internal/parsers/encodedtext" "github.com/DataDog/datadog-agent/pkg/logs/internal/parsers/kubernetes" "github.com/DataDog/datadog-agent/pkg/logs/internal/parsers/noop" - "github.com/DataDog/datadog-agent/pkg/logs/internal/status" "github.com/DataDog/datadog-agent/pkg/logs/message" "github.com/DataDog/datadog-agent/pkg/logs/sources" + status "github.com/DataDog/datadog-agent/pkg/logs/status/utils" "github.com/stretchr/testify/assert" ) diff --git a/pkg/logs/internal/decoder/file_decoder.go b/pkg/logs/internal/decoder/file_decoder.go index 979d25fee9ea7c..77488701566bbb 100644 --- a/pkg/logs/internal/decoder/file_decoder.go +++ b/pkg/logs/internal/decoder/file_decoder.go @@ -16,8 +16,8 @@ import ( "github.com/DataDog/datadog-agent/pkg/logs/internal/parsers/encodedtext" "github.com/DataDog/datadog-agent/pkg/logs/internal/parsers/kubernetes" "github.com/DataDog/datadog-agent/pkg/logs/internal/parsers/noop" - "github.com/DataDog/datadog-agent/pkg/logs/internal/status" "github.com/DataDog/datadog-agent/pkg/logs/sources" + status "github.com/DataDog/datadog-agent/pkg/logs/status/utils" ) // NewDecoderFromSource creates a new decoder from a log source diff --git a/pkg/logs/internal/decoder/line_handler_benchmark_test.go b/pkg/logs/internal/decoder/line_handler_benchmark_test.go index d5a57b621e8a7f..63d8ccf934d1c4 100644 --- a/pkg/logs/internal/decoder/line_handler_benchmark_test.go +++ b/pkg/logs/internal/decoder/line_handler_benchmark_test.go @@ -13,9 +13,9 @@ import ( "github.com/DataDog/datadog-agent/comp/logs/agent/config" coreConfig "github.com/DataDog/datadog-agent/pkg/config" - "github.com/DataDog/datadog-agent/pkg/logs/internal/status" "github.com/DataDog/datadog-agent/pkg/logs/message" "github.com/DataDog/datadog-agent/pkg/logs/sources" + status "github.com/DataDog/datadog-agent/pkg/logs/status/utils" ) func benchmarkSingleLineHandler(b *testing.B, logs int) { diff --git a/pkg/logs/internal/decoder/line_handler_test.go b/pkg/logs/internal/decoder/line_handler_test.go index 716d3f6fb658be..fea5e6676a5bd5 100644 --- a/pkg/logs/internal/decoder/line_handler_test.go +++ b/pkg/logs/internal/decoder/line_handler_test.go @@ -15,9 +15,9 @@ import ( "github.com/stretchr/testify/assert" "github.com/DataDog/datadog-agent/comp/logs/agent/config" - "github.com/DataDog/datadog-agent/pkg/logs/internal/status" "github.com/DataDog/datadog-agent/pkg/logs/message" "github.com/DataDog/datadog-agent/pkg/logs/sources" + status "github.com/DataDog/datadog-agent/pkg/logs/status/utils" ) // All valid whitespace characters diff --git a/pkg/logs/internal/decoder/multiline_handler.go b/pkg/logs/internal/decoder/multiline_handler.go index f4ad4881947b14..394073d24f8996 100644 --- a/pkg/logs/internal/decoder/multiline_handler.go +++ b/pkg/logs/internal/decoder/multiline_handler.go @@ -10,8 +10,8 @@ import ( "regexp" "time" - "github.com/DataDog/datadog-agent/pkg/logs/internal/status" "github.com/DataDog/datadog-agent/pkg/logs/message" + status "github.com/DataDog/datadog-agent/pkg/logs/status/utils" "github.com/DataDog/datadog-agent/pkg/telemetry" ) diff --git a/pkg/logs/internal/util/test_utils.go b/pkg/logs/internal/util/test_utils.go index 94fe4f0d1768bd..85d9e77b123430 100644 --- a/pkg/logs/internal/util/test_utils.go +++ b/pkg/logs/internal/util/test_utils.go @@ -7,7 +7,7 @@ package util -import "github.com/DataDog/datadog-agent/pkg/logs/internal/util/testutils" +import "github.com/DataDog/datadog-agent/pkg/logs/util/testutils" // CreateSources creates sources // TODO: This alias will be removed once logs agent module refactor is complete. diff --git a/pkg/logs/launchers/container/tailerfactory/file.go b/pkg/logs/launchers/container/tailerfactory/file.go index 7957154d0dccb1..e8e7c13c5b073a 100644 --- a/pkg/logs/launchers/container/tailerfactory/file.go +++ b/pkg/logs/launchers/container/tailerfactory/file.go @@ -20,10 +20,10 @@ import ( "github.com/DataDog/datadog-agent/comp/core/workloadmeta" "github.com/DataDog/datadog-agent/comp/logs/agent/config" coreConfig "github.com/DataDog/datadog-agent/pkg/config" - "github.com/DataDog/datadog-agent/pkg/logs/internal/status" "github.com/DataDog/datadog-agent/pkg/logs/internal/util/containersorpods" "github.com/DataDog/datadog-agent/pkg/logs/launchers/container/tailerfactory/tailers" "github.com/DataDog/datadog-agent/pkg/logs/sources" + status "github.com/DataDog/datadog-agent/pkg/logs/status/utils" dockerutilPkg "github.com/DataDog/datadog-agent/pkg/util/docker" "github.com/DataDog/datadog-agent/pkg/util/filesystem" "github.com/DataDog/datadog-agent/pkg/util/log" diff --git a/pkg/logs/launchers/file/launcher.go b/pkg/logs/launchers/file/launcher.go index ebbd2fb25a3fba..f7cfe69ac5d814 100644 --- a/pkg/logs/launchers/file/launcher.go +++ b/pkg/logs/launchers/file/launcher.go @@ -17,12 +17,12 @@ import ( flareController "github.com/DataDog/datadog-agent/comp/logs/agent/flare" "github.com/DataDog/datadog-agent/pkg/logs/auditor" "github.com/DataDog/datadog-agent/pkg/logs/internal/decoder" - "github.com/DataDog/datadog-agent/pkg/logs/internal/status" "github.com/DataDog/datadog-agent/pkg/logs/launchers" fileprovider "github.com/DataDog/datadog-agent/pkg/logs/launchers/file/provider" "github.com/DataDog/datadog-agent/pkg/logs/message" "github.com/DataDog/datadog-agent/pkg/logs/pipeline" "github.com/DataDog/datadog-agent/pkg/logs/sources" + status "github.com/DataDog/datadog-agent/pkg/logs/status/utils" "github.com/DataDog/datadog-agent/pkg/logs/tailers" tailer "github.com/DataDog/datadog-agent/pkg/logs/tailers/file" "github.com/DataDog/datadog-agent/pkg/util/startstop" diff --git a/pkg/logs/message/go.mod b/pkg/logs/message/go.mod new file mode 100644 index 00000000000000..c729953176900c --- /dev/null +++ b/pkg/logs/message/go.mod @@ -0,0 +1,87 @@ +module github.com/DataDog/datadog-agent/pkg/logs/message + +go 1.21.7 + +replace ( + github.com/DataDog/datadog-agent/comp/core/secrets => ../../../comp/core/secrets + github.com/DataDog/datadog-agent/comp/logs/agent/config => ../../../comp/logs/agent/config + github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../collector/check/defaults + github.com/DataDog/datadog-agent/pkg/config/env => ../../config/env + github.com/DataDog/datadog-agent/pkg/config/model => ../../config/model + github.com/DataDog/datadog-agent/pkg/config/setup => ../../config/setup + github.com/DataDog/datadog-agent/pkg/config/utils => ../../config/utils + github.com/DataDog/datadog-agent/pkg/logs/sources => ../sources + github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../status/utils + github.com/DataDog/datadog-agent/pkg/util/executable => ../../util/executable + github.com/DataDog/datadog-agent/pkg/util/filesystem => ../../util/filesystem + github.com/DataDog/datadog-agent/pkg/util/hostname/validate => ../../util/hostname/validate + github.com/DataDog/datadog-agent/pkg/util/log => ../../util/log + github.com/DataDog/datadog-agent/pkg/util/optional => ../../util/optional + github.com/DataDog/datadog-agent/pkg/util/pointer => ../../util/pointer + github.com/DataDog/datadog-agent/pkg/util/scrubber => ../../util/scrubber + github.com/DataDog/datadog-agent/pkg/util/statstracker => ../../util/statstracker + github.com/DataDog/datadog-agent/pkg/util/system => ../../util/system + github.com/DataDog/datadog-agent/pkg/util/system/socket => ../../util/system/socket + github.com/DataDog/datadog-agent/pkg/util/winutil => ../../util/winutil + github.com/DataDog/datadog-agent/pkg/version => ../../version +) + +require ( + github.com/DataDog/datadog-agent/comp/logs/agent/config v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/logs/sources v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/util/log v0.52.0-rc.3 + github.com/stretchr/testify v1.8.4 +) + +require ( + github.com/DataDog/datadog-agent/comp/core/secrets v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/collector/check/defaults v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/config/env v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/config/model v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/config/setup v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/config/utils v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/logs/status/utils v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/executable v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/filesystem v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/hostname/validate v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/optional v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/pointer v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/scrubber v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/statstracker v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/system v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/system/socket v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/winutil v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/version v0.52.0-rc.3 // indirect + github.com/DataDog/viper v1.12.0 // indirect + github.com/Microsoft/go-winio v0.6.1 // indirect + github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/fsnotify/fsnotify v1.7.0 // indirect + github.com/go-ole/go-ole v1.2.6 // indirect + github.com/hashicorp/hcl v1.0.0 // indirect + github.com/hectane/go-acl v0.0.0-20190604041725-da78bae5fc95 // indirect + github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 // indirect + github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect + github.com/magiconair/properties v1.8.1 // indirect + github.com/mitchellh/mapstructure v1.1.2 // indirect + github.com/pelletier/go-toml v1.2.0 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect + github.com/shirou/gopsutil/v3 v3.23.12 // indirect + github.com/shoenig/go-m1cpu v0.1.6 // indirect + github.com/spf13/afero v1.1.2 // indirect + github.com/spf13/cast v1.5.1 // indirect + github.com/spf13/jwalterweatherman v1.0.0 // indirect + github.com/spf13/pflag v1.0.5 // indirect + github.com/tklauser/go-sysconf v0.3.12 // indirect + github.com/tklauser/numcpus v0.6.1 // indirect + github.com/yusufpapurcu/wmi v1.2.3 // indirect + go.uber.org/atomic v1.11.0 // indirect + golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect + golang.org/x/mod v0.15.0 // indirect + golang.org/x/sys v0.17.0 // indirect + golang.org/x/text v0.9.0 // indirect + golang.org/x/tools v0.18.0 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect +) diff --git a/pkg/logs/message/go.sum b/pkg/logs/message/go.sum new file mode 100644 index 00000000000000..65c98677397f8d --- /dev/null +++ b/pkg/logs/message/go.sum @@ -0,0 +1,363 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/DataDog/datadog-agent/comp/core/config v0.52.0-rc.3 h1:N7cJMtcW9cmybQqwv421dXcfJEBtfRPacF9nBN3K0Iw= +github.com/DataDog/datadog-agent/comp/core/config v0.52.0-rc.3/go.mod h1:3s80Ae8qaPOWpwM75dnM1M9YWkr6+ckA9TKU2+/sa7Q= +github.com/DataDog/datadog-agent/comp/core/flare/types v0.52.0-rc.3 h1:pIGSbylKbhD1s06yGED9t9eFYKj2myu46k2OOIUCXAs= +github.com/DataDog/datadog-agent/comp/core/flare/types v0.52.0-rc.3/go.mod h1:h0h6cm8eqb1JnuqHMCdTir+c4IUlOUnOy6xrmvhQXOY= +github.com/DataDog/datadog-agent/comp/core/telemetry v0.52.0-rc.3 h1:+x4UVcnF4bSpSrWlu0e8LhmgcTlN7jH1XBodIist3wo= +github.com/DataDog/datadog-agent/comp/core/telemetry v0.52.0-rc.3/go.mod h1:d8HdAOKvYvCuXbY2ccGbhcJlABgg9qJkpx0WESJl0dE= +github.com/DataDog/datadog-agent/pkg/telemetry v0.52.0-rc.3 h1:WO0MM7nHQdT3LYc2VQbBUut0aGz0L92CF27vWfRbetE= +github.com/DataDog/datadog-agent/pkg/telemetry v0.52.0-rc.3/go.mod h1:zAr+W+gzODxPhlq9qVG1UwvItHRk+n/9XHXJ5Myeyp8= +github.com/DataDog/datadog-agent/pkg/util/fxutil v0.52.0-rc.3 h1:nX/9kjs+9Rb/fJVsPKWiw1pvVS8fHG5pum2C8GtheWI= +github.com/DataDog/datadog-agent/pkg/util/fxutil v0.52.0-rc.3/go.mod h1:+ViwDZ54Ox34yYqgYozTFx7xjXG/+IhhudfE1Nx/9+A= +github.com/DataDog/datadog-agent/pkg/util/testutil v0.52.0-rc.3 h1:C9hoL8b5XPv4PSToaUo3BmzS3HrcDti4XSXd3BJf4fU= +github.com/DataDog/datadog-agent/pkg/util/testutil v0.52.0-rc.3/go.mod h1:7/Dk+MI/JNkrYUYtR/LQG750a99T1/nCVNFjc7rLq4g= +github.com/DataDog/viper v1.12.0 h1:FufyZpZPxyszafSV5B8Q8it75IhhuJwH0T7QpT6HnD0= +github.com/DataDog/viper v1.12.0/go.mod h1:wDdUVJ2SHaMaPrCZrlRCObwkubsX8j5sme3LaR/SGTc= +github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= +github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +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= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/antihax/optional v0.0.0-20180407024304-ca021399b1a6/go.mod h1:V8iCPQYkqmusNa815XgQio277wI47sdRh1dUOLdyC6Q= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +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= +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +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.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= +github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575 h1:kHaBemcxl8o/pQ5VM1c8PVE1PubbNx3mjUr09OqWGCs= +github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575/go.mod h1:9d6lWj8KzO/fd/NrVaLscBKmPigpZpn5YawRPw+e3Yo= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/bbolt v1.3.3/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +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/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= +github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= +github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY= +github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= +github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +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.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +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.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-middleware v1.2.0/go.mod h1:mJzapYve32yjrKlk9GbyCZHuPgZsrbyIbyKhSzOpg6s= +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.13.0/go.mod h1:8XEsbTttt/W+VvjtQhLACqCisSPWTxCZ7sBRjU6iH9c= +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/hectane/go-acl v0.0.0-20190604041725-da78bae5fc95 h1:S4qyfL2sEm5Budr4KVMyEniCy+PbS55651I/a+Kn/NQ= +github.com/hectane/go-acl v0.0.0-20190604041725-da78bae5fc95/go.mod h1:QiyDdbZLaJ/mZP4Zwc9g2QsfaEA4o7XvvgZegSci5/E= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 h1:iQTw/8FWTuc7uiaSepXwyf3o52HaUYcV+Tu66S3F5GA= +github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +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/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= +github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= +github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4= +github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= +github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.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/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw= +github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +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.4.1/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= +github.com/prometheus/client_golang v1.17.0 h1:rl2sfwZMtSthVU752MqfjQozy7blglC+1SOtjMAMh+Q= +github.com/prometheus/client_golang v1.17.0/go.mod h1:VeL+gMmOAxkS2IqfCq0ZmHSL+LjWfWDUmp1mBz9JgUY= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= +github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= +github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= +github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY= +github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= +github.com/prometheus/procfs v0.11.1 h1:xRC8Iq1yyca5ypa9n1EZnWZkt7dwcoRPQwX/5gwaUuI= +github.com/prometheus/procfs v0.11.1/go.mod h1:eesXgaPo1q7lBpVMoMy0ZOFTth9hBn4W/y0/p/ScXhY= +github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/shirou/gopsutil/v3 v3.23.12 h1:z90NtUkp3bMtmICZKpC4+WaknU1eXtp5vtbQ11DgpE4= +github.com/shirou/gopsutil/v3 v3.23.12/go.mod h1:1FrWgea594Jp7qmjHUUPlJDTPgcsb9mGnXDxavtikzM= +github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM= +github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ= +github.com/shoenig/test v0.6.4 h1:kVTaSd7WLz5WZ2IaoM0RSzRsUD+m8wRR+5qvntpn4LU= +github.com/shoenig/test v0.6.4/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spf13/afero v1.1.2 h1:m8/z1t7/fwjysjQRYbP0RD+bUIF/8tJwPdEZsI83ACI= +github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA= +github.com/spf13/cast v1.5.1/go.mod h1:b9PdjNptOpzXr7Rq1q9gJML/2cdGQAo69NKzQ10KN48= +github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I= +github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0= +github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk= +github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +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/spf13/viper v1.6.2/go.mod h1:t3iDnF5Jlj76alVNuyFBk5oUMCvsrkbvZK0WQdfDi5k= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +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.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= +github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= +github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= +github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= +github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= +github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tmc/grpc-websocket-proxy v0.0.0-20200122045848-3419fae592fc/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= +github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= +github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/yusufpapurcu/wmi v1.2.3 h1:E1ctvB7uKFMOJw3fdOW32DwGE9I7t++CRUEMKvFoFiw= +github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.opentelemetry.io/otel v1.20.0 h1:vsb/ggIY+hUjD/zCAQHpzTmndPqv/ml2ArbsbfBYTAc= +go.opentelemetry.io/otel v1.20.0/go.mod h1:oUIGj3D77RwJdM6PPZImDpSZGDvkD9fhesHny69JFrs= +go.opentelemetry.io/otel/exporters/prometheus v0.42.0 h1:jwV9iQdvp38fxXi8ZC+lNpxjK16MRcZlpDYvbuO1FiA= +go.opentelemetry.io/otel/exporters/prometheus v0.42.0/go.mod h1:f3bYiqNqhoPxkvI2LrXqQVC546K7BuRDL/kKuxkujhA= +go.opentelemetry.io/otel/metric v1.20.0 h1:ZlrO8Hu9+GAhnepmRGhSU7/VkpjrNowxRN9GyKR4wzA= +go.opentelemetry.io/otel/metric v1.20.0/go.mod h1:90DRw3nfK4D7Sm/75yQ00gTJxtkBxX+wu6YaNymbpVM= +go.opentelemetry.io/otel/sdk v1.20.0 h1:5Jf6imeFZlZtKv9Qbo6qt2ZkmWtdWx/wzcCbNUlAWGM= +go.opentelemetry.io/otel/sdk v1.20.0/go.mod h1:rmkSx1cZCm/tn16iWDn1GQbLtsW/LvsdEEFzCSRM6V0= +go.opentelemetry.io/otel/sdk/metric v1.20.0 h1:5eD40l/H2CqdKmbSV7iht2KMK0faAIL2pVYzJOWobGk= +go.opentelemetry.io/otel/sdk/metric v1.20.0/go.mod h1:AGvpC+YF/jblITiafMTYgvRBUiwi9hZf0EYE2E5XlS8= +go.opentelemetry.io/otel/trace v1.20.0 h1:+yxVAPZPbQhbC3OfAkeIVTky6iTFpcr4SiY9om7mXSQ= +go.opentelemetry.io/otel/trace v1.20.0/go.mod h1:HJSK7F/hA5RlzpZ0zKDCHCDHm556LCDtKaAo6JmBFUU= +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.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= +go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= +go.uber.org/dig v1.17.0 h1:5Chju+tUvcC+N7N6EV08BJz41UZuO3BmHcN4A287ZLI= +go.uber.org/dig v1.17.0/go.mod h1:rTxpf7l5I0eBTlE6/9RL+lDybC7WFwY2QH55ZSjy1mU= +go.uber.org/fx v1.18.2 h1:bUNI6oShr+OVFQeU8cDNbnN7VFsu+SsjHzUF51V/GAU= +go.uber.org/fx v1.18.2/go.mod h1:g0V1KMQ66zIRk8bLu3Ea5Jt2w/cHlOIp4wdRsgh0JaY= +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.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.14.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= +go.uber.org/zap v1.23.0 h1:OjGQ5KQDEUawVHxNwQgPpiypGHOxo2mNZsOqTak4fFY= +go.uber.org/zap v1.23.0/go.mod h1:D+nX8jyLsMHMYrln8A0rJjFt/T/9/bGgIhAqxv5URuY= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 h1:LfspQV/FYTatPTr/3HzIcmiUFH7PGP+OQ6mgDYo3yuQ= +golang.org/x/exp v0.0.0-20240222234643-814bf88cf225/go.mod h1:CxmFvTBINI24O/j8iY7H1xHzx2i4OsyguNBmN/uPtqc= +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.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8= +golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +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-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181220203305-927f97764cc3/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-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191002035440-2ec189313ef0/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/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-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.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/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-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190529164535-6a60838ec259/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20220829200755-d48e67d00261/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/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-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-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +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= +golang.org/x/tools v0.18.0 h1:k8NLag8AGHnn+PHbl7g43CtqZAwG60vZkLqgyZgIHgQ= +golang.org/x/tools v0.18.0/go.mod h1:GL7B4CwcLLeo59yx/9UWWuNOW1n3VZ4f5axWfML7Lcg= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/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-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190927181202-20e1ac93f88c/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= +google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +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-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +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.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.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/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= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= diff --git a/pkg/logs/metrics/go.mod b/pkg/logs/metrics/go.mod new file mode 100644 index 00000000000000..940cab46f850c3 --- /dev/null +++ b/pkg/logs/metrics/go.mod @@ -0,0 +1,48 @@ +module github.com/DataDog/datadog-agent/pkg/logs/metrics + +go 1.21.7 + +replace ( + github.com/DataDog/datadog-agent/comp/core/telemetry => ../../../comp/core/telemetry + github.com/DataDog/datadog-agent/pkg/telemetry => ../../telemetry + github.com/DataDog/datadog-agent/pkg/util/fxutil => ../../util/fxutil +) + +require ( + github.com/DataDog/datadog-agent/pkg/telemetry v0.52.0-rc.3 + github.com/stretchr/testify v1.8.4 +) + +require ( + github.com/DataDog/datadog-agent/comp/core/telemetry v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/fxutil v0.52.0-rc.3 // indirect + github.com/beorn7/perks v1.0.1 // indirect + github.com/cespare/xxhash/v2 v2.2.0 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/go-logr/logr v1.3.0 // indirect + github.com/go-logr/stdr v1.2.2 // indirect + github.com/golang/protobuf v1.5.3 // indirect + github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/prometheus/client_golang v1.17.0 // indirect + github.com/prometheus/client_model v0.5.0 // indirect + github.com/prometheus/common v0.44.0 // indirect + github.com/prometheus/procfs v0.11.1 // indirect + github.com/spf13/cobra v1.7.0 // indirect + github.com/spf13/pflag v1.0.5 // indirect + go.opentelemetry.io/otel v1.20.0 // indirect + go.opentelemetry.io/otel/exporters/prometheus v0.42.0 // indirect + go.opentelemetry.io/otel/metric v1.20.0 // indirect + go.opentelemetry.io/otel/sdk v1.20.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.20.0 // indirect + go.opentelemetry.io/otel/trace v1.20.0 // indirect + go.uber.org/atomic v1.7.0 // indirect + go.uber.org/dig v1.17.0 // indirect + go.uber.org/fx v1.18.2 // indirect + go.uber.org/multierr v1.6.0 // indirect + go.uber.org/zap v1.23.0 // indirect + golang.org/x/sys v0.14.0 // indirect + google.golang.org/protobuf v1.31.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect +) diff --git a/pkg/logs/metrics/go.sum b/pkg/logs/metrics/go.sum new file mode 100644 index 00000000000000..94bdb57601a655 --- /dev/null +++ b/pkg/logs/metrics/go.sum @@ -0,0 +1,90 @@ +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/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= +github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +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/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY= +github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= +github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= +github.com/pkg/errors v0.8.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/prometheus/client_golang v1.17.0 h1:rl2sfwZMtSthVU752MqfjQozy7blglC+1SOtjMAMh+Q= +github.com/prometheus/client_golang v1.17.0/go.mod h1:VeL+gMmOAxkS2IqfCq0ZmHSL+LjWfWDUmp1mBz9JgUY= +github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= +github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= +github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY= +github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY= +github.com/prometheus/procfs v0.11.1 h1:xRC8Iq1yyca5ypa9n1EZnWZkt7dwcoRPQwX/5gwaUuI= +github.com/prometheus/procfs v0.11.1/go.mod h1:eesXgaPo1q7lBpVMoMy0ZOFTth9hBn4W/y0/p/ScXhY= +github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= +github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I= +github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0= +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.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +go.opentelemetry.io/otel v1.20.0 h1:vsb/ggIY+hUjD/zCAQHpzTmndPqv/ml2ArbsbfBYTAc= +go.opentelemetry.io/otel v1.20.0/go.mod h1:oUIGj3D77RwJdM6PPZImDpSZGDvkD9fhesHny69JFrs= +go.opentelemetry.io/otel/exporters/prometheus v0.42.0 h1:jwV9iQdvp38fxXi8ZC+lNpxjK16MRcZlpDYvbuO1FiA= +go.opentelemetry.io/otel/exporters/prometheus v0.42.0/go.mod h1:f3bYiqNqhoPxkvI2LrXqQVC546K7BuRDL/kKuxkujhA= +go.opentelemetry.io/otel/metric v1.20.0 h1:ZlrO8Hu9+GAhnepmRGhSU7/VkpjrNowxRN9GyKR4wzA= +go.opentelemetry.io/otel/metric v1.20.0/go.mod h1:90DRw3nfK4D7Sm/75yQ00gTJxtkBxX+wu6YaNymbpVM= +go.opentelemetry.io/otel/sdk v1.20.0 h1:5Jf6imeFZlZtKv9Qbo6qt2ZkmWtdWx/wzcCbNUlAWGM= +go.opentelemetry.io/otel/sdk v1.20.0/go.mod h1:rmkSx1cZCm/tn16iWDn1GQbLtsW/LvsdEEFzCSRM6V0= +go.opentelemetry.io/otel/sdk/metric v1.20.0 h1:5eD40l/H2CqdKmbSV7iht2KMK0faAIL2pVYzJOWobGk= +go.opentelemetry.io/otel/sdk/metric v1.20.0/go.mod h1:AGvpC+YF/jblITiafMTYgvRBUiwi9hZf0EYE2E5XlS8= +go.opentelemetry.io/otel/trace v1.20.0 h1:+yxVAPZPbQhbC3OfAkeIVTky6iTFpcr4SiY9om7mXSQ= +go.opentelemetry.io/otel/trace v1.20.0/go.mod h1:HJSK7F/hA5RlzpZ0zKDCHCDHm556LCDtKaAo6JmBFUU= +go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/dig v1.17.0 h1:5Chju+tUvcC+N7N6EV08BJz41UZuO3BmHcN4A287ZLI= +go.uber.org/dig v1.17.0/go.mod h1:rTxpf7l5I0eBTlE6/9RL+lDybC7WFwY2QH55ZSjy1mU= +go.uber.org/fx v1.18.2 h1:bUNI6oShr+OVFQeU8cDNbnN7VFsu+SsjHzUF51V/GAU= +go.uber.org/fx v1.18.2/go.mod h1:g0V1KMQ66zIRk8bLu3Ea5Jt2w/cHlOIp4wdRsgh0JaY= +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 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/zap v1.23.0 h1:OjGQ5KQDEUawVHxNwQgPpiypGHOxo2mNZsOqTak4fFY= +go.uber.org/zap v1.23.0/go.mod h1:D+nX8jyLsMHMYrln8A0rJjFt/T/9/bGgIhAqxv5URuY= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q= +golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= +google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/pkg/logs/pipeline/go.mod b/pkg/logs/pipeline/go.mod new file mode 100644 index 00000000000000..6823d75a62dbcd --- /dev/null +++ b/pkg/logs/pipeline/go.mod @@ -0,0 +1,148 @@ +module github.com/DataDog/datadog-agent/pkg/logs/pipeline + +go 1.21.7 + +replace ( + github.com/DataDog/datadog-agent/comp/core/hostname/hostnameinterface => ../../../comp/core/hostname/hostnameinterface + github.com/DataDog/datadog-agent/comp/core/secrets => ../../../comp/core/secrets + github.com/DataDog/datadog-agent/comp/core/status => ../../../comp/core/status + github.com/DataDog/datadog-agent/comp/core/telemetry => ../../../comp/core/telemetry + github.com/DataDog/datadog-agent/comp/logs/agent/config => ../../../comp/logs/agent/config + github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../collector/check/defaults + github.com/DataDog/datadog-agent/pkg/config/env => ../../config/env + github.com/DataDog/datadog-agent/pkg/config/model => ../../config/model + github.com/DataDog/datadog-agent/pkg/config/setup => ../../config/setup + github.com/DataDog/datadog-agent/pkg/config/utils => ../../config/utils + github.com/DataDog/datadog-agent/pkg/logs/auditor => ../auditor + github.com/DataDog/datadog-agent/pkg/logs/client => ../client + github.com/DataDog/datadog-agent/pkg/logs/diagnostic => ../diagnostic + github.com/DataDog/datadog-agent/pkg/logs/message => ../message + github.com/DataDog/datadog-agent/pkg/logs/metrics => ../metrics + github.com/DataDog/datadog-agent/pkg/logs/processor => ../processor + github.com/DataDog/datadog-agent/pkg/logs/sender => ../sender + github.com/DataDog/datadog-agent/pkg/logs/sources => ../sources + github.com/DataDog/datadog-agent/pkg/logs/status/statusinterface => ../status/statusinterface + github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../status/utils + github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../util/testutils + github.com/DataDog/datadog-agent/pkg/status/health => ../../status/health + github.com/DataDog/datadog-agent/pkg/telemetry => ../../telemetry + github.com/DataDog/datadog-agent/pkg/util/backoff => ../../util/backoff + github.com/DataDog/datadog-agent/pkg/util/executable => ../../util/executable + github.com/DataDog/datadog-agent/pkg/util/filesystem => ../../util/filesystem + github.com/DataDog/datadog-agent/pkg/util/fxutil => ../../util/fxutil + github.com/DataDog/datadog-agent/pkg/util/hostname/validate => ../../util/hostname/validate + github.com/DataDog/datadog-agent/pkg/util/http => ../../util/http + github.com/DataDog/datadog-agent/pkg/util/log => ../../util/log + github.com/DataDog/datadog-agent/pkg/util/optional => ../../util/optional + github.com/DataDog/datadog-agent/pkg/util/pointer => ../../util/pointer + github.com/DataDog/datadog-agent/pkg/util/scrubber => ../../util/scrubber + github.com/DataDog/datadog-agent/pkg/util/startstop => ../../util/startstop + github.com/DataDog/datadog-agent/pkg/util/statstracker => ../../util/statstracker + github.com/DataDog/datadog-agent/pkg/util/system => ../../util/system + github.com/DataDog/datadog-agent/pkg/util/system/socket => ../../util/system/socket + github.com/DataDog/datadog-agent/pkg/util/winutil => ../../util/winutil + github.com/DataDog/datadog-agent/pkg/version => ../../version +) + +require ( + github.com/DataDog/datadog-agent/comp/core/hostname/hostnameinterface v0.52.0-rc.3 + github.com/DataDog/datadog-agent/comp/logs/agent/config v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/config/model v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/logs/auditor v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/logs/client v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/logs/diagnostic v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/logs/message v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/logs/processor v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/logs/sender v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/logs/status/statusinterface v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/status/health v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/util/startstop v0.52.0-rc.3 + github.com/stretchr/testify v1.8.4 + go.uber.org/atomic v1.11.0 +) + +require ( + github.com/DataDog/agent-payload/v5 v5.0.102 // indirect + github.com/DataDog/datadog-agent/comp/core/secrets v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/comp/core/telemetry v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/collector/check/defaults v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/config/env v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/config/setup v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/config/utils v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/logs/metrics v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/logs/sources v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/logs/status/utils v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/telemetry v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/backoff v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/executable v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/filesystem v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/fxutil v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/hostname/validate v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/http v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/log v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/optional v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/pointer v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/scrubber v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/statstracker v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/system v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/system/socket v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/winutil v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/version v0.52.0-rc.3 // indirect + github.com/DataDog/viper v1.12.0 // indirect + github.com/Microsoft/go-winio v0.6.1 // indirect + github.com/benbjohnson/clock v1.3.5 // indirect + github.com/beorn7/perks v1.0.1 // indirect + github.com/cespare/xxhash/v2 v2.2.0 // indirect + github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/fsnotify/fsnotify v1.7.0 // indirect + github.com/go-logr/logr v1.3.0 // indirect + github.com/go-logr/stdr v1.2.2 // indirect + github.com/go-ole/go-ole v1.2.6 // indirect + github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang/protobuf v1.5.3 // indirect + github.com/hashicorp/hcl v1.0.0 // indirect + github.com/hectane/go-acl v0.0.0-20190604041725-da78bae5fc95 // indirect + github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 // indirect + github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect + github.com/magiconair/properties v1.8.1 // indirect + github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect + github.com/mitchellh/mapstructure v1.1.2 // indirect + github.com/pelletier/go-toml v1.2.0 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect + github.com/prometheus/client_golang v1.17.0 // indirect + github.com/prometheus/client_model v0.5.0 // indirect + github.com/prometheus/common v0.44.0 // indirect + github.com/prometheus/procfs v0.11.1 // indirect + github.com/shirou/gopsutil/v3 v3.23.12 // indirect + github.com/shoenig/go-m1cpu v0.1.6 // indirect + github.com/spf13/afero v1.9.5 // indirect + github.com/spf13/cast v1.5.1 // indirect + github.com/spf13/cobra v1.7.0 // indirect + github.com/spf13/jwalterweatherman v1.0.0 // indirect + github.com/spf13/pflag v1.0.5 // indirect + github.com/tklauser/go-sysconf v0.3.12 // indirect + github.com/tklauser/numcpus v0.6.1 // indirect + github.com/yusufpapurcu/wmi v1.2.3 // indirect + go.opentelemetry.io/otel v1.20.0 // indirect + go.opentelemetry.io/otel/exporters/prometheus v0.42.0 // indirect + go.opentelemetry.io/otel/metric v1.20.0 // indirect + go.opentelemetry.io/otel/sdk v1.20.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.20.0 // indirect + go.opentelemetry.io/otel/trace v1.20.0 // indirect + go.uber.org/dig v1.17.0 // indirect + go.uber.org/fx v1.18.2 // indirect + go.uber.org/multierr v1.6.0 // indirect + go.uber.org/zap v1.23.0 // indirect + golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect + golang.org/x/mod v0.15.0 // indirect + golang.org/x/net v0.21.0 // indirect + golang.org/x/sys v0.17.0 // indirect + golang.org/x/text v0.14.0 // indirect + golang.org/x/tools v0.18.0 // indirect + google.golang.org/protobuf v1.31.0 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect +) diff --git a/pkg/logs/pipeline/go.sum b/pkg/logs/pipeline/go.sum new file mode 100644 index 00000000000000..f39f8692bf26aa --- /dev/null +++ b/pkg/logs/pipeline/go.sum @@ -0,0 +1,736 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= +cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= +cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= +cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= +cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= +cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= +cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= +cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +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/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/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/DataDog/agent-payload/v5 v5.0.102 h1:X8EZQeOewahQ7N/arllAP7hCGHNScdThnGjPg5/ErN8= +github.com/DataDog/agent-payload/v5 v5.0.102/go.mod h1:COngtbYYCncpIPiE5D93QlXDH/3VAKk10jDNwGHcMRE= +github.com/DataDog/datadog-agent/comp/core/config v0.52.0-rc.3 h1:N7cJMtcW9cmybQqwv421dXcfJEBtfRPacF9nBN3K0Iw= +github.com/DataDog/datadog-agent/comp/core/config v0.52.0-rc.3/go.mod h1:3s80Ae8qaPOWpwM75dnM1M9YWkr6+ckA9TKU2+/sa7Q= +github.com/DataDog/datadog-agent/comp/core/flare/types v0.52.0-rc.3 h1:pIGSbylKbhD1s06yGED9t9eFYKj2myu46k2OOIUCXAs= +github.com/DataDog/datadog-agent/comp/core/flare/types v0.52.0-rc.3/go.mod h1:h0h6cm8eqb1JnuqHMCdTir+c4IUlOUnOy6xrmvhQXOY= +github.com/DataDog/datadog-agent/pkg/util/testutil v0.52.0-rc.3 h1:C9hoL8b5XPv4PSToaUo3BmzS3HrcDti4XSXd3BJf4fU= +github.com/DataDog/datadog-agent/pkg/util/testutil v0.52.0-rc.3/go.mod h1:7/Dk+MI/JNkrYUYtR/LQG750a99T1/nCVNFjc7rLq4g= +github.com/DataDog/viper v1.12.0 h1:FufyZpZPxyszafSV5B8Q8it75IhhuJwH0T7QpT6HnD0= +github.com/DataDog/viper v1.12.0/go.mod h1:wDdUVJ2SHaMaPrCZrlRCObwkubsX8j5sme3LaR/SGTc= +github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= +github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +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= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/antihax/optional v0.0.0-20180407024304-ca021399b1a6/go.mod h1:V8iCPQYkqmusNa815XgQio277wI47sdRh1dUOLdyC6Q= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/benbjohnson/clock v1.3.5 h1:VvXlSJBzZpA/zum6Sj74hxwYI2DIxRWuNIoXAzHZz5o= +github.com/benbjohnson/clock v1.3.5/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +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= +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= +github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575 h1:kHaBemcxl8o/pQ5VM1c8PVE1PubbNx3mjUr09OqWGCs= +github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575/go.mod h1:9d6lWj8KzO/fd/NrVaLscBKmPigpZpn5YawRPw+e3Yo= +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/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/bbolt v1.3.3/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +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/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +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/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= +github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= +github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +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= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY= +github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= +github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +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/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +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.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= +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.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +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.4.1/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.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.2/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.5/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.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +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-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= +github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-middleware v1.2.0/go.mod h1:mJzapYve32yjrKlk9GbyCZHuPgZsrbyIbyKhSzOpg6s= +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.13.0/go.mod h1:8XEsbTttt/W+VvjtQhLACqCisSPWTxCZ7sBRjU6iH9c= +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/hectane/go-acl v0.0.0-20190604041725-da78bae5fc95 h1:S4qyfL2sEm5Budr4KVMyEniCy+PbS55651I/a+Kn/NQ= +github.com/hectane/go-acl v0.0.0-20190604041725-da78bae5fc95/go.mod h1:QiyDdbZLaJ/mZP4Zwc9g2QsfaEA4o7XvvgZegSci5/E= +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/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +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/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 h1:iQTw/8FWTuc7uiaSepXwyf3o52HaUYcV+Tu66S3F5GA= +github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +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/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +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/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= +github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= +github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4= +github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= +github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +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/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= +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/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw= +github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +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.4.1/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= +github.com/prometheus/client_golang v1.17.0 h1:rl2sfwZMtSthVU752MqfjQozy7blglC+1SOtjMAMh+Q= +github.com/prometheus/client_golang v1.17.0/go.mod h1:VeL+gMmOAxkS2IqfCq0ZmHSL+LjWfWDUmp1mBz9JgUY= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= +github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= +github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= +github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY= +github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= +github.com/prometheus/procfs v0.11.1 h1:xRC8Iq1yyca5ypa9n1EZnWZkt7dwcoRPQwX/5gwaUuI= +github.com/prometheus/procfs v0.11.1/go.mod h1:eesXgaPo1q7lBpVMoMy0ZOFTth9hBn4W/y0/p/ScXhY= +github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= +github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/shirou/gopsutil/v3 v3.23.12 h1:z90NtUkp3bMtmICZKpC4+WaknU1eXtp5vtbQ11DgpE4= +github.com/shirou/gopsutil/v3 v3.23.12/go.mod h1:1FrWgea594Jp7qmjHUUPlJDTPgcsb9mGnXDxavtikzM= +github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM= +github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ= +github.com/shoenig/test v0.6.4 h1:kVTaSd7WLz5WZ2IaoM0RSzRsUD+m8wRR+5qvntpn4LU= +github.com/shoenig/test v0.6.4/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/afero v1.9.5 h1:stMpOSZFs//0Lv29HduCmli3GUfpFoF3Y1Q/aXj/wVM= +github.com/spf13/afero v1.9.5/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA= +github.com/spf13/cast v1.5.1/go.mod h1:b9PdjNptOpzXr7Rq1q9gJML/2cdGQAo69NKzQ10KN48= +github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I= +github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0= +github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk= +github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +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/spf13/viper v1.6.2/go.mod h1:t3iDnF5Jlj76alVNuyFBk5oUMCvsrkbvZK0WQdfDi5k= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +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.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= +github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= +github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= +github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= +github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= +github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tmc/grpc-websocket-proxy v0.0.0-20200122045848-3419fae592fc/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= +github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= +github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +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= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yusufpapurcu/wmi v1.2.3 h1:E1ctvB7uKFMOJw3fdOW32DwGE9I7t++CRUEMKvFoFiw= +github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +go.opentelemetry.io/otel v1.20.0 h1:vsb/ggIY+hUjD/zCAQHpzTmndPqv/ml2ArbsbfBYTAc= +go.opentelemetry.io/otel v1.20.0/go.mod h1:oUIGj3D77RwJdM6PPZImDpSZGDvkD9fhesHny69JFrs= +go.opentelemetry.io/otel/exporters/prometheus v0.42.0 h1:jwV9iQdvp38fxXi8ZC+lNpxjK16MRcZlpDYvbuO1FiA= +go.opentelemetry.io/otel/exporters/prometheus v0.42.0/go.mod h1:f3bYiqNqhoPxkvI2LrXqQVC546K7BuRDL/kKuxkujhA= +go.opentelemetry.io/otel/metric v1.20.0 h1:ZlrO8Hu9+GAhnepmRGhSU7/VkpjrNowxRN9GyKR4wzA= +go.opentelemetry.io/otel/metric v1.20.0/go.mod h1:90DRw3nfK4D7Sm/75yQ00gTJxtkBxX+wu6YaNymbpVM= +go.opentelemetry.io/otel/sdk v1.20.0 h1:5Jf6imeFZlZtKv9Qbo6qt2ZkmWtdWx/wzcCbNUlAWGM= +go.opentelemetry.io/otel/sdk v1.20.0/go.mod h1:rmkSx1cZCm/tn16iWDn1GQbLtsW/LvsdEEFzCSRM6V0= +go.opentelemetry.io/otel/sdk/metric v1.20.0 h1:5eD40l/H2CqdKmbSV7iht2KMK0faAIL2pVYzJOWobGk= +go.opentelemetry.io/otel/sdk/metric v1.20.0/go.mod h1:AGvpC+YF/jblITiafMTYgvRBUiwi9hZf0EYE2E5XlS8= +go.opentelemetry.io/otel/trace v1.20.0 h1:+yxVAPZPbQhbC3OfAkeIVTky6iTFpcr4SiY9om7mXSQ= +go.opentelemetry.io/otel/trace v1.20.0/go.mod h1:HJSK7F/hA5RlzpZ0zKDCHCDHm556LCDtKaAo6JmBFUU= +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.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= +go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= +go.uber.org/dig v1.17.0 h1:5Chju+tUvcC+N7N6EV08BJz41UZuO3BmHcN4A287ZLI= +go.uber.org/dig v1.17.0/go.mod h1:rTxpf7l5I0eBTlE6/9RL+lDybC7WFwY2QH55ZSjy1mU= +go.uber.org/fx v1.18.2 h1:bUNI6oShr+OVFQeU8cDNbnN7VFsu+SsjHzUF51V/GAU= +go.uber.org/fx v1.18.2/go.mod h1:g0V1KMQ66zIRk8bLu3Ea5Jt2w/cHlOIp4wdRsgh0JaY= +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.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= +go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.14.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= +go.uber.org/zap v1.23.0 h1:OjGQ5KQDEUawVHxNwQgPpiypGHOxo2mNZsOqTak4fFY= +go.uber.org/zap v1.23.0/go.mod h1:D+nX8jyLsMHMYrln8A0rJjFt/T/9/bGgIhAqxv5URuY= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +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-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= +golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 h1:LfspQV/FYTatPTr/3HzIcmiUFH7PGP+OQ6mgDYo3yuQ= +golang.org/x/exp v0.0.0-20240222234643-814bf88cf225/go.mod h1:CxmFvTBINI24O/j8iY7H1xHzx2i4OsyguNBmN/uPtqc= +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/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= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +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.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8= +golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +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-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/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-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/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-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= +golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/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-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +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-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/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-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/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-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190529164535-6a60838ec259/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/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-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220829200755-d48e67d00261/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/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-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-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/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-20190816200558-6889da9d5479/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-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= +golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +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-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-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +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-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-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +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= +golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= +golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= +golang.org/x/tools v0.18.0 h1:k8NLag8AGHnn+PHbl7g43CtqZAwG60vZkLqgyZgIHgQ= +golang.org/x/tools v0.18.0/go.mod h1:GL7B4CwcLLeo59yx/9UWWuNOW1n3VZ4f5axWfML7Lcg= +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/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= +google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= +google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= +google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= +google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= +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/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20190927181202-20e1ac93f88c/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= +google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +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-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +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.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= +google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= +google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +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.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= +google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +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-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +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.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.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/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-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= +rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= diff --git a/pkg/logs/pipeline/pipeline.go b/pkg/logs/pipeline/pipeline.go index 4f7525c55210ad..908abd2afbedda 100644 --- a/pkg/logs/pipeline/pipeline.go +++ b/pkg/logs/pipeline/pipeline.go @@ -17,8 +17,8 @@ import ( "github.com/DataDog/datadog-agent/pkg/logs/client/http" "github.com/DataDog/datadog-agent/pkg/logs/client/tcp" "github.com/DataDog/datadog-agent/pkg/logs/diagnostic" - "github.com/DataDog/datadog-agent/pkg/logs/internal/processor" "github.com/DataDog/datadog-agent/pkg/logs/message" + "github.com/DataDog/datadog-agent/pkg/logs/processor" "github.com/DataDog/datadog-agent/pkg/logs/sender" "github.com/DataDog/datadog-agent/pkg/logs/status/statusinterface" ) diff --git a/pkg/logs/internal/processor/encoder.go b/pkg/logs/processor/encoder.go similarity index 100% rename from pkg/logs/internal/processor/encoder.go rename to pkg/logs/processor/encoder.go diff --git a/pkg/logs/internal/processor/encoder_test.go b/pkg/logs/processor/encoder_test.go similarity index 100% rename from pkg/logs/internal/processor/encoder_test.go rename to pkg/logs/processor/encoder_test.go diff --git a/pkg/logs/processor/go.mod b/pkg/logs/processor/go.mod new file mode 100644 index 00000000000000..97c44f3298bb2b --- /dev/null +++ b/pkg/logs/processor/go.mod @@ -0,0 +1,128 @@ +module github.com/DataDog/datadog-agent/pkg/logs/processor + +go 1.21.7 + +replace ( + github.com/DataDog/datadog-agent/comp/core/hostname/hostnameinterface => ../../../comp/core/hostname/hostnameinterface + github.com/DataDog/datadog-agent/comp/core/secrets => ../../../comp/core/secrets + github.com/DataDog/datadog-agent/comp/core/telemetry => ../../../comp/core/telemetry + github.com/DataDog/datadog-agent/comp/logs/agent/config => ../../../comp/logs/agent/config + github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../collector/check/defaults + github.com/DataDog/datadog-agent/pkg/config/env => ../../config/env + github.com/DataDog/datadog-agent/pkg/config/model => ../../config/model + github.com/DataDog/datadog-agent/pkg/config/setup => ../../config/setup + github.com/DataDog/datadog-agent/pkg/config/utils => ../../config/utils + github.com/DataDog/datadog-agent/pkg/logs/diagnostic => ../diagnostic + github.com/DataDog/datadog-agent/pkg/logs/message => ../message + github.com/DataDog/datadog-agent/pkg/logs/metrics => ../metrics + github.com/DataDog/datadog-agent/pkg/logs/sources => ../sources + github.com/DataDog/datadog-agent/pkg/logs/status/statusinterface => ../status/statusinterface + github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../status/utils + github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../util/testutils + github.com/DataDog/datadog-agent/pkg/telemetry => ../../telemetry + github.com/DataDog/datadog-agent/pkg/util/executable => ../../util/executable + github.com/DataDog/datadog-agent/pkg/util/filesystem => ../../util/filesystem + github.com/DataDog/datadog-agent/pkg/util/fxutil => ../../util/fxutil + github.com/DataDog/datadog-agent/pkg/util/hostname/validate => ../../util/hostname/validate + github.com/DataDog/datadog-agent/pkg/util/log => ../../util/log + github.com/DataDog/datadog-agent/pkg/util/optional => ../../util/optional + github.com/DataDog/datadog-agent/pkg/util/pointer => ../../util/pointer + github.com/DataDog/datadog-agent/pkg/util/scrubber => ../../util/scrubber + github.com/DataDog/datadog-agent/pkg/util/statstracker => ../../util/statstracker + github.com/DataDog/datadog-agent/pkg/util/system => ../../util/system + github.com/DataDog/datadog-agent/pkg/util/system/socket => ../../util/system/socket + github.com/DataDog/datadog-agent/pkg/util/winutil => ../../util/winutil + github.com/DataDog/datadog-agent/pkg/version => ../../version +) + +require ( + github.com/DataDog/agent-payload/v5 v5.0.102 + github.com/DataDog/datadog-agent/comp/core/hostname/hostnameinterface v0.52.0-rc.3 + github.com/DataDog/datadog-agent/comp/logs/agent/config v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/logs/diagnostic v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/logs/message v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/logs/metrics v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/logs/sources v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/util/log v0.52.0-rc.3 + github.com/stretchr/testify v1.8.4 +) + +require ( + github.com/DataDog/datadog-agent/comp/core/secrets v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/comp/core/telemetry v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/collector/check/defaults v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/config/env v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/config/model v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/config/setup v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/config/utils v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/logs/status/utils v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/telemetry v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/executable v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/filesystem v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/fxutil v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/hostname/validate v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/optional v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/pointer v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/scrubber v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/statstracker v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/system v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/system/socket v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/winutil v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/version v0.52.0-rc.3 // indirect + github.com/DataDog/viper v1.12.0 // indirect + github.com/Microsoft/go-winio v0.6.1 // indirect + github.com/beorn7/perks v1.0.1 // indirect + github.com/cespare/xxhash/v2 v2.2.0 // indirect + github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/fsnotify/fsnotify v1.7.0 // indirect + github.com/go-logr/logr v1.3.0 // indirect + github.com/go-logr/stdr v1.2.2 // indirect + github.com/go-ole/go-ole v1.2.6 // indirect + github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang/protobuf v1.5.3 // indirect + github.com/hashicorp/hcl v1.0.0 // indirect + github.com/hectane/go-acl v0.0.0-20190604041725-da78bae5fc95 // indirect + github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 // indirect + github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect + github.com/magiconair/properties v1.8.1 // indirect + github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect + github.com/mitchellh/mapstructure v1.1.2 // indirect + github.com/pelletier/go-toml v1.2.0 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect + github.com/prometheus/client_golang v1.17.0 // indirect + github.com/prometheus/client_model v0.5.0 // indirect + github.com/prometheus/common v0.44.0 // indirect + github.com/prometheus/procfs v0.11.1 // indirect + github.com/shirou/gopsutil/v3 v3.23.12 // indirect + github.com/shoenig/go-m1cpu v0.1.6 // indirect + github.com/spf13/afero v1.1.2 // indirect + github.com/spf13/cast v1.5.1 // indirect + github.com/spf13/cobra v1.7.0 // indirect + github.com/spf13/jwalterweatherman v1.0.0 // indirect + github.com/spf13/pflag v1.0.5 // indirect + github.com/tklauser/go-sysconf v0.3.12 // indirect + github.com/tklauser/numcpus v0.6.1 // indirect + github.com/yusufpapurcu/wmi v1.2.3 // indirect + go.opentelemetry.io/otel v1.20.0 // indirect + go.opentelemetry.io/otel/exporters/prometheus v0.42.0 // indirect + go.opentelemetry.io/otel/metric v1.20.0 // indirect + go.opentelemetry.io/otel/sdk v1.20.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.20.0 // indirect + go.opentelemetry.io/otel/trace v1.20.0 // indirect + go.uber.org/atomic v1.11.0 // indirect + go.uber.org/dig v1.17.0 // indirect + go.uber.org/fx v1.18.2 // indirect + go.uber.org/multierr v1.6.0 // indirect + go.uber.org/zap v1.23.0 // indirect + golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect + golang.org/x/mod v0.15.0 // indirect + golang.org/x/sys v0.17.0 // indirect + golang.org/x/text v0.9.0 // indirect + golang.org/x/tools v0.18.0 // indirect + google.golang.org/protobuf v1.31.0 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect +) diff --git a/pkg/logs/processor/go.sum b/pkg/logs/processor/go.sum new file mode 100644 index 00000000000000..dae0c9a6c8f37c --- /dev/null +++ b/pkg/logs/processor/go.sum @@ -0,0 +1,391 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/DataDog/agent-payload/v5 v5.0.102 h1:X8EZQeOewahQ7N/arllAP7hCGHNScdThnGjPg5/ErN8= +github.com/DataDog/agent-payload/v5 v5.0.102/go.mod h1:COngtbYYCncpIPiE5D93QlXDH/3VAKk10jDNwGHcMRE= +github.com/DataDog/datadog-agent/comp/core/config v0.52.0-rc.3 h1:N7cJMtcW9cmybQqwv421dXcfJEBtfRPacF9nBN3K0Iw= +github.com/DataDog/datadog-agent/comp/core/config v0.52.0-rc.3/go.mod h1:3s80Ae8qaPOWpwM75dnM1M9YWkr6+ckA9TKU2+/sa7Q= +github.com/DataDog/datadog-agent/comp/core/flare/types v0.52.0-rc.3 h1:pIGSbylKbhD1s06yGED9t9eFYKj2myu46k2OOIUCXAs= +github.com/DataDog/datadog-agent/comp/core/flare/types v0.52.0-rc.3/go.mod h1:h0h6cm8eqb1JnuqHMCdTir+c4IUlOUnOy6xrmvhQXOY= +github.com/DataDog/datadog-agent/pkg/util/testutil v0.52.0-rc.3 h1:C9hoL8b5XPv4PSToaUo3BmzS3HrcDti4XSXd3BJf4fU= +github.com/DataDog/datadog-agent/pkg/util/testutil v0.52.0-rc.3/go.mod h1:7/Dk+MI/JNkrYUYtR/LQG750a99T1/nCVNFjc7rLq4g= +github.com/DataDog/viper v1.12.0 h1:FufyZpZPxyszafSV5B8Q8it75IhhuJwH0T7QpT6HnD0= +github.com/DataDog/viper v1.12.0/go.mod h1:wDdUVJ2SHaMaPrCZrlRCObwkubsX8j5sme3LaR/SGTc= +github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= +github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +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= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/antihax/optional v0.0.0-20180407024304-ca021399b1a6/go.mod h1:V8iCPQYkqmusNa815XgQio277wI47sdRh1dUOLdyC6Q= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +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/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= +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= +github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575 h1:kHaBemcxl8o/pQ5VM1c8PVE1PubbNx3mjUr09OqWGCs= +github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575/go.mod h1:9d6lWj8KzO/fd/NrVaLscBKmPigpZpn5YawRPw+e3Yo= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/bbolt v1.3.3/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +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/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= +github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= +github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY= +github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= +github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +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/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +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.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +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.5/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.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-middleware v1.2.0/go.mod h1:mJzapYve32yjrKlk9GbyCZHuPgZsrbyIbyKhSzOpg6s= +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.13.0/go.mod h1:8XEsbTttt/W+VvjtQhLACqCisSPWTxCZ7sBRjU6iH9c= +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/hectane/go-acl v0.0.0-20190604041725-da78bae5fc95 h1:S4qyfL2sEm5Budr4KVMyEniCy+PbS55651I/a+Kn/NQ= +github.com/hectane/go-acl v0.0.0-20190604041725-da78bae5fc95/go.mod h1:QiyDdbZLaJ/mZP4Zwc9g2QsfaEA4o7XvvgZegSci5/E= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 h1:iQTw/8FWTuc7uiaSepXwyf3o52HaUYcV+Tu66S3F5GA= +github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +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/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +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/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= +github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= +github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4= +github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= +github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= +github.com/pkg/errors v0.8.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/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw= +github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +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.4.1/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= +github.com/prometheus/client_golang v1.17.0 h1:rl2sfwZMtSthVU752MqfjQozy7blglC+1SOtjMAMh+Q= +github.com/prometheus/client_golang v1.17.0/go.mod h1:VeL+gMmOAxkS2IqfCq0ZmHSL+LjWfWDUmp1mBz9JgUY= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= +github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= +github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= +github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY= +github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= +github.com/prometheus/procfs v0.11.1 h1:xRC8Iq1yyca5ypa9n1EZnWZkt7dwcoRPQwX/5gwaUuI= +github.com/prometheus/procfs v0.11.1/go.mod h1:eesXgaPo1q7lBpVMoMy0ZOFTth9hBn4W/y0/p/ScXhY= +github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= +github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/shirou/gopsutil/v3 v3.23.12 h1:z90NtUkp3bMtmICZKpC4+WaknU1eXtp5vtbQ11DgpE4= +github.com/shirou/gopsutil/v3 v3.23.12/go.mod h1:1FrWgea594Jp7qmjHUUPlJDTPgcsb9mGnXDxavtikzM= +github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM= +github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ= +github.com/shoenig/test v0.6.4 h1:kVTaSd7WLz5WZ2IaoM0RSzRsUD+m8wRR+5qvntpn4LU= +github.com/shoenig/test v0.6.4/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spf13/afero v1.1.2 h1:m8/z1t7/fwjysjQRYbP0RD+bUIF/8tJwPdEZsI83ACI= +github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA= +github.com/spf13/cast v1.5.1/go.mod h1:b9PdjNptOpzXr7Rq1q9gJML/2cdGQAo69NKzQ10KN48= +github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I= +github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0= +github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk= +github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +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/spf13/viper v1.6.2/go.mod h1:t3iDnF5Jlj76alVNuyFBk5oUMCvsrkbvZK0WQdfDi5k= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +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.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= +github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= +github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= +github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= +github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= +github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tmc/grpc-websocket-proxy v0.0.0-20200122045848-3419fae592fc/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= +github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= +github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yusufpapurcu/wmi v1.2.3 h1:E1ctvB7uKFMOJw3fdOW32DwGE9I7t++CRUEMKvFoFiw= +github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.opentelemetry.io/otel v1.20.0 h1:vsb/ggIY+hUjD/zCAQHpzTmndPqv/ml2ArbsbfBYTAc= +go.opentelemetry.io/otel v1.20.0/go.mod h1:oUIGj3D77RwJdM6PPZImDpSZGDvkD9fhesHny69JFrs= +go.opentelemetry.io/otel/exporters/prometheus v0.42.0 h1:jwV9iQdvp38fxXi8ZC+lNpxjK16MRcZlpDYvbuO1FiA= +go.opentelemetry.io/otel/exporters/prometheus v0.42.0/go.mod h1:f3bYiqNqhoPxkvI2LrXqQVC546K7BuRDL/kKuxkujhA= +go.opentelemetry.io/otel/metric v1.20.0 h1:ZlrO8Hu9+GAhnepmRGhSU7/VkpjrNowxRN9GyKR4wzA= +go.opentelemetry.io/otel/metric v1.20.0/go.mod h1:90DRw3nfK4D7Sm/75yQ00gTJxtkBxX+wu6YaNymbpVM= +go.opentelemetry.io/otel/sdk v1.20.0 h1:5Jf6imeFZlZtKv9Qbo6qt2ZkmWtdWx/wzcCbNUlAWGM= +go.opentelemetry.io/otel/sdk v1.20.0/go.mod h1:rmkSx1cZCm/tn16iWDn1GQbLtsW/LvsdEEFzCSRM6V0= +go.opentelemetry.io/otel/sdk/metric v1.20.0 h1:5eD40l/H2CqdKmbSV7iht2KMK0faAIL2pVYzJOWobGk= +go.opentelemetry.io/otel/sdk/metric v1.20.0/go.mod h1:AGvpC+YF/jblITiafMTYgvRBUiwi9hZf0EYE2E5XlS8= +go.opentelemetry.io/otel/trace v1.20.0 h1:+yxVAPZPbQhbC3OfAkeIVTky6iTFpcr4SiY9om7mXSQ= +go.opentelemetry.io/otel/trace v1.20.0/go.mod h1:HJSK7F/hA5RlzpZ0zKDCHCDHm556LCDtKaAo6JmBFUU= +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.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= +go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= +go.uber.org/dig v1.17.0 h1:5Chju+tUvcC+N7N6EV08BJz41UZuO3BmHcN4A287ZLI= +go.uber.org/dig v1.17.0/go.mod h1:rTxpf7l5I0eBTlE6/9RL+lDybC7WFwY2QH55ZSjy1mU= +go.uber.org/fx v1.18.2 h1:bUNI6oShr+OVFQeU8cDNbnN7VFsu+SsjHzUF51V/GAU= +go.uber.org/fx v1.18.2/go.mod h1:g0V1KMQ66zIRk8bLu3Ea5Jt2w/cHlOIp4wdRsgh0JaY= +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.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= +go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.14.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= +go.uber.org/zap v1.23.0 h1:OjGQ5KQDEUawVHxNwQgPpiypGHOxo2mNZsOqTak4fFY= +go.uber.org/zap v1.23.0/go.mod h1:D+nX8jyLsMHMYrln8A0rJjFt/T/9/bGgIhAqxv5URuY= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +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/exp v0.0.0-20240222234643-814bf88cf225 h1:LfspQV/FYTatPTr/3HzIcmiUFH7PGP+OQ6mgDYo3yuQ= +golang.org/x/exp v0.0.0-20240222234643-814bf88cf225/go.mod h1:CxmFvTBINI24O/j8iY7H1xHzx2i4OsyguNBmN/uPtqc= +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.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +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.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8= +golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +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-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181220203305-927f97764cc3/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-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191002035440-2ec189313ef0/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/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-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.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/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-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190529164535-6a60838ec259/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20220829200755-d48e67d00261/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/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-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-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +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= +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.18.0 h1:k8NLag8AGHnn+PHbl7g43CtqZAwG60vZkLqgyZgIHgQ= +golang.org/x/tools v0.18.0/go.mod h1:GL7B4CwcLLeo59yx/9UWWuNOW1n3VZ4f5axWfML7Lcg= +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/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-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190927181202-20e1ac93f88c/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= +google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +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-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +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.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.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/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= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= diff --git a/pkg/logs/internal/processor/json.go b/pkg/logs/processor/json.go similarity index 100% rename from pkg/logs/internal/processor/json.go rename to pkg/logs/processor/json.go diff --git a/pkg/logs/internal/processor/json_serverless.go b/pkg/logs/processor/json_serverless.go similarity index 100% rename from pkg/logs/internal/processor/json_serverless.go rename to pkg/logs/processor/json_serverless.go diff --git a/pkg/logs/internal/processor/processor.go b/pkg/logs/processor/processor.go similarity index 100% rename from pkg/logs/internal/processor/processor.go rename to pkg/logs/processor/processor.go diff --git a/pkg/logs/internal/processor/processor_test.go b/pkg/logs/processor/processor_test.go similarity index 100% rename from pkg/logs/internal/processor/processor_test.go rename to pkg/logs/processor/processor_test.go diff --git a/pkg/logs/internal/processor/proto.go b/pkg/logs/processor/proto.go similarity index 100% rename from pkg/logs/internal/processor/proto.go rename to pkg/logs/processor/proto.go diff --git a/pkg/logs/internal/processor/raw.go b/pkg/logs/processor/raw.go similarity index 100% rename from pkg/logs/internal/processor/raw.go rename to pkg/logs/processor/raw.go diff --git a/pkg/logs/sender/go.mod b/pkg/logs/sender/go.mod new file mode 100644 index 00000000000000..22f31e14ace5e0 --- /dev/null +++ b/pkg/logs/sender/go.mod @@ -0,0 +1,133 @@ +module github.com/DataDog/datadog-agent/pkg/logs/sender + +go 1.21.7 + +replace ( + github.com/DataDog/datadog-agent/comp/core/hostname/hostnameinterface => ../../../comp/core/hostname/hostnameinterface + github.com/DataDog/datadog-agent/comp/core/secrets => ../../../comp/core/secrets + github.com/DataDog/datadog-agent/comp/core/status => ../../../comp/core/status + github.com/DataDog/datadog-agent/comp/core/telemetry => ../../../comp/core/telemetry + github.com/DataDog/datadog-agent/comp/logs/agent/config => ../../../comp/logs/agent/config + github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../collector/check/defaults + github.com/DataDog/datadog-agent/pkg/config/env => ../../config/env + github.com/DataDog/datadog-agent/pkg/config/model => ../../config/model + github.com/DataDog/datadog-agent/pkg/config/setup => ../../config/setup + github.com/DataDog/datadog-agent/pkg/config/utils => ../../config/utils + github.com/DataDog/datadog-agent/pkg/logs/client => ../client + github.com/DataDog/datadog-agent/pkg/logs/message => ../message + github.com/DataDog/datadog-agent/pkg/logs/metrics => ../metrics + github.com/DataDog/datadog-agent/pkg/logs/sources => ../sources + github.com/DataDog/datadog-agent/pkg/logs/status/statusinterface => ../status/statusinterface + github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../status/utils + github.com/DataDog/datadog-agent/pkg/logs/util/testutils => ../util/testutils + github.com/DataDog/datadog-agent/pkg/telemetry => ../../telemetry + github.com/DataDog/datadog-agent/pkg/util/backoff => ../../util/backoff + github.com/DataDog/datadog-agent/pkg/util/executable => ../../util/executable + github.com/DataDog/datadog-agent/pkg/util/filesystem => ../../util/filesystem + github.com/DataDog/datadog-agent/pkg/util/fxutil => ../../util/fxutil + github.com/DataDog/datadog-agent/pkg/util/hostname/validate => ../../util/hostname/validate + github.com/DataDog/datadog-agent/pkg/util/http => ../../util/http + github.com/DataDog/datadog-agent/pkg/util/log => ../../util/log + github.com/DataDog/datadog-agent/pkg/util/optional => ../../util/optional + github.com/DataDog/datadog-agent/pkg/util/pointer => ../../util/pointer + github.com/DataDog/datadog-agent/pkg/util/scrubber => ../../util/scrubber + github.com/DataDog/datadog-agent/pkg/util/statstracker => ../../util/statstracker + github.com/DataDog/datadog-agent/pkg/util/system => ../../util/system + github.com/DataDog/datadog-agent/pkg/util/system/socket => ../../util/system/socket + github.com/DataDog/datadog-agent/pkg/util/winutil => ../../util/winutil + github.com/DataDog/datadog-agent/pkg/version => ../../version +) + +require ( + github.com/DataDog/datadog-agent/comp/logs/agent/config v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/config/model v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/logs/client v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/logs/message v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/logs/sources v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/logs/status/statusinterface v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/telemetry v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/util/log v0.52.0-rc.3 + github.com/benbjohnson/clock v1.3.5 + github.com/stretchr/testify v1.8.4 +) + +require ( + github.com/DataDog/datadog-agent/comp/core/secrets v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/comp/core/telemetry v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/collector/check/defaults v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/config/env v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/config/setup v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/config/utils v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/logs/metrics v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/logs/status/utils v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/backoff v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/executable v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/filesystem v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/fxutil v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/hostname/validate v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/http v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/optional v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/pointer v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/scrubber v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/statstracker v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/system v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/system/socket v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/winutil v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/version v0.52.0-rc.3 // indirect + github.com/DataDog/viper v1.12.0 // indirect + github.com/Microsoft/go-winio v0.6.1 // indirect + github.com/beorn7/perks v1.0.1 // indirect + github.com/cespare/xxhash/v2 v2.2.0 // indirect + github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/fsnotify/fsnotify v1.7.0 // indirect + github.com/go-logr/logr v1.3.0 // indirect + github.com/go-logr/stdr v1.2.2 // indirect + github.com/go-ole/go-ole v1.2.6 // indirect + github.com/golang/protobuf v1.5.3 // indirect + github.com/hashicorp/hcl v1.0.0 // indirect + github.com/hectane/go-acl v0.0.0-20190604041725-da78bae5fc95 // indirect + github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 // indirect + github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect + github.com/magiconair/properties v1.8.1 // indirect + github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect + github.com/mitchellh/mapstructure v1.1.2 // indirect + github.com/pelletier/go-toml v1.2.0 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect + github.com/prometheus/client_golang v1.17.0 // indirect + github.com/prometheus/client_model v0.5.0 // indirect + github.com/prometheus/common v0.44.0 // indirect + github.com/prometheus/procfs v0.11.1 // indirect + github.com/shirou/gopsutil/v3 v3.23.12 // indirect + github.com/shoenig/go-m1cpu v0.1.6 // indirect + github.com/spf13/afero v1.9.5 // indirect + github.com/spf13/cast v1.5.1 // indirect + github.com/spf13/cobra v1.7.0 // indirect + github.com/spf13/jwalterweatherman v1.0.0 // indirect + github.com/spf13/pflag v1.0.5 // indirect + github.com/tklauser/go-sysconf v0.3.12 // indirect + github.com/tklauser/numcpus v0.6.1 // indirect + github.com/yusufpapurcu/wmi v1.2.3 // indirect + go.opentelemetry.io/otel v1.20.0 // indirect + go.opentelemetry.io/otel/exporters/prometheus v0.42.0 // indirect + go.opentelemetry.io/otel/metric v1.20.0 // indirect + go.opentelemetry.io/otel/sdk v1.20.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.20.0 // indirect + go.opentelemetry.io/otel/trace v1.20.0 // indirect + go.uber.org/atomic v1.11.0 // indirect + go.uber.org/dig v1.17.0 // indirect + go.uber.org/fx v1.18.2 // indirect + go.uber.org/multierr v1.6.0 // indirect + go.uber.org/zap v1.23.0 // indirect + golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect + golang.org/x/mod v0.15.0 // indirect + golang.org/x/net v0.21.0 // indirect + golang.org/x/sys v0.17.0 // indirect + golang.org/x/text v0.14.0 // indirect + golang.org/x/tools v0.18.0 // indirect + google.golang.org/protobuf v1.31.0 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect +) diff --git a/pkg/logs/sender/go.sum b/pkg/logs/sender/go.sum new file mode 100644 index 00000000000000..a4c11ed124545b --- /dev/null +++ b/pkg/logs/sender/go.sum @@ -0,0 +1,729 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= +cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= +cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= +cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= +cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= +cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= +cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= +cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +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/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/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/DataDog/datadog-agent/comp/core/config v0.52.0-rc.3 h1:N7cJMtcW9cmybQqwv421dXcfJEBtfRPacF9nBN3K0Iw= +github.com/DataDog/datadog-agent/comp/core/config v0.52.0-rc.3/go.mod h1:3s80Ae8qaPOWpwM75dnM1M9YWkr6+ckA9TKU2+/sa7Q= +github.com/DataDog/datadog-agent/comp/core/flare/types v0.52.0-rc.3 h1:pIGSbylKbhD1s06yGED9t9eFYKj2myu46k2OOIUCXAs= +github.com/DataDog/datadog-agent/comp/core/flare/types v0.52.0-rc.3/go.mod h1:h0h6cm8eqb1JnuqHMCdTir+c4IUlOUnOy6xrmvhQXOY= +github.com/DataDog/datadog-agent/pkg/util/testutil v0.52.0-rc.3 h1:C9hoL8b5XPv4PSToaUo3BmzS3HrcDti4XSXd3BJf4fU= +github.com/DataDog/datadog-agent/pkg/util/testutil v0.52.0-rc.3/go.mod h1:7/Dk+MI/JNkrYUYtR/LQG750a99T1/nCVNFjc7rLq4g= +github.com/DataDog/viper v1.12.0 h1:FufyZpZPxyszafSV5B8Q8it75IhhuJwH0T7QpT6HnD0= +github.com/DataDog/viper v1.12.0/go.mod h1:wDdUVJ2SHaMaPrCZrlRCObwkubsX8j5sme3LaR/SGTc= +github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= +github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +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= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/antihax/optional v0.0.0-20180407024304-ca021399b1a6/go.mod h1:V8iCPQYkqmusNa815XgQio277wI47sdRh1dUOLdyC6Q= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/benbjohnson/clock v1.3.5 h1:VvXlSJBzZpA/zum6Sj74hxwYI2DIxRWuNIoXAzHZz5o= +github.com/benbjohnson/clock v1.3.5/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +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= +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= +github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575 h1:kHaBemcxl8o/pQ5VM1c8PVE1PubbNx3mjUr09OqWGCs= +github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575/go.mod h1:9d6lWj8KzO/fd/NrVaLscBKmPigpZpn5YawRPw+e3Yo= +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/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/bbolt v1.3.3/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +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/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +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/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= +github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= +github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +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= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY= +github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= +github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +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.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= +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.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +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.4.1/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.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.2/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.5/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.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +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-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= +github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-middleware v1.2.0/go.mod h1:mJzapYve32yjrKlk9GbyCZHuPgZsrbyIbyKhSzOpg6s= +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.13.0/go.mod h1:8XEsbTttt/W+VvjtQhLACqCisSPWTxCZ7sBRjU6iH9c= +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/hectane/go-acl v0.0.0-20190604041725-da78bae5fc95 h1:S4qyfL2sEm5Budr4KVMyEniCy+PbS55651I/a+Kn/NQ= +github.com/hectane/go-acl v0.0.0-20190604041725-da78bae5fc95/go.mod h1:QiyDdbZLaJ/mZP4Zwc9g2QsfaEA4o7XvvgZegSci5/E= +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/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +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/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 h1:iQTw/8FWTuc7uiaSepXwyf3o52HaUYcV+Tu66S3F5GA= +github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +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/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= +github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= +github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4= +github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= +github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +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/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= +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/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw= +github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +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.4.1/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= +github.com/prometheus/client_golang v1.17.0 h1:rl2sfwZMtSthVU752MqfjQozy7blglC+1SOtjMAMh+Q= +github.com/prometheus/client_golang v1.17.0/go.mod h1:VeL+gMmOAxkS2IqfCq0ZmHSL+LjWfWDUmp1mBz9JgUY= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= +github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= +github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= +github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY= +github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= +github.com/prometheus/procfs v0.11.1 h1:xRC8Iq1yyca5ypa9n1EZnWZkt7dwcoRPQwX/5gwaUuI= +github.com/prometheus/procfs v0.11.1/go.mod h1:eesXgaPo1q7lBpVMoMy0ZOFTth9hBn4W/y0/p/ScXhY= +github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= +github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/shirou/gopsutil/v3 v3.23.12 h1:z90NtUkp3bMtmICZKpC4+WaknU1eXtp5vtbQ11DgpE4= +github.com/shirou/gopsutil/v3 v3.23.12/go.mod h1:1FrWgea594Jp7qmjHUUPlJDTPgcsb9mGnXDxavtikzM= +github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM= +github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ= +github.com/shoenig/test v0.6.4 h1:kVTaSd7WLz5WZ2IaoM0RSzRsUD+m8wRR+5qvntpn4LU= +github.com/shoenig/test v0.6.4/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/afero v1.9.5 h1:stMpOSZFs//0Lv29HduCmli3GUfpFoF3Y1Q/aXj/wVM= +github.com/spf13/afero v1.9.5/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA= +github.com/spf13/cast v1.5.1/go.mod h1:b9PdjNptOpzXr7Rq1q9gJML/2cdGQAo69NKzQ10KN48= +github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I= +github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0= +github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk= +github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +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/spf13/viper v1.6.2/go.mod h1:t3iDnF5Jlj76alVNuyFBk5oUMCvsrkbvZK0WQdfDi5k= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +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.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= +github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= +github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= +github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= +github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= +github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tmc/grpc-websocket-proxy v0.0.0-20200122045848-3419fae592fc/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= +github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= +github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +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= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yusufpapurcu/wmi v1.2.3 h1:E1ctvB7uKFMOJw3fdOW32DwGE9I7t++CRUEMKvFoFiw= +github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +go.opentelemetry.io/otel v1.20.0 h1:vsb/ggIY+hUjD/zCAQHpzTmndPqv/ml2ArbsbfBYTAc= +go.opentelemetry.io/otel v1.20.0/go.mod h1:oUIGj3D77RwJdM6PPZImDpSZGDvkD9fhesHny69JFrs= +go.opentelemetry.io/otel/exporters/prometheus v0.42.0 h1:jwV9iQdvp38fxXi8ZC+lNpxjK16MRcZlpDYvbuO1FiA= +go.opentelemetry.io/otel/exporters/prometheus v0.42.0/go.mod h1:f3bYiqNqhoPxkvI2LrXqQVC546K7BuRDL/kKuxkujhA= +go.opentelemetry.io/otel/metric v1.20.0 h1:ZlrO8Hu9+GAhnepmRGhSU7/VkpjrNowxRN9GyKR4wzA= +go.opentelemetry.io/otel/metric v1.20.0/go.mod h1:90DRw3nfK4D7Sm/75yQ00gTJxtkBxX+wu6YaNymbpVM= +go.opentelemetry.io/otel/sdk v1.20.0 h1:5Jf6imeFZlZtKv9Qbo6qt2ZkmWtdWx/wzcCbNUlAWGM= +go.opentelemetry.io/otel/sdk v1.20.0/go.mod h1:rmkSx1cZCm/tn16iWDn1GQbLtsW/LvsdEEFzCSRM6V0= +go.opentelemetry.io/otel/sdk/metric v1.20.0 h1:5eD40l/H2CqdKmbSV7iht2KMK0faAIL2pVYzJOWobGk= +go.opentelemetry.io/otel/sdk/metric v1.20.0/go.mod h1:AGvpC+YF/jblITiafMTYgvRBUiwi9hZf0EYE2E5XlS8= +go.opentelemetry.io/otel/trace v1.20.0 h1:+yxVAPZPbQhbC3OfAkeIVTky6iTFpcr4SiY9om7mXSQ= +go.opentelemetry.io/otel/trace v1.20.0/go.mod h1:HJSK7F/hA5RlzpZ0zKDCHCDHm556LCDtKaAo6JmBFUU= +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.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= +go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= +go.uber.org/dig v1.17.0 h1:5Chju+tUvcC+N7N6EV08BJz41UZuO3BmHcN4A287ZLI= +go.uber.org/dig v1.17.0/go.mod h1:rTxpf7l5I0eBTlE6/9RL+lDybC7WFwY2QH55ZSjy1mU= +go.uber.org/fx v1.18.2 h1:bUNI6oShr+OVFQeU8cDNbnN7VFsu+SsjHzUF51V/GAU= +go.uber.org/fx v1.18.2/go.mod h1:g0V1KMQ66zIRk8bLu3Ea5Jt2w/cHlOIp4wdRsgh0JaY= +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.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= +go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.14.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= +go.uber.org/zap v1.23.0 h1:OjGQ5KQDEUawVHxNwQgPpiypGHOxo2mNZsOqTak4fFY= +go.uber.org/zap v1.23.0/go.mod h1:D+nX8jyLsMHMYrln8A0rJjFt/T/9/bGgIhAqxv5URuY= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +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-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= +golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 h1:LfspQV/FYTatPTr/3HzIcmiUFH7PGP+OQ6mgDYo3yuQ= +golang.org/x/exp v0.0.0-20240222234643-814bf88cf225/go.mod h1:CxmFvTBINI24O/j8iY7H1xHzx2i4OsyguNBmN/uPtqc= +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/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= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +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.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8= +golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +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-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/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-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/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-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= +golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/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-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +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-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/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-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/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-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190529164535-6a60838ec259/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/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-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220829200755-d48e67d00261/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/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-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-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/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-20190816200558-6889da9d5479/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-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= +golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +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-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-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +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-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-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +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= +golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= +golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= +golang.org/x/tools v0.18.0 h1:k8NLag8AGHnn+PHbl7g43CtqZAwG60vZkLqgyZgIHgQ= +golang.org/x/tools v0.18.0/go.mod h1:GL7B4CwcLLeo59yx/9UWWuNOW1n3VZ4f5axWfML7Lcg= +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/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= +google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= +google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= +google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= +google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= +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/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20190927181202-20e1ac93f88c/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= +google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +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-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +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.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= +google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= +google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +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.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= +google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +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-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +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.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.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/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-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= +rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= diff --git a/pkg/logs/sources/go.mod b/pkg/logs/sources/go.mod new file mode 100644 index 00000000000000..cc5890f11c21f4 --- /dev/null +++ b/pkg/logs/sources/go.mod @@ -0,0 +1,85 @@ +module github.com/DataDog/datadog-agent/pkg/logs/sources + +go 1.21.7 + +replace ( + github.com/DataDog/datadog-agent/comp/core/secrets => ../../../comp/core/secrets + github.com/DataDog/datadog-agent/comp/logs/agent/config => ../../../comp/logs/agent/config + github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../collector/check/defaults + github.com/DataDog/datadog-agent/pkg/config/env => ../../config/env + github.com/DataDog/datadog-agent/pkg/config/model => ../../config/model + github.com/DataDog/datadog-agent/pkg/config/setup => ../../config/setup + github.com/DataDog/datadog-agent/pkg/config/utils => ../../config/utils + github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../status/utils + github.com/DataDog/datadog-agent/pkg/util/executable => ../../util/executable + github.com/DataDog/datadog-agent/pkg/util/filesystem => ../../util/filesystem + github.com/DataDog/datadog-agent/pkg/util/hostname/validate => ../../util/hostname/validate + github.com/DataDog/datadog-agent/pkg/util/log => ../../util/log + github.com/DataDog/datadog-agent/pkg/util/optional => ../../util/optional + github.com/DataDog/datadog-agent/pkg/util/pointer => ../../util/pointer + github.com/DataDog/datadog-agent/pkg/util/scrubber => ../../util/scrubber + github.com/DataDog/datadog-agent/pkg/util/statstracker => ../../util/statstracker + github.com/DataDog/datadog-agent/pkg/util/system => ../../util/system + github.com/DataDog/datadog-agent/pkg/util/system/socket => ../../util/system/socket + github.com/DataDog/datadog-agent/pkg/util/winutil => ../../util/winutil + github.com/DataDog/datadog-agent/pkg/version => ../../version +) + +require ( + github.com/DataDog/datadog-agent/comp/logs/agent/config v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/logs/status/utils v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/util/log v0.52.0-rc.3 + github.com/DataDog/datadog-agent/pkg/util/statstracker v0.52.0-rc.3 + github.com/stretchr/testify v1.8.4 +) + +require ( + github.com/DataDog/datadog-agent/comp/core/secrets v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/collector/check/defaults v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/config/env v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/config/model v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/config/setup v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/config/utils v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/executable v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/filesystem v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/hostname/validate v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/optional v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/pointer v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/scrubber v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/system v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/system/socket v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/winutil v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/version v0.52.0-rc.3 // indirect + github.com/DataDog/viper v1.12.0 // indirect + github.com/Microsoft/go-winio v0.6.1 // indirect + github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/fsnotify/fsnotify v1.7.0 // indirect + github.com/go-ole/go-ole v1.2.6 // indirect + github.com/hashicorp/hcl v1.0.0 // indirect + github.com/hectane/go-acl v0.0.0-20190604041725-da78bae5fc95 // indirect + github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 // indirect + github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect + github.com/magiconair/properties v1.8.1 // indirect + github.com/mitchellh/mapstructure v1.1.2 // indirect + github.com/pelletier/go-toml v1.2.0 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect + github.com/shirou/gopsutil/v3 v3.23.12 // indirect + github.com/shoenig/go-m1cpu v0.1.6 // indirect + github.com/spf13/afero v1.1.2 // indirect + github.com/spf13/cast v1.5.1 // indirect + github.com/spf13/jwalterweatherman v1.0.0 // indirect + github.com/spf13/pflag v1.0.5 // indirect + github.com/tklauser/go-sysconf v0.3.12 // indirect + github.com/tklauser/numcpus v0.6.1 // indirect + github.com/yusufpapurcu/wmi v1.2.3 // indirect + go.uber.org/atomic v1.11.0 // indirect + golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect + golang.org/x/mod v0.15.0 // indirect + golang.org/x/sys v0.17.0 // indirect + golang.org/x/text v0.9.0 // indirect + golang.org/x/tools v0.18.0 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect +) diff --git a/pkg/logs/sources/go.sum b/pkg/logs/sources/go.sum new file mode 100644 index 00000000000000..65c98677397f8d --- /dev/null +++ b/pkg/logs/sources/go.sum @@ -0,0 +1,363 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/DataDog/datadog-agent/comp/core/config v0.52.0-rc.3 h1:N7cJMtcW9cmybQqwv421dXcfJEBtfRPacF9nBN3K0Iw= +github.com/DataDog/datadog-agent/comp/core/config v0.52.0-rc.3/go.mod h1:3s80Ae8qaPOWpwM75dnM1M9YWkr6+ckA9TKU2+/sa7Q= +github.com/DataDog/datadog-agent/comp/core/flare/types v0.52.0-rc.3 h1:pIGSbylKbhD1s06yGED9t9eFYKj2myu46k2OOIUCXAs= +github.com/DataDog/datadog-agent/comp/core/flare/types v0.52.0-rc.3/go.mod h1:h0h6cm8eqb1JnuqHMCdTir+c4IUlOUnOy6xrmvhQXOY= +github.com/DataDog/datadog-agent/comp/core/telemetry v0.52.0-rc.3 h1:+x4UVcnF4bSpSrWlu0e8LhmgcTlN7jH1XBodIist3wo= +github.com/DataDog/datadog-agent/comp/core/telemetry v0.52.0-rc.3/go.mod h1:d8HdAOKvYvCuXbY2ccGbhcJlABgg9qJkpx0WESJl0dE= +github.com/DataDog/datadog-agent/pkg/telemetry v0.52.0-rc.3 h1:WO0MM7nHQdT3LYc2VQbBUut0aGz0L92CF27vWfRbetE= +github.com/DataDog/datadog-agent/pkg/telemetry v0.52.0-rc.3/go.mod h1:zAr+W+gzODxPhlq9qVG1UwvItHRk+n/9XHXJ5Myeyp8= +github.com/DataDog/datadog-agent/pkg/util/fxutil v0.52.0-rc.3 h1:nX/9kjs+9Rb/fJVsPKWiw1pvVS8fHG5pum2C8GtheWI= +github.com/DataDog/datadog-agent/pkg/util/fxutil v0.52.0-rc.3/go.mod h1:+ViwDZ54Ox34yYqgYozTFx7xjXG/+IhhudfE1Nx/9+A= +github.com/DataDog/datadog-agent/pkg/util/testutil v0.52.0-rc.3 h1:C9hoL8b5XPv4PSToaUo3BmzS3HrcDti4XSXd3BJf4fU= +github.com/DataDog/datadog-agent/pkg/util/testutil v0.52.0-rc.3/go.mod h1:7/Dk+MI/JNkrYUYtR/LQG750a99T1/nCVNFjc7rLq4g= +github.com/DataDog/viper v1.12.0 h1:FufyZpZPxyszafSV5B8Q8it75IhhuJwH0T7QpT6HnD0= +github.com/DataDog/viper v1.12.0/go.mod h1:wDdUVJ2SHaMaPrCZrlRCObwkubsX8j5sme3LaR/SGTc= +github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= +github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +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= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/antihax/optional v0.0.0-20180407024304-ca021399b1a6/go.mod h1:V8iCPQYkqmusNa815XgQio277wI47sdRh1dUOLdyC6Q= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +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= +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +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.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= +github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575 h1:kHaBemcxl8o/pQ5VM1c8PVE1PubbNx3mjUr09OqWGCs= +github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575/go.mod h1:9d6lWj8KzO/fd/NrVaLscBKmPigpZpn5YawRPw+e3Yo= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/bbolt v1.3.3/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +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/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= +github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= +github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY= +github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= +github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +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.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +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.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-middleware v1.2.0/go.mod h1:mJzapYve32yjrKlk9GbyCZHuPgZsrbyIbyKhSzOpg6s= +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.13.0/go.mod h1:8XEsbTttt/W+VvjtQhLACqCisSPWTxCZ7sBRjU6iH9c= +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/hectane/go-acl v0.0.0-20190604041725-da78bae5fc95 h1:S4qyfL2sEm5Budr4KVMyEniCy+PbS55651I/a+Kn/NQ= +github.com/hectane/go-acl v0.0.0-20190604041725-da78bae5fc95/go.mod h1:QiyDdbZLaJ/mZP4Zwc9g2QsfaEA4o7XvvgZegSci5/E= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 h1:iQTw/8FWTuc7uiaSepXwyf3o52HaUYcV+Tu66S3F5GA= +github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +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/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= +github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= +github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4= +github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= +github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.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/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw= +github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +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.4.1/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= +github.com/prometheus/client_golang v1.17.0 h1:rl2sfwZMtSthVU752MqfjQozy7blglC+1SOtjMAMh+Q= +github.com/prometheus/client_golang v1.17.0/go.mod h1:VeL+gMmOAxkS2IqfCq0ZmHSL+LjWfWDUmp1mBz9JgUY= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= +github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= +github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= +github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY= +github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= +github.com/prometheus/procfs v0.11.1 h1:xRC8Iq1yyca5ypa9n1EZnWZkt7dwcoRPQwX/5gwaUuI= +github.com/prometheus/procfs v0.11.1/go.mod h1:eesXgaPo1q7lBpVMoMy0ZOFTth9hBn4W/y0/p/ScXhY= +github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/shirou/gopsutil/v3 v3.23.12 h1:z90NtUkp3bMtmICZKpC4+WaknU1eXtp5vtbQ11DgpE4= +github.com/shirou/gopsutil/v3 v3.23.12/go.mod h1:1FrWgea594Jp7qmjHUUPlJDTPgcsb9mGnXDxavtikzM= +github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM= +github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ= +github.com/shoenig/test v0.6.4 h1:kVTaSd7WLz5WZ2IaoM0RSzRsUD+m8wRR+5qvntpn4LU= +github.com/shoenig/test v0.6.4/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spf13/afero v1.1.2 h1:m8/z1t7/fwjysjQRYbP0RD+bUIF/8tJwPdEZsI83ACI= +github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA= +github.com/spf13/cast v1.5.1/go.mod h1:b9PdjNptOpzXr7Rq1q9gJML/2cdGQAo69NKzQ10KN48= +github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I= +github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0= +github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk= +github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +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/spf13/viper v1.6.2/go.mod h1:t3iDnF5Jlj76alVNuyFBk5oUMCvsrkbvZK0WQdfDi5k= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +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.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= +github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= +github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= +github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= +github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= +github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tmc/grpc-websocket-proxy v0.0.0-20200122045848-3419fae592fc/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= +github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= +github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/yusufpapurcu/wmi v1.2.3 h1:E1ctvB7uKFMOJw3fdOW32DwGE9I7t++CRUEMKvFoFiw= +github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.opentelemetry.io/otel v1.20.0 h1:vsb/ggIY+hUjD/zCAQHpzTmndPqv/ml2ArbsbfBYTAc= +go.opentelemetry.io/otel v1.20.0/go.mod h1:oUIGj3D77RwJdM6PPZImDpSZGDvkD9fhesHny69JFrs= +go.opentelemetry.io/otel/exporters/prometheus v0.42.0 h1:jwV9iQdvp38fxXi8ZC+lNpxjK16MRcZlpDYvbuO1FiA= +go.opentelemetry.io/otel/exporters/prometheus v0.42.0/go.mod h1:f3bYiqNqhoPxkvI2LrXqQVC546K7BuRDL/kKuxkujhA= +go.opentelemetry.io/otel/metric v1.20.0 h1:ZlrO8Hu9+GAhnepmRGhSU7/VkpjrNowxRN9GyKR4wzA= +go.opentelemetry.io/otel/metric v1.20.0/go.mod h1:90DRw3nfK4D7Sm/75yQ00gTJxtkBxX+wu6YaNymbpVM= +go.opentelemetry.io/otel/sdk v1.20.0 h1:5Jf6imeFZlZtKv9Qbo6qt2ZkmWtdWx/wzcCbNUlAWGM= +go.opentelemetry.io/otel/sdk v1.20.0/go.mod h1:rmkSx1cZCm/tn16iWDn1GQbLtsW/LvsdEEFzCSRM6V0= +go.opentelemetry.io/otel/sdk/metric v1.20.0 h1:5eD40l/H2CqdKmbSV7iht2KMK0faAIL2pVYzJOWobGk= +go.opentelemetry.io/otel/sdk/metric v1.20.0/go.mod h1:AGvpC+YF/jblITiafMTYgvRBUiwi9hZf0EYE2E5XlS8= +go.opentelemetry.io/otel/trace v1.20.0 h1:+yxVAPZPbQhbC3OfAkeIVTky6iTFpcr4SiY9om7mXSQ= +go.opentelemetry.io/otel/trace v1.20.0/go.mod h1:HJSK7F/hA5RlzpZ0zKDCHCDHm556LCDtKaAo6JmBFUU= +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.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= +go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= +go.uber.org/dig v1.17.0 h1:5Chju+tUvcC+N7N6EV08BJz41UZuO3BmHcN4A287ZLI= +go.uber.org/dig v1.17.0/go.mod h1:rTxpf7l5I0eBTlE6/9RL+lDybC7WFwY2QH55ZSjy1mU= +go.uber.org/fx v1.18.2 h1:bUNI6oShr+OVFQeU8cDNbnN7VFsu+SsjHzUF51V/GAU= +go.uber.org/fx v1.18.2/go.mod h1:g0V1KMQ66zIRk8bLu3Ea5Jt2w/cHlOIp4wdRsgh0JaY= +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.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.14.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= +go.uber.org/zap v1.23.0 h1:OjGQ5KQDEUawVHxNwQgPpiypGHOxo2mNZsOqTak4fFY= +go.uber.org/zap v1.23.0/go.mod h1:D+nX8jyLsMHMYrln8A0rJjFt/T/9/bGgIhAqxv5URuY= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 h1:LfspQV/FYTatPTr/3HzIcmiUFH7PGP+OQ6mgDYo3yuQ= +golang.org/x/exp v0.0.0-20240222234643-814bf88cf225/go.mod h1:CxmFvTBINI24O/j8iY7H1xHzx2i4OsyguNBmN/uPtqc= +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.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8= +golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +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-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181220203305-927f97764cc3/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-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191002035440-2ec189313ef0/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/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-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.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/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-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190529164535-6a60838ec259/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20220829200755-d48e67d00261/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/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-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-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +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= +golang.org/x/tools v0.18.0 h1:k8NLag8AGHnn+PHbl7g43CtqZAwG60vZkLqgyZgIHgQ= +golang.org/x/tools v0.18.0/go.mod h1:GL7B4CwcLLeo59yx/9UWWuNOW1n3VZ4f5axWfML7Lcg= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/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-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190927181202-20e1ac93f88c/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= +google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +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-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +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.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.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/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= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= diff --git a/pkg/logs/sources/replaceable_source.go b/pkg/logs/sources/replaceable_source.go index 2ec68dedfa2453..4caa6a52f35d5c 100644 --- a/pkg/logs/sources/replaceable_source.go +++ b/pkg/logs/sources/replaceable_source.go @@ -10,7 +10,7 @@ import ( "sync" "github.com/DataDog/datadog-agent/comp/logs/agent/config" - "github.com/DataDog/datadog-agent/pkg/logs/internal/status" + status "github.com/DataDog/datadog-agent/pkg/logs/status/utils" ) // ReplaceableSource is a thread safe wrapper for a LogSource that allows it to be replaced with a new one. diff --git a/pkg/logs/sources/source.go b/pkg/logs/sources/source.go index de93469b25cb17..73e44e55b5b2d5 100644 --- a/pkg/logs/sources/source.go +++ b/pkg/logs/sources/source.go @@ -12,7 +12,7 @@ import ( "time" "github.com/DataDog/datadog-agent/comp/logs/agent/config" - "github.com/DataDog/datadog-agent/pkg/logs/internal/status" + status "github.com/DataDog/datadog-agent/pkg/logs/status/utils" "github.com/DataDog/datadog-agent/pkg/util/statstracker" ) diff --git a/pkg/logs/status/builder.go b/pkg/logs/status/builder.go index e2e048ea06d1b5..9dc7e1f1db6eef 100644 --- a/pkg/logs/status/builder.go +++ b/pkg/logs/status/builder.go @@ -15,8 +15,8 @@ import ( "go.uber.org/atomic" "github.com/DataDog/datadog-agent/comp/logs/agent/config" - "github.com/DataDog/datadog-agent/pkg/logs/internal/status" sourcesPkg "github.com/DataDog/datadog-agent/pkg/logs/sources" + status "github.com/DataDog/datadog-agent/pkg/logs/status/utils" "github.com/DataDog/datadog-agent/pkg/logs/tailers" "github.com/DataDog/datadog-agent/pkg/util" ) diff --git a/pkg/logs/status/status_test.go b/pkg/logs/status/status_test.go index 4210de8693f67c..959d23332691de 100644 --- a/pkg/logs/status/status_test.go +++ b/pkg/logs/status/status_test.go @@ -15,9 +15,9 @@ import ( "github.com/DataDog/datadog-agent/comp/logs/agent/config" pkgConfig "github.com/DataDog/datadog-agent/pkg/config" - "github.com/DataDog/datadog-agent/pkg/logs/internal/util/testutils" "github.com/DataDog/datadog-agent/pkg/logs/metrics" "github.com/DataDog/datadog-agent/pkg/logs/sources" + "github.com/DataDog/datadog-agent/pkg/logs/util/testutils" ) func initStatus() { diff --git a/pkg/logs/status/statusinterface/go.mod b/pkg/logs/status/statusinterface/go.mod new file mode 100644 index 00000000000000..be5c2ce808a896 --- /dev/null +++ b/pkg/logs/status/statusinterface/go.mod @@ -0,0 +1,3 @@ +module github.com/DataDog/datadog-agent/pkg/logs/status/statusinterface + +go 1.21.7 diff --git a/pkg/logs/status/statusinterface/go.sum b/pkg/logs/status/statusinterface/go.sum new file mode 100644 index 00000000000000..e69de29bb2d1d6 diff --git a/pkg/logs/status/statusinterface/status.go b/pkg/logs/status/statusinterface/status.go index f1bded80c4a8ea..9ae507e56e44e9 100644 --- a/pkg/logs/status/statusinterface/status.go +++ b/pkg/logs/status/statusinterface/status.go @@ -6,12 +6,8 @@ // Package statusinterface describes status methods required in logs agent modules package statusinterface -import "github.com/DataDog/datadog-agent/comp/core/status" - // Status is the type for status methods type Status interface { - status.Provider - // AddGlobalWarning keeps track of a warning message to display on the status. AddGlobalWarning(key string, warning string) diff --git a/pkg/logs/status/statusinterface/status_mock.go b/pkg/logs/status/statusinterface/status_mock.go index 73c30455427319..751455bb605c5a 100644 --- a/pkg/logs/status/statusinterface/status_mock.go +++ b/pkg/logs/status/statusinterface/status_mock.go @@ -5,30 +5,8 @@ package statusinterface -import "io" - type mockStatusProvider struct{} -func (mp *mockStatusProvider) Name() string { - return "Logs Agent" -} - -func (mp *mockStatusProvider) Section() string { - return "Logs Agent" -} - -func (mp *mockStatusProvider) JSON(_ bool, _ map[string]interface{}) error { - return nil -} - -func (mp *mockStatusProvider) Text(_ bool, _ io.Writer) error { - return nil -} - -func (mp *mockStatusProvider) HTML(_ bool, _ io.Writer) error { - return nil -} - // AddGlobalWarning keeps track of a warning message to display on the status. func (mp *mockStatusProvider) AddGlobalWarning(string, string) { } diff --git a/pkg/logs/status/utils/go.mod b/pkg/logs/status/utils/go.mod new file mode 100644 index 00000000000000..73e9df59a96fa6 --- /dev/null +++ b/pkg/logs/status/utils/go.mod @@ -0,0 +1,14 @@ +module github.com/DataDog/datadog-agent/pkg/logs/status/utils + +go 1.21.7 + +require ( + github.com/stretchr/testify v1.8.4 + go.uber.org/atomic v1.11.0 +) + +require ( + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect +) diff --git a/pkg/logs/status/utils/go.sum b/pkg/logs/status/utils/go.sum new file mode 100644 index 00000000000000..9fc084119fb081 --- /dev/null +++ b/pkg/logs/status/utils/go.sum @@ -0,0 +1,12 @@ +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/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= +go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/pkg/logs/internal/status/info.go b/pkg/logs/status/utils/info.go similarity index 99% rename from pkg/logs/internal/status/info.go rename to pkg/logs/status/utils/info.go index 4914423e3cb422..c102fddfd28021 100644 --- a/pkg/logs/internal/status/info.go +++ b/pkg/logs/status/utils/info.go @@ -4,7 +4,7 @@ // Copyright 2016-present Datadog, Inc. //nolint:revive // TODO(AML) Fix revive linter -package status +package utils import ( "fmt" diff --git a/pkg/logs/internal/status/info_test.go b/pkg/logs/status/utils/info_test.go similarity index 97% rename from pkg/logs/internal/status/info_test.go rename to pkg/logs/status/utils/info_test.go index cfaf9c13a04f40..bb09114146175e 100644 --- a/pkg/logs/internal/status/info_test.go +++ b/pkg/logs/status/utils/info_test.go @@ -3,7 +3,7 @@ // This product includes software developed at Datadog (https://www.datadoghq.com/). // Copyright 2023-present Datadog, Inc. -package status +package utils import ( "testing" diff --git a/pkg/logs/internal/status/status.go b/pkg/logs/status/utils/status.go similarity index 99% rename from pkg/logs/internal/status/status.go rename to pkg/logs/status/utils/status.go index 817dc42a5cec2a..f4c95344a207a9 100644 --- a/pkg/logs/internal/status/status.go +++ b/pkg/logs/status/utils/status.go @@ -3,7 +3,7 @@ // This product includes software developed at Datadog (https://www.datadoghq.com/). // Copyright 2016-present Datadog, Inc. -package status +package utils import ( "fmt" diff --git a/pkg/logs/internal/status/status_test.go b/pkg/logs/status/utils/status_test.go similarity index 98% rename from pkg/logs/internal/status/status_test.go rename to pkg/logs/status/utils/status_test.go index 8fe6e3d377c6bd..4c07f62262ff45 100644 --- a/pkg/logs/internal/status/status_test.go +++ b/pkg/logs/status/utils/status_test.go @@ -3,7 +3,7 @@ // This product includes software developed at Datadog (https://www.datadoghq.com/). // Copyright 2016-present Datadog, Inc. -package status +package utils import ( "errors" diff --git a/pkg/logs/tailers/docker/tailer.go b/pkg/logs/tailers/docker/tailer.go index 730fac59d0f8cd..89a5de22ba29eb 100644 --- a/pkg/logs/tailers/docker/tailer.go +++ b/pkg/logs/tailers/docker/tailer.go @@ -19,10 +19,10 @@ import ( "github.com/DataDog/datadog-agent/pkg/logs/internal/decoder" "github.com/DataDog/datadog-agent/pkg/logs/internal/framer" "github.com/DataDog/datadog-agent/pkg/logs/internal/parsers/dockerstream" - "github.com/DataDog/datadog-agent/pkg/logs/internal/status" "github.com/DataDog/datadog-agent/pkg/logs/internal/tag" "github.com/DataDog/datadog-agent/pkg/logs/message" "github.com/DataDog/datadog-agent/pkg/logs/sources" + status "github.com/DataDog/datadog-agent/pkg/logs/status/utils" "github.com/DataDog/datadog-agent/pkg/util/containers" dockerutil "github.com/DataDog/datadog-agent/pkg/util/docker" "github.com/DataDog/datadog-agent/pkg/util/log" diff --git a/pkg/logs/tailers/file/tailer.go b/pkg/logs/tailers/file/tailer.go index 7f07c14c1697d4..2b2fc504a71e5c 100644 --- a/pkg/logs/tailers/file/tailer.go +++ b/pkg/logs/tailers/file/tailer.go @@ -23,11 +23,11 @@ import ( "github.com/benbjohnson/clock" "github.com/DataDog/datadog-agent/pkg/logs/internal/decoder" - "github.com/DataDog/datadog-agent/pkg/logs/internal/status" "github.com/DataDog/datadog-agent/pkg/logs/internal/tag" "github.com/DataDog/datadog-agent/pkg/logs/internal/util" "github.com/DataDog/datadog-agent/pkg/logs/message" "github.com/DataDog/datadog-agent/pkg/logs/sources" + status "github.com/DataDog/datadog-agent/pkg/logs/status/utils" ) // Tailer tails a file, decodes the messages it contains, and passes them to a diff --git a/pkg/logs/tailers/file/tailer_test.go b/pkg/logs/tailers/file/tailer_test.go index b1b7830dc2c3e5..68e3fedb3066bb 100644 --- a/pkg/logs/tailers/file/tailer_test.go +++ b/pkg/logs/tailers/file/tailer_test.go @@ -22,9 +22,9 @@ import ( "github.com/DataDog/datadog-agent/comp/logs/agent/config" coreConfig "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/logs/internal/decoder" - "github.com/DataDog/datadog-agent/pkg/logs/internal/status" "github.com/DataDog/datadog-agent/pkg/logs/message" "github.com/DataDog/datadog-agent/pkg/logs/sources" + status "github.com/DataDog/datadog-agent/pkg/logs/status/utils" ) var chanSize = 10 diff --git a/pkg/logs/tailers/journald/tailer.go b/pkg/logs/tailers/journald/tailer.go index d484e5d1f5b231..281cfa07dc3eaf 100644 --- a/pkg/logs/tailers/journald/tailer.go +++ b/pkg/logs/tailers/journald/tailer.go @@ -20,11 +20,11 @@ import ( "github.com/DataDog/datadog-agent/pkg/logs/internal/decoder" "github.com/DataDog/datadog-agent/pkg/logs/internal/framer" "github.com/DataDog/datadog-agent/pkg/logs/internal/parsers/noop" - "github.com/DataDog/datadog-agent/pkg/logs/internal/processor" - "github.com/DataDog/datadog-agent/pkg/logs/internal/status" "github.com/DataDog/datadog-agent/pkg/logs/internal/tag" "github.com/DataDog/datadog-agent/pkg/logs/message" + "github.com/DataDog/datadog-agent/pkg/logs/processor" "github.com/DataDog/datadog-agent/pkg/logs/sources" + status "github.com/DataDog/datadog-agent/pkg/logs/status/utils" "github.com/DataDog/datadog-agent/pkg/telemetry" "github.com/DataDog/datadog-agent/pkg/util/log" ) diff --git a/pkg/logs/tailers/socket/tailer.go b/pkg/logs/tailers/socket/tailer.go index 90082352f0aa96..82d28c953dd810 100644 --- a/pkg/logs/tailers/socket/tailer.go +++ b/pkg/logs/tailers/socket/tailer.go @@ -14,9 +14,9 @@ import ( "github.com/DataDog/datadog-agent/pkg/logs/internal/decoder" "github.com/DataDog/datadog-agent/pkg/logs/internal/parsers/noop" - "github.com/DataDog/datadog-agent/pkg/logs/internal/status" "github.com/DataDog/datadog-agent/pkg/logs/message" "github.com/DataDog/datadog-agent/pkg/logs/sources" + status "github.com/DataDog/datadog-agent/pkg/logs/status/utils" ) // Tailer reads data from a net.Conn. It uses a `read` callback to be generic diff --git a/pkg/logs/tailers/tailer.go b/pkg/logs/tailers/tailer.go index 53b4c08f4e515e..d100b96ec72a29 100644 --- a/pkg/logs/tailers/tailer.go +++ b/pkg/logs/tailers/tailer.go @@ -7,7 +7,7 @@ package tailers import ( - "github.com/DataDog/datadog-agent/pkg/logs/internal/status" + status "github.com/DataDog/datadog-agent/pkg/logs/status/utils" ) // Tailer is the base interface for a tailer. diff --git a/pkg/logs/tailers/tailer_tracker_test.go b/pkg/logs/tailers/tailer_tracker_test.go index 64821cb49039bf..e4e5e1582b8e7f 100644 --- a/pkg/logs/tailers/tailer_tracker_test.go +++ b/pkg/logs/tailers/tailer_tracker_test.go @@ -8,7 +8,7 @@ package tailers import ( "testing" - "github.com/DataDog/datadog-agent/pkg/logs/internal/status" + status "github.com/DataDog/datadog-agent/pkg/logs/status/utils" assert "github.com/stretchr/testify/require" ) diff --git a/pkg/logs/tailers/windowsevent/tailer.go b/pkg/logs/tailers/windowsevent/tailer.go index 2599b2172f517d..2f28ca1c326106 100644 --- a/pkg/logs/tailers/windowsevent/tailer.go +++ b/pkg/logs/tailers/windowsevent/tailer.go @@ -21,10 +21,10 @@ import ( "github.com/DataDog/datadog-agent/pkg/logs/internal/decoder" "github.com/DataDog/datadog-agent/pkg/logs/internal/framer" "github.com/DataDog/datadog-agent/pkg/logs/internal/parsers/noop" - "github.com/DataDog/datadog-agent/pkg/logs/internal/processor" - "github.com/DataDog/datadog-agent/pkg/logs/internal/status" "github.com/DataDog/datadog-agent/pkg/logs/message" + "github.com/DataDog/datadog-agent/pkg/logs/processor" "github.com/DataDog/datadog-agent/pkg/logs/sources" + status "github.com/DataDog/datadog-agent/pkg/logs/status/utils" "github.com/DataDog/datadog-agent/pkg/telemetry" "github.com/DataDog/datadog-agent/pkg/util/log" "github.com/DataDog/datadog-agent/pkg/util/strings" diff --git a/pkg/logs/util/testutils/go.mod b/pkg/logs/util/testutils/go.mod new file mode 100644 index 00000000000000..2f4a53475c48d9 --- /dev/null +++ b/pkg/logs/util/testutils/go.mod @@ -0,0 +1,83 @@ +module github.com/DataDog/datadog-agent/pkg/logs/util/testutils + +go 1.21.7 + +replace ( + github.com/DataDog/datadog-agent/comp/core/hostname/hostnameinterface => ../../../../comp/core/hostname/hostnameinterface + github.com/DataDog/datadog-agent/comp/core/secrets => ../../../../comp/core/secrets + github.com/DataDog/datadog-agent/comp/logs/agent/config => ../../../../comp/logs/agent/config + github.com/DataDog/datadog-agent/pkg/collector/check/defaults => ../../../collector/check/defaults + github.com/DataDog/datadog-agent/pkg/config/env => ../../../config/env + github.com/DataDog/datadog-agent/pkg/config/model => ../../../config/model + github.com/DataDog/datadog-agent/pkg/config/setup => ../../../config/setup + github.com/DataDog/datadog-agent/pkg/config/utils => ../../../config/utils + github.com/DataDog/datadog-agent/pkg/logs/sources => ../../sources + github.com/DataDog/datadog-agent/pkg/logs/status/statusinterface => ../../status/statusinterface + github.com/DataDog/datadog-agent/pkg/logs/status/utils => ../../status/utils + github.com/DataDog/datadog-agent/pkg/util/executable => ../../../util/executable + github.com/DataDog/datadog-agent/pkg/util/filesystem => ../../../util/filesystem + github.com/DataDog/datadog-agent/pkg/util/hostname/validate => ../../../util/hostname/validate + github.com/DataDog/datadog-agent/pkg/util/log => ../../../util/log + github.com/DataDog/datadog-agent/pkg/util/optional => ../../../util/optional + github.com/DataDog/datadog-agent/pkg/util/pointer => ../../../util/pointer + github.com/DataDog/datadog-agent/pkg/util/scrubber => ../../../util/scrubber + github.com/DataDog/datadog-agent/pkg/util/statstracker => ../../../util/statstracker + github.com/DataDog/datadog-agent/pkg/util/system => ../../../util/system + github.com/DataDog/datadog-agent/pkg/util/system/socket => ../../../util/system/socket + github.com/DataDog/datadog-agent/pkg/util/winutil => ../../../util/winutil + github.com/DataDog/datadog-agent/pkg/version => ../../../version +) + +require github.com/DataDog/datadog-agent/pkg/logs/sources v0.52.0-rc.3 + +require ( + github.com/DataDog/datadog-agent/comp/core/secrets v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/comp/logs/agent/config v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/collector/check/defaults v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/config/env v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/config/model v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/config/setup v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/config/utils v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/logs/status/utils v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/executable v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/filesystem v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/hostname/validate v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/log v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/optional v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/pointer v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/scrubber v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/statstracker v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/system v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/system/socket v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/util/winutil v0.52.0-rc.3 // indirect + github.com/DataDog/datadog-agent/pkg/version v0.52.0-rc.3 // indirect + github.com/DataDog/viper v1.12.0 // indirect + github.com/Microsoft/go-winio v0.6.1 // indirect + github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575 // indirect + github.com/fsnotify/fsnotify v1.7.0 // indirect + github.com/go-ole/go-ole v1.2.6 // indirect + github.com/hashicorp/hcl v1.0.0 // indirect + github.com/hectane/go-acl v0.0.0-20190604041725-da78bae5fc95 // indirect + github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 // indirect + github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect + github.com/magiconair/properties v1.8.1 // indirect + github.com/mitchellh/mapstructure v1.1.2 // indirect + github.com/pelletier/go-toml v1.2.0 // indirect + github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect + github.com/shirou/gopsutil/v3 v3.23.12 // indirect + github.com/shoenig/go-m1cpu v0.1.6 // indirect + github.com/spf13/afero v1.1.2 // indirect + github.com/spf13/cast v1.5.1 // indirect + github.com/spf13/jwalterweatherman v1.0.0 // indirect + github.com/spf13/pflag v1.0.5 // indirect + github.com/tklauser/go-sysconf v0.3.12 // indirect + github.com/tklauser/numcpus v0.6.1 // indirect + github.com/yusufpapurcu/wmi v1.2.3 // indirect + go.uber.org/atomic v1.11.0 // indirect + golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect + golang.org/x/mod v0.15.0 // indirect + golang.org/x/sys v0.17.0 // indirect + golang.org/x/text v0.9.0 // indirect + golang.org/x/tools v0.18.0 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect +) diff --git a/pkg/logs/util/testutils/go.sum b/pkg/logs/util/testutils/go.sum new file mode 100644 index 00000000000000..65c98677397f8d --- /dev/null +++ b/pkg/logs/util/testutils/go.sum @@ -0,0 +1,363 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/DataDog/datadog-agent/comp/core/config v0.52.0-rc.3 h1:N7cJMtcW9cmybQqwv421dXcfJEBtfRPacF9nBN3K0Iw= +github.com/DataDog/datadog-agent/comp/core/config v0.52.0-rc.3/go.mod h1:3s80Ae8qaPOWpwM75dnM1M9YWkr6+ckA9TKU2+/sa7Q= +github.com/DataDog/datadog-agent/comp/core/flare/types v0.52.0-rc.3 h1:pIGSbylKbhD1s06yGED9t9eFYKj2myu46k2OOIUCXAs= +github.com/DataDog/datadog-agent/comp/core/flare/types v0.52.0-rc.3/go.mod h1:h0h6cm8eqb1JnuqHMCdTir+c4IUlOUnOy6xrmvhQXOY= +github.com/DataDog/datadog-agent/comp/core/telemetry v0.52.0-rc.3 h1:+x4UVcnF4bSpSrWlu0e8LhmgcTlN7jH1XBodIist3wo= +github.com/DataDog/datadog-agent/comp/core/telemetry v0.52.0-rc.3/go.mod h1:d8HdAOKvYvCuXbY2ccGbhcJlABgg9qJkpx0WESJl0dE= +github.com/DataDog/datadog-agent/pkg/telemetry v0.52.0-rc.3 h1:WO0MM7nHQdT3LYc2VQbBUut0aGz0L92CF27vWfRbetE= +github.com/DataDog/datadog-agent/pkg/telemetry v0.52.0-rc.3/go.mod h1:zAr+W+gzODxPhlq9qVG1UwvItHRk+n/9XHXJ5Myeyp8= +github.com/DataDog/datadog-agent/pkg/util/fxutil v0.52.0-rc.3 h1:nX/9kjs+9Rb/fJVsPKWiw1pvVS8fHG5pum2C8GtheWI= +github.com/DataDog/datadog-agent/pkg/util/fxutil v0.52.0-rc.3/go.mod h1:+ViwDZ54Ox34yYqgYozTFx7xjXG/+IhhudfE1Nx/9+A= +github.com/DataDog/datadog-agent/pkg/util/testutil v0.52.0-rc.3 h1:C9hoL8b5XPv4PSToaUo3BmzS3HrcDti4XSXd3BJf4fU= +github.com/DataDog/datadog-agent/pkg/util/testutil v0.52.0-rc.3/go.mod h1:7/Dk+MI/JNkrYUYtR/LQG750a99T1/nCVNFjc7rLq4g= +github.com/DataDog/viper v1.12.0 h1:FufyZpZPxyszafSV5B8Q8it75IhhuJwH0T7QpT6HnD0= +github.com/DataDog/viper v1.12.0/go.mod h1:wDdUVJ2SHaMaPrCZrlRCObwkubsX8j5sme3LaR/SGTc= +github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= +github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +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= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/antihax/optional v0.0.0-20180407024304-ca021399b1a6/go.mod h1:V8iCPQYkqmusNa815XgQio277wI47sdRh1dUOLdyC6Q= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +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= +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +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.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= +github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575 h1:kHaBemcxl8o/pQ5VM1c8PVE1PubbNx3mjUr09OqWGCs= +github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575/go.mod h1:9d6lWj8KzO/fd/NrVaLscBKmPigpZpn5YawRPw+e3Yo= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/bbolt v1.3.3/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +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/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= +github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= +github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY= +github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= +github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +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.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +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.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-middleware v1.2.0/go.mod h1:mJzapYve32yjrKlk9GbyCZHuPgZsrbyIbyKhSzOpg6s= +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.13.0/go.mod h1:8XEsbTttt/W+VvjtQhLACqCisSPWTxCZ7sBRjU6iH9c= +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/hectane/go-acl v0.0.0-20190604041725-da78bae5fc95 h1:S4qyfL2sEm5Budr4KVMyEniCy+PbS55651I/a+Kn/NQ= +github.com/hectane/go-acl v0.0.0-20190604041725-da78bae5fc95/go.mod h1:QiyDdbZLaJ/mZP4Zwc9g2QsfaEA4o7XvvgZegSci5/E= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 h1:iQTw/8FWTuc7uiaSepXwyf3o52HaUYcV+Tu66S3F5GA= +github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +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/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= +github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= +github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4= +github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= +github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.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/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw= +github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +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.4.1/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= +github.com/prometheus/client_golang v1.17.0 h1:rl2sfwZMtSthVU752MqfjQozy7blglC+1SOtjMAMh+Q= +github.com/prometheus/client_golang v1.17.0/go.mod h1:VeL+gMmOAxkS2IqfCq0ZmHSL+LjWfWDUmp1mBz9JgUY= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= +github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= +github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= +github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY= +github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= +github.com/prometheus/procfs v0.11.1 h1:xRC8Iq1yyca5ypa9n1EZnWZkt7dwcoRPQwX/5gwaUuI= +github.com/prometheus/procfs v0.11.1/go.mod h1:eesXgaPo1q7lBpVMoMy0ZOFTth9hBn4W/y0/p/ScXhY= +github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/shirou/gopsutil/v3 v3.23.12 h1:z90NtUkp3bMtmICZKpC4+WaknU1eXtp5vtbQ11DgpE4= +github.com/shirou/gopsutil/v3 v3.23.12/go.mod h1:1FrWgea594Jp7qmjHUUPlJDTPgcsb9mGnXDxavtikzM= +github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM= +github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ= +github.com/shoenig/test v0.6.4 h1:kVTaSd7WLz5WZ2IaoM0RSzRsUD+m8wRR+5qvntpn4LU= +github.com/shoenig/test v0.6.4/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spf13/afero v1.1.2 h1:m8/z1t7/fwjysjQRYbP0RD+bUIF/8tJwPdEZsI83ACI= +github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA= +github.com/spf13/cast v1.5.1/go.mod h1:b9PdjNptOpzXr7Rq1q9gJML/2cdGQAo69NKzQ10KN48= +github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I= +github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0= +github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk= +github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +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/spf13/viper v1.6.2/go.mod h1:t3iDnF5Jlj76alVNuyFBk5oUMCvsrkbvZK0WQdfDi5k= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +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.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= +github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= +github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= +github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= +github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= +github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tmc/grpc-websocket-proxy v0.0.0-20200122045848-3419fae592fc/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= +github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= +github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/yusufpapurcu/wmi v1.2.3 h1:E1ctvB7uKFMOJw3fdOW32DwGE9I7t++CRUEMKvFoFiw= +github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.opentelemetry.io/otel v1.20.0 h1:vsb/ggIY+hUjD/zCAQHpzTmndPqv/ml2ArbsbfBYTAc= +go.opentelemetry.io/otel v1.20.0/go.mod h1:oUIGj3D77RwJdM6PPZImDpSZGDvkD9fhesHny69JFrs= +go.opentelemetry.io/otel/exporters/prometheus v0.42.0 h1:jwV9iQdvp38fxXi8ZC+lNpxjK16MRcZlpDYvbuO1FiA= +go.opentelemetry.io/otel/exporters/prometheus v0.42.0/go.mod h1:f3bYiqNqhoPxkvI2LrXqQVC546K7BuRDL/kKuxkujhA= +go.opentelemetry.io/otel/metric v1.20.0 h1:ZlrO8Hu9+GAhnepmRGhSU7/VkpjrNowxRN9GyKR4wzA= +go.opentelemetry.io/otel/metric v1.20.0/go.mod h1:90DRw3nfK4D7Sm/75yQ00gTJxtkBxX+wu6YaNymbpVM= +go.opentelemetry.io/otel/sdk v1.20.0 h1:5Jf6imeFZlZtKv9Qbo6qt2ZkmWtdWx/wzcCbNUlAWGM= +go.opentelemetry.io/otel/sdk v1.20.0/go.mod h1:rmkSx1cZCm/tn16iWDn1GQbLtsW/LvsdEEFzCSRM6V0= +go.opentelemetry.io/otel/sdk/metric v1.20.0 h1:5eD40l/H2CqdKmbSV7iht2KMK0faAIL2pVYzJOWobGk= +go.opentelemetry.io/otel/sdk/metric v1.20.0/go.mod h1:AGvpC+YF/jblITiafMTYgvRBUiwi9hZf0EYE2E5XlS8= +go.opentelemetry.io/otel/trace v1.20.0 h1:+yxVAPZPbQhbC3OfAkeIVTky6iTFpcr4SiY9om7mXSQ= +go.opentelemetry.io/otel/trace v1.20.0/go.mod h1:HJSK7F/hA5RlzpZ0zKDCHCDHm556LCDtKaAo6JmBFUU= +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.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= +go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= +go.uber.org/dig v1.17.0 h1:5Chju+tUvcC+N7N6EV08BJz41UZuO3BmHcN4A287ZLI= +go.uber.org/dig v1.17.0/go.mod h1:rTxpf7l5I0eBTlE6/9RL+lDybC7WFwY2QH55ZSjy1mU= +go.uber.org/fx v1.18.2 h1:bUNI6oShr+OVFQeU8cDNbnN7VFsu+SsjHzUF51V/GAU= +go.uber.org/fx v1.18.2/go.mod h1:g0V1KMQ66zIRk8bLu3Ea5Jt2w/cHlOIp4wdRsgh0JaY= +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.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.14.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= +go.uber.org/zap v1.23.0 h1:OjGQ5KQDEUawVHxNwQgPpiypGHOxo2mNZsOqTak4fFY= +go.uber.org/zap v1.23.0/go.mod h1:D+nX8jyLsMHMYrln8A0rJjFt/T/9/bGgIhAqxv5URuY= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 h1:LfspQV/FYTatPTr/3HzIcmiUFH7PGP+OQ6mgDYo3yuQ= +golang.org/x/exp v0.0.0-20240222234643-814bf88cf225/go.mod h1:CxmFvTBINI24O/j8iY7H1xHzx2i4OsyguNBmN/uPtqc= +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.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8= +golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +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-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181220203305-927f97764cc3/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-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191002035440-2ec189313ef0/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/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-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.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/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-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190529164535-6a60838ec259/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20220829200755-d48e67d00261/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/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-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-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +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= +golang.org/x/tools v0.18.0 h1:k8NLag8AGHnn+PHbl7g43CtqZAwG60vZkLqgyZgIHgQ= +golang.org/x/tools v0.18.0/go.mod h1:GL7B4CwcLLeo59yx/9UWWuNOW1n3VZ4f5axWfML7Lcg= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/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-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190927181202-20e1ac93f88c/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= +google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +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-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +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.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.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/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= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= diff --git a/pkg/logs/internal/util/testutils/test_utils.go b/pkg/logs/util/testutils/test_utils.go similarity index 98% rename from pkg/logs/internal/util/testutils/test_utils.go rename to pkg/logs/util/testutils/test_utils.go index b55cbc9555da89..3f0ffadb52f65a 100644 --- a/pkg/logs/internal/util/testutils/test_utils.go +++ b/pkg/logs/util/testutils/test_utils.go @@ -3,8 +3,6 @@ // This product includes software developed at Datadog (https://www.datadoghq.com/). // Copyright 2016-present Datadog, Inc. -//go:build test - // Package testutils provides util test setup methods for pkg/logs package testutils diff --git a/pkg/util/startstop/go.mod b/pkg/util/startstop/go.mod new file mode 100644 index 00000000000000..9bc79dd5ad8b13 --- /dev/null +++ b/pkg/util/startstop/go.mod @@ -0,0 +1,11 @@ +module github.com/DataDog/datadog-agent/pkg/util/startstop + +go 1.21.7 + +require github.com/stretchr/testify v1.8.4 + +require ( + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect +) diff --git a/pkg/util/startstop/go.sum b/pkg/util/startstop/go.sum new file mode 100644 index 00000000000000..fa4b6e6825c44c --- /dev/null +++ b/pkg/util/startstop/go.sum @@ -0,0 +1,10 @@ +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/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/tasks/modules.py b/tasks/modules.py index 16a4f247f54a33..9b2bf07c138d79 100644 --- a/tasks/modules.py +++ b/tasks/modules.py @@ -187,6 +187,18 @@ def dependency_path(self, agent_version): "pkg/config/utils": GoModule("pkg/config/utils", independent=True), "pkg/config/logs": GoModule("pkg/config/logs", independent=True), "pkg/config/remote": GoModule("pkg/config/remote", independent=True), + "pkg/logs/auditor": GoModule("pkg/logs/auditor", independent=True), + "pkg/logs/client": GoModule("pkg/logs/client", independent=True), + "pkg/logs/diagnostic": GoModule("pkg/logs/diagnostic", independent=True), + "pkg/logs/processor": GoModule("pkg/logs/processor", independent=True), + "pkg/logs/util/testutils": GoModule("pkg/logs/util/testutils", independent=True), + "pkg/logs/message": GoModule("pkg/logs/message", independent=True), + "pkg/logs/metrics": GoModule("pkg/logs/metrics", independent=True), + "pkg/logs/pipeline": GoModule("pkg/logs/pipeline", independent=True), + "pkg/logs/sender": GoModule("pkg/logs/sender", independent=True), + "pkg/logs/sources": GoModule("pkg/logs/sources", independent=True), + "pkg/logs/status/statusinterface": GoModule("pkg/logs/status/statusinterface", independent=True), + "pkg/logs/status/utils": GoModule("pkg/logs/status/utils", independent=True), "pkg/serializer": GoModule("pkg/serializer", independent=True), "pkg/security/secl": GoModule("pkg/security/secl", independent=True), "pkg/status/health": GoModule("pkg/status/health", independent=True), @@ -198,6 +210,7 @@ def dependency_path(self, agent_version): "pkg/util/log": GoModule("pkg/util/log", independent=True, used_by_otel=True), "pkg/util/pointer": GoModule("pkg/util/pointer", independent=True, used_by_otel=True), "pkg/util/scrubber": GoModule("pkg/util/scrubber", independent=True, used_by_otel=True), + "pkg/util/startstop": GoModule("pkg/util/startstop", independent=True), "pkg/util/backoff": GoModule("pkg/util/backoff", independent=True), "pkg/util/cache": GoModule("pkg/util/cache", independent=True), "pkg/util/common": GoModule("pkg/util/common", independent=True), From 97bb994bdf9f35803fdbf44fa9ec48d2675190ea Mon Sep 17 00:00:00 2001 From: Minyi Zhu Date: Fri, 8 Mar 2024 16:02:47 -0500 Subject: [PATCH 103/155] [CONTINT-3722] Migrate autodiscovery module to component framework (#23116) * migrate pkg/autodiscovery to component * remove global common.AC * pass component to diagnose * migrate diagnose * fix security agent * fix linter * move to autodiscoveryimpl * support statusprovider in autodiscovery component * merge * rename NewAutoConfigNoStart * add mock module * convert PopulateStatus to internal * remove autodiscovery status provider in cluster-agent * move config setup to pkg/config --- .github/CODEOWNERS | 18 +- .gitlab-ci.yml | 8 +- cmd/agent/common/autodiscovery.go | 44 ++-- cmd/agent/common/common.go | 4 - cmd/agent/common/loader.go | 21 +- cmd/agent/gui/checks.go | 32 +-- cmd/agent/gui/gui.go | 9 +- cmd/agent/gui/render.go | 6 +- cmd/agent/subcommands/diagnose/command.go | 6 +- cmd/agent/subcommands/flare/command.go | 2 + cmd/agent/subcommands/jmx/command.go | 25 ++- cmd/agent/subcommands/run/command.go | 38 ++-- cmd/agent/subcommands/run/command_test.go | 19 -- cmd/agent/subcommands/run/command_windows.go | 3 + .../clcrunnerapi/clc_runner_server.go | 5 +- .../run/internal/clcrunnerapi/v1/clcrunner.go | 15 +- .../subcommands/run/command.go | 28 ++- cmd/cluster-agent/api/agent/agent.go | 33 ++- cmd/cluster-agent/api/server.go | 5 +- .../subcommands/diagnose/command.go | 3 +- .../subcommands/start/command.go | 36 ++-- cmd/systray/command/command.go | 2 + comp/README.md | 6 + comp/api/api/apiimpl/api.go | 3 + comp/api/api/apiimpl/api_mock.go | 2 + comp/api/api/apiimpl/internal/agent/agent.go | 26 ++- .../api/apiimpl/internal/agent/agent_jmx.go | 2 +- comp/api/api/apiimpl/response/types.go | 2 +- comp/api/api/apiimpl/server.go | 3 + comp/api/api/apiimpl/server_cmd.go | 3 + comp/api/api/component.go | 2 + .../agentcrashdetectimpl/agentcrashdetect.go | 2 +- .../winregistry/impl/winregistryimpl.go | 9 +- .../internal/middleware/check_wrapper.go | 2 +- {pkg => comp/core}/autodiscovery/README.md | 6 +- .../autodiscoveryimpl}/autoconfig.go | 189 ++++++++++++++---- .../autodiscoveryimpl/autoconfig_mock.go | 45 +++++ .../autodiscoveryimpl}/autoconfig_test.go | 56 +++--- .../autodiscoveryimpl}/common_test.go | 6 +- .../autodiscoveryimpl}/config_poller.go | 8 +- .../autodiscoveryimpl}/configmgr.go | 10 +- .../autodiscoveryimpl}/configmgr_test.go | 8 +- .../autodiscoveryimpl}/multimap.go | 2 +- .../autodiscoveryimpl}/multimap_test.go | 2 +- .../autodiscoveryimpl}/secrets.go | 4 +- .../autodiscoveryimpl}/secrets_test.go | 4 +- .../autodiscovery/autodiscoveryimpl}/stats.go | 7 +- .../autodiscoveryimpl}/stats_test.go | 2 +- .../autodiscovery/autodiscoveryimpl}/store.go | 6 +- .../autodiscoveryimpl}/store_test.go | 4 +- .../autodiscoveryimpl}/templatecache.go | 4 +- .../autodiscoveryimpl}/templatecache_test.go | 4 +- .../core}/autodiscovery/common/README.md | 0 .../autodiscovery/common/types/prometheus.go | 0 .../common/types/prometheus_test.go | 0 .../autodiscovery/common/utils/annotations.go | 2 +- .../common/utils/annotations_test.go | 2 +- .../common/utils/container_collect_all.go | 2 +- .../common/utils/container_labels.go | 2 +- .../common/utils/container_labels_test.go | 2 +- .../core}/autodiscovery/common/utils/doc.go | 0 .../autodiscovery/common/utils/kubelet.go | 0 .../common/utils/kubelet_test.go | 0 .../common/utils/pod_annotations.go | 2 +- .../common/utils/pod_annotations_test.go | 2 +- .../autodiscovery/common/utils/prometheus.go | 4 +- .../common/utils/prometheus_apiserver.go | 6 +- .../common/utils/prometheus_apiserver_test.go | 6 +- .../common/utils/prometheus_kubelet.go | 6 +- .../common/utils/prometheus_kubelet_test.go | 6 +- comp/core/autodiscovery/component.go | 46 +++++ comp/core/autodiscovery/component_mock.go | 13 ++ .../autodiscovery/configresolver/README.md | 0 .../configresolver/configresolver.go | 6 +- .../configresolver/configresolver_test.go | 6 +- .../core}/autodiscovery/integration/README.md | 0 .../core}/autodiscovery/integration/config.go | 0 .../autodiscovery/integration/config_test.go | 0 .../core}/autodiscovery/listeners/README.md | 4 +- .../autodiscovery/listeners/cloudfoundry.go | 6 +- .../listeners/cloudfoundry_nop.go | 11 + .../listeners/cloudfoundry_test.go | 0 .../core}/autodiscovery/listeners/common.go | 2 +- .../autodiscovery/listeners/common_test.go | 2 +- .../autodiscovery/listeners/container.go | 6 +- .../autodiscovery/listeners/container_nop.go | 10 + .../autodiscovery/listeners/container_test.go | 0 .../autodiscovery/listeners/dbm_aurora.go | 20 +- .../autodiscovery/listeners/dbm_aurora_nop.go | 11 + .../listeners/dbm_aurora_test.go | 0 .../autodiscovery/listeners/environment.go | 6 +- .../autodiscovery/listeners/kube_endpoints.go | 12 +- .../listeners/kube_endpoints_nop.go | 11 + .../listeners/kube_endpoints_test.go | 0 .../autodiscovery/listeners/kube_services.go | 14 +- .../listeners/kube_services_nop.go | 11 + .../listeners/kube_services_test.go | 0 .../core}/autodiscovery/listeners/kubelet.go | 6 +- .../autodiscovery/listeners/kubelet_nop.go | 10 + .../autodiscovery/listeners/kubelet_test.go | 0 .../core/autodiscovery/listeners/listeners.go | 33 +++ .../core}/autodiscovery/listeners/service.go | 6 +- .../autodiscovery/listeners/service_test.go | 6 +- .../core}/autodiscovery/listeners/snmp.go | 6 +- .../autodiscovery/listeners/snmp_test.go | 0 .../autodiscovery/listeners/staticconfig.go | 6 +- .../core}/autodiscovery/listeners/types.go | 17 +- .../autodiscovery/listeners/workloadmeta.go | 2 +- .../listeners/workloadmeta_test.go | 0 .../core}/autodiscovery/providers/README.md | 0 .../autodiscovery/providers/cloudfoundry.go | 10 +- .../providers/cloudfoundry_nop.go | 13 ++ .../providers/cloudfoundry_test.go | 2 +- .../autodiscovery/providers/clusterchecks.go | 8 +- .../core}/autodiscovery/providers/common.go | 0 .../autodiscovery/providers/config_reader.go | 4 +- .../providers/config_reader_test.go | 2 +- .../core}/autodiscovery/providers/consul.go | 10 +- .../autodiscovery/providers/consul_nop.go | 13 ++ .../autodiscovery/providers/consul_test.go | 0 .../autodiscovery/providers/container.go | 12 +- .../autodiscovery/providers/container_nop.go | 12 ++ .../autodiscovery/providers/container_test.go | 2 +- .../providers/endpointschecks.go | 8 +- .../providers/endpointschecks_nop.go | 15 ++ .../core}/autodiscovery/providers/etcd.go | 10 +- comp/core/autodiscovery/providers/etcd_nop.go | 13 ++ .../autodiscovery/providers/etcd_test.go | 0 .../core}/autodiscovery/providers/file.go | 6 +- .../autodiscovery/providers/file_test.go | 2 +- .../autodiscovery/providers/kube_endpoints.go | 12 +- .../providers/kube_endpoints_file.go | 10 +- .../providers/kube_endpoints_file_nop.go | 13 ++ .../providers/kube_endpoints_file_test.go | 2 +- .../providers/kube_endpoints_nop.go | 14 ++ .../providers/kube_endpoints_test.go | 2 +- .../autodiscovery/providers/kube_services.go | 12 +- .../providers/kube_services_file.go | 8 +- .../providers/kube_services_file_nop.go | 13 ++ .../providers/kube_services_file_test.go | 4 +- .../providers/kube_services_nop.go | 14 ++ .../providers/kube_services_test.go | 2 +- .../providers/names/provider_names.go | 0 .../providers/prometheus_common.go | 2 +- .../providers/prometheus_common_test.go | 2 +- .../providers/prometheus_pods.go | 12 +- .../providers/prometheus_pods_nop.go | 14 ++ .../providers/prometheus_services.go | 12 +- .../providers/prometheus_services_nop.go | 13 ++ .../providers/prometheus_services_test.go | 4 +- .../autodiscovery/providers/providers.go | 50 ++++- .../autodiscovery/providers/remote_config.go | 4 +- .../autodiscovery/providers/tests/ad.yaml | 0 .../providers/tests/ad_deprecated.yaml | 0 .../providers/tests/ad_with_service_id.yaml | 0 .../providers/tests/advanced_ad.yaml | 0 .../providers/tests/bar.yaml.default | 0 .../providers/tests/baz.d/1.yaml | 0 .../providers/tests/baz.yaml.default | 0 .../providers/tests/corge.d/conf.yaml.default | 0 .../providers/tests/corge.d/logs.yaml | 0 .../providers/tests/envvars.d/conf.yaml | 0 .../autodiscovery/providers/tests/foo.yaml | 0 .../providers/tests/foo.yml.default | 0 .../providers/tests/ignored.d/auto_conf.yaml | 0 .../providers/tests/invalid.yaml | 0 .../providers/tests/logs-agent_only.yaml | 0 .../tests/logs-agent_with_instances.yaml | 0 .../providers/tests/metrics.yaml | 0 .../providers/tests/nested/ignore.yaml | 0 .../tests/nested_default.d/conf.yaml.default | 0 .../tests/nested_example.d/conf.yaml.example | 0 .../providers/tests/notaconfig.yaml | 0 .../providers/tests/qux.d/conf.yaml.default | 0 .../providers/tests/qux.d/metrics.yaml | 0 .../providers/tests/testcheck.d/1.yml | 0 .../providers/tests/testcheck.d/2.yaml | 0 .../providers/tests/testcheck.d/ignore.txt | 0 .../tests/testcheck.d/ignoreme/ignore.txt | 0 .../providers/tests/testcheck.yaml | 0 .../providers/tests/testcheck.yaml.example | 0 .../core}/autodiscovery/providers/utils.go | 7 - .../autodiscovery/providers/utils_test.go | 0 .../autodiscovery/providers/zookeeper.go | 10 +- .../autodiscovery/providers/zookeeper_nop.go | 13 ++ .../autodiscovery/providers/zookeeper_test.go | 0 .../core}/autodiscovery/scheduler/README.md | 0 .../core}/autodiscovery/scheduler/meta.go | 2 +- .../autodiscovery/scheduler/meta_test.go | 2 +- .../autodiscovery/scheduler/scheduler.go | 2 +- .../core/autodiscovery/status}/status.go | 26 +-- .../status_templates/autodiscovery.tmpl | 0 .../core}/autodiscovery/telemetry/README.md | 0 .../autodiscovery/telemetry/telemetry.go | 0 comp/core/flare/flare.go | 4 +- comp/core/flare/flare_test.go | 4 +- comp/core/tagger/README.md | 2 +- comp/core/workloadmeta/workloadmeta.go | 1 - pkg/cli/standalone/jmx.go | 30 ++- pkg/cli/standalone/jmx_nojmx.go | 9 +- pkg/cli/subcommands/check/command.go | 21 +- pkg/cli/subcommands/dcaflare/command.go | 10 +- pkg/clusteragent/clusterchecks/common_test.go | 2 +- .../clusterchecks/dispatcher_configs.go | 2 +- .../dispatcher_endpoints_configs.go | 4 +- .../clusterchecks/dispatcher_isolate_test.go | 2 +- .../clusterchecks/dispatcher_main.go | 2 +- .../clusterchecks/dispatcher_nodes.go | 2 +- .../clusterchecks/dispatcher_rebalance.go | 2 +- .../dispatcher_rebalance_test.go | 2 +- .../clusterchecks/dispatcher_test.go | 2 +- pkg/clusteragent/clusterchecks/handler.go | 2 +- .../clusterchecks/handler_api_nocompile.go | 4 +- .../clusterchecks/handler_test.go | 2 +- pkg/clusteragent/clusterchecks/helpers.go | 2 +- pkg/clusteragent/clusterchecks/stores.go | 2 +- pkg/clusteragent/clusterchecks/types/types.go | 2 +- pkg/collector/check/check.go | 2 +- pkg/collector/check/check_test.go | 2 +- pkg/collector/check/id/id.go | 2 +- pkg/collector/check/id_test.go | 2 +- pkg/collector/check/jmx.go | 2 +- pkg/collector/check/jmx_test.go | 2 +- pkg/collector/check/loader.go | 2 +- pkg/collector/check/stub/stub.go | 2 +- pkg/collector/corechecks/checkbase.go | 2 +- pkg/collector/corechecks/checkbase_test.go | 2 +- pkg/collector/corechecks/cluster/helm/helm.go | 2 +- .../cluster/ksm/kubernetes_state.go | 2 +- .../kubernetes_apiserver.go | 2 +- .../kubernetes_openshift_test.go | 2 +- .../cluster/orchestrator/orchestrator.go | 2 +- .../corechecks/containerimage/check.go | 2 +- .../corechecks/containerlifecycle/check.go | 2 +- .../corechecks/containers/containerd/check.go | 2 +- .../corechecks/containers/cri/check.go | 2 +- .../corechecks/containers/docker/check.go | 2 +- .../corechecks/containers/generic/check.go | 2 +- .../containers/kubelet/common/config.go | 2 +- .../corechecks/containers/kubelet/kubelet.go | 2 +- .../provider/cadvisor/provider_test.go | 2 +- .../kubelet/provider/health/provider_test.go | 2 +- .../kubelet/provider/kubelet/provider_test.go | 2 +- .../kubelet/provider/node/provider_test.go | 2 +- .../kubelet/provider/pod/provider_test.go | 2 +- .../kubelet/provider/probe/provider_test.go | 2 +- .../kubelet/provider/summary/provider_test.go | 2 +- pkg/collector/corechecks/ebpf/ebpf.go | 2 +- .../corechecks/ebpf/oomkill/oom_kill.go | 2 +- .../ebpf/tcpqueuelength/tcp_queue_length.go | 2 +- pkg/collector/corechecks/embed/apm/apm.go | 2 +- pkg/collector/corechecks/embed/jmx/check.go | 2 +- pkg/collector/corechecks/embed/jmx/loader.go | 2 +- .../corechecks/embed/jmx/loader_test.go | 2 +- pkg/collector/corechecks/embed/jmx/runner.go | 2 +- pkg/collector/corechecks/embed/jmx/state.go | 2 +- .../corechecks/embed/process/process_agent.go | 2 +- pkg/collector/corechecks/loader.go | 2 +- pkg/collector/corechecks/loader_test.go | 2 +- pkg/collector/corechecks/longrunning_test.go | 2 +- .../corechecks/net/network/network.go | 2 +- .../corechecks/net/network/network_test.go | 2 +- pkg/collector/corechecks/net/ntp/ntp.go | 2 +- pkg/collector/corechecks/net/ntp/ntp_test.go | 2 +- .../corechecks/nvidia/jetson/jetson.go | 2 +- .../corechecks/nvidia/jetson/jetson_test.go | 2 +- .../corechecks/oracle-dbm/config/config.go | 2 +- .../oracle-dbm/custom_queries_test.go | 2 +- pkg/collector/corechecks/oracle-dbm/oracle.go | 2 +- .../corechecks/oracle-dbm/statements_test.go | 2 +- .../corechecks/oracle-dbm/testutil.go | 2 +- .../corechecks/orchestrator/pod/pod.go | 2 +- pkg/collector/corechecks/sbom/check.go | 2 +- .../snmp/integration_profile_bundle_test.go | 2 +- .../snmp/integration_profile_metadata_test.go | 2 +- .../snmp/integration_topology_test.go | 2 +- .../snmp/internal/checkconfig/config.go | 2 +- pkg/collector/corechecks/snmp/snmp.go | 2 +- pkg/collector/corechecks/snmp/snmp_test.go | 2 +- .../corechecks/system/cpu/cpu/cpu.go | 2 +- .../corechecks/system/cpu/cpu/cpu_test.go | 2 +- .../corechecks/system/cpu/cpu/cpu_windows.go | 2 +- .../system/cpu/cpu/cpu_windows_test.go | 2 +- .../corechecks/system/cpu/load/load.go | 2 +- .../corechecks/system/cpu/load/load_test.go | 2 +- .../corechecks/system/disk/disk/disk.go | 2 +- .../corechecks/system/disk/disk/disk_nix.go | 2 +- .../corechecks/system/disk/disk/disk_test.go | 2 +- .../corechecks/system/disk/io/iostats.go | 2 +- .../corechecks/system/disk/io/iostats_nix.go | 2 +- .../system/disk/io/iostats_nix_test.go | 2 +- .../system/disk/io/iostats_pdh_windows.go | 2 +- .../disk/io/iostats_pdh_windows_test.go | 2 +- .../corechecks/system/disk/io/iostats_test.go | 2 +- .../system/filehandles/file_handles_bsd.go | 2 +- .../filehandles/file_handles_bsd_test.go | 2 +- .../system/filehandles/file_handles_test.go | 2 +- .../filehandles/file_handles_windows.go | 2 +- .../filehandles/file_handles_windows_test.go | 2 +- .../system/memory/memory_windows.go | 2 +- .../system/memory/memory_windows_test.go | 2 +- .../corechecks/system/uptime/uptime_test.go | 2 +- .../system/wincrashdetect/wincrashdetect.go | 2 +- .../corechecks/system/winkmem/winkmem.go | 2 +- .../corechecks/system/winkmem/winkmem_test.go | 2 +- .../system/winproc/winproc_windows.go | 2 +- .../system/winproc/winproc_windows_test.go | 2 +- pkg/collector/corechecks/systemd/systemd.go | 2 +- .../corechecks/systemd/systemd_test.go | 2 +- .../corechecks/telemetry/check_test.go | 2 +- .../corechecks/windows_event_log/check.go | 2 +- .../windows_event_log/check_test.go | 8 +- .../corechecks/windows_event_log/config.go | 2 +- pkg/collector/loaders/loaders_test.go | 2 +- .../metadata/agentchecks/agentchecks.go | 4 +- pkg/collector/python/check.go | 2 +- pkg/collector/python/loader.go | 3 +- pkg/collector/python/test_check.go | 2 +- pkg/collector/python/test_loader.go | 2 +- pkg/collector/scheduler.go | 2 +- pkg/collector/scheduler_test.go | 2 +- pkg/config/autodiscovery/autodiscovery.go | 4 +- pkg/config/legacy/docker.go | 2 +- pkg/config/legacy/kubernetes.go | 2 +- pkg/config/setup/config.go | 3 + pkg/diagnose/check.go | 24 ++- pkg/diagnose/runner.go | 8 +- pkg/flare/archive_dca.go | 1 + pkg/flare/cluster_checks.go | 2 +- pkg/flare/config_check.go | 2 +- pkg/flare/config_check_test.go | 2 +- pkg/jmxfetch/jmxfetch.go | 2 +- pkg/jmxfetch/jmxfetch_test.go | 2 +- pkg/logs/README.md | 2 +- pkg/logs/internal/util/adlistener/ad.go | 18 +- pkg/logs/internal/util/adlistener/ad_test.go | 8 +- pkg/logs/schedulers/ad/scheduler.go | 8 +- pkg/logs/schedulers/ad/scheduler_test.go | 9 +- pkg/logs/schedulers/cca/scheduler.go | 6 +- pkg/logs/schedulers/cca/scheduler_test.go | 11 +- pkg/snmp/snmpparse/config_snmp.go | 2 +- pkg/snmp/snmpparse/config_snmp_test.go | 2 +- pkg/status/collector/status.go | 10 +- pkg/util/common.go | 2 +- pkg/util/common_test.go | 2 +- pkg/util/jsonquery/yaml_test.go | 2 +- .../etcd/etcd_provider_test.go | 2 +- .../zookeeper/zookeeper_provider_test.go | 2 +- .../corechecks/docker/main_test.go | 2 +- .../listeners/docker/docker_listener_test.go | 2 +- 350 files changed, 1259 insertions(+), 762 deletions(-) rename {pkg => comp/core}/autodiscovery/README.md (95%) rename {pkg/autodiscovery => comp/core/autodiscovery/autodiscoveryimpl}/autoconfig.go (73%) create mode 100644 comp/core/autodiscovery/autodiscoveryimpl/autoconfig_mock.go rename {pkg/autodiscovery => comp/core/autodiscovery/autodiscoveryimpl}/autoconfig_test.go (89%) rename {pkg/autodiscovery => comp/core/autodiscovery/autodiscoveryimpl}/common_test.go (93%) rename {pkg/autodiscovery => comp/core/autodiscovery/autodiscoveryimpl}/config_poller.go (96%) rename {pkg/autodiscovery => comp/core/autodiscovery/autodiscoveryimpl}/configmgr.go (97%) rename {pkg/autodiscovery => comp/core/autodiscovery/autodiscoveryimpl}/configmgr_test.go (98%) rename {pkg/autodiscovery => comp/core/autodiscovery/autodiscoveryimpl}/multimap.go (98%) rename {pkg/autodiscovery => comp/core/autodiscovery/autodiscoveryimpl}/multimap_test.go (97%) rename {pkg/autodiscovery => comp/core/autodiscovery/autodiscoveryimpl}/secrets.go (94%) rename {pkg/autodiscovery => comp/core/autodiscovery/autodiscoveryimpl}/secrets_test.go (97%) rename {pkg/autodiscovery => comp/core/autodiscovery/autodiscoveryimpl}/stats.go (96%) rename {pkg/autodiscovery => comp/core/autodiscovery/autodiscoveryimpl}/stats_test.go (97%) rename {pkg/autodiscovery => comp/core/autodiscovery/autodiscoveryimpl}/store.go (97%) rename {pkg/autodiscovery => comp/core/autodiscovery/autodiscoveryimpl}/store_test.go (97%) rename {pkg/autodiscovery => comp/core/autodiscovery/autodiscoveryimpl}/templatecache.go (97%) rename {pkg/autodiscovery => comp/core/autodiscovery/autodiscoveryimpl}/templatecache_test.go (96%) rename {pkg => comp/core}/autodiscovery/common/README.md (100%) rename {pkg => comp/core}/autodiscovery/common/types/prometheus.go (100%) rename {pkg => comp/core}/autodiscovery/common/types/prometheus_test.go (100%) rename {pkg => comp/core}/autodiscovery/common/utils/annotations.go (99%) rename {pkg => comp/core}/autodiscovery/common/utils/annotations_test.go (99%) rename {pkg => comp/core}/autodiscovery/common/utils/container_collect_all.go (93%) rename {pkg => comp/core}/autodiscovery/common/utils/container_labels.go (93%) rename {pkg => comp/core}/autodiscovery/common/utils/container_labels_test.go (98%) rename {pkg => comp/core}/autodiscovery/common/utils/doc.go (100%) rename {pkg => comp/core}/autodiscovery/common/utils/kubelet.go (100%) rename {pkg => comp/core}/autodiscovery/common/utils/kubelet_test.go (100%) rename {pkg => comp/core}/autodiscovery/common/utils/pod_annotations.go (97%) rename {pkg => comp/core}/autodiscovery/common/utils/pod_annotations_test.go (99%) rename {pkg => comp/core}/autodiscovery/common/utils/prometheus.go (96%) rename {pkg => comp/core}/autodiscovery/common/utils/prometheus_apiserver.go (94%) rename {pkg => comp/core}/autodiscovery/common/utils/prometheus_apiserver_test.go (96%) rename {pkg => comp/core}/autodiscovery/common/utils/prometheus_kubelet.go (91%) rename {pkg => comp/core}/autodiscovery/common/utils/prometheus_kubelet_test.go (98%) create mode 100644 comp/core/autodiscovery/component.go create mode 100644 comp/core/autodiscovery/component_mock.go rename {pkg => comp/core}/autodiscovery/configresolver/README.md (100%) rename {pkg => comp/core}/autodiscovery/configresolver/configresolver.go (98%) rename {pkg => comp/core}/autodiscovery/configresolver/configresolver_test.go (99%) rename {pkg => comp/core}/autodiscovery/integration/README.md (100%) rename {pkg => comp/core}/autodiscovery/integration/config.go (100%) rename {pkg => comp/core}/autodiscovery/integration/config_test.go (100%) rename {pkg => comp/core}/autodiscovery/listeners/README.md (93%) rename {pkg => comp/core}/autodiscovery/listeners/cloudfoundry.go (98%) create mode 100644 comp/core/autodiscovery/listeners/cloudfoundry_nop.go rename {pkg => comp/core}/autodiscovery/listeners/cloudfoundry_test.go (100%) rename {pkg => comp/core}/autodiscovery/listeners/common.go (98%) rename {pkg => comp/core}/autodiscovery/listeners/common_test.go (98%) rename {pkg => comp/core}/autodiscovery/listeners/container.go (97%) create mode 100644 comp/core/autodiscovery/listeners/container_nop.go rename {pkg => comp/core}/autodiscovery/listeners/container_test.go (100%) rename {pkg => comp/core}/autodiscovery/listeners/dbm_aurora.go (95%) create mode 100644 comp/core/autodiscovery/listeners/dbm_aurora_nop.go rename {pkg => comp/core}/autodiscovery/listeners/dbm_aurora_test.go (100%) rename {pkg => comp/core}/autodiscovery/listeners/environment.go (97%) rename {pkg => comp/core}/autodiscovery/listeners/kube_endpoints.go (97%) create mode 100644 comp/core/autodiscovery/listeners/kube_endpoints_nop.go rename {pkg => comp/core}/autodiscovery/listeners/kube_endpoints_test.go (100%) rename {pkg => comp/core}/autodiscovery/listeners/kube_services.go (96%) create mode 100644 comp/core/autodiscovery/listeners/kube_services_nop.go rename {pkg => comp/core}/autodiscovery/listeners/kube_services_test.go (100%) rename {pkg => comp/core}/autodiscovery/listeners/kubelet.go (97%) create mode 100644 comp/core/autodiscovery/listeners/kubelet_nop.go rename {pkg => comp/core}/autodiscovery/listeners/kubelet_test.go (100%) create mode 100644 comp/core/autodiscovery/listeners/listeners.go rename {pkg => comp/core}/autodiscovery/listeners/service.go (97%) rename {pkg => comp/core}/autodiscovery/listeners/service_test.go (95%) rename {pkg => comp/core}/autodiscovery/listeners/snmp.go (99%) rename {pkg => comp/core}/autodiscovery/listeners/snmp_test.go (100%) rename {pkg => comp/core}/autodiscovery/listeners/staticconfig.go (96%) rename {pkg => comp/core}/autodiscovery/listeners/types.go (86%) rename {pkg => comp/core}/autodiscovery/listeners/workloadmeta.go (98%) rename {pkg => comp/core}/autodiscovery/listeners/workloadmeta_test.go (100%) rename {pkg => comp/core}/autodiscovery/providers/README.md (100%) rename {pkg => comp/core}/autodiscovery/providers/cloudfoundry.go (96%) create mode 100644 comp/core/autodiscovery/providers/cloudfoundry_nop.go rename {pkg => comp/core}/autodiscovery/providers/cloudfoundry_test.go (99%) rename {pkg => comp/core}/autodiscovery/providers/clusterchecks.go (96%) rename {pkg => comp/core}/autodiscovery/providers/common.go (100%) rename {pkg => comp/core}/autodiscovery/providers/config_reader.go (99%) rename {pkg => comp/core}/autodiscovery/providers/config_reader_test.go (98%) rename {pkg => comp/core}/autodiscovery/providers/consul.go (96%) create mode 100644 comp/core/autodiscovery/providers/consul_nop.go rename {pkg => comp/core}/autodiscovery/providers/consul_test.go (100%) rename {pkg => comp/core}/autodiscovery/providers/container.go (96%) create mode 100644 comp/core/autodiscovery/providers/container_nop.go rename {pkg => comp/core}/autodiscovery/providers/container_test.go (99%) rename {pkg => comp/core}/autodiscovery/providers/endpointschecks.go (94%) create mode 100644 comp/core/autodiscovery/providers/endpointschecks_nop.go rename {pkg => comp/core}/autodiscovery/providers/etcd.go (96%) create mode 100644 comp/core/autodiscovery/providers/etcd_nop.go rename {pkg => comp/core}/autodiscovery/providers/etcd_test.go (100%) rename {pkg => comp/core}/autodiscovery/providers/file.go (88%) rename {pkg => comp/core}/autodiscovery/providers/file_test.go (97%) rename {pkg => comp/core}/autodiscovery/providers/kube_endpoints.go (97%) rename {pkg => comp/core}/autodiscovery/providers/kube_endpoints_file.go (96%) create mode 100644 comp/core/autodiscovery/providers/kube_endpoints_file_nop.go rename {pkg => comp/core}/autodiscovery/providers/kube_endpoints_file_test.go (98%) create mode 100644 comp/core/autodiscovery/providers/kube_endpoints_nop.go rename {pkg => comp/core}/autodiscovery/providers/kube_endpoints_test.go (99%) rename {pkg => comp/core}/autodiscovery/providers/kube_services.go (95%) rename {pkg => comp/core}/autodiscovery/providers/kube_services_file.go (92%) create mode 100644 comp/core/autodiscovery/providers/kube_services_file_nop.go rename {pkg => comp/core}/autodiscovery/providers/kube_services_file_test.go (94%) create mode 100644 comp/core/autodiscovery/providers/kube_services_nop.go rename {pkg => comp/core}/autodiscovery/providers/kube_services_test.go (99%) rename {pkg => comp/core}/autodiscovery/providers/names/provider_names.go (100%) rename {pkg => comp/core}/autodiscovery/providers/prometheus_common.go (94%) rename {pkg => comp/core}/autodiscovery/providers/prometheus_common_test.go (98%) rename {pkg => comp/core}/autodiscovery/providers/prometheus_pods.go (86%) create mode 100644 comp/core/autodiscovery/providers/prometheus_pods_nop.go rename {pkg => comp/core}/autodiscovery/providers/prometheus_services.go (96%) create mode 100644 comp/core/autodiscovery/providers/prometheus_services_nop.go rename {pkg => comp/core}/autodiscovery/providers/prometheus_services_test.go (99%) rename {pkg => comp/core}/autodiscovery/providers/providers.go (54%) rename {pkg => comp/core}/autodiscovery/providers/remote_config.go (97%) rename {pkg => comp/core}/autodiscovery/providers/tests/ad.yaml (100%) rename {pkg => comp/core}/autodiscovery/providers/tests/ad_deprecated.yaml (100%) rename {pkg => comp/core}/autodiscovery/providers/tests/ad_with_service_id.yaml (100%) rename {pkg => comp/core}/autodiscovery/providers/tests/advanced_ad.yaml (100%) rename {pkg => comp/core}/autodiscovery/providers/tests/bar.yaml.default (100%) rename {pkg => comp/core}/autodiscovery/providers/tests/baz.d/1.yaml (100%) rename {pkg => comp/core}/autodiscovery/providers/tests/baz.yaml.default (100%) rename {pkg => comp/core}/autodiscovery/providers/tests/corge.d/conf.yaml.default (100%) rename {pkg => comp/core}/autodiscovery/providers/tests/corge.d/logs.yaml (100%) rename {pkg => comp/core}/autodiscovery/providers/tests/envvars.d/conf.yaml (100%) rename {pkg => comp/core}/autodiscovery/providers/tests/foo.yaml (100%) rename {pkg => comp/core}/autodiscovery/providers/tests/foo.yml.default (100%) rename {pkg => comp/core}/autodiscovery/providers/tests/ignored.d/auto_conf.yaml (100%) rename {pkg => comp/core}/autodiscovery/providers/tests/invalid.yaml (100%) rename {pkg => comp/core}/autodiscovery/providers/tests/logs-agent_only.yaml (100%) rename {pkg => comp/core}/autodiscovery/providers/tests/logs-agent_with_instances.yaml (100%) rename {pkg => comp/core}/autodiscovery/providers/tests/metrics.yaml (100%) rename {pkg => comp/core}/autodiscovery/providers/tests/nested/ignore.yaml (100%) rename {pkg => comp/core}/autodiscovery/providers/tests/nested_default.d/conf.yaml.default (100%) rename {pkg => comp/core}/autodiscovery/providers/tests/nested_example.d/conf.yaml.example (100%) rename {pkg => comp/core}/autodiscovery/providers/tests/notaconfig.yaml (100%) rename {pkg => comp/core}/autodiscovery/providers/tests/qux.d/conf.yaml.default (100%) rename {pkg => comp/core}/autodiscovery/providers/tests/qux.d/metrics.yaml (100%) rename {pkg => comp/core}/autodiscovery/providers/tests/testcheck.d/1.yml (100%) rename {pkg => comp/core}/autodiscovery/providers/tests/testcheck.d/2.yaml (100%) rename {pkg => comp/core}/autodiscovery/providers/tests/testcheck.d/ignore.txt (100%) rename {pkg => comp/core}/autodiscovery/providers/tests/testcheck.d/ignoreme/ignore.txt (100%) rename {pkg => comp/core}/autodiscovery/providers/tests/testcheck.yaml (100%) rename {pkg => comp/core}/autodiscovery/providers/tests/testcheck.yaml.example (100%) rename {pkg => comp/core}/autodiscovery/providers/utils.go (89%) rename {pkg => comp/core}/autodiscovery/providers/utils_test.go (100%) rename {pkg => comp/core}/autodiscovery/providers/zookeeper.go (95%) create mode 100644 comp/core/autodiscovery/providers/zookeeper_nop.go rename {pkg => comp/core}/autodiscovery/providers/zookeeper_test.go (100%) rename {pkg => comp/core}/autodiscovery/scheduler/README.md (100%) rename {pkg => comp/core}/autodiscovery/scheduler/meta.go (97%) rename {pkg => comp/core}/autodiscovery/scheduler/meta_test.go (96%) rename {pkg => comp/core}/autodiscovery/scheduler/scheduler.go (94%) rename {pkg/status/autodiscovery => comp/core/autodiscovery/status}/status.go (72%) rename {pkg/status/autodiscovery => comp/core/autodiscovery/status}/status_templates/autodiscovery.tmpl (100%) rename {pkg => comp/core}/autodiscovery/telemetry/README.md (100%) rename {pkg => comp/core}/autodiscovery/telemetry/telemetry.go (100%) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index e24c76b18d3d88..cdb9658dca6b74 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -243,6 +243,7 @@ /comp/updater @DataDog/fleet /comp/checks/agentcrashdetect @DataDog/windows-kernel-integrations /comp/checks/winregistry @DataDog/windows-agent +/comp/core/autodiscovery @DataDog/container-integrations /comp/core/sysprobeconfig @DataDog/ebpf-platform /comp/core/tagger @DataDog/container-integrations /comp/core/workloadmeta @DataDog/container-integrations @@ -284,15 +285,14 @@ /pkg/trace/ @DataDog/agent-apm /pkg/trace/api/otlp*.go @DataDog/opentelemetry /pkg/trace/telemetry/ @DataDog/telemetry-and-analytics -/pkg/autodiscovery/ @DataDog/container-integrations @DataDog/agent-metrics-logs -/pkg/autodiscovery/listeners/ @DataDog/container-integrations -/pkg/autodiscovery/listeners/cloudfoundry*.go @DataDog/platform-integrations -/pkg/autodiscovery/listeners/snmp*.go @DataDog/network-device-monitoring -/pkg/autodiscovery/providers/ @DataDog/container-integrations -/pkg/autodiscovery/providers/file*.go @DataDog/agent-metrics-logs -/pkg/autodiscovery/providers/config_reader*.go @DataDog/container-integrations @DataDog/agent-metrics-logs -/pkg/autodiscovery/providers/cloudfoundry*.go @DataDog/platform-integrations -/pkg/autodiscovery/providers/remote_config*.go @DataDog/remote-config +/comp/core/autodiscovery/listeners/ @DataDog/container-integrations +/comp/core/autodiscovery/listeners/cloudfoundry*.go @DataDog/platform-integrations +/comp/core/autodiscovery/listeners/snmp*.go @DataDog/network-device-monitoring +/comp/core/autodiscovery/providers/ @DataDog/container-integrations +/comp/core/autodiscovery/providers/file*.go @DataDog/agent-metrics-logs +/comp/core/autodiscovery/providers/config_reader*.go @DataDog/container-integrations @DataDog/agent-metrics-logs +/comp/core/autodiscovery/providers/cloudfoundry*.go @DataDog/platform-integrations +/comp/core/autodiscovery/providers/remote_config*.go @DataDog/remote-config /pkg/cloudfoundry @Datadog/platform-integrations /pkg/clusteragent/ @DataDog/container-integrations /pkg/clusteragent/orchestrator/ @DataDog/container-app diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3006d108d7a496..492c962f549f43 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1089,8 +1089,8 @@ workflow: paths: - comp/core/tagger/**/* - comp/core/workloadmeta/**/* - - pkg/autodiscovery/listeners/**/* - - pkg/autodiscovery/providers/**/* + - comp/core/autodiscovery/listeners/**/* + - comp/core/autodiscovery/providers/**/* - pkg/collector/corechecks/cluster/**/* - pkg/collector/corechecks/containers/**/* - pkg/collector/corechecks/containerimage/**/* @@ -1117,8 +1117,8 @@ workflow: paths: - comp/core/tagger/**/* - comp/core/workloadmeta/**/* - - pkg/autodiscovery/listeners/**/* - - pkg/autodiscovery/providers/**/* + - comp/core/autodiscovery/listeners/**/* + - comp/core/autodiscovery/providers/**/* - pkg/collector/corechecks/cluster/**/* - pkg/collector/corechecks/containers/**/* - pkg/collector/corechecks/containerimage/**/* diff --git a/cmd/agent/common/autodiscovery.go b/cmd/agent/common/autodiscovery.go index 9db0318325fb3f..64b4c629cc68c1 100644 --- a/cmd/agent/common/autodiscovery.go +++ b/cmd/agent/common/autodiscovery.go @@ -14,13 +14,11 @@ import ( "go.uber.org/atomic" utilserror "k8s.io/apimachinery/pkg/util/errors" - "github.com/DataDog/datadog-agent/comp/core/secrets" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/providers" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/providers/names" "github.com/DataDog/datadog-agent/comp/core/workloadmeta" - "github.com/DataDog/datadog-agent/pkg/autodiscovery" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/providers" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/providers/names" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/scheduler" "github.com/DataDog/datadog-agent/pkg/config" confad "github.com/DataDog/datadog-agent/pkg/config/autodiscovery" "github.com/DataDog/datadog-agent/pkg/util/jsonquery" @@ -39,10 +37,9 @@ var ( legacyProviders = []string{"kubelet", "container", "docker"} ) -func setupAutoDiscovery(confSearchPaths []string, metaScheduler *scheduler.MetaScheduler, secretResolver secrets.Component, wmeta workloadmeta.Component) *autodiscovery.AutoConfig { - ad := autodiscovery.NewAutoConfig(metaScheduler, secretResolver) +func setupAutoDiscovery(confSearchPaths []string, wmeta workloadmeta.Component, ac autodiscovery.Component) { providers.InitConfigFilesReader(confSearchPaths) - ad.AddConfigProvider( + ac.AddConfigProvider( providers.NewFileConfigProvider(), config.Datadog.GetBool("autoconf_config_files_poll"), time.Duration(config.Datadog.GetInt("autoconf_config_files_poll_interval"))*time.Second, @@ -107,7 +104,7 @@ func setupAutoDiscovery(confSearchPaths []string, metaScheduler *scheduler.MetaS // Adding all found providers for _, cp := range uniqueConfigProviders { - factory, found := providers.ProviderCatalog[cp.Name] + factory, found := ac.GetProviderCatalog()[cp.Name] if found { configProvider, err := factory(&cp, wmeta) if err != nil { @@ -116,7 +113,7 @@ func setupAutoDiscovery(confSearchPaths []string, metaScheduler *scheduler.MetaS } pollInterval := providers.GetPollInterval(cp) - ad.AddConfigProvider(configProvider, cp.Polling, pollInterval) + ac.AddConfigProvider(configProvider, cp.Polling, pollInterval) } else { log.Errorf("Unable to find this provider in the catalog: %v", cp.Name) } @@ -187,12 +184,10 @@ func setupAutoDiscovery(confSearchPaths []string, metaScheduler *scheduler.MetaS listeners[i].SetEnabledProviders(providersSet) } - ad.AddListeners(listeners) + ac.AddListeners(listeners) } else { log.Errorf("Error while reading 'listeners' settings: %v", err) } - - return ad } // schedulerFunc is a type alias to allow a function to be used as an AD scheduler @@ -217,14 +212,18 @@ func (sf schedulerFunc) Stop() { // // If the context is cancelled, then any accumulated, matching changes are // returned, even if that is fewer than discoveryMinInstances. -func WaitForConfigsFromAD(ctx context.Context, checkNames []string, discoveryMinInstances int, instanceFilter string) (configs []integration.Config, lastError error) { - return waitForConfigsFromAD(ctx, false, checkNames, discoveryMinInstances, instanceFilter) +func WaitForConfigsFromAD(ctx context.Context, + checkNames []string, + discoveryMinInstances int, + instanceFilter string, + ac autodiscovery.Component) (configs []integration.Config, lastError error) { + return waitForConfigsFromAD(ctx, false, checkNames, discoveryMinInstances, instanceFilter, ac) } // WaitForAllConfigsFromAD waits until its context expires, and then returns // the full set of checks scheduled by AD. -func WaitForAllConfigsFromAD(ctx context.Context) (configs []integration.Config, lastError error) { - return waitForConfigsFromAD(ctx, true, []string{}, 0, "") +func WaitForAllConfigsFromAD(ctx context.Context, ac autodiscovery.Component) (configs []integration.Config, lastError error) { + return waitForConfigsFromAD(ctx, true, []string{}, 0, "", ac) } // waitForConfigsFromAD waits for configs from the AD scheduler and returns them. @@ -240,7 +239,12 @@ func WaitForAllConfigsFromAD(ctx context.Context) (configs []integration.Config, // If wildcard is true, this gathers all configs scheduled before the context // is cancelled, and then returns. It will not return before the context is // cancelled. -func waitForConfigsFromAD(ctx context.Context, wildcard bool, checkNames []string, discoveryMinInstances int, instanceFilter string) (configs []integration.Config, returnErr error) { +func waitForConfigsFromAD(ctx context.Context, + wildcard bool, + checkNames []string, + discoveryMinInstances int, + instanceFilter string, + ac autodiscovery.Component) (configs []integration.Config, returnErr error) { configChan := make(chan integration.Config) // signal to the scheduler when we are no longer waiting, so we do not continue @@ -274,7 +278,7 @@ func waitForConfigsFromAD(ctx context.Context, wildcard bool, checkNames []strin stopChan := make(chan struct{}) // add the scheduler in a goroutine, since it will schedule any "catch-up" immediately, // placing items in configChan - go AC.AddScheduler("check-cmd", schedulerFunc(func(configs []integration.Config) { + go ac.AddScheduler("check-cmd", schedulerFunc(func(configs []integration.Config) { var errorList []error for _, cfg := range configs { if instanceFilter != "" { diff --git a/cmd/agent/common/common.go b/cmd/agent/common/common.go index 4376a6fd12b2c4..4458c19d88a90c 100644 --- a/cmd/agent/common/common.go +++ b/cmd/agent/common/common.go @@ -15,7 +15,6 @@ import ( "github.com/DataDog/datadog-agent/cmd/agent/common/path" "github.com/DataDog/datadog-agent/pkg/api/util" - "github.com/DataDog/datadog-agent/pkg/autodiscovery" "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/config/settings" settingshttp "github.com/DataDog/datadog-agent/pkg/config/settings/http" @@ -24,9 +23,6 @@ import ( ) var ( - // AC is the global object orchestrating checks' loading and running - AC *autodiscovery.AutoConfig - // ExpvarServer is the global expvar server ExpvarServer *http.Server diff --git a/cmd/agent/common/loader.go b/cmd/agent/common/loader.go index dd7170d5e8741b..b13ad52e286c23 100644 --- a/cmd/agent/common/loader.go +++ b/cmd/agent/common/loader.go @@ -11,9 +11,9 @@ import ( "path/filepath" "github.com/DataDog/datadog-agent/cmd/agent/common/path" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery" "github.com/DataDog/datadog-agent/comp/core/secrets" "github.com/DataDog/datadog-agent/comp/core/workloadmeta" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/scheduler" "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/sbom/scanner" ) @@ -36,20 +36,19 @@ func GetWorkloadmetaInit() workloadmeta.InitHelper { } // LoadComponents configures several common Agent components: -// tagger, scheduler and autodiscovery -func LoadComponents(secretResolver secrets.Component, wmeta workloadmeta.Component, confdPath string) { +// tagger, collector, scheduler and autodiscovery +func LoadComponents(_ secrets.Component, wmeta workloadmeta.Component, ac autodiscovery.Component, confdPath string) { confSearchPaths := []string{ confdPath, filepath.Join(path.GetDistPath(), "conf.d"), "", } - // setup autodiscovery. must be done after the tagger is initialized. - - // TODO(components): revise this pattern. - // Currently the workloadmeta init hook will initialize the tagger. - // No big concern here, but be sure to understand there is an implicit - // assumption about the initializtion of the tagger prior to being here. - // because of subscription to metadata store. - AC = setupAutoDiscovery(confSearchPaths, scheduler.NewMetaScheduler(), secretResolver, wmeta) + // TODO: (components) - This is a temporary fix to start the autodiscovery component in CLI mode (agent flare and diagnose in forcelocal checks) + // because the autodiscovery component is not started by the agent automatically. Probably we can start it inside + // fx lifecycle and remove this call. + if !ac.IsStarted() { + ac.Start() + } + setupAutoDiscovery(confSearchPaths, wmeta, ac) } diff --git a/cmd/agent/gui/checks.go b/cmd/agent/gui/checks.go index 2b44a9d67c60d6..7476b0e5bc4b74 100644 --- a/cmd/agent/gui/checks.go +++ b/cmd/agent/gui/checks.go @@ -21,10 +21,10 @@ import ( "github.com/gorilla/mux" yaml "gopkg.in/yaml.v2" - "github.com/DataDog/datadog-agent/cmd/agent/common" "github.com/DataDog/datadog-agent/cmd/agent/common/path" "github.com/DataDog/datadog-agent/comp/collector/collector" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" pkgcollector "github.com/DataDog/datadog-agent/pkg/collector" checkstats "github.com/DataDog/datadog-agent/pkg/collector/check/stats" core "github.com/DataDog/datadog-agent/pkg/collector/corechecks" @@ -46,11 +46,11 @@ var ( ) // Adds the specific handlers for /checks/ endpoints -func checkHandler(r *mux.Router, collector collector.Component) { +func checkHandler(r *mux.Router, collector collector.Component, ac autodiscovery.Component) { r.HandleFunc("/running", http.HandlerFunc(sendRunningChecks)).Methods("POST") - r.HandleFunc("/run/{name}", http.HandlerFunc(runCheckHandler(collector))).Methods("POST") - r.HandleFunc("/run/{name}/once", http.HandlerFunc(runCheckOnce)).Methods("POST") - r.HandleFunc("/reload/{name}", http.HandlerFunc(reloadCheckHandler(collector))).Methods("POST") + r.HandleFunc("/run/{name}", http.HandlerFunc(runCheckHandler(collector, ac))).Methods("POST") + r.HandleFunc("/run/{name}/once", http.HandlerFunc(runCheckOnceHandler(ac))).Methods("POST") + r.HandleFunc("/reload/{name}", http.HandlerFunc(reloadCheckHandler(collector, ac))).Methods("POST") r.HandleFunc("/getConfig/{fileName}", http.HandlerFunc(getCheckConfigFile)).Methods("POST") r.HandleFunc("/getConfig/{checkFolder}/{fileName}", http.HandlerFunc(getCheckConfigFile)).Methods("POST") r.HandleFunc("/setConfig/{fileName}", http.HandlerFunc(setCheckConfigFile)).Methods("POST") @@ -74,11 +74,11 @@ func sendRunningChecks(w http.ResponseWriter, _ *http.Request) { } // Schedules a specific check -func runCheckHandler(collector collector.Component) func(_ http.ResponseWriter, r *http.Request) { +func runCheckHandler(collector collector.Component, ac autodiscovery.Component) func(_ http.ResponseWriter, r *http.Request) { return func(w http.ResponseWriter, r *http.Request) { // Fetch the desired check name := mux.Vars(r)["name"] - instances := pkgcollector.GetChecksByNameForConfigs(name, common.AC.GetAllConfigs()) + instances := pkgcollector.GetChecksByNameForConfigs(name, ac.GetAllConfigs()) for _, ch := range instances { collector.RunCheck(ch) //nolint:errcheck @@ -87,12 +87,20 @@ func runCheckHandler(collector collector.Component) func(_ http.ResponseWriter, } } +// runCheckOnceHandler generates a runCheckOnce handler with the autodiscovery component +func runCheckOnceHandler( + ac autodiscovery.Component) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + runCheckOnce(w, r, ac) + } +} + // Runs a specified check once -func runCheckOnce(w http.ResponseWriter, r *http.Request) { +func runCheckOnce(w http.ResponseWriter, r *http.Request, ac autodiscovery.Component) { response := make(map[string]string) // Fetch the desired check name := mux.Vars(r)["name"] - instances := pkgcollector.GetChecksByNameForConfigs(name, common.AC.GetAllConfigs()) + instances := pkgcollector.GetChecksByNameForConfigs(name, ac.GetAllConfigs()) if len(instances) == 0 { html, e := renderError(name) if e != nil { @@ -143,10 +151,10 @@ func runCheckOnce(w http.ResponseWriter, r *http.Request) { } // Reloads a running check -func reloadCheckHandler(collector collector.Component) func(_ http.ResponseWriter, r *http.Request) { +func reloadCheckHandler(collector collector.Component, ac autodiscovery.Component) func(_ http.ResponseWriter, r *http.Request) { return func(w http.ResponseWriter, r *http.Request) { name := html.EscapeString(mux.Vars(r)["name"]) - instances := pkgcollector.GetChecksByNameForConfigs(name, common.AC.GetAllConfigs()) + instances := pkgcollector.GetChecksByNameForConfigs(name, ac.GetAllConfigs()) if len(instances) == 0 { log.Errorf("Can't reload " + name + ": check has no new instances.") w.Write([]byte("Can't reload " + name + ": check has no new instances")) diff --git a/cmd/agent/gui/gui.go b/cmd/agent/gui/gui.go index a321f2de28bb68..ebf28737e967f6 100644 --- a/cmd/agent/gui/gui.go +++ b/cmd/agent/gui/gui.go @@ -27,6 +27,7 @@ import ( "github.com/urfave/negroni" "github.com/DataDog/datadog-agent/comp/collector/collector" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery" "github.com/DataDog/datadog-agent/comp/core/flare" "github.com/DataDog/datadog-agent/comp/core/status" "github.com/DataDog/datadog-agent/pkg/api/security" @@ -63,7 +64,11 @@ func StopGUIServer() { } // StartGUIServer creates the router, starts the HTTP server & generates the authentication token for access -func StartGUIServer(port string, flare flare.Component, statusComponent status.Component, collector collector.Component) error { +func StartGUIServer(port string, + flare flare.Component, + statusComponent status.Component, + collector collector.Component, + ac autodiscovery.Component) error { // Set start time... startTimestamp = time.Now().Unix() @@ -83,7 +88,7 @@ func StartGUIServer(port string, flare flare.Component, statusComponent status.C agentRouter := mux.NewRouter().PathPrefix("/agent").Subrouter().StrictSlash(true) agentHandler(agentRouter, flare, statusComponent) checkRouter := mux.NewRouter().PathPrefix("/checks").Subrouter().StrictSlash(true) - checkHandler(checkRouter, collector) + checkHandler(checkRouter, collector, ac) // Add authorization middleware to all the API endpoints router.PathPrefix("/agent").Handler(negroni.New(negroni.HandlerFunc(authorizePOST), negroni.Wrap(agentRouter))) diff --git a/cmd/agent/gui/render.go b/cmd/agent/gui/render.go index d97144ef168077..b35a10eb17427e 100644 --- a/cmd/agent/gui/render.go +++ b/cmd/agent/gui/render.go @@ -12,8 +12,8 @@ import ( "html/template" "io" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/autodiscoveryimpl" "github.com/DataDog/datadog-agent/comp/core/status" - "github.com/DataDog/datadog-agent/pkg/autodiscovery" "github.com/DataDog/datadog-agent/pkg/collector" "github.com/DataDog/datadog-agent/pkg/collector/check/stats" ) @@ -38,7 +38,7 @@ func renderRunningChecks() (string, error) { return "", err } loaderErrs := collector.GetLoaderErrors() - configErrs := autodiscovery.GetConfigErrors() + configErrs := autodiscoveryimpl.GetConfigErrors() data := Data{LoaderErrs: loaderErrs, ConfigErrs: configErrs, Stats: runnerStats} e := fillTemplate(b, data, "runningChecks") @@ -63,7 +63,7 @@ func renderError(name string) (string, error) { var b = new(bytes.Buffer) loaderErrs := collector.GetLoaderErrors() - configErrs := autodiscovery.GetConfigErrors() + configErrs := autodiscoveryimpl.GetConfigErrors() data := Data{Name: name, LoaderErrs: loaderErrs, ConfigErrs: configErrs} e := fillTemplate(b, data, "loaderErr") diff --git a/cmd/agent/subcommands/diagnose/command.go b/cmd/agent/subcommands/diagnose/command.go index ecc3f3579f7cf0..48184209c5d15a 100644 --- a/cmd/agent/subcommands/diagnose/command.go +++ b/cmd/agent/subcommands/diagnose/command.go @@ -18,6 +18,8 @@ import ( "github.com/DataDog/datadog-agent/comp/aggregator/diagnosesendermanager/diagnosesendermanagerimpl" "github.com/DataDog/datadog-agent/comp/collector/collector" "github.com/DataDog/datadog-agent/comp/core" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/autodiscoveryimpl" "github.com/DataDog/datadog-agent/comp/core/config" "github.com/DataDog/datadog-agent/comp/core/log" "github.com/DataDog/datadog-agent/comp/core/log/logimpl" @@ -100,6 +102,7 @@ func Commands(globalParams *command.GlobalParams) []*cobra.Command { fx.Supply(optional.NewNoneOption[collector.Component]()), workloadmeta.OptionalModule(), tagger.OptionalModule(), + autodiscoveryimpl.OptionalModule(), diagnosesendermanagerimpl.Module(), ) }, @@ -232,6 +235,7 @@ func cmdDiagnose(cliParams *cliParams, senderManager diagnosesendermanager.Component, _ optional.Option[workloadmeta.Component], _ optional.Option[tagger.Component], + ac optional.Option[autodiscovery.Component], collector optional.Option[collector.Component], secretResolver secrets.Component) error { diagCfg := diagnosis.Config{ @@ -241,7 +245,7 @@ func cmdDiagnose(cliParams *cliParams, Exclude: cliParams.exclude, } - diagnoseDeps := diagnose.NewSuitesDeps(senderManager, collector, secretResolver) + diagnoseDeps := diagnose.NewSuitesDeps(senderManager, collector, secretResolver, ac) // Is it List command if cliParams.listSuites { diagnose.ListStdOut(color.Output, diagCfg, diagnoseDeps) diff --git a/cmd/agent/subcommands/flare/command.go b/cmd/agent/subcommands/flare/command.go index fb6f295c7b7b00..2fbadb931617c5 100644 --- a/cmd/agent/subcommands/flare/command.go +++ b/cmd/agent/subcommands/flare/command.go @@ -25,6 +25,7 @@ import ( authtokenimpl "github.com/DataDog/datadog-agent/comp/api/authtoken/fetchonlyimpl" "github.com/DataDog/datadog-agent/comp/collector/collector" "github.com/DataDog/datadog-agent/comp/core" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/autodiscoveryimpl" "github.com/DataDog/datadog-agent/comp/core/config" "github.com/DataDog/datadog-agent/comp/core/flare" "github.com/DataDog/datadog-agent/comp/core/flare/helpers" @@ -113,6 +114,7 @@ func Commands(globalParams *command.GlobalParams) []*cobra.Command { }), workloadmeta.OptionalModule(), tagger.OptionalModule(), + autodiscoveryimpl.OptionalModule(), // if forceLocal is true, we will start autodiscovery (loadComponents) later flare.Module(), fx.Supply(optional.NewNoneOption[collector.Component]()), diagnosesendermanagerimpl.Module(), diff --git a/cmd/agent/subcommands/jmx/command.go b/cmd/agent/subcommands/jmx/command.go index 76d879fa239b16..2ebfe1e304f203 100644 --- a/cmd/agent/subcommands/jmx/command.go +++ b/cmd/agent/subcommands/jmx/command.go @@ -31,6 +31,9 @@ import ( "github.com/DataDog/datadog-agent/comp/api/api/apiimpl" "github.com/DataDog/datadog-agent/comp/core" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/autodiscoveryimpl" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/comp/core/config" "github.com/DataDog/datadog-agent/comp/core/flare" "github.com/DataDog/datadog-agent/comp/core/log/logimpl" @@ -50,7 +53,6 @@ import ( "github.com/DataDog/datadog-agent/comp/metadata/packagesigning" "github.com/DataDog/datadog-agent/comp/remote-config/rcservice" "github.com/DataDog/datadog-agent/comp/remote-config/rcserviceha" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/cli/standalone" pkgcollector "github.com/DataDog/datadog-agent/pkg/collector" pkgconfig "github.com/DataDog/datadog-agent/pkg/config" @@ -152,6 +154,7 @@ func Commands(globalParams *command.GlobalParams) []*cobra.Command { fx.Provide(func() optional.Option[collector.Component] { return optional.NewNoneOption[collector.Component]() }), fx.Provide(tagger.NewTaggerParamsForCoreAgent), tagger.Module(), + autodiscoveryimpl.Module(), ) } @@ -280,7 +283,15 @@ func disableCmdPort() { // runJmxCommandConsole sets up the common utils necessary for JMX, and executes the command // with the Console reporter -func runJmxCommandConsole(config config.Component, cliParams *cliParams, wmeta workloadmeta.Component, taggerComp tagger.Component, diagnoseSendermanager diagnosesendermanager.Component, secretResolver secrets.Component, agentAPI internalAPI.Component, collector optional.Option[collector.Component]) error { +func runJmxCommandConsole(config config.Component, + cliParams *cliParams, + wmeta workloadmeta.Component, + taggerComp tagger.Component, + ac autodiscovery.Component, + diagnoseSendermanager diagnosesendermanager.Component, + secretResolver secrets.Component, + agentAPI internalAPI.Component, + collector optional.Option[collector.Component]) error { // This prevents log-spam from "comp/core/workloadmeta/collectors/internal/remote/process_collector/process_collector.go" // It appears that this collector creates some contention in AD. // Disabling it is both more efficient and gets rid of this log spam @@ -297,8 +308,8 @@ func runJmxCommandConsole(config config.Component, cliParams *cliParams, wmeta w } // The Autoconfig instance setup happens in the workloadmeta start hook // create and setup the Collector and others. - common.LoadComponents(secretResolver, wmeta, config.GetString("confd_path")) - common.AC.LoadAndRun(context.Background()) + common.LoadComponents(secretResolver, wmeta, ac, config.GetString("confd_path")) + ac.LoadAndRun(context.Background()) // Create the CheckScheduler, but do not attach it to // AutoDiscovery. @@ -310,16 +321,16 @@ func runJmxCommandConsole(config config.Component, cliParams *cliParams, wmeta w context.Background(), time.Duration(cliParams.discoveryTimeout)*time.Second) var allConfigs []integration.Config if len(cliParams.cliSelectedChecks) == 0 { - allConfigs, err = common.WaitForAllConfigsFromAD(waitCtx) + allConfigs, err = common.WaitForAllConfigsFromAD(waitCtx, ac) } else { - allConfigs, err = common.WaitForConfigsFromAD(waitCtx, cliParams.cliSelectedChecks, int(cliParams.discoveryMinInstances), cliParams.instanceFilter) + allConfigs, err = common.WaitForConfigsFromAD(waitCtx, cliParams.cliSelectedChecks, int(cliParams.discoveryMinInstances), cliParams.instanceFilter, ac) } cancelTimeout() if err != nil { return err } - err = standalone.ExecJMXCommandConsole(cliParams.command, cliParams.cliSelectedChecks, cliParams.jmxLogLevel, allConfigs, wmeta, taggerComp, diagnoseSendermanager, agentAPI, collector) + err = standalone.ExecJMXCommandConsole(cliParams.command, cliParams.cliSelectedChecks, cliParams.jmxLogLevel, allConfigs, wmeta, taggerComp, ac, diagnoseSendermanager, agentAPI, collector) if runtime.GOOS == "windows" { standalone.PrintWindowsUserWarning("jmx") diff --git a/cmd/agent/subcommands/run/command.go b/cmd/agent/subcommands/run/command.go index 0fc35050110286..b061fa45b8ef11 100644 --- a/cmd/agent/subcommands/run/command.go +++ b/cmd/agent/subcommands/run/command.go @@ -43,6 +43,9 @@ import ( "github.com/DataDog/datadog-agent/comp/collector/collector" "github.com/DataDog/datadog-agent/comp/collector/collector/collectorimpl" "github.com/DataDog/datadog-agent/comp/core" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/autodiscoveryimpl" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/providers" "github.com/DataDog/datadog-agent/comp/core/config" "github.com/DataDog/datadog-agent/comp/core/flare" "github.com/DataDog/datadog-agent/comp/core/log" @@ -96,7 +99,6 @@ import ( snmptrapsServer "github.com/DataDog/datadog-agent/comp/snmptraps/server" traceagentStatusImpl "github.com/DataDog/datadog-agent/comp/trace/status/statusimpl" "github.com/DataDog/datadog-agent/pkg/api/healthprobe" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/providers" "github.com/DataDog/datadog-agent/pkg/cloudfoundry/containertagger" pkgcollector "github.com/DataDog/datadog-agent/pkg/collector" "github.com/DataDog/datadog-agent/pkg/collector/check" @@ -110,7 +112,6 @@ import ( pkgMetadata "github.com/DataDog/datadog-agent/pkg/metadata" "github.com/DataDog/datadog-agent/pkg/pidfile" "github.com/DataDog/datadog-agent/pkg/serializer" - autodiscoveryStatus "github.com/DataDog/datadog-agent/pkg/status/autodiscovery" clusteragentStatus "github.com/DataDog/datadog-agent/pkg/status/clusteragent" endpointsStatus "github.com/DataDog/datadog-agent/pkg/status/endpoints" "github.com/DataDog/datadog-agent/pkg/status/health" @@ -196,6 +197,7 @@ func run(log log.Component, forwarder defaultforwarder.Component, wmeta workloadmeta.Component, taggerComp tagger.Component, + ac autodiscovery.Component, rcclient rcclient.Component, _ runner.Component, demultiplexer demultiplexer.Component, @@ -267,6 +269,7 @@ func run(log log.Component, serverDebug, wmeta, taggerComp, + ac, rcclient, logsAgent, processAgent, @@ -328,9 +331,6 @@ func getSharedFxOption() fx.Option { fx.Provide(func(config config.Component) status.InformationProvider { return status.NewInformationProvider(httpproxyStatus.GetProvider(config)) }), - fx.Provide(func(config config.Component) status.InformationProvider { - return status.NewInformationProvider(autodiscoveryStatus.GetProvider()) - }), traceagentStatusImpl.Module(), processagentStatusImpl.Module(), dogstatsdStatusimpl.Module(), @@ -346,6 +346,10 @@ func getSharedFxOption() fx.Option { remoteconfig.Bundle(), fx.Provide(tagger.NewTaggerParamsForCoreAgent), tagger.Module(), + autodiscoveryimpl.Module(), + fx.Provide(func(ac autodiscovery.Component) optional.Option[autodiscovery.Component] { + return optional.NewOption[autodiscovery.Component](ac) + }), // TODO: (components) - some parts of the agent (such as the logs agent) implicitly depend on the global state // set up by LoadComponents. In order for components to use lifecycle hooks that also depend on this global state, we @@ -354,11 +358,11 @@ func getSharedFxOption() fx.Option { // Workloadmeta component needs to be initialized before this hook is executed, and thus is included // in the function args to order the execution. This pattern might be worth revising because it is // error prone. - fx.Invoke(func(lc fx.Lifecycle, wmeta workloadmeta.Component, _ tagger.Component, secretResolver secrets.Component) { + fx.Invoke(func(lc fx.Lifecycle, wmeta workloadmeta.Component, _ tagger.Component, ac autodiscovery.Component, secretResolver secrets.Component) { lc.Append(fx.Hook{ OnStart: func(ctx context.Context) error { - // create and setup the Autoconfig instance - common.LoadComponents(secretResolver, wmeta, pkgconfig.Datadog.GetString("confd_path")) + // setup the AutoConfig instance + common.LoadComponents(secretResolver, wmeta, ac, pkgconfig.Datadog.GetString("confd_path")) return nil }, }) @@ -403,6 +407,7 @@ func startAgent( serverDebug dogstatsddebug.Component, wmeta workloadmeta.Component, taggerComp tagger.Component, + ac autodiscovery.Component, rcclient rcclient.Component, logsAgent optional.Option[logsAgent.Component], _ processAgent.Component, @@ -527,14 +532,14 @@ func startAgent( rcProvider := providers.NewRemoteConfigProvider() rcclient.Subscribe(data.ProductAgentIntegrations, rcProvider.IntegrationScheduleCallback) // LoadAndRun is called later on - common.AC.AddConfigProvider(rcProvider, true, 10*time.Second) + ac.AddConfigProvider(rcProvider, true, 10*time.Second) } } } if logsAgent, ok := logsAgent.Get(); ok { // TODO: (components) - once adScheduler is a component, inject it into the logs agent. - logsAgent.AddScheduler(adScheduler.New(common.AC)) + logsAgent.AddScheduler(adScheduler.New(ac)) } // start the cloudfoundry container tagger @@ -551,6 +556,7 @@ func startAgent( if err = agentAPI.StartServer( wmeta, taggerComp, + ac, logsAgent, demultiplexer, optional.NewOption(collector), @@ -563,7 +569,7 @@ func startAgent( if pkgconfig.Datadog.GetBool("cluster_agent.enabled") && pkgconfig.Datadog.GetBool("clc_runner_enabled") { if err = clcrunnerapi.StartCLCRunnerServer(map[string]http.Handler{ "/telemetry": telemetryHandler, - }); err != nil { + }, ac); err != nil { return log.Errorf("Error while starting clc runner api server, exiting: %v", err) } } @@ -577,7 +583,7 @@ func startAgent( guiPort := pkgconfig.Datadog.GetString("GUI_port") if guiPort == "-1" { log.Infof("GUI server port -1 specified: not starting the GUI.") - } else if err = gui.StartGUIServer(guiPort, flare, statusComponent, collector); err != nil { + } else if err = gui.StartGUIServer(guiPort, flare, statusComponent, collector, ac); err != nil { log.Errorf("Error while starting GUI: %v", err) } @@ -598,12 +604,12 @@ func startAgent( // Set up check collector commonchecks.RegisterChecks(wmeta) - common.AC.AddScheduler("check", pkgcollector.InitCheckScheduler(optional.NewOption(collector), demultiplexer), true) + ac.AddScheduler("check", pkgcollector.InitCheckScheduler(optional.NewOption(collector), demultiplexer), true) demultiplexer.AddAgentStartupTelemetry(version.AgentVersion) // load and run all configs in AD - common.AC.LoadAndRun(ctx) + ac.LoadAndRun(ctx) // check for common misconfigurations and report them to log misconfig.ToLog(misconfig.CoreAgent) @@ -644,9 +650,7 @@ func stopAgent(cliParams *cliParams, agentAPI internalAPI.Component) { pkglog.Errorf("Error shutting down expvar server: %v", err) } } - if common.AC != nil { - common.AC.Stop() - } + if common.MetadataScheduler != nil { common.MetadataScheduler.Stop() } diff --git a/cmd/agent/subcommands/run/command_test.go b/cmd/agent/subcommands/run/command_test.go index 28033ebc124ca8..ad5a8a0319b295 100644 --- a/cmd/agent/subcommands/run/command_test.go +++ b/cmd/agent/subcommands/run/command_test.go @@ -13,7 +13,6 @@ import ( "github.com/stretchr/testify/require" "github.com/DataDog/datadog-agent/cmd/agent/command" - "github.com/DataDog/datadog-agent/cmd/agent/common" "github.com/DataDog/datadog-agent/comp/core" "github.com/DataDog/datadog-agent/comp/core/secrets" "github.com/DataDog/datadog-agent/comp/core/workloadmeta" @@ -21,15 +20,6 @@ import ( ) func TestCommand(t *testing.T) { - // FIXME: we stop AC to avoid a race condition in the test suite - // Calling `Command` starts the AC, and it is currently not stopped - // Not stopping it causes a race when running the other test of this package - t.Cleanup(func() { - if common.AC != nil { - common.AC.Stop() - } - }) - fxutil.TestOneShotSubcommand(t, Commands(newGlobalParamsTest(t)), []string{"run"}, @@ -41,15 +31,6 @@ func TestCommand(t *testing.T) { } func TestCommandPidfile(t *testing.T) { - // FIXME: we stop AC to avoid a race condition in the test suite - // Calling `Command` starts the AC, and it is currently not stopped - // Not stopping it causes a race when running the other test of this package - t.Cleanup(func() { - if common.AC != nil { - common.AC.Stop() - } - }) - fxutil.TestOneShotSubcommand(t, Commands(newGlobalParamsTest(t)), []string{"run", "--pidfile", "/pid/file"}, diff --git a/cmd/agent/subcommands/run/command_windows.go b/cmd/agent/subcommands/run/command_windows.go index fb9b1862cf4f54..a1a4f0debe2f1f 100644 --- a/cmd/agent/subcommands/run/command_windows.go +++ b/cmd/agent/subcommands/run/command_windows.go @@ -37,6 +37,7 @@ import ( // core components internalAPI "github.com/DataDog/datadog-agent/comp/api/api" "github.com/DataDog/datadog-agent/comp/core" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery" "github.com/DataDog/datadog-agent/comp/core/config" "github.com/DataDog/datadog-agent/comp/core/flare" "github.com/DataDog/datadog-agent/comp/core/log" @@ -93,6 +94,7 @@ func StartAgentWithDefaults(ctxChan <-chan context.Context) (<-chan error, error serverDebug dogstatsddebug.Component, wmeta workloadmeta.Component, taggerComp tagger.Component, + ac autodiscovery.Component, rcclient rcclient.Component, forwarder defaultforwarder.Component, logsAgent optional.Option[logsAgent.Component], @@ -126,6 +128,7 @@ func StartAgentWithDefaults(ctxChan <-chan context.Context) (<-chan error, error serverDebug, wmeta, taggerComp, + ac, rcclient, logsAgent, processAgent, diff --git a/cmd/agent/subcommands/run/internal/clcrunnerapi/clc_runner_server.go b/cmd/agent/subcommands/run/internal/clcrunnerapi/clc_runner_server.go index 9ff892d3b89d76..9475cb343e537d 100644 --- a/cmd/agent/subcommands/run/internal/clcrunnerapi/clc_runner_server.go +++ b/cmd/agent/subcommands/run/internal/clcrunnerapi/clc_runner_server.go @@ -23,6 +23,7 @@ import ( "github.com/gorilla/mux" v1 "github.com/DataDog/datadog-agent/cmd/agent/subcommands/run/internal/clcrunnerapi/v1" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery" "github.com/DataDog/datadog-agent/pkg/api/security" "github.com/DataDog/datadog-agent/pkg/api/util" "github.com/DataDog/datadog-agent/pkg/config" @@ -31,12 +32,12 @@ import ( var clcListener net.Listener // StartCLCRunnerServer creates the router and starts the HTTP server -func StartCLCRunnerServer(extraHandlers map[string]http.Handler) error { +func StartCLCRunnerServer(extraHandlers map[string]http.Handler, ac autodiscovery.Component) error { // create the root HTTP router r := mux.NewRouter() // IPC REST API server - v1.SetupHandlers(r.PathPrefix("/api/v1").Subrouter()) + v1.SetupHandlers(r.PathPrefix("/api/v1").Subrouter(), ac) // Register extra hanlders for path, handler := range extraHandlers { diff --git a/cmd/agent/subcommands/run/internal/clcrunnerapi/v1/clcrunner.go b/cmd/agent/subcommands/run/internal/clcrunnerapi/v1/clcrunner.go index 71c2e8a6affd89..6b23cc4256ee5c 100644 --- a/cmd/agent/subcommands/run/internal/clcrunnerapi/v1/clcrunner.go +++ b/cmd/agent/subcommands/run/internal/clcrunnerapi/v1/clcrunner.go @@ -15,6 +15,7 @@ import ( "github.com/gorilla/mux" "github.com/DataDog/datadog-agent/cmd/agent/common" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery" checkid "github.com/DataDog/datadog-agent/pkg/collector/check/id" "github.com/DataDog/datadog-agent/pkg/status" "github.com/DataDog/datadog-agent/pkg/util/log" @@ -30,14 +31,16 @@ import ( // The API is only meant to expose stats used by the Cluster Agent // Check configs and any data that could contain sensitive information // MUST NEVER be sent via this API -func SetupHandlers(r *mux.Router) { +func SetupHandlers(r *mux.Router, ac autodiscovery.Component) { r.HandleFunc("/clcrunner/version", common.GetVersion).Methods("GET") - r.HandleFunc("/clcrunner/stats", getCLCRunnerStats).Methods("GET") + r.HandleFunc("/clcrunner/stats", func(w http.ResponseWriter, r *http.Request) { + getCLCRunnerStats(w, r, ac) + }).Methods("GET") r.HandleFunc("/clcrunner/workers", getCLCRunnerWorkers).Methods("GET") } // getCLCRunnerStats retrieves Cluster Level Check runners stats -func getCLCRunnerStats(w http.ResponseWriter, _ *http.Request) { +func getCLCRunnerStats(w http.ResponseWriter, _ *http.Request, ac autodiscovery.Component) { log.Info("Got a request for the runner stats. Making stats.") w.Header().Set("Content-Type", "application/json") stats, err := status.GetExpvarRunnerStats() @@ -48,7 +51,7 @@ func getCLCRunnerStats(w http.ResponseWriter, _ *http.Request) { return } flattenedStats := flattenCLCStats(stats) - statsWithIDsKnownByDCA := replaceIDsWithIDsKnownByDCA(flattenedStats) + statsWithIDsKnownByDCA := replaceIDsWithIDsKnownByDCA(ac, flattenedStats) jsonStats, err := json.Marshal(statsWithIDsKnownByDCA) if err != nil { log.Errorf("Error marshalling stats. Error: %v, Stats: %v", err, statsWithIDsKnownByDCA) @@ -79,11 +82,11 @@ func flattenCLCStats(stats status.CLCChecks) map[string]status.CLCStats { // Agent won't recognize the check as a cluster check. // The API defined in this file is only used by the Cluster Agent, so it makes // sense to use the IDs that it recognizes. -func replaceIDsWithIDsKnownByDCA(stats map[string]status.CLCStats) map[string]status.CLCStats { +func replaceIDsWithIDsKnownByDCA(ac autodiscovery.Component, stats map[string]status.CLCStats) map[string]status.CLCStats { res := make(map[string]status.CLCStats, len(stats)) for checkID, checkStats := range stats { - originalID := common.AC.GetIDOfCheckWithEncryptedSecrets(checkid.ID(checkID)) + originalID := ac.GetIDOfCheckWithEncryptedSecrets(checkid.ID(checkID)) if originalID != "" { res[string(originalID)] = checkStats diff --git a/cmd/cluster-agent-cloudfoundry/subcommands/run/command.go b/cmd/cluster-agent-cloudfoundry/subcommands/run/command.go index f459216455641b..b6039175a03c38 100644 --- a/cmd/cluster-agent-cloudfoundry/subcommands/run/command.go +++ b/cmd/cluster-agent-cloudfoundry/subcommands/run/command.go @@ -30,6 +30,8 @@ import ( "github.com/DataDog/datadog-agent/comp/collector/collector" "github.com/DataDog/datadog-agent/comp/collector/collector/collectorimpl" "github.com/DataDog/datadog-agent/comp/core" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/autodiscoveryimpl" "github.com/DataDog/datadog-agent/comp/core/config" "github.com/DataDog/datadog-agent/comp/core/log" "github.com/DataDog/datadog-agent/comp/core/log/logimpl" @@ -95,6 +97,7 @@ func Commands(globalParams *command.GlobalParams) []*cobra.Command { // The cluster-agent-cloudfoundry agent do not have a status command // so there is no need to initialize the status component fx.Provide(func() status.Component { return nil }), + autodiscoveryimpl.Module(), ) }, } @@ -102,7 +105,14 @@ func Commands(globalParams *command.GlobalParams) []*cobra.Command { return []*cobra.Command{startCmd} } -func run(log log.Component, taggerComp tagger.Component, demultiplexer demultiplexer.Component, wmeta workloadmeta.Component, secretResolver secrets.Component, collector collector.Component, statusComponent status.Component) error { +func run(log log.Component, + taggerComp tagger.Component, + demultiplexer demultiplexer.Component, + wmeta workloadmeta.Component, + ac autodiscovery.Component, + secretResolver secrets.Component, + collector collector.Component, + statusComponent status.Component) error { mainCtx, mainCtxCancel := context.WithCancel(context.Background()) defer mainCtxCancel() // Calling cancel twice is safe @@ -146,22 +156,20 @@ func run(log log.Component, taggerComp tagger.Component, demultiplexer demultipl return err } - // create and setup the Autoconfig instance - // The Autoconfig instance setup happens in the workloadmeta start hook - common.LoadComponents(secretResolver, wmeta, pkgconfig.Datadog.GetString("confd_path")) + common.LoadComponents(secretResolver, wmeta, ac, pkgconfig.Datadog.GetString("confd_path")) // Set up check collector - common.AC.AddScheduler("check", pkgcollector.InitCheckScheduler(optional.NewOption(collector), demultiplexer), true) + ac.AddScheduler("check", pkgcollector.InitCheckScheduler(optional.NewOption(collector), demultiplexer), true) // start the autoconfig, this will immediately run any configured check - common.AC.LoadAndRun(mainCtx) + ac.LoadAndRun(mainCtx) - if err = api.StartServer(wmeta, taggerComp, demultiplexer, optional.NewOption(collector), statusComponent, secretResolver); err != nil { + if err = api.StartServer(wmeta, taggerComp, ac, demultiplexer, optional.NewOption(collector), statusComponent, secretResolver); err != nil { return log.Errorf("Error while starting agent API, exiting: %v", err) } var clusterCheckHandler *clusterchecks.Handler - clusterCheckHandler, err = setupClusterCheck(mainCtx) + clusterCheckHandler, err = setupClusterCheck(mainCtx, ac) if err == nil { api.ModifyAPIRouter(func(r *mux.Router) { dcav1.InstallChecksEndpoints(r, clusteragent.ServerContext{ClusterCheckHandler: clusterCheckHandler}) @@ -268,8 +276,8 @@ func initializeBBSCache(ctx context.Context) error { } } -func setupClusterCheck(ctx context.Context) (*clusterchecks.Handler, error) { - handler, err := clusterchecks.NewHandler(common.AC) +func setupClusterCheck(ctx context.Context, ac autodiscovery.Component) (*clusterchecks.Handler, error) { + handler, err := clusterchecks.NewHandler(ac) if err != nil { return nil, err } diff --git a/cmd/cluster-agent/api/agent/agent.go b/cmd/cluster-agent/api/agent/agent.go index edb859ba0ed487..2daf14b0c89cf1 100644 --- a/cmd/cluster-agent/api/agent/agent.go +++ b/cmd/cluster-agent/api/agent/agent.go @@ -10,25 +10,24 @@ package agent import ( "encoding/json" - "errors" "io" "net/http" "sort" "github.com/gorilla/mux" - "github.com/DataDog/datadog-agent/cmd/agent/common" "github.com/DataDog/datadog-agent/cmd/agent/common/path" "github.com/DataDog/datadog-agent/cmd/agent/common/signals" "github.com/DataDog/datadog-agent/comp/api/api/apiimpl/response" "github.com/DataDog/datadog-agent/comp/collector/collector" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/autodiscoveryimpl" "github.com/DataDog/datadog-agent/comp/core/secrets" "github.com/DataDog/datadog-agent/comp/core/status" "github.com/DataDog/datadog-agent/comp/core/tagger" "github.com/DataDog/datadog-agent/comp/core/tagger/collectors" "github.com/DataDog/datadog-agent/comp/core/workloadmeta" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery" "github.com/DataDog/datadog-agent/pkg/config" settingshttp "github.com/DataDog/datadog-agent/pkg/config/settings/http" "github.com/DataDog/datadog-agent/pkg/diagnose" @@ -41,16 +40,18 @@ import ( ) // SetupHandlers adds the specific handlers for cluster agent endpoints -func SetupHandlers(r *mux.Router, wmeta workloadmeta.Component, senderManager sender.DiagnoseSenderManager, collector optional.Option[collector.Component], statusComponent status.Component, secretResolver secrets.Component) { +func SetupHandlers(r *mux.Router, wmeta workloadmeta.Component, ac autodiscovery.Component, senderManager sender.DiagnoseSenderManager, collector optional.Option[collector.Component], statusComponent status.Component, secretResolver secrets.Component) { r.HandleFunc("/version", getVersion).Methods("GET") r.HandleFunc("/hostname", getHostname).Methods("GET") r.HandleFunc("/flare", func(w http.ResponseWriter, r *http.Request) { - makeFlare(w, r, senderManager, collector, secretResolver, statusComponent) + makeFlare(w, r, senderManager, collector, secretResolver, statusComponent, ac) }).Methods("POST") r.HandleFunc("/stop", stopAgent).Methods("POST") r.HandleFunc("/status", func(w http.ResponseWriter, r *http.Request) { getStatus(w, r, statusComponent) }).Methods("GET") r.HandleFunc("/status/health", getHealth).Methods("GET") - r.HandleFunc("/config-check", getConfigCheck).Methods("GET") + r.HandleFunc("/config-check", func(w http.ResponseWriter, r *http.Request) { + getConfigCheck(w, r, ac) + }).Methods("GET") r.HandleFunc("/config", settingshttp.Server.GetFullDatadogConfig("")).Methods("GET") r.HandleFunc("/config/list-runtime", settingshttp.Server.ListConfigurable).Methods("GET") r.HandleFunc("/config/{setting}", settingshttp.Server.GetValue).Methods("GET") @@ -132,7 +133,7 @@ func getHostname(w http.ResponseWriter, r *http.Request) { w.Write(j) } -func makeFlare(w http.ResponseWriter, r *http.Request, senderManager sender.DiagnoseSenderManager, collector optional.Option[collector.Component], secretResolver secrets.Component, statusComponent status.Component) { +func makeFlare(w http.ResponseWriter, r *http.Request, senderManager sender.DiagnoseSenderManager, collector optional.Option[collector.Component], secretResolver secrets.Component, statusComponent status.Component, ac autodiscovery.Component) { log.Infof("Making a flare") w.Header().Set("Content-Type", "application/json") @@ -155,7 +156,7 @@ func makeFlare(w http.ResponseWriter, r *http.Request, senderManager sender.Diag if logFile == "" { logFile = path.DefaultDCALogFile } - diagnoseDeps := diagnose.NewSuitesDeps(senderManager, collector, secretResolver) + diagnoseDeps := diagnose.NewSuitesDeps(senderManager, collector, secretResolver, optional.NewOption[autodiscovery.Component](ac)) filePath, err := flare.CreateDCAArchive(false, path.GetDistPath(), logFile, profile, diagnoseDeps, statusComponent) if err != nil || filePath == "" { if err != nil { @@ -170,23 +171,17 @@ func makeFlare(w http.ResponseWriter, r *http.Request, senderManager sender.Diag } //nolint:revive // TODO(CINT) Fix revive linter -func getConfigCheck(w http.ResponseWriter, r *http.Request) { +func getConfigCheck(w http.ResponseWriter, r *http.Request, ac autodiscovery.Component) { var response response.ConfigCheckResponse - if common.AC == nil { - log.Errorf("Trying to use /config-check before the agent has been initialized.") - setJSONError(w, errors.New("agent not initialized"), 503) - return - } - - configSlice := common.AC.LoadedConfigs() + configSlice := ac.LoadedConfigs() sort.Slice(configSlice, func(i, j int) bool { return configSlice[i].Name < configSlice[j].Name }) response.Configs = configSlice - response.ResolveWarnings = autodiscovery.GetResolveWarnings() - response.ConfigErrors = autodiscovery.GetConfigErrors() - response.Unresolved = common.AC.GetUnresolvedTemplates() + response.ResolveWarnings = autodiscoveryimpl.GetResolveWarnings() + response.ConfigErrors = autodiscoveryimpl.GetConfigErrors() + response.Unresolved = ac.GetUnresolvedTemplates() jsonConfig, err := json.Marshal(response) if err != nil { diff --git a/cmd/cluster-agent/api/server.go b/cmd/cluster-agent/api/server.go index f82a4494b04da0..d5beb4528134f2 100644 --- a/cmd/cluster-agent/api/server.go +++ b/cmd/cluster-agent/api/server.go @@ -32,6 +32,7 @@ import ( "github.com/DataDog/datadog-agent/cmd/cluster-agent/api/agent" v1 "github.com/DataDog/datadog-agent/cmd/cluster-agent/api/v1" "github.com/DataDog/datadog-agent/comp/collector/collector" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery" "github.com/DataDog/datadog-agent/comp/core/secrets" "github.com/DataDog/datadog-agent/comp/core/status" "github.com/DataDog/datadog-agent/comp/core/tagger" @@ -53,13 +54,13 @@ var ( ) // StartServer creates the router and starts the HTTP server -func StartServer(w workloadmeta.Component, taggerComp tagger.Component, senderManager sender.DiagnoseSenderManager, collector optional.Option[collector.Component], statusComponent status.Component, secretResolver secrets.Component) error { +func StartServer(w workloadmeta.Component, taggerComp tagger.Component, ac autodiscovery.Component, senderManager sender.DiagnoseSenderManager, collector optional.Option[collector.Component], statusComponent status.Component, secretResolver secrets.Component) error { // create the root HTTP router router = mux.NewRouter() apiRouter = router.PathPrefix("/api/v1").Subrouter() // IPC REST API server - agent.SetupHandlers(router, w, senderManager, collector, statusComponent, secretResolver) + agent.SetupHandlers(router, w, ac, senderManager, collector, statusComponent, secretResolver) // API V1 Metadata APIs v1.InstallMetadataEndpoints(apiRouter, w) diff --git a/cmd/cluster-agent/subcommands/diagnose/command.go b/cmd/cluster-agent/subcommands/diagnose/command.go index dd1cc689b02aea..9761ffeffa5456 100644 --- a/cmd/cluster-agent/subcommands/diagnose/command.go +++ b/cmd/cluster-agent/subcommands/diagnose/command.go @@ -18,6 +18,7 @@ import ( "github.com/DataDog/datadog-agent/comp/aggregator/diagnosesendermanager/diagnosesendermanagerimpl" "github.com/DataDog/datadog-agent/comp/collector/collector" "github.com/DataDog/datadog-agent/comp/core" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery" "github.com/DataDog/datadog-agent/comp/core/config" "github.com/DataDog/datadog-agent/comp/core/log/logimpl" "github.com/DataDog/datadog-agent/comp/core/secrets" @@ -62,7 +63,7 @@ func run(diagnoseSenderManager diagnosesendermanager.Component, secretResolver s RunLocal: true, // do not attept to run in actual runnin agent (may need to implement it in future) Include: []string{"connectivity-datadog-autodiscovery"}, } - diagnoseDeps := diagnose.NewSuitesDeps(diagnoseSenderManager, optional.NewNoneOption[collector.Component](), secretResolver) + diagnoseDeps := diagnose.NewSuitesDeps(diagnoseSenderManager, optional.NewNoneOption[collector.Component](), secretResolver, optional.NewNoneOption[autodiscovery.Component]()) return diagnose.RunStdOut(color.Output, diagCfg, diagnoseDeps) } diff --git a/cmd/cluster-agent/subcommands/start/command.go b/cmd/cluster-agent/subcommands/start/command.go index 846aa5d10a84e6..dbbdcead45aff6 100644 --- a/cmd/cluster-agent/subcommands/start/command.go +++ b/cmd/cluster-agent/subcommands/start/command.go @@ -11,7 +11,6 @@ package start import ( "context" "fmt" - "net/http" "os" "os/signal" @@ -34,6 +33,8 @@ import ( "github.com/DataDog/datadog-agent/comp/collector/collector" "github.com/DataDog/datadog-agent/comp/collector/collector/collectorimpl" "github.com/DataDog/datadog-agent/comp/core" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/autodiscoveryimpl" "github.com/DataDog/datadog-agent/comp/core/config" "github.com/DataDog/datadog-agent/comp/core/log" "github.com/DataDog/datadog-agent/comp/core/log/logimpl" @@ -64,7 +65,6 @@ import ( pkgconfig "github.com/DataDog/datadog-agent/pkg/config" rcclient "github.com/DataDog/datadog-agent/pkg/config/remote/client" commonsettings "github.com/DataDog/datadog-agent/pkg/config/settings" - autodiscoveryStatus "github.com/DataDog/datadog-agent/pkg/status/autodiscovery" hostnameStatus "github.com/DataDog/datadog-agent/pkg/status/clusteragent/hostname" collectorStatus "github.com/DataDog/datadog-agent/pkg/status/collector" endpointsStatus "github.com/DataDog/datadog-agent/pkg/status/endpoints" @@ -156,7 +156,6 @@ func Commands(globalParams *command.GlobalParams) []*cobra.Command { status.NewInformationProvider(clusteragentMetricsStatus.Provider{}), status.NewInformationProvider(admissionpkg.Provider{}), status.NewInformationProvider(endpointsStatus.Provider{}), - status.NewInformationProvider(autodiscoveryStatus.Provider{}), status.NewInformationProvider(clusterchecks.Provider{}), status.NewInformationProvider(orchestratorStatus.Provider{}), ), @@ -165,6 +164,7 @@ func Commands(globalParams *command.GlobalParams) []*cobra.Command { }), statusimpl.Module(), collectorimpl.Module(), + autodiscoveryimpl.Module(), rcserviceimpl.Module(), rctelemetryreporterimpl.Module(), ) @@ -174,7 +174,17 @@ func Commands(globalParams *command.GlobalParams) []*cobra.Command { return []*cobra.Command{startCmd} } -func start(log log.Component, config config.Component, taggerComp tagger.Component, telemetry telemetry.Component, demultiplexer demultiplexer.Component, wmeta workloadmeta.Component, secretResolver secrets.Component, statusComponent status.Component, collector collector.Component, rcService optional.Option[rccomp.Component]) error { +func start(log log.Component, + config config.Component, + taggerComp tagger.Component, + telemetry telemetry.Component, + demultiplexer demultiplexer.Component, + wmeta workloadmeta.Component, + ac autodiscovery.Component, + secretResolver secrets.Component, + statusComponent status.Component, + collector collector.Component, + rcService optional.Option[rccomp.Component]) error { stopCh := make(chan struct{}) mainCtx, mainCtxCancel := context.WithCancel(context.Background()) @@ -253,7 +263,7 @@ func start(log log.Component, config config.Component, taggerComp tagger.Compone } // Starting server early to ease investigations - if err := api.StartServer(wmeta, taggerComp, demultiplexer, optional.NewOption(collector), statusComponent, secretResolver); err != nil { + if err := api.StartServer(wmeta, taggerComp, ac, demultiplexer, optional.NewOption(collector), statusComponent, secretResolver); err != nil { return fmt.Errorf("Error while starting agent API, exiting: %v", err) } @@ -327,21 +337,21 @@ func start(log log.Component, config config.Component, taggerComp tagger.Compone // FIXME: move LoadComponents and AC.LoadAndRun in their own package so we // don't import cmd/agent - // create and setup the Autoconfig instance - // The Autoconfig instance setup happens in the workloadmeta start hook + // create and setup the autoconfig instance + // The autoconfig instance setup happens in the workloadmeta start hook // create and setup the Collector and others. - common.LoadComponents(secretResolver, wmeta, config.GetString("confd_path")) + common.LoadComponents(secretResolver, wmeta, ac, config.GetString("confd_path")) // Set up check collector registerChecks() - common.AC.AddScheduler("check", pkgcollector.InitCheckScheduler(optional.NewOption(collector), demultiplexer), true) + ac.AddScheduler("check", pkgcollector.InitCheckScheduler(optional.NewOption(collector), demultiplexer), true) // start the autoconfig, this will immediately run any configured check - common.AC.LoadAndRun(mainCtx) + ac.LoadAndRun(mainCtx) if config.GetBool("cluster_checks.enabled") { // Start the cluster check Autodiscovery - clusterCheckHandler, err := setupClusterCheck(mainCtx) + clusterCheckHandler, err := setupClusterCheck(mainCtx, ac) if err == nil { api.ModifyAPIRouter(func(r *mux.Router) { dcav1.InstallChecksEndpoints(r, clusteragent.ServerContext{ClusterCheckHandler: clusterCheckHandler}) @@ -494,8 +504,8 @@ func initRuntimeSettings() error { return commonsettings.RegisterRuntimeSetting(commonsettings.NewProfilingRuntimeSetting("internal_profiling", "datadog-cluster-agent")) } -func setupClusterCheck(ctx context.Context) (*clusterchecks.Handler, error) { - handler, err := clusterchecks.NewHandler(common.AC) +func setupClusterCheck(ctx context.Context, ac autodiscovery.Component) (*clusterchecks.Handler, error) { + handler, err := clusterchecks.NewHandler(ac) if err != nil { return nil, err } diff --git a/cmd/systray/command/command.go b/cmd/systray/command/command.go index fbb6e4bd324dfe..18e0d958cff32d 100644 --- a/cmd/systray/command/command.go +++ b/cmd/systray/command/command.go @@ -23,6 +23,7 @@ import ( authtokenimpl "github.com/DataDog/datadog-agent/comp/api/authtoken/fetchonlyimpl" "github.com/DataDog/datadog-agent/comp/collector/collector" "github.com/DataDog/datadog-agent/comp/core" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery" "github.com/DataDog/datadog-agent/comp/core/config" "github.com/DataDog/datadog-agent/comp/core/flare" "github.com/DataDog/datadog-agent/comp/core/log/logimpl" @@ -102,6 +103,7 @@ func MakeCommand() *cobra.Command { path.DefaultJmxLogFile, path.DefaultDogstatsDLogFile, )), + fx.Supply(optional.NewNoneOption[autodiscovery.Component]()), flare.Module(), fx.Supply(optional.NewNoneOption[collector.Component]()), diagnosesendermanagerimpl.Module(), diff --git a/comp/README.md b/comp/README.md index d5dca450900e4c..846d5d4d67cece 100644 --- a/comp/README.md +++ b/comp/README.md @@ -69,6 +69,12 @@ Package collector defines the collector component. Package core implements the "core" bundle, providing services common to all agent flavors and binaries. +### [comp/core/autodiscovery](https://pkg.go.dev/github.com/DataDog/datadog-agent/comp/core/autodiscovery) + +*Datadog Team*: container-integrations + +Package autodiscovery provides the autodiscovery component for the Datadog Agent + ### [comp/core/config](https://pkg.go.dev/github.com/DataDog/datadog-agent/comp/core/config) Package config implements a component to handle agent configuration. This diff --git a/comp/api/api/apiimpl/api.go b/comp/api/api/apiimpl/api.go index 24f523316bd068..32be07cd013ee2 100644 --- a/comp/api/api/apiimpl/api.go +++ b/comp/api/api/apiimpl/api.go @@ -15,6 +15,7 @@ import ( "github.com/DataDog/datadog-agent/comp/api/api" "github.com/DataDog/datadog-agent/comp/api/authtoken" "github.com/DataDog/datadog-agent/comp/collector/collector" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery" "github.com/DataDog/datadog-agent/comp/core/flare" "github.com/DataDog/datadog-agent/comp/core/secrets" "github.com/DataDog/datadog-agent/comp/core/status" @@ -110,6 +111,7 @@ func newAPIServer(deps dependencies) api.Component { func (server *apiServer) StartServer( wmeta workloadmeta.Component, taggerComp tagger.Component, + ac autodiscovery.Component, logsAgent optional.Option[logsAgent.Component], senderManager sender.DiagnoseSenderManager, collector optional.Option[collector.Component], @@ -134,6 +136,7 @@ func (server *apiServer) StartServer( server.statusComponent, collector, server.eventPlatformReceiver, + ac, ) } diff --git a/comp/api/api/apiimpl/api_mock.go b/comp/api/api/apiimpl/api_mock.go index e5417c57d4a52c..fa0ffd8c3feec9 100644 --- a/comp/api/api/apiimpl/api_mock.go +++ b/comp/api/api/apiimpl/api_mock.go @@ -14,6 +14,7 @@ import ( "github.com/DataDog/datadog-agent/comp/api/api" "github.com/DataDog/datadog-agent/comp/collector/collector" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery" "github.com/DataDog/datadog-agent/comp/core/tagger" "github.com/DataDog/datadog-agent/comp/core/workloadmeta" logsAgent "github.com/DataDog/datadog-agent/comp/logs/agent" @@ -41,6 +42,7 @@ func newMock() api.Mock { func (mock *mockAPIServer) StartServer( _ workloadmeta.Component, _ tagger.Component, + _ autodiscovery.Component, _ optional.Option[logsAgent.Component], _ sender.DiagnoseSenderManager, _ optional.Option[collector.Component], diff --git a/comp/api/api/apiimpl/internal/agent/agent.go b/comp/api/api/apiimpl/internal/agent/agent.go index b4ce9b01095a7b..00800de0981b0b 100644 --- a/comp/api/api/apiimpl/internal/agent/agent.go +++ b/comp/api/api/apiimpl/internal/agent/agent.go @@ -30,6 +30,8 @@ import ( "github.com/DataDog/datadog-agent/comp/aggregator/demultiplexer" "github.com/DataDog/datadog-agent/comp/api/api/apiimpl/response" "github.com/DataDog/datadog-agent/comp/collector/collector" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/autodiscoveryimpl" "github.com/DataDog/datadog-agent/comp/core/flare" "github.com/DataDog/datadog-agent/comp/core/secrets" "github.com/DataDog/datadog-agent/comp/core/status" @@ -46,7 +48,6 @@ import ( "github.com/DataDog/datadog-agent/comp/metadata/inventoryhost" "github.com/DataDog/datadog-agent/comp/metadata/packagesigning" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery" "github.com/DataDog/datadog-agent/pkg/config" settingshttp "github.com/DataDog/datadog-agent/pkg/config/settings/http" "github.com/DataDog/datadog-agent/pkg/diagnose" @@ -85,6 +86,7 @@ func SetupHandlers( statusComponent status.Component, collector optional.Option[collector.Component], eventPlatformReceiver eventplatformreceiver.Component, + ac autodiscovery.Component, ) *mux.Router { r.HandleFunc("/version", common.GetVersion).Methods("GET") @@ -98,7 +100,9 @@ func SetupHandlers( r.HandleFunc("/{component}/status", componentStatusHandler).Methods("POST") r.HandleFunc("/{component}/configs", componentConfigHandler).Methods("GET") r.HandleFunc("/gui/csrf-token", getCSRFToken).Methods("GET") - r.HandleFunc("/config-check", getConfigCheck).Methods("GET") + r.HandleFunc("/config-check", func(w http.ResponseWriter, r *http.Request) { + getConfigCheck(w, r, ac) + }).Methods("GET") r.HandleFunc("/config", settingshttp.Server.GetFullDatadogConfig("")).Methods("GET") r.HandleFunc("/config/list-runtime", settingshttp.Server.ListConfigurable).Methods("GET") r.HandleFunc("/config/{setting}", settingshttp.Server.GetValue).Methods("GET") @@ -116,7 +120,7 @@ func SetupHandlers( r.HandleFunc("/metadata/inventory-host", func(w http.ResponseWriter, r *http.Request) { metadataPayloadInvHost(w, r, invHost) }).Methods("GET") r.HandleFunc("/metadata/package-signing", func(w http.ResponseWriter, r *http.Request) { metadataPayloadPkgSigning(w, r, pkgSigning) }).Methods("GET") r.HandleFunc("/diagnose", func(w http.ResponseWriter, r *http.Request) { - diagnoseDeps := diagnose.NewSuitesDeps(senderManager, collector, secretResolver) + diagnoseDeps := diagnose.NewSuitesDeps(senderManager, collector, secretResolver, optional.NewOption[autodiscovery.Component](ac)) getDiagnose(w, r, diagnoseDeps) }).Methods("POST") @@ -401,23 +405,17 @@ func getCSRFToken(w http.ResponseWriter, _ *http.Request) { w.Write([]byte(gui.CsrfToken)) } -func getConfigCheck(w http.ResponseWriter, _ *http.Request) { +func getConfigCheck(w http.ResponseWriter, _ *http.Request, ac autodiscovery.Component) { var response response.ConfigCheckResponse - if common.AC == nil { - log.Errorf("Trying to use /config-check before the agent has been initialized.") - setJSONError(w, fmt.Errorf("agent not initialized"), 503) - return - } - - configSlice := common.AC.LoadedConfigs() + configSlice := ac.LoadedConfigs() sort.Slice(configSlice, func(i, j int) bool { return configSlice[i].Name < configSlice[j].Name }) response.Configs = configSlice - response.ResolveWarnings = autodiscovery.GetResolveWarnings() - response.ConfigErrors = autodiscovery.GetConfigErrors() - response.Unresolved = common.AC.GetUnresolvedTemplates() + response.ResolveWarnings = autodiscoveryimpl.GetResolveWarnings() + response.ConfigErrors = autodiscoveryimpl.GetConfigErrors() + response.Unresolved = ac.GetUnresolvedTemplates() jsonConfig, err := json.Marshal(response) if err != nil { diff --git a/comp/api/api/apiimpl/internal/agent/agent_jmx.go b/comp/api/api/apiimpl/internal/agent/agent_jmx.go index 317a0997d89db9..54bf62253a206c 100644 --- a/comp/api/api/apiimpl/internal/agent/agent_jmx.go +++ b/comp/api/api/apiimpl/internal/agent/agent_jmx.go @@ -19,7 +19,7 @@ import ( "github.com/DataDog/datadog-agent/pkg/util/log" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/corechecks/embed/jmx" jmxStatus "github.com/DataDog/datadog-agent/pkg/status/jmx" "github.com/DataDog/datadog-agent/pkg/util" diff --git a/comp/api/api/apiimpl/response/types.go b/comp/api/api/apiimpl/response/types.go index 586d7bcd9a2f25..05cb86bcb64b73 100644 --- a/comp/api/api/apiimpl/response/types.go +++ b/comp/api/api/apiimpl/response/types.go @@ -7,7 +7,7 @@ package response import ( - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" ) // ConfigCheckResponse holds the config check response diff --git a/comp/api/api/apiimpl/server.go b/comp/api/api/apiimpl/server.go index fd4f67c4ede282..a44fabb64778da 100644 --- a/comp/api/api/apiimpl/server.go +++ b/comp/api/api/apiimpl/server.go @@ -16,6 +16,7 @@ import ( "github.com/DataDog/datadog-agent/comp/aggregator/demultiplexer" "github.com/DataDog/datadog-agent/comp/collector/collector" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery" "github.com/DataDog/datadog-agent/comp/core/flare" "github.com/DataDog/datadog-agent/comp/core/secrets" "github.com/DataDog/datadog-agent/comp/core/status" @@ -84,6 +85,7 @@ func StartServers( statusComponent status.Component, collector optional.Option[collector.Component], eventPlatformReceiver eventplatformreceiver.Component, + ac autodiscovery.Component, ) error { apiAddr, err := getIPCAddressPort() if err != nil { @@ -133,6 +135,7 @@ func StartServers( statusComponent, collector, eventPlatformReceiver, + ac, ); err != nil { return fmt.Errorf("unable to start CMD API server: %v", err) } diff --git a/comp/api/api/apiimpl/server_cmd.go b/comp/api/api/apiimpl/server_cmd.go index a6434d9e9bafa0..b3f4c53846d822 100644 --- a/comp/api/api/apiimpl/server_cmd.go +++ b/comp/api/api/apiimpl/server_cmd.go @@ -25,6 +25,7 @@ import ( "github.com/DataDog/datadog-agent/comp/api/api/apiimpl/internal/check" apiutils "github.com/DataDog/datadog-agent/comp/api/api/apiimpl/utils" "github.com/DataDog/datadog-agent/comp/collector/collector" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery" "github.com/DataDog/datadog-agent/comp/core/flare" "github.com/DataDog/datadog-agent/comp/core/secrets" "github.com/DataDog/datadog-agent/comp/core/status" @@ -79,6 +80,7 @@ func startCMDServer( statusComponent status.Component, collector optional.Option[collector.Component], eventPlatformReceiver eventplatformreceiver.Component, + ac autodiscovery.Component, ) (err error) { // get the transport we're going to use under HTTP cmdListener, err = getListener(cmdAddr) @@ -160,6 +162,7 @@ func startCMDServer( statusComponent, collector, eventPlatformReceiver, + ac, ))) cmdMux.Handle("/check/", http.StripPrefix("/check", check.SetupHandlers(checkMux))) cmdMux.Handle("/", gwmux) diff --git a/comp/api/api/component.go b/comp/api/api/component.go index f85aa6e5188af4..4e8c93d6332ebd 100644 --- a/comp/api/api/component.go +++ b/comp/api/api/component.go @@ -10,6 +10,7 @@ import ( "net" "github.com/DataDog/datadog-agent/comp/collector/collector" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery" "github.com/DataDog/datadog-agent/comp/core/tagger" "github.com/DataDog/datadog-agent/comp/core/workloadmeta" logsAgent "github.com/DataDog/datadog-agent/comp/logs/agent" @@ -29,6 +30,7 @@ type Component interface { StartServer( wmeta workloadmeta.Component, tagger tagger.Component, + ac autodiscovery.Component, logsAgent optional.Option[logsAgent.Component], senderManager sender.DiagnoseSenderManager, collector optional.Option[collector.Component], diff --git a/comp/checks/agentcrashdetect/agentcrashdetectimpl/agentcrashdetect.go b/comp/checks/agentcrashdetect/agentcrashdetectimpl/agentcrashdetect.go index e7e53d434599da..b11fc1894781d9 100644 --- a/comp/checks/agentcrashdetect/agentcrashdetectimpl/agentcrashdetect.go +++ b/comp/checks/agentcrashdetect/agentcrashdetectimpl/agentcrashdetect.go @@ -18,10 +18,10 @@ import ( yaml "gopkg.in/yaml.v2" "github.com/DataDog/datadog-agent/comp/checks/agentcrashdetect" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" compsysconfig "github.com/DataDog/datadog-agent/comp/core/sysprobeconfig" comptraceconfig "github.com/DataDog/datadog-agent/comp/trace/config" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/check" core "github.com/DataDog/datadog-agent/pkg/collector/corechecks" "github.com/DataDog/datadog-agent/pkg/collector/corechecks/system/wincrashdetect/probe" diff --git a/comp/checks/winregistry/impl/winregistryimpl.go b/comp/checks/winregistry/impl/winregistryimpl.go index 26621c2142537c..7912dfb5bbcf6a 100644 --- a/comp/checks/winregistry/impl/winregistryimpl.go +++ b/comp/checks/winregistry/impl/winregistryimpl.go @@ -13,12 +13,16 @@ import ( "encoding/json" "errors" "fmt" + "io/fs" + "strconv" + "strings" + "github.com/DataDog/datadog-agent/comp/checks/winregistry" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/comp/core/log" "github.com/DataDog/datadog-agent/comp/logs/agent" logsConfig "github.com/DataDog/datadog-agent/comp/logs/agent/config" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/check" core "github.com/DataDog/datadog-agent/pkg/collector/corechecks" "github.com/DataDog/datadog-agent/pkg/logs/message" @@ -33,9 +37,6 @@ import ( "go.uber.org/fx" "golang.org/x/sys/windows/registry" "gopkg.in/yaml.v2" - "io/fs" - "strconv" - "strings" ) const ( diff --git a/comp/collector/collector/collectorimpl/internal/middleware/check_wrapper.go b/comp/collector/collector/collectorimpl/internal/middleware/check_wrapper.go index a725162a0916a3..9a05af4b7bbbd2 100644 --- a/comp/collector/collector/collectorimpl/internal/middleware/check_wrapper.go +++ b/comp/collector/collector/collectorimpl/internal/middleware/check_wrapper.go @@ -10,8 +10,8 @@ import ( "sync" "time" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/check" checkid "github.com/DataDog/datadog-agent/pkg/collector/check/id" "github.com/DataDog/datadog-agent/pkg/collector/check/stats" diff --git a/pkg/autodiscovery/README.md b/comp/core/autodiscovery/README.md similarity index 95% rename from pkg/autodiscovery/README.md rename to comp/core/autodiscovery/README.md index 7cec8a69f54274..22cf537cc4e76d 100644 --- a/pkg/autodiscovery/README.md +++ b/comp/core/autodiscovery/README.md @@ -37,14 +37,14 @@ Cluster │ ┌────────────────┐ ## Config Providers -The [config providers](https://pkg.go.dev/github.com/DataDog/datadog-agent/pkg/autodiscovery/providers) draw configuration information from many sources +The [config providers](https://pkg.go.dev/github.com/DataDog/datadog-agent/comp/core/autodiscovery/providers) draw configuration information from many sources * Kubernetes (for Endpoints and Services, run only on the cluster agent) * cluster agent (for cluster checks and endpoints checks); * static files (`conf.d/.d/conf.yaml`); and * the workloadmeta service. -The providers extract configuration from entities' tags, labels, etc. in the form of [`integration.Config`](https://pkg.go.dev/github.com/DataDog/datadog-agent/pkg/autodiscovery/integration#Config) values. +The providers extract configuration from entities' tags, labels, etc. in the form of [`integration.Config`](https://pkg.go.dev/github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration#Config) values. Some configs are "templates", meaning that they must be resolved with a service to generate a full, non-template config. Other configs are not templates, and simply contain settings and options for the agent. @@ -53,7 +53,7 @@ These are strings that identify the services to which the config applies. ## Listeners and Services -The [listeners](https://pkg.go.dev/github.com/DataDog/datadog-agent/pkg/autodiscovery/listeners) monitor entities, known as "services" in this package, such as pods, containers, or tasks. +The [listeners](https://pkg.go.dev/github.com/DataDog/datadog-agent/comp/core/autodiscovery/listeners) monitor entities, known as "services" in this package, such as pods, containers, or tasks. Each service has two entity identifiers: the AD service ID (from `svc.GetServiceID()`) and the Tagger entity (`svc.GetTaggerEntity()`). These both uniquely identify an entity, but using different syntax. diff --git a/pkg/autodiscovery/autoconfig.go b/comp/core/autodiscovery/autodiscoveryimpl/autoconfig.go similarity index 73% rename from pkg/autodiscovery/autoconfig.go rename to comp/core/autodiscovery/autodiscoveryimpl/autoconfig.go index 08fdfc13d10f1a..f38162d70e018e 100644 --- a/pkg/autodiscovery/autoconfig.go +++ b/comp/core/autodiscovery/autodiscoveryimpl/autoconfig.go @@ -3,8 +3,8 @@ // This product includes software developed at Datadog (https://www.datadoghq.com/). // Copyright 2016-present Datadog, Inc. -// Package autodiscovery implements the agent's autodiscovery mechanism. -package autodiscovery +// Package autodiscoveryimpl implements the agent's autodiscovery mechanism. +package autodiscoveryimpl import ( "context" @@ -12,40 +12,61 @@ import ( "time" "go.uber.org/atomic" - + "go.uber.org/fx" + + "github.com/DataDog/datadog-agent/comp/core/autodiscovery" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/listeners" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/providers" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/scheduler" + autodiscoveryStatus "github.com/DataDog/datadog-agent/comp/core/autodiscovery/status" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/telemetry" + configComponent "github.com/DataDog/datadog-agent/comp/core/config" + logComp "github.com/DataDog/datadog-agent/comp/core/log" "github.com/DataDog/datadog-agent/comp/core/secrets" + "github.com/DataDog/datadog-agent/comp/core/status" "github.com/DataDog/datadog-agent/comp/core/tagger" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/listeners" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/providers" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/scheduler" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/telemetry" "github.com/DataDog/datadog-agent/pkg/collector/check" checkid "github.com/DataDog/datadog-agent/pkg/collector/check/id" "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/status/health" + "github.com/DataDog/datadog-agent/pkg/util/fxutil" "github.com/DataDog/datadog-agent/pkg/util/log" + "github.com/DataDog/datadog-agent/pkg/util/optional" "github.com/DataDog/datadog-agent/pkg/util/retry" ) var listenerCandidateIntl = 30 * time.Second +// dependencies is the set of dependencies for the AutoConfig component. +type dependencies struct { + fx.In + Lc fx.Lifecycle + Config configComponent.Component + Log logComp.Component + TaggerComp tagger.Component + Secrets secrets.Component +} + // AutoConfig implements the agent's autodiscovery mechanism. It is // responsible to collect integrations configurations from different sources // and then "schedule" or "unschedule" them by notifying subscribers. See the // module README for details. type AutoConfig struct { - configPollers []*configPoller - listeners []listeners.ServiceListener - listenerCandidates map[string]*listenerCandidate - listenerRetryStop chan struct{} - scheduler *scheduler.MetaScheduler - listenerStop chan struct{} - healthListening *health.Handle - newService chan listeners.Service - delService chan listeners.Service - store *store - cfgMgr configManager + configPollers []*configPoller + listeners []listeners.ServiceListener + listenerCandidates map[string]*listenerCandidate + listenerRetryStop chan struct{} + scheduler *scheduler.MetaScheduler + listenerStop chan struct{} + healthListening *health.Handle + newService chan listeners.Service + delService chan listeners.Service + store *store + cfgMgr configManager + serviceListenerFactories map[string]listeners.ServiceListenerFactory + providerCatalog map[string]providers.ConfigProviderFactory + started bool // m covers the `configPollers`, `listenerCandidates`, `listeners`, and `listenerRetryStop`, but // not the values they point to. @@ -55,6 +76,31 @@ type AutoConfig struct { ranOnce *atomic.Bool } +type provides struct { + fx.Out + + Comp autodiscovery.Component + StatusProvider status.InformationProvider +} + +// Module defines the fx options for this component. +func Module() fxutil.Module { + return fxutil.Component( + fx.Provide( + newProvides, + )) +} + +func newProvides(deps dependencies) provides { + c := newAutoConfig(deps) + return provides{ + Comp: c, + StatusProvider: status.NewInformationProvider(autodiscoveryStatus.GetProvider(c)), + } +} + +var _ autodiscovery.Component = (*AutoConfig)(nil) + type listenerCandidate struct { factory listeners.ServiceListenerFactory config listeners.Config @@ -64,31 +110,40 @@ func (l *listenerCandidate) try() (listeners.ServiceListener, error) { return l.factory(l.config) } -// NewAutoConfig creates an AutoConfig instance and starts it. -func NewAutoConfig(scheduler *scheduler.MetaScheduler, secretResolver secrets.Component) *AutoConfig { - ac := NewAutoConfigNoStart(scheduler, secretResolver) - - // We need to listen to the service channels before anything is sent to them - go ac.serviceListening() - +// newAutoConfig creates an AutoConfig instance and starts it. +func newAutoConfig(deps dependencies) autodiscovery.Component { + ac := createNewAutoConfig(scheduler.NewMetaScheduler(), deps.Secrets) + deps.Lc.Append(fx.Hook{ + OnStart: func(c context.Context) error { + ac.Start() + return nil + }, + OnStop: func(c context.Context) error { + ac.Stop() + return nil + }, + }) return ac } -// NewAutoConfigNoStart creates an AutoConfig instance. -func NewAutoConfigNoStart(scheduler *scheduler.MetaScheduler, secretResolver secrets.Component) *AutoConfig { +// createNewAutoConfig creates an AutoConfig instance (without starting). +func createNewAutoConfig(scheduler *scheduler.MetaScheduler, secretResolver secrets.Component) *AutoConfig { cfgMgr := newReconcilingConfigManager(secretResolver) ac := &AutoConfig{ - configPollers: make([]*configPoller, 0, 9), - listenerCandidates: make(map[string]*listenerCandidate), - listenerRetryStop: nil, // We'll open it if needed - listenerStop: make(chan struct{}), - healthListening: health.RegisterLiveness("ad-servicelistening"), - newService: make(chan listeners.Service), - delService: make(chan listeners.Service), - store: newStore(), - cfgMgr: cfgMgr, - scheduler: scheduler, - ranOnce: atomic.NewBool(false), + configPollers: make([]*configPoller, 0, 9), + listenerCandidates: make(map[string]*listenerCandidate), + listenerRetryStop: nil, // We'll open it if needed + listenerStop: make(chan struct{}), + healthListening: health.RegisterLiveness("ad-servicelistening"), + newService: make(chan listeners.Service), + delService: make(chan listeners.Service), + store: newStore(), + cfgMgr: cfgMgr, + scheduler: scheduler, + ranOnce: atomic.NewBool(false), + serviceListenerFactories: make(map[string]listeners.ServiceListenerFactory), + providerCatalog: make(map[string]providers.ConfigProviderFactory), + started: false, } return ac } @@ -126,6 +181,8 @@ func (ac *AutoConfig) checkTagFreshness(ctx context.Context) { var servicesToRefresh []listeners.Service for _, service := range ac.store.getServices() { previousHash := ac.store.getTagsHashForService(service.GetTaggerEntity()) + // TODO(components) (tagger): GetEntityHash is still called via global taggerClient instance instead of tagger.Component + // because GetEntityHash is not part of the tagger.Component interface yet. currentHash := tagger.GetEntityHash(service.GetTaggerEntity(), tagger.ChecksCardinality) // Since an empty hash is a valid value, and we are not able to differentiate // an empty tagger or store with an empty value. @@ -142,6 +199,23 @@ func (ac *AutoConfig) checkTagFreshness(ctx context.Context) { } } +// Start will listen to the service channels before anything is sent to them +// Usually, Start and Stop methods should not be in the component interface as it should be handled using Lifecycle hooks. +// We make exceptions here because we need to disable it at runtime. +func (ac *AutoConfig) Start() { + listeners.RegisterListeners(ac.serviceListenerFactories) + providers.RegisterProviders(ac.providerCatalog) + setupAcErrors() + ac.started = true + // Start the service listener + go ac.serviceListening() +} + +// IsStarted returns true if the AutoConfig has been started. +func (ac *AutoConfig) IsStarted() bool { + return ac.started +} + // Stop just shuts down AutoConfig in a clean way. // AutoConfig is not supposed to be restarted, so this is expected // to be called only once at program exit. @@ -285,7 +359,7 @@ func (ac *AutoConfig) addListenerCandidates(listenerConfigs []config.Listeners) defer ac.m.Unlock() for _, c := range listenerConfigs { - factory, ok := listeners.ServiceListenerFactories[c.Name] + factory, ok := ac.serviceListenerFactories[c.Name] if !ok { // Factory has not been registered. log.Warnf("Listener %s was not registered", c.Name) @@ -374,7 +448,7 @@ func (ac *AutoConfig) processRemovedConfigs(configs []integration.Config) { // work within f. func (ac *AutoConfig) MapOverLoadedConfigs(f func(map[string]integration.Config)) { if ac == nil || ac.store == nil { - log.Error("Autoconfig store not initialized") + log.Error("AutoConfig store not initialized") f(map[string]integration.Config{}) return } @@ -411,6 +485,11 @@ func (ac *AutoConfig) GetIDOfCheckWithEncryptedSecrets(checkID checkid.ID) check return ac.store.getIDOfCheckWithEncryptedSecrets(checkID) } +// GetProviderCatalog returns all registered ConfigProviderFactory. +func (ac *AutoConfig) GetProviderCatalog() map[string]providers.ConfigProviderFactory { + return ac.providerCatalog +} + // processNewService takes a service, tries to match it against templates and // triggers scheduling events if it finds a valid config for it. func (ac *AutoConfig) processNewService(ctx context.Context, svc listeners.Service) { @@ -512,3 +591,31 @@ func configType(c integration.Config) string { return "unknown" } + +// optionalModuleDeps has an optional tagger component +type optionalModuleDeps struct { + fx.In + Lc fx.Lifecycle + Config configComponent.Component + Log logComp.Component + TaggerComp optional.Option[tagger.Component] + Secrets secrets.Component +} + +// OptionalModule defines the fx options when ac should be used as an optional and not started +func OptionalModule() fxutil.Module { + return fxutil.Component( + fx.Provide( + newOptionalAutoConfig, + )) +} + +// newOptionalAutoConfig creates an optional AutoConfig instance if tagger is available +func newOptionalAutoConfig(deps optionalModuleDeps) optional.Option[autodiscovery.Component] { + _, ok := deps.TaggerComp.Get() + if !ok { + return optional.NewNoneOption[autodiscovery.Component]() + } + return optional.NewOption[autodiscovery.Component]( + createNewAutoConfig(scheduler.NewMetaScheduler(), deps.Secrets)) +} diff --git a/comp/core/autodiscovery/autodiscoveryimpl/autoconfig_mock.go b/comp/core/autodiscovery/autodiscoveryimpl/autoconfig_mock.go new file mode 100644 index 00000000000000..5569af079d0ae5 --- /dev/null +++ b/comp/core/autodiscovery/autodiscoveryimpl/autoconfig_mock.go @@ -0,0 +1,45 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +//go:build test + +package autodiscoveryimpl + +import ( + "testing" + + "github.com/DataDog/datadog-agent/comp/core/autodiscovery" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/scheduler" + "github.com/DataDog/datadog-agent/pkg/util/fxutil" + "go.uber.org/fx" +) + +// MockParams defines the parameters for the mock component. +type MockParams struct { + Scheduler *scheduler.MetaScheduler +} + +type mockdependencies struct { + fx.In + Params MockParams +} + +func newMockAutoConfig(deps mockdependencies) autodiscovery.Mock { + return createNewAutoConfig(deps.Params.Scheduler, nil) +} + +// MockModule provides the default autoconfig without other components configured, and not started +func MockModule() fxutil.Module { + return fxutil.Component( + fx.Provide(newMockAutoConfig), + ) +} + +// CreateMockAutoConfig creates a mock AutoConfig for testing +func CreateMockAutoConfig(t *testing.T, scheduler *scheduler.MetaScheduler) autodiscovery.Mock { + return fxutil.Test[autodiscovery.Mock](t, fx.Options( + fx.Supply(MockParams{Scheduler: scheduler}), + MockModule())) +} diff --git a/pkg/autodiscovery/autoconfig_test.go b/comp/core/autodiscovery/autodiscoveryimpl/autoconfig_test.go similarity index 89% rename from pkg/autodiscovery/autoconfig_test.go rename to comp/core/autodiscovery/autodiscoveryimpl/autoconfig_test.go index b49c327bec9c4c..27339d82da773c 100644 --- a/pkg/autodiscovery/autoconfig_test.go +++ b/comp/core/autodiscovery/autodiscoveryimpl/autoconfig_test.go @@ -3,7 +3,7 @@ // This product includes software developed at Datadog (https://www.datadoghq.com/). // Copyright 2016-present Datadog, Inc. -package autodiscovery +package autodiscoveryimpl import ( "context" @@ -16,11 +16,12 @@ import ( "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/listeners" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/providers" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/providers/names" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/scheduler" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/listeners" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/providers" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/providers/names" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/scheduler" + "github.com/DataDog/datadog-agent/comp/core/secrets" checkid "github.com/DataDog/datadog-agent/pkg/collector/check/id" "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/util/retry" @@ -142,12 +143,10 @@ func (ms *MockScheduler) Stop() {} type AutoConfigTestSuite struct { suite.Suite - originalListeners map[string]listeners.ServiceListenerFactory } // SetupSuite saves the original listener registry func (suite *AutoConfigTestSuite) SetupSuite() { - suite.originalListeners = listeners.ServiceListenerFactories config.SetupLogger( config.LoggerName("test"), "debug", @@ -159,19 +158,15 @@ func (suite *AutoConfigTestSuite) SetupSuite() { ) } -// TearDownSuite restores the original listener registry -func (suite *AutoConfigTestSuite) TearDownSuite() { - listeners.ServiceListenerFactories = suite.originalListeners -} - -// Empty the listener registry before each test -func (suite *AutoConfigTestSuite) SetupTest() { - listeners.ServiceListenerFactories = make(map[string]listeners.ServiceListenerFactory) +func getAutoConfig(scheduler *scheduler.MetaScheduler, secretResolver secrets.Component) *AutoConfig { + ac := createNewAutoConfig(scheduler, secretResolver) + go ac.serviceListening() + return ac } func (suite *AutoConfigTestSuite) TestAddConfigProvider() { mockResolver := MockSecretResolver{suite.T(), nil} - ac := NewAutoConfig(scheduler.NewMetaScheduler(), &mockResolver) + ac := getAutoConfig(scheduler.NewMetaScheduler(), &mockResolver) assert.Len(suite.T(), ac.configPollers, 0) mp := &MockProvider{} ac.AddConfigProvider(mp, false, 0) @@ -188,11 +183,11 @@ func (suite *AutoConfigTestSuite) TestAddConfigProvider() { func (suite *AutoConfigTestSuite) TestAddListener() { mockResolver := MockSecretResolver{suite.T(), nil} - ac := NewAutoConfig(scheduler.NewMetaScheduler(), &mockResolver) + ac := getAutoConfig(scheduler.NewMetaScheduler(), &mockResolver) assert.Len(suite.T(), ac.listeners, 0) ml := &MockListener{} - listeners.Register("mock", ml.fakeFactory) + listeners.Register("mock", ml.fakeFactory, ac.serviceListenerFactories) ac.AddListeners([]config.Listeners{mockListenenerConfig}) ac.m.Lock() @@ -226,10 +221,10 @@ func (suite *AutoConfigTestSuite) TestDiffConfigs() { func (suite *AutoConfigTestSuite) TestStop() { mockResolver := MockSecretResolver{suite.T(), nil} - ac := NewAutoConfig(scheduler.NewMetaScheduler(), &mockResolver) + ac := getAutoConfig(scheduler.NewMetaScheduler(), &mockResolver) ml := &MockListener{} - listeners.Register("mock", ml.fakeFactory) + listeners.Register("mock", ml.fakeFactory, ac.serviceListenerFactories) ac.AddListeners([]config.Listeners{mockListenenerConfig}) ac.Stop() @@ -238,6 +233,9 @@ func (suite *AutoConfigTestSuite) TestStop() { } func (suite *AutoConfigTestSuite) TestListenerRetry() { + mockResolver := MockSecretResolver{suite.T(), nil} + ac := getAutoConfig(scheduler.NewMetaScheduler(), &mockResolver) + // Hack the retry delay to shorten the test run time initialListenerCandidateIntl := listenerCandidateIntl listenerCandidateIntl = 50 * time.Millisecond @@ -249,7 +247,7 @@ func (suite *AutoConfigTestSuite) TestListenerRetry() { returnError: nil, returnValue: noErrListener, } - listeners.Register("noerr", noErrFactory.make) + listeners.Register("noerr", noErrFactory.make, ac.serviceListenerFactories) // failFactory does not implement retry, should be discarded on first fail failListener := &MockListener{} @@ -257,7 +255,7 @@ func (suite *AutoConfigTestSuite) TestListenerRetry() { returnError: errors.New("permafail"), returnValue: failListener, } - listeners.Register("fail", failFactory.make) + listeners.Register("fail", failFactory.make, ac.serviceListenerFactories) // retryFactory implements retry retryListener := &MockListener{} @@ -270,16 +268,14 @@ func (suite *AutoConfigTestSuite) TestListenerRetry() { }, returnValue: retryListener, } - listeners.Register("retry", retryFactory.make) + listeners.Register("retry", retryFactory.make, ac.serviceListenerFactories) - mockResolver := MockSecretResolver{suite.T(), nil} configs := []config.Listeners{ {Name: "noerr"}, {Name: "fail"}, {Name: "retry"}, {Name: "invalid"}, } - ac := NewAutoConfig(scheduler.NewMetaScheduler(), &mockResolver) assert.Nil(suite.T(), ac.listenerRetryStop) ac.AddListeners(configs) @@ -345,7 +341,7 @@ func TestResolveTemplate(t *testing.T) { msch.Register("mock", sch, false) mockResolver := MockSecretResolver{t, nil} - ac := NewAutoConfig(msch, &mockResolver) + ac := getAutoConfig(msch, &mockResolver) tpl := integration.Config{ Name: "cpu", ADIdentifiers: []string{"redis"}, @@ -380,7 +376,7 @@ func TestRemoveTemplate(t *testing.T) { mockResolver := MockSecretResolver{t, nil} - ac := NewAutoConfig(scheduler.NewMetaScheduler(), &mockResolver) + ac := getAutoConfig(scheduler.NewMetaScheduler(), &mockResolver) // Add static config c := integration.Config{ Name: "memory", @@ -432,7 +428,7 @@ func TestDecryptConfig(t *testing.T) { }, }} - ac := NewAutoConfig(scheduler.NewMetaScheduler(), &mockResolver) + ac := getAutoConfig(scheduler.NewMetaScheduler(), &mockResolver) ac.processNewService(ctx, &dummyService{ID: "abcd", ADIdentifiers: []string{"redis"}}) tpl := integration.Config{ @@ -475,7 +471,7 @@ func TestProcessClusterCheckConfigWithSecrets(t *testing.T) { returnedError: nil, }, }} - ac := NewAutoConfig(scheduler.NewMetaScheduler(), &mockResolver) + ac := getAutoConfig(scheduler.NewMetaScheduler(), &mockResolver) tpl := integration.Config{ Provider: names.ClusterChecks, diff --git a/pkg/autodiscovery/common_test.go b/comp/core/autodiscovery/autodiscoveryimpl/common_test.go similarity index 93% rename from pkg/autodiscovery/common_test.go rename to comp/core/autodiscovery/autodiscoveryimpl/common_test.go index 0196561ff67e16..e07a44737239d0 100644 --- a/pkg/autodiscovery/common_test.go +++ b/comp/core/autodiscovery/autodiscoveryimpl/common_test.go @@ -3,13 +3,13 @@ // This product includes software developed at Datadog (https://www.datadoghq.com/). // Copyright 2016-present Datadog, Inc. -package autodiscovery +package autodiscoveryimpl import ( "context" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/listeners" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/listeners" "github.com/DataDog/datadog-agent/pkg/util/containers" ) diff --git a/pkg/autodiscovery/config_poller.go b/comp/core/autodiscovery/autodiscoveryimpl/config_poller.go similarity index 96% rename from pkg/autodiscovery/config_poller.go rename to comp/core/autodiscovery/autodiscoveryimpl/config_poller.go index 6eb7141a27cace..8f7fb02818b83a 100644 --- a/pkg/autodiscovery/config_poller.go +++ b/comp/core/autodiscovery/autodiscoveryimpl/config_poller.go @@ -3,7 +3,7 @@ // This product includes software developed at Datadog (https://www.datadoghq.com/). // Copyright 2016-present Datadog, Inc. -package autodiscovery +package autodiscoveryimpl import ( "context" @@ -11,9 +11,9 @@ import ( "sync" "time" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/providers" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/telemetry" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/providers" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/telemetry" "github.com/DataDog/datadog-agent/pkg/status/health" "github.com/DataDog/datadog-agent/pkg/util/log" ) diff --git a/pkg/autodiscovery/configmgr.go b/comp/core/autodiscovery/autodiscoveryimpl/configmgr.go similarity index 97% rename from pkg/autodiscovery/configmgr.go rename to comp/core/autodiscovery/autodiscoveryimpl/configmgr.go index 73db530ae7a7a3..28a88f775dcaa7 100644 --- a/pkg/autodiscovery/configmgr.go +++ b/comp/core/autodiscovery/autodiscoveryimpl/configmgr.go @@ -3,18 +3,18 @@ // This product includes software developed at Datadog (https://www.datadoghq.com/). // Copyright 2016-present Datadog, Inc. -package autodiscovery +package autodiscoveryimpl import ( "context" "fmt" "sync" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/configresolver" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/listeners" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/providers/names" "github.com/DataDog/datadog-agent/comp/core/secrets" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/configresolver" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/listeners" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/providers/names" checkid "github.com/DataDog/datadog-agent/pkg/collector/check/id" "github.com/DataDog/datadog-agent/pkg/util/log" ) diff --git a/pkg/autodiscovery/configmgr_test.go b/comp/core/autodiscovery/autodiscoveryimpl/configmgr_test.go similarity index 98% rename from pkg/autodiscovery/configmgr_test.go rename to comp/core/autodiscovery/autodiscoveryimpl/configmgr_test.go index 100aec2b99e9e1..e90f9de37624fb 100644 --- a/pkg/autodiscovery/configmgr_test.go +++ b/comp/core/autodiscovery/autodiscoveryimpl/configmgr_test.go @@ -3,7 +3,7 @@ // This product includes software developed at Datadog (https://www.datadoghq.com/). // Copyright 2016-present Datadog, Inc. -package autodiscovery +package autodiscoveryimpl import ( "context" @@ -17,9 +17,9 @@ import ( "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/listeners" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/providers/names" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/listeners" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/providers/names" checkid "github.com/DataDog/datadog-agent/pkg/collector/check/id" "github.com/DataDog/datadog-agent/pkg/util/testutil" ) diff --git a/pkg/autodiscovery/multimap.go b/comp/core/autodiscovery/autodiscoveryimpl/multimap.go similarity index 98% rename from pkg/autodiscovery/multimap.go rename to comp/core/autodiscovery/autodiscoveryimpl/multimap.go index 58f2cce6599028..c0ec806cfb0a0e 100644 --- a/pkg/autodiscovery/multimap.go +++ b/comp/core/autodiscovery/autodiscoveryimpl/multimap.go @@ -3,7 +3,7 @@ // This product includes software developed at Datadog (https://www.datadoghq.com/). // Copyright 2016-present Datadog, Inc. -package autodiscovery +package autodiscoveryimpl // a multimap is a string/string map that can contain multiple values for a // single key. Duplicate values are allowed (but not used in this package). diff --git a/pkg/autodiscovery/multimap_test.go b/comp/core/autodiscovery/autodiscoveryimpl/multimap_test.go similarity index 97% rename from pkg/autodiscovery/multimap_test.go rename to comp/core/autodiscovery/autodiscoveryimpl/multimap_test.go index c2a6577c52a838..32b88a2645ee58 100644 --- a/pkg/autodiscovery/multimap_test.go +++ b/comp/core/autodiscovery/autodiscoveryimpl/multimap_test.go @@ -3,7 +3,7 @@ // This product includes software developed at Datadog (https://www.datadoghq.com/). // Copyright 2022-present Datadog, Inc. -package autodiscovery +package autodiscoveryimpl import ( "testing" diff --git a/pkg/autodiscovery/secrets.go b/comp/core/autodiscovery/autodiscoveryimpl/secrets.go similarity index 94% rename from pkg/autodiscovery/secrets.go rename to comp/core/autodiscovery/autodiscoveryimpl/secrets.go index 6db09d295809f4..2229dacacedaf9 100644 --- a/pkg/autodiscovery/secrets.go +++ b/comp/core/autodiscovery/autodiscoveryimpl/secrets.go @@ -3,13 +3,13 @@ // This product includes software developed at Datadog (https://www.datadoghq.com/). // Copyright 2016-present Datadog, Inc. -package autodiscovery +package autodiscoveryimpl import ( "fmt" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/comp/core/secrets" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/util/log" ) diff --git a/pkg/autodiscovery/secrets_test.go b/comp/core/autodiscovery/autodiscoveryimpl/secrets_test.go similarity index 97% rename from pkg/autodiscovery/secrets_test.go rename to comp/core/autodiscovery/autodiscoveryimpl/secrets_test.go index c573c34de1dbb4..de9003ce0b2e4f 100644 --- a/pkg/autodiscovery/secrets_test.go +++ b/comp/core/autodiscovery/autodiscoveryimpl/secrets_test.go @@ -3,7 +3,7 @@ // This product includes software developed at Datadog (https://www.datadoghq.com/). // Copyright 2016-present Datadog, Inc. -package autodiscovery +package autodiscoveryimpl import ( "bytes" @@ -14,8 +14,8 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/comp/core/secrets" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/config" ) diff --git a/pkg/autodiscovery/stats.go b/comp/core/autodiscovery/autodiscoveryimpl/stats.go similarity index 96% rename from pkg/autodiscovery/stats.go rename to comp/core/autodiscovery/autodiscoveryimpl/stats.go index d0b395db2d313c..b1c19c5907f157 100644 --- a/pkg/autodiscovery/stats.go +++ b/comp/core/autodiscovery/autodiscoveryimpl/stats.go @@ -3,7 +3,7 @@ // This product includes software developed at Datadog (https://www.datadoghq.com/). // Copyright 2016-present Datadog, Inc. -package autodiscovery +package autodiscoveryimpl import ( "expvar" @@ -11,12 +11,11 @@ import ( ) var ( + acErrors = expvar.NewMap("autoconfig") errorStats = newAcErrorStats() - acErrors *expvar.Map ) -func init() { - acErrors = expvar.NewMap("autoconfig") +func setupAcErrors() { acErrors.Set("ConfigErrors", expvar.Func(func() interface{} { return errorStats.getConfigErrors() })) diff --git a/pkg/autodiscovery/stats_test.go b/comp/core/autodiscovery/autodiscoveryimpl/stats_test.go similarity index 97% rename from pkg/autodiscovery/stats_test.go rename to comp/core/autodiscovery/autodiscoveryimpl/stats_test.go index 4db6232b3663c1..51334b67e4c33a 100644 --- a/pkg/autodiscovery/stats_test.go +++ b/comp/core/autodiscovery/autodiscoveryimpl/stats_test.go @@ -3,7 +3,7 @@ // This product includes software developed at Datadog (https://www.datadoghq.com/). // Copyright 2016-present Datadog, Inc. -package autodiscovery +package autodiscoveryimpl import ( "testing" diff --git a/pkg/autodiscovery/store.go b/comp/core/autodiscovery/autodiscoveryimpl/store.go similarity index 97% rename from pkg/autodiscovery/store.go rename to comp/core/autodiscovery/autodiscoveryimpl/store.go index a1f8ebf9d0854c..3f424fb5a4e973 100644 --- a/pkg/autodiscovery/store.go +++ b/comp/core/autodiscovery/autodiscoveryimpl/store.go @@ -3,13 +3,13 @@ // This product includes software developed at Datadog (https://www.datadoghq.com/). // Copyright 2016-present Datadog, Inc. -package autodiscovery +package autodiscoveryimpl import ( "sync" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/listeners" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/listeners" checkid "github.com/DataDog/datadog-agent/pkg/collector/check/id" ) diff --git a/pkg/autodiscovery/store_test.go b/comp/core/autodiscovery/autodiscoveryimpl/store_test.go similarity index 97% rename from pkg/autodiscovery/store_test.go rename to comp/core/autodiscovery/autodiscoveryimpl/store_test.go index c6d8f0c65976c3..c855fd6e7905f0 100644 --- a/pkg/autodiscovery/store_test.go +++ b/comp/core/autodiscovery/autodiscoveryimpl/store_test.go @@ -3,14 +3,14 @@ // This product includes software developed at Datadog (https://www.datadoghq.com/). // Copyright 2016-present Datadog, Inc. -package autodiscovery +package autodiscoveryimpl import ( "testing" "github.com/stretchr/testify/assert" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" checkid "github.com/DataDog/datadog-agent/pkg/collector/check/id" ) diff --git a/pkg/autodiscovery/templatecache.go b/comp/core/autodiscovery/autodiscoveryimpl/templatecache.go similarity index 97% rename from pkg/autodiscovery/templatecache.go rename to comp/core/autodiscovery/autodiscoveryimpl/templatecache.go index d0a08124ae6135..668500fcfea97e 100644 --- a/pkg/autodiscovery/templatecache.go +++ b/comp/core/autodiscovery/autodiscoveryimpl/templatecache.go @@ -3,14 +3,14 @@ // This product includes software developed at Datadog (https://www.datadoghq.com/). // Copyright 2016-present Datadog, Inc. -package autodiscovery +package autodiscoveryimpl import ( "fmt" "strings" "sync" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" ) // templateCache is a data structure to store configuration templates diff --git a/pkg/autodiscovery/templatecache_test.go b/comp/core/autodiscovery/autodiscoveryimpl/templatecache_test.go similarity index 96% rename from pkg/autodiscovery/templatecache_test.go rename to comp/core/autodiscovery/autodiscoveryimpl/templatecache_test.go index 83024f3e3a71cc..944bc7896b81c7 100644 --- a/pkg/autodiscovery/templatecache_test.go +++ b/comp/core/autodiscovery/autodiscoveryimpl/templatecache_test.go @@ -3,7 +3,7 @@ // This product includes software developed at Datadog (https://www.datadoghq.com/). // Copyright 2016-present Datadog, Inc. -package autodiscovery +package autodiscoveryimpl import ( "testing" @@ -11,7 +11,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" ) func TestNew(t *testing.T) { diff --git a/pkg/autodiscovery/common/README.md b/comp/core/autodiscovery/common/README.md similarity index 100% rename from pkg/autodiscovery/common/README.md rename to comp/core/autodiscovery/common/README.md diff --git a/pkg/autodiscovery/common/types/prometheus.go b/comp/core/autodiscovery/common/types/prometheus.go similarity index 100% rename from pkg/autodiscovery/common/types/prometheus.go rename to comp/core/autodiscovery/common/types/prometheus.go diff --git a/pkg/autodiscovery/common/types/prometheus_test.go b/comp/core/autodiscovery/common/types/prometheus_test.go similarity index 100% rename from pkg/autodiscovery/common/types/prometheus_test.go rename to comp/core/autodiscovery/common/types/prometheus_test.go diff --git a/pkg/autodiscovery/common/utils/annotations.go b/comp/core/autodiscovery/common/utils/annotations.go similarity index 99% rename from pkg/autodiscovery/common/utils/annotations.go rename to comp/core/autodiscovery/common/utils/annotations.go index a37cbe031edd49..44d9d2a619cd8b 100644 --- a/pkg/autodiscovery/common/utils/annotations.go +++ b/comp/core/autodiscovery/common/utils/annotations.go @@ -11,7 +11,7 @@ import ( "fmt" "strconv" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/util/log" ) diff --git a/pkg/autodiscovery/common/utils/annotations_test.go b/comp/core/autodiscovery/common/utils/annotations_test.go similarity index 99% rename from pkg/autodiscovery/common/utils/annotations_test.go rename to comp/core/autodiscovery/common/utils/annotations_test.go index 0679b85e06df78..9a449720402208 100644 --- a/pkg/autodiscovery/common/utils/annotations_test.go +++ b/comp/core/autodiscovery/common/utils/annotations_test.go @@ -13,7 +13,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" ) func TestExtractTemplatesFromMap(t *testing.T) { diff --git a/pkg/autodiscovery/common/utils/container_collect_all.go b/comp/core/autodiscovery/common/utils/container_collect_all.go similarity index 93% rename from pkg/autodiscovery/common/utils/container_collect_all.go rename to comp/core/autodiscovery/common/utils/container_collect_all.go index ef6965ea25dab6..5cc35cb1528319 100644 --- a/pkg/autodiscovery/common/utils/container_collect_all.go +++ b/comp/core/autodiscovery/common/utils/container_collect_all.go @@ -6,7 +6,7 @@ package utils import ( - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/config" ) diff --git a/pkg/autodiscovery/common/utils/container_labels.go b/comp/core/autodiscovery/common/utils/container_labels.go similarity index 93% rename from pkg/autodiscovery/common/utils/container_labels.go rename to comp/core/autodiscovery/common/utils/container_labels.go index e8c90c56009832..6606828d735dee 100644 --- a/pkg/autodiscovery/common/utils/container_labels.go +++ b/comp/core/autodiscovery/common/utils/container_labels.go @@ -6,7 +6,7 @@ package utils import ( - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" ) const ( diff --git a/pkg/autodiscovery/common/utils/container_labels_test.go b/comp/core/autodiscovery/common/utils/container_labels_test.go similarity index 98% rename from pkg/autodiscovery/common/utils/container_labels_test.go rename to comp/core/autodiscovery/common/utils/container_labels_test.go index ba05aa7a73e857..243306d7a6357c 100644 --- a/pkg/autodiscovery/common/utils/container_labels_test.go +++ b/comp/core/autodiscovery/common/utils/container_labels_test.go @@ -11,7 +11,7 @@ import ( "github.com/stretchr/testify/assert" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" ) func TestExtractCheckNamesFromContainerLabels(t *testing.T) { diff --git a/pkg/autodiscovery/common/utils/doc.go b/comp/core/autodiscovery/common/utils/doc.go similarity index 100% rename from pkg/autodiscovery/common/utils/doc.go rename to comp/core/autodiscovery/common/utils/doc.go diff --git a/pkg/autodiscovery/common/utils/kubelet.go b/comp/core/autodiscovery/common/utils/kubelet.go similarity index 100% rename from pkg/autodiscovery/common/utils/kubelet.go rename to comp/core/autodiscovery/common/utils/kubelet.go diff --git a/pkg/autodiscovery/common/utils/kubelet_test.go b/comp/core/autodiscovery/common/utils/kubelet_test.go similarity index 100% rename from pkg/autodiscovery/common/utils/kubelet_test.go rename to comp/core/autodiscovery/common/utils/kubelet_test.go diff --git a/pkg/autodiscovery/common/utils/pod_annotations.go b/comp/core/autodiscovery/common/utils/pod_annotations.go similarity index 97% rename from pkg/autodiscovery/common/utils/pod_annotations.go rename to comp/core/autodiscovery/common/utils/pod_annotations.go index c2ef6bad56f0e0..d498245beb39f9 100644 --- a/pkg/autodiscovery/common/utils/pod_annotations.go +++ b/comp/core/autodiscovery/common/utils/pod_annotations.go @@ -9,7 +9,7 @@ import ( "encoding/json" "fmt" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" ) const ( diff --git a/pkg/autodiscovery/common/utils/pod_annotations_test.go b/comp/core/autodiscovery/common/utils/pod_annotations_test.go similarity index 99% rename from pkg/autodiscovery/common/utils/pod_annotations_test.go rename to comp/core/autodiscovery/common/utils/pod_annotations_test.go index f4a5d291e0d574..f2ae8e9b55e96b 100644 --- a/pkg/autodiscovery/common/utils/pod_annotations_test.go +++ b/comp/core/autodiscovery/common/utils/pod_annotations_test.go @@ -11,7 +11,7 @@ import ( "github.com/stretchr/testify/assert" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" ) func TestExtractCheckNamesFromAnnotations(t *testing.T) { diff --git a/pkg/autodiscovery/common/utils/prometheus.go b/comp/core/autodiscovery/common/utils/prometheus.go similarity index 96% rename from pkg/autodiscovery/common/utils/prometheus.go rename to comp/core/autodiscovery/common/utils/prometheus.go index 76dd0097bde13f..9563ed13fab9ff 100644 --- a/pkg/autodiscovery/common/utils/prometheus.go +++ b/comp/core/autodiscovery/common/utils/prometheus.go @@ -10,8 +10,8 @@ package utils import ( "encoding/json" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/common/types" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/common/types" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/util/log" ) diff --git a/pkg/autodiscovery/common/utils/prometheus_apiserver.go b/comp/core/autodiscovery/common/utils/prometheus_apiserver.go similarity index 94% rename from pkg/autodiscovery/common/utils/prometheus_apiserver.go rename to comp/core/autodiscovery/common/utils/prometheus_apiserver.go index bcd9df3fc50659..5d07b6414b7bc7 100644 --- a/pkg/autodiscovery/common/utils/prometheus_apiserver.go +++ b/comp/core/autodiscovery/common/utils/prometheus_apiserver.go @@ -10,9 +10,9 @@ package utils import ( "fmt" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/common/types" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/providers/names" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/common/types" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/providers/names" "github.com/DataDog/datadog-agent/pkg/util/kubernetes/apiserver" "github.com/DataDog/datadog-agent/pkg/util/log" diff --git a/pkg/autodiscovery/common/utils/prometheus_apiserver_test.go b/comp/core/autodiscovery/common/utils/prometheus_apiserver_test.go similarity index 96% rename from pkg/autodiscovery/common/utils/prometheus_apiserver_test.go rename to comp/core/autodiscovery/common/utils/prometheus_apiserver_test.go index 3c10faa71182a4..173e8ba89a0aa7 100644 --- a/pkg/autodiscovery/common/utils/prometheus_apiserver_test.go +++ b/comp/core/autodiscovery/common/utils/prometheus_apiserver_test.go @@ -10,9 +10,9 @@ package utils import ( "testing" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/common/types" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/providers/names" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/common/types" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/providers/names" "github.com/DataDog/datadog-agent/pkg/config" corev1 "k8s.io/api/core/v1" diff --git a/pkg/autodiscovery/common/utils/prometheus_kubelet.go b/comp/core/autodiscovery/common/utils/prometheus_kubelet.go similarity index 91% rename from pkg/autodiscovery/common/utils/prometheus_kubelet.go rename to comp/core/autodiscovery/common/utils/prometheus_kubelet.go index 72d9e9ced415c6..f3f724e2484421 100644 --- a/pkg/autodiscovery/common/utils/prometheus_kubelet.go +++ b/comp/core/autodiscovery/common/utils/prometheus_kubelet.go @@ -11,9 +11,9 @@ import ( "fmt" "strconv" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/common/types" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/providers/names" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/common/types" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/providers/names" "github.com/DataDog/datadog-agent/pkg/util/kubernetes/kubelet" "github.com/DataDog/datadog-agent/pkg/util/log" ) diff --git a/pkg/autodiscovery/common/utils/prometheus_kubelet_test.go b/comp/core/autodiscovery/common/utils/prometheus_kubelet_test.go similarity index 98% rename from pkg/autodiscovery/common/utils/prometheus_kubelet_test.go rename to comp/core/autodiscovery/common/utils/prometheus_kubelet_test.go index 3ca326443fe1b5..d8daa4b1169efd 100644 --- a/pkg/autodiscovery/common/utils/prometheus_kubelet_test.go +++ b/comp/core/autodiscovery/common/utils/prometheus_kubelet_test.go @@ -10,9 +10,9 @@ package utils import ( "testing" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/common/types" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/providers/names" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/common/types" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/providers/names" "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/util/kubernetes/kubelet" diff --git a/comp/core/autodiscovery/component.go b/comp/core/autodiscovery/component.go new file mode 100644 index 00000000000000..c7d08112866817 --- /dev/null +++ b/comp/core/autodiscovery/component.go @@ -0,0 +1,46 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +// Package tagger implements the Tagger component. The Tagger is the central +// source of truth for client-side entity tagging. It runs Collectors that +// detect entities and collect their tags. Tags are then stored in memory (by +// the TagStore) and can be queried by the tagger.Tag() method. + +// Package autodiscovery provides the autodiscovery component for the Datadog Agent +package autodiscovery + +import ( + "context" + "time" + + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/providers" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/scheduler" + checkid "github.com/DataDog/datadog-agent/pkg/collector/check/id" + "github.com/DataDog/datadog-agent/pkg/config" +) + +// Component is the component type. +// team: container-integrations +type Component interface { + AddConfigProvider(provider providers.ConfigProvider, shouldPoll bool, pollInterval time.Duration) + LoadAndRun(ctx context.Context) + ForceRanOnceFlag() + HasRunOnce() bool + GetAllConfigs() []integration.Config + AddListeners(listenerConfigs []config.Listeners) + AddScheduler(name string, s scheduler.Scheduler, replayConfigs bool) + RemoveScheduler(name string) + MapOverLoadedConfigs(f func(map[string]integration.Config)) + LoadedConfigs() []integration.Config + GetUnresolvedTemplates() map[string][]integration.Config + GetIDOfCheckWithEncryptedSecrets(checkID checkid.ID) checkid.ID + GetAutodiscoveryErrors() map[string]map[string]providers.ErrorMsgSet + GetProviderCatalog() map[string]providers.ConfigProviderFactory + // TODO (component): deprecate start/stop methods + Start() + Stop() + IsStarted() bool +} diff --git a/comp/core/autodiscovery/component_mock.go b/comp/core/autodiscovery/component_mock.go new file mode 100644 index 00000000000000..94f373d8e9e9ba --- /dev/null +++ b/comp/core/autodiscovery/component_mock.go @@ -0,0 +1,13 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +//go:build test + +package autodiscovery + +// Mock implements mock-specific methods. +type Mock interface { + Component +} diff --git a/pkg/autodiscovery/configresolver/README.md b/comp/core/autodiscovery/configresolver/README.md similarity index 100% rename from pkg/autodiscovery/configresolver/README.md rename to comp/core/autodiscovery/configresolver/README.md diff --git a/pkg/autodiscovery/configresolver/configresolver.go b/comp/core/autodiscovery/configresolver/configresolver.go similarity index 98% rename from pkg/autodiscovery/configresolver/configresolver.go rename to comp/core/autodiscovery/configresolver/configresolver.go index b57dba41e9c6e3..41a97f90e44d73 100644 --- a/pkg/autodiscovery/configresolver/configresolver.go +++ b/comp/core/autodiscovery/configresolver/configresolver.go @@ -19,10 +19,10 @@ import ( "strconv" "strings" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/listeners" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/providers/names" apiutil "github.com/DataDog/datadog-agent/pkg/api/util" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/listeners" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/providers/names" "github.com/DataDog/datadog-agent/pkg/util/containers" "github.com/DataDog/datadog-agent/pkg/util/log" diff --git a/pkg/autodiscovery/configresolver/configresolver_test.go b/comp/core/autodiscovery/configresolver/configresolver_test.go similarity index 99% rename from pkg/autodiscovery/configresolver/configresolver_test.go rename to comp/core/autodiscovery/configresolver/configresolver_test.go index deec2963bc2645..6c2f7a714fc49d 100644 --- a/pkg/autodiscovery/configresolver/configresolver_test.go +++ b/comp/core/autodiscovery/configresolver/configresolver_test.go @@ -11,9 +11,9 @@ import ( "os" "testing" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/listeners" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/providers/names" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/listeners" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/providers/names" "github.com/DataDog/datadog-agent/pkg/util/containers" "github.com/stretchr/testify/assert" diff --git a/pkg/autodiscovery/integration/README.md b/comp/core/autodiscovery/integration/README.md similarity index 100% rename from pkg/autodiscovery/integration/README.md rename to comp/core/autodiscovery/integration/README.md diff --git a/pkg/autodiscovery/integration/config.go b/comp/core/autodiscovery/integration/config.go similarity index 100% rename from pkg/autodiscovery/integration/config.go rename to comp/core/autodiscovery/integration/config.go diff --git a/pkg/autodiscovery/integration/config_test.go b/comp/core/autodiscovery/integration/config_test.go similarity index 100% rename from pkg/autodiscovery/integration/config_test.go rename to comp/core/autodiscovery/integration/config_test.go diff --git a/pkg/autodiscovery/listeners/README.md b/comp/core/autodiscovery/listeners/README.md similarity index 93% rename from pkg/autodiscovery/listeners/README.md rename to comp/core/autodiscovery/listeners/README.md index 864fbc813e100d..8ddd82851c9f5e 100644 --- a/pkg/autodiscovery/listeners/README.md +++ b/comp/core/autodiscovery/listeners/README.md @@ -20,13 +20,13 @@ Services can be: ## `ServiceListener` -`ServiceListener` monitors events related to `Service` lifecycles. It then formats and transmits this data to `AutoConfig`. +`ServiceListener` monitors events related to `Service` lifecycles. It then formats and transmits this data to `autoconfig`. Note: It's important to enable only one `ServiceListener` per `Service` type, for example, in Kubernetes `ContainerListener` and `KubeletListener` must not run together because they watch the same containers. ### `ContainerListener` -`ContainerListener` first gets current running containers and send these to the `AutoConfig`. Then it starts watching workloadmeta container events and pass by `Services` mentioned in start/stop events to the `AutoConfig` through the corresponding channel. +`ContainerListener` first gets current running containers and send these to the `autoconfig`. Then it starts watching workloadmeta container events and pass by `Services` mentioned in start/stop events to the `autoconfig` through the corresponding channel. ### `ECSListener` diff --git a/pkg/autodiscovery/listeners/cloudfoundry.go b/comp/core/autodiscovery/listeners/cloudfoundry.go similarity index 98% rename from pkg/autodiscovery/listeners/cloudfoundry.go rename to comp/core/autodiscovery/listeners/cloudfoundry.go index 4cf5d3f7236ae8..2e54c1c9de3a6f 100644 --- a/pkg/autodiscovery/listeners/cloudfoundry.go +++ b/comp/core/autodiscovery/listeners/cloudfoundry.go @@ -14,16 +14,12 @@ import ( "sync" "time" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/util/cloudproviders/cloudfoundry" "github.com/DataDog/datadog-agent/pkg/util/containers" "github.com/DataDog/datadog-agent/pkg/util/log" ) -func init() { - Register("cloudfoundry-bbs", NewCloudFoundryListener) -} - // exported for testing purposes const ( CfServiceContainerIP = "container-ip" diff --git a/comp/core/autodiscovery/listeners/cloudfoundry_nop.go b/comp/core/autodiscovery/listeners/cloudfoundry_nop.go new file mode 100644 index 00000000000000..fdd1927a4f098c --- /dev/null +++ b/comp/core/autodiscovery/listeners/cloudfoundry_nop.go @@ -0,0 +1,11 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2017-present Datadog, Inc. + +//go:build !clusterchecks + +package listeners + +// NewCloudFoundryListener creates a CloudFoundryListener +var NewCloudFoundryListener ServiceListenerFactory diff --git a/pkg/autodiscovery/listeners/cloudfoundry_test.go b/comp/core/autodiscovery/listeners/cloudfoundry_test.go similarity index 100% rename from pkg/autodiscovery/listeners/cloudfoundry_test.go rename to comp/core/autodiscovery/listeners/cloudfoundry_test.go diff --git a/pkg/autodiscovery/listeners/common.go b/comp/core/autodiscovery/listeners/common.go similarity index 98% rename from pkg/autodiscovery/listeners/common.go rename to comp/core/autodiscovery/listeners/common.go index 40d8b9237fece0..ed51d97c2be40b 100644 --- a/pkg/autodiscovery/listeners/common.go +++ b/comp/core/autodiscovery/listeners/common.go @@ -13,7 +13,7 @@ import ( "hash/fnv" "strconv" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/common/types" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/common/types" "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/util/containers" "github.com/DataDog/datadog-agent/pkg/util/kubernetes" diff --git a/pkg/autodiscovery/listeners/common_test.go b/comp/core/autodiscovery/listeners/common_test.go similarity index 98% rename from pkg/autodiscovery/listeners/common_test.go rename to comp/core/autodiscovery/listeners/common_test.go index 3001ccab9816c3..5bc070fb277fa9 100644 --- a/pkg/autodiscovery/listeners/common_test.go +++ b/comp/core/autodiscovery/listeners/common_test.go @@ -9,7 +9,7 @@ import ( "encoding/json" "testing" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/common/types" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/common/types" "github.com/DataDog/datadog-agent/pkg/config" "github.com/stretchr/testify/assert" diff --git a/pkg/autodiscovery/listeners/container.go b/comp/core/autodiscovery/listeners/container.go similarity index 97% rename from pkg/autodiscovery/listeners/container.go rename to comp/core/autodiscovery/listeners/container.go index 41c74d110cf939..8b86a02e2eda91 100644 --- a/pkg/autodiscovery/listeners/container.go +++ b/comp/core/autodiscovery/listeners/container.go @@ -12,8 +12,8 @@ import ( "strings" "time" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/common/utils" "github.com/DataDog/datadog-agent/comp/core/workloadmeta" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/common/utils" "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/util/containers" "github.com/DataDog/datadog-agent/pkg/util/docker" @@ -25,10 +25,6 @@ const ( legacyIdentifierLabel = "com.datadoghq.sd.check.id" ) -func init() { - Register("container", NewContainerListener) -} - // ContainerListener listens to container creation through a subscription to the // workloadmeta store. type ContainerListener struct { diff --git a/comp/core/autodiscovery/listeners/container_nop.go b/comp/core/autodiscovery/listeners/container_nop.go new file mode 100644 index 00000000000000..f6434f985db27b --- /dev/null +++ b/comp/core/autodiscovery/listeners/container_nop.go @@ -0,0 +1,10 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +//go:build serverless + +package listeners + +var NewContainerListener ServiceListenerFactory diff --git a/pkg/autodiscovery/listeners/container_test.go b/comp/core/autodiscovery/listeners/container_test.go similarity index 100% rename from pkg/autodiscovery/listeners/container_test.go rename to comp/core/autodiscovery/listeners/container_test.go diff --git a/pkg/autodiscovery/listeners/dbm_aurora.go b/comp/core/autodiscovery/listeners/dbm_aurora.go similarity index 95% rename from pkg/autodiscovery/listeners/dbm_aurora.go rename to comp/core/autodiscovery/listeners/dbm_aurora.go index 93c4d5ef07595b..4eeac369ef42da 100644 --- a/pkg/autodiscovery/listeners/dbm_aurora.go +++ b/comp/core/autodiscovery/listeners/dbm_aurora.go @@ -10,30 +10,24 @@ package listeners import ( "context" "fmt" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "strconv" + "sync" + "time" + + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/databasemonitoring/aws" dbmconfig "github.com/DataDog/datadog-agent/pkg/databasemonitoring/config" "github.com/DataDog/datadog-agent/pkg/util/containers" "github.com/DataDog/datadog-agent/pkg/util/log" - "strconv" - "sync" - "time" ) const ( dbmPostgresADIdentifier = "_dbm_postgres_aurora" dbmMySQLADIdentifier = "_dbm_mysql_aurora" - - // dbmAuroraListenerName is the name of the aurora listener, used to init the listener - dbmAuroraListenerName = "database-monitoring-aurora" - auroraPostgresqlEngine = "aurora-postgresql" - auroraMysqlEngine = "aurora-mysql" + auroraPostgresqlEngine = "aurora-postgresql" + auroraMysqlEngine = "aurora-mysql" ) -func init() { - Register(dbmAuroraListenerName, NewDBMAuroraListener) -} - // DBMAuroraListener implements database-monitoring aurora discovery type DBMAuroraListener struct { sync.RWMutex diff --git a/comp/core/autodiscovery/listeners/dbm_aurora_nop.go b/comp/core/autodiscovery/listeners/dbm_aurora_nop.go new file mode 100644 index 00000000000000..c9b4d6b30f08ce --- /dev/null +++ b/comp/core/autodiscovery/listeners/dbm_aurora_nop.go @@ -0,0 +1,11 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +//go:build !ec2 + +package listeners + +// NewDBMAuroraListener returns a ServiceListener interface +var NewDBMAuroraListener ServiceListenerFactory diff --git a/pkg/autodiscovery/listeners/dbm_aurora_test.go b/comp/core/autodiscovery/listeners/dbm_aurora_test.go similarity index 100% rename from pkg/autodiscovery/listeners/dbm_aurora_test.go rename to comp/core/autodiscovery/listeners/dbm_aurora_test.go diff --git a/pkg/autodiscovery/listeners/environment.go b/comp/core/autodiscovery/listeners/environment.go similarity index 97% rename from pkg/autodiscovery/listeners/environment.go rename to comp/core/autodiscovery/listeners/environment.go index dd4533cc9116a8..a5b99da07f0ae4 100644 --- a/pkg/autodiscovery/listeners/environment.go +++ b/comp/core/autodiscovery/listeners/environment.go @@ -8,7 +8,7 @@ package listeners import ( "context" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/util/containers" "github.com/DataDog/datadog-agent/pkg/util/log" @@ -27,10 +27,6 @@ type EnvironmentService struct { // Make sure EnvironmentService implements the Service interface var _ Service = &EnvironmentService{} -func init() { - Register("environment", NewEnvironmentListener) -} - // NewEnvironmentListener creates an EnvironmentListener func NewEnvironmentListener(Config) (ServiceListener, error) { return &EnvironmentListener{}, nil diff --git a/pkg/autodiscovery/listeners/kube_endpoints.go b/comp/core/autodiscovery/listeners/kube_endpoints.go similarity index 97% rename from pkg/autodiscovery/listeners/kube_endpoints.go rename to comp/core/autodiscovery/listeners/kube_endpoints.go index 8fad8676764e1c..c6540b5b973b2c 100644 --- a/pkg/autodiscovery/listeners/kube_endpoints.go +++ b/comp/core/autodiscovery/listeners/kube_endpoints.go @@ -12,10 +12,10 @@ import ( "fmt" "sync" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/common/types" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/providers/names" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/telemetry" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/common/types" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/providers/names" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/telemetry" "github.com/DataDog/datadog-agent/pkg/util/containers" "github.com/DataDog/datadog-agent/pkg/util/kubernetes/apiserver" "github.com/DataDog/datadog-agent/pkg/util/log" @@ -63,10 +63,6 @@ type KubeEndpointService struct { // Make sure KubeEndpointService implements the Service interface var _ Service = &KubeEndpointService{} -func init() { - Register(kubeEndpointsName, NewKubeEndpointsListener) -} - // NewKubeEndpointsListener returns the kube endpoints implementation of the ServiceListener interface func NewKubeEndpointsListener(conf Config) (ServiceListener, error) { // Using GetAPIClient (no wait) as Client should already be initialized by Cluster Agent main entrypoint before diff --git a/comp/core/autodiscovery/listeners/kube_endpoints_nop.go b/comp/core/autodiscovery/listeners/kube_endpoints_nop.go new file mode 100644 index 00000000000000..2186d1c78e96d5 --- /dev/null +++ b/comp/core/autodiscovery/listeners/kube_endpoints_nop.go @@ -0,0 +1,11 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +//go:build !(clusterchecks && kubeapiserver) + +package listeners + +// NewKubeEndpointsListener returns the kube endpoints implementation of the ServiceListener interface +var NewKubeEndpointsListener ServiceListenerFactory diff --git a/pkg/autodiscovery/listeners/kube_endpoints_test.go b/comp/core/autodiscovery/listeners/kube_endpoints_test.go similarity index 100% rename from pkg/autodiscovery/listeners/kube_endpoints_test.go rename to comp/core/autodiscovery/listeners/kube_endpoints_test.go diff --git a/pkg/autodiscovery/listeners/kube_services.go b/comp/core/autodiscovery/listeners/kube_services.go similarity index 96% rename from pkg/autodiscovery/listeners/kube_services.go rename to comp/core/autodiscovery/listeners/kube_services.go index b21cdb8ead840e..c1c74dba171209 100644 --- a/pkg/autodiscovery/listeners/kube_services.go +++ b/comp/core/autodiscovery/listeners/kube_services.go @@ -19,11 +19,11 @@ import ( infov1 "k8s.io/client-go/informers/core/v1" "k8s.io/client-go/tools/cache" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/common/types" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/common/utils" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/providers/names" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/telemetry" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/common/types" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/common/utils" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/providers/names" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/telemetry" "github.com/DataDog/datadog-agent/pkg/util/containers" "github.com/DataDog/datadog-agent/pkg/util/kubernetes/apiserver" "github.com/DataDog/datadog-agent/pkg/util/log" @@ -59,10 +59,6 @@ type KubeServiceService struct { // Make sure KubeServiceService implements the Service interface var _ Service = &KubeServiceService{} -func init() { - Register(kubeServicesName, NewKubeServiceListener) -} - // isServiceAnnotated returns true if the Service has an annotation with a given key func isServiceAnnotated(ksvc *v1.Service, annotationKey string) bool { if ksvc == nil { diff --git a/comp/core/autodiscovery/listeners/kube_services_nop.go b/comp/core/autodiscovery/listeners/kube_services_nop.go new file mode 100644 index 00000000000000..8e92bcb0b2a29e --- /dev/null +++ b/comp/core/autodiscovery/listeners/kube_services_nop.go @@ -0,0 +1,11 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +//go:build !(clusterchecks && kubeapiserver) + +package listeners + +// NewKubeServiceListener returns the kube service implementation of the ServiceListener interface +var NewKubeServiceListener ServiceListenerFactory diff --git a/pkg/autodiscovery/listeners/kube_services_test.go b/comp/core/autodiscovery/listeners/kube_services_test.go similarity index 100% rename from pkg/autodiscovery/listeners/kube_services_test.go rename to comp/core/autodiscovery/listeners/kube_services_test.go diff --git a/pkg/autodiscovery/listeners/kubelet.go b/comp/core/autodiscovery/listeners/kubelet.go similarity index 97% rename from pkg/autodiscovery/listeners/kubelet.go rename to comp/core/autodiscovery/listeners/kubelet.go index 5ce6a086dd4c91..8dc8cfcfd047f7 100644 --- a/pkg/autodiscovery/listeners/kubelet.go +++ b/comp/core/autodiscovery/listeners/kubelet.go @@ -11,18 +11,14 @@ import ( "sort" "time" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/common/utils" "github.com/DataDog/datadog-agent/comp/core/workloadmeta" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/common/utils" "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/util/containers" "github.com/DataDog/datadog-agent/pkg/util/kubernetes/kubelet" "github.com/DataDog/datadog-agent/pkg/util/log" ) -func init() { - Register("kubelet", NewKubeletListener) -} - // KubeletListener listens to pod creation through a subscription // to the workloadmeta store. type KubeletListener struct { diff --git a/comp/core/autodiscovery/listeners/kubelet_nop.go b/comp/core/autodiscovery/listeners/kubelet_nop.go new file mode 100644 index 00000000000000..c5ee6327e269a2 --- /dev/null +++ b/comp/core/autodiscovery/listeners/kubelet_nop.go @@ -0,0 +1,10 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +//go:build serverless + +package listeners + +var NewKubeletListener ServiceListenerFactory diff --git a/pkg/autodiscovery/listeners/kubelet_test.go b/comp/core/autodiscovery/listeners/kubelet_test.go similarity index 100% rename from pkg/autodiscovery/listeners/kubelet_test.go rename to comp/core/autodiscovery/listeners/kubelet_test.go diff --git a/comp/core/autodiscovery/listeners/listeners.go b/comp/core/autodiscovery/listeners/listeners.go new file mode 100644 index 00000000000000..e291332b0a0899 --- /dev/null +++ b/comp/core/autodiscovery/listeners/listeners.go @@ -0,0 +1,33 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +// Package listeners is a wrapper that registers the available autodiscovery listerners. +package listeners + +const ( + cloudFoundryBBSListenerName = "cloudfoundry_bbs" + containerListenerName = "container" + environmentListenerName = "environment" + kubeEndpointsListenerName = "kube_endpoints" + kubeServicesListenerName = "kube_services" + kubeletListenerName = "kubelet" + snmpListenerName = "snmp" + staticConfigListenerName = "static config" + dbmAuroraListenerName = "database-monitoring-aurora" +) + +// RegisterListeners registers the available autodiscovery listerners. +func RegisterListeners(serviceListenerFactories map[string]ServiceListenerFactory) { + // register the available listeners + Register(cloudFoundryBBSListenerName, NewCloudFoundryListener, serviceListenerFactories) + Register(containerListenerName, NewContainerListener, serviceListenerFactories) + Register(environmentListenerName, NewEnvironmentListener, serviceListenerFactories) + Register(kubeEndpointsListenerName, NewKubeEndpointsListener, serviceListenerFactories) + Register(kubeServicesListenerName, NewKubeServiceListener, serviceListenerFactories) + Register(kubeletListenerName, NewKubeletListener, serviceListenerFactories) + Register(snmpListenerName, NewSNMPListener, serviceListenerFactories) + Register(staticConfigListenerName, NewStaticConfigListener, serviceListenerFactories) + Register(dbmAuroraListenerName, NewDBMAuroraListener, serviceListenerFactories) +} diff --git a/pkg/autodiscovery/listeners/service.go b/comp/core/autodiscovery/listeners/service.go similarity index 97% rename from pkg/autodiscovery/listeners/service.go rename to comp/core/autodiscovery/listeners/service.go index 7bb80b49ef1813..664aa52e403d67 100644 --- a/pkg/autodiscovery/listeners/service.go +++ b/comp/core/autodiscovery/listeners/service.go @@ -10,10 +10,10 @@ import ( "fmt" "reflect" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/providers/names" "github.com/DataDog/datadog-agent/comp/core/tagger" "github.com/DataDog/datadog-agent/comp/core/workloadmeta" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/providers/names" "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/util/containers" "github.com/DataDog/datadog-agent/pkg/util/kubernetes/kubelet" @@ -122,7 +122,7 @@ func (s *service) HasFilter(filter containers.FilterType) bool { // FilterTemplates implements Service#FilterTemplates. func (s *service) FilterTemplates(configs map[string]integration.Config) { // These two overrides are handled in - // pkg/autodiscovery/configresolver/configresolver.go + // comp/core/autodiscovery/configresolver/configresolver.go s.filterTemplatesEmptyOverrides(configs) s.filterTemplatesOverriddenChecks(configs) s.filterTemplatesContainerCollectAll(configs) diff --git a/pkg/autodiscovery/listeners/service_test.go b/comp/core/autodiscovery/listeners/service_test.go similarity index 95% rename from pkg/autodiscovery/listeners/service_test.go rename to comp/core/autodiscovery/listeners/service_test.go index 311db395748e55..701ce52fc53a41 100644 --- a/pkg/autodiscovery/listeners/service_test.go +++ b/comp/core/autodiscovery/listeners/service_test.go @@ -10,9 +10,9 @@ import ( "github.com/stretchr/testify/assert" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/providers/names" "github.com/DataDog/datadog-agent/comp/core/workloadmeta" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/providers/names" "github.com/DataDog/datadog-agent/pkg/config" ) @@ -112,7 +112,7 @@ func TestServiceFilterTemplatesCCA(t *testing.T) { return filterConfigsDropped(svc.filterTemplatesContainerCollectAll, configs...) } - // this should match what's given in pkg/autodiscovery/common/utils/container_collect_all.go + // this should match what's given in comp/core/autodiscovery/common/utils/container_collect_all.go ccaTpl := integration.Config{Name: "container_collect_all", LogsConfig: []byte("{}")} noLogsTpl := integration.Config{Name: "foo"} logsTpl := integration.Config{Name: "foo", LogsConfig: []byte(`{"source":"foo"}`)} diff --git a/pkg/autodiscovery/listeners/snmp.go b/comp/core/autodiscovery/listeners/snmp.go similarity index 99% rename from pkg/autodiscovery/listeners/snmp.go rename to comp/core/autodiscovery/listeners/snmp.go index 2337cf18433ef5..93c096de4e9ccc 100644 --- a/pkg/autodiscovery/listeners/snmp.go +++ b/comp/core/autodiscovery/listeners/snmp.go @@ -15,7 +15,7 @@ import ( "sync" "time" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/persistentcache" "github.com/DataDog/datadog-agent/pkg/snmp" "github.com/DataDog/datadog-agent/pkg/util/containers" @@ -29,10 +29,6 @@ const ( tagSeparator = "," ) -func init() { - Register("snmp", NewSNMPListener) -} - // SNMPListener implements SNMP discovery type SNMPListener struct { sync.RWMutex diff --git a/pkg/autodiscovery/listeners/snmp_test.go b/comp/core/autodiscovery/listeners/snmp_test.go similarity index 100% rename from pkg/autodiscovery/listeners/snmp_test.go rename to comp/core/autodiscovery/listeners/snmp_test.go diff --git a/pkg/autodiscovery/listeners/staticconfig.go b/comp/core/autodiscovery/listeners/staticconfig.go similarity index 96% rename from pkg/autodiscovery/listeners/staticconfig.go rename to comp/core/autodiscovery/listeners/staticconfig.go index cc974fb46fa304..4be0e2dc521d71 100644 --- a/pkg/autodiscovery/listeners/staticconfig.go +++ b/comp/core/autodiscovery/listeners/staticconfig.go @@ -8,7 +8,7 @@ package listeners import ( "context" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/util/containers" ) @@ -26,10 +26,6 @@ type StaticConfigService struct { // Make sure StaticConfigService implements the Service interface var _ Service = &StaticConfigService{} -func init() { - Register("static config", NewStaticConfigListener) -} - // NewStaticConfigListener creates a StaticConfigListener func NewStaticConfigListener(Config) (ServiceListener, error) { return &StaticConfigListener{}, nil diff --git a/pkg/autodiscovery/listeners/types.go b/comp/core/autodiscovery/listeners/types.go similarity index 86% rename from pkg/autodiscovery/listeners/types.go rename to comp/core/autodiscovery/listeners/types.go index a91f075c81ef1a..54d2f66a11b285 100644 --- a/pkg/autodiscovery/listeners/types.go +++ b/comp/core/autodiscovery/listeners/types.go @@ -9,7 +9,7 @@ import ( "context" "errors" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/util/containers" "github.com/DataDog/datadog-agent/pkg/util/log" ) @@ -50,7 +50,7 @@ type Service interface { // ServiceListener monitors running services and triggers check (un)scheduling // // It holds a cache of running services, listens to new/killed services and -// updates its cache, and the AutoConfig with these events. +// updates its cache, and the autoconfig with these events. type ServiceListener interface { Listen(newSvc, delSvc chan<- Service) Stop() @@ -64,21 +64,20 @@ type Config interface { // ServiceListenerFactory builds a service listener type ServiceListenerFactory func(Config) (ServiceListener, error) -// ServiceListenerFactories holds the registered factories -var ServiceListenerFactories = make(map[string]ServiceListenerFactory) - // Register registers a service listener factory -func Register(name string, factory ServiceListenerFactory) { +func Register(name string, + factory ServiceListenerFactory, + serviceListenerFactories map[string]ServiceListenerFactory) { if factory == nil { - log.Warnf("Service listener factory %s does not exist.", name) + log.Infof("Service listener factory %s does not exist.", name) return } - _, registered := ServiceListenerFactories[name] + _, registered := serviceListenerFactories[name] if registered { log.Errorf("Service listener factory %s already registered. Ignoring.", name) return } - ServiceListenerFactories[name] = factory + serviceListenerFactories[name] = factory } // ErrNotSupported is thrown if listener doesn't support the asked variable diff --git a/pkg/autodiscovery/listeners/workloadmeta.go b/comp/core/autodiscovery/listeners/workloadmeta.go similarity index 98% rename from pkg/autodiscovery/listeners/workloadmeta.go rename to comp/core/autodiscovery/listeners/workloadmeta.go index 33604cfb26a7d0..edbfb2219e7f91 100644 --- a/pkg/autodiscovery/listeners/workloadmeta.go +++ b/comp/core/autodiscovery/listeners/workloadmeta.go @@ -11,8 +11,8 @@ import ( "fmt" "strings" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/telemetry" "github.com/DataDog/datadog-agent/comp/core/workloadmeta" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/telemetry" "github.com/DataDog/datadog-agent/pkg/status/health" "github.com/DataDog/datadog-agent/pkg/util/containers" "github.com/DataDog/datadog-agent/pkg/util/log" diff --git a/pkg/autodiscovery/listeners/workloadmeta_test.go b/comp/core/autodiscovery/listeners/workloadmeta_test.go similarity index 100% rename from pkg/autodiscovery/listeners/workloadmeta_test.go rename to comp/core/autodiscovery/listeners/workloadmeta_test.go diff --git a/pkg/autodiscovery/providers/README.md b/comp/core/autodiscovery/providers/README.md similarity index 100% rename from pkg/autodiscovery/providers/README.md rename to comp/core/autodiscovery/providers/README.md diff --git a/pkg/autodiscovery/providers/cloudfoundry.go b/comp/core/autodiscovery/providers/cloudfoundry.go similarity index 96% rename from pkg/autodiscovery/providers/cloudfoundry.go rename to comp/core/autodiscovery/providers/cloudfoundry.go index 258a39c44bc3d6..6072332e634a58 100644 --- a/pkg/autodiscovery/providers/cloudfoundry.go +++ b/comp/core/autodiscovery/providers/cloudfoundry.go @@ -15,9 +15,9 @@ import ( "strings" "time" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/common/utils" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/providers/names" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/common/utils" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/providers/names" "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/util/cloudproviders/cloudfoundry" "github.com/DataDog/datadog-agent/pkg/util/log" @@ -218,10 +218,6 @@ func (cf CloudFoundryConfigProvider) renderExtractedConfigs(configs []integratio return nil } -func init() { - RegisterProvider(names.CloudFoundryBBS, NewCloudFoundryConfigProvider) -} - // GetConfigErrors is not implemented for the CloudFoundryConfigProvider func (cf CloudFoundryConfigProvider) GetConfigErrors() map[string]ErrorMsgSet { return make(map[string]ErrorMsgSet) diff --git a/comp/core/autodiscovery/providers/cloudfoundry_nop.go b/comp/core/autodiscovery/providers/cloudfoundry_nop.go new file mode 100644 index 00000000000000..624832210a31f1 --- /dev/null +++ b/comp/core/autodiscovery/providers/cloudfoundry_nop.go @@ -0,0 +1,13 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +//go:build !clusterchecks + +package providers + +import "github.com/DataDog/datadog-agent/pkg/config" + +// NewCloudFoundryConfigProvider instantiates a new CloudFoundryConfigProvider from given config +var NewCloudFoundryConfigProvider func(providerConfig *config.ConfigurationProviders) (ConfigProvider, error) diff --git a/pkg/autodiscovery/providers/cloudfoundry_test.go b/comp/core/autodiscovery/providers/cloudfoundry_test.go similarity index 99% rename from pkg/autodiscovery/providers/cloudfoundry_test.go rename to comp/core/autodiscovery/providers/cloudfoundry_test.go index 7278e76a122eca..c37bd1c5628f64 100644 --- a/pkg/autodiscovery/providers/cloudfoundry_test.go +++ b/comp/core/autodiscovery/providers/cloudfoundry_test.go @@ -15,7 +15,7 @@ import ( "github.com/stretchr/testify/assert" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/util/cloudproviders/cloudfoundry" ) diff --git a/pkg/autodiscovery/providers/clusterchecks.go b/comp/core/autodiscovery/providers/clusterchecks.go similarity index 96% rename from pkg/autodiscovery/providers/clusterchecks.go rename to comp/core/autodiscovery/providers/clusterchecks.go index 3af72be73b7901..00c7249be517e6 100644 --- a/pkg/autodiscovery/providers/clusterchecks.go +++ b/comp/core/autodiscovery/providers/clusterchecks.go @@ -11,8 +11,8 @@ import ( "errors" "time" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/providers/names" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/providers/names" "github.com/DataDog/datadog-agent/pkg/clusteragent/clusterchecks/types" "github.com/DataDog/datadog-agent/pkg/config" ddErrors "github.com/DataDog/datadog-agent/pkg/errors" @@ -218,10 +218,6 @@ func (c *ClusterChecksConfigProvider) postHeartbeat(ctx context.Context) error { return err } -func init() { - RegisterProvider(names.ClusterChecksRegisterName, NewClusterChecksConfigProvider) -} - // GetConfigErrors is not implemented for the ClusterChecksConfigProvider func (c *ClusterChecksConfigProvider) GetConfigErrors() map[string]ErrorMsgSet { return make(map[string]ErrorMsgSet) diff --git a/pkg/autodiscovery/providers/common.go b/comp/core/autodiscovery/providers/common.go similarity index 100% rename from pkg/autodiscovery/providers/common.go rename to comp/core/autodiscovery/providers/common.go diff --git a/pkg/autodiscovery/providers/config_reader.go b/comp/core/autodiscovery/providers/config_reader.go similarity index 99% rename from pkg/autodiscovery/providers/config_reader.go rename to comp/core/autodiscovery/providers/config_reader.go index b32a5ff3337841..065c0529b9de31 100644 --- a/pkg/autodiscovery/providers/config_reader.go +++ b/comp/core/autodiscovery/providers/config_reader.go @@ -14,8 +14,8 @@ import ( "sync" "time" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/configresolver" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/configresolver" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/config" configUtils "github.com/DataDog/datadog-agent/pkg/config/utils" "github.com/DataDog/datadog-agent/pkg/util/fargate" diff --git a/pkg/autodiscovery/providers/config_reader_test.go b/comp/core/autodiscovery/providers/config_reader_test.go similarity index 98% rename from pkg/autodiscovery/providers/config_reader_test.go rename to comp/core/autodiscovery/providers/config_reader_test.go index 7dbdafa3715e44..3923c3cb07c611 100644 --- a/pkg/autodiscovery/providers/config_reader_test.go +++ b/comp/core/autodiscovery/providers/config_reader_test.go @@ -14,7 +14,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/config" ) diff --git a/pkg/autodiscovery/providers/consul.go b/comp/core/autodiscovery/providers/consul.go similarity index 96% rename from pkg/autodiscovery/providers/consul.go rename to comp/core/autodiscovery/providers/consul.go index 8843897fb44ed9..0f0034c74e1cb7 100644 --- a/pkg/autodiscovery/providers/consul.go +++ b/comp/core/autodiscovery/providers/consul.go @@ -17,9 +17,9 @@ import ( consul "github.com/hashicorp/consul/api" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/common/utils" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/providers/names" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/common/utils" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/providers/names" "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/util/log" ) @@ -294,10 +294,6 @@ func isTemplateField(key string) bool { return false } -func init() { - RegisterProvider(names.ConsulRegisterName, NewConsulConfigProvider) -} - // GetConfigErrors is not implemented for the ConsulConfigProvider func (p *ConsulConfigProvider) GetConfigErrors() map[string]ErrorMsgSet { return make(map[string]ErrorMsgSet) diff --git a/comp/core/autodiscovery/providers/consul_nop.go b/comp/core/autodiscovery/providers/consul_nop.go new file mode 100644 index 00000000000000..86ee0022a7d9ec --- /dev/null +++ b/comp/core/autodiscovery/providers/consul_nop.go @@ -0,0 +1,13 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +//go:build !consul + +package providers + +import "github.com/DataDog/datadog-agent/pkg/config" + +// NewConsulConfigProvider creates a client connection to consul and create a new ConsulConfigProvider +var NewConsulConfigProvider func(providerConfig *config.ConfigurationProviders) (ConfigProvider, error) diff --git a/pkg/autodiscovery/providers/consul_test.go b/comp/core/autodiscovery/providers/consul_test.go similarity index 100% rename from pkg/autodiscovery/providers/consul_test.go rename to comp/core/autodiscovery/providers/consul_test.go diff --git a/pkg/autodiscovery/providers/container.go b/comp/core/autodiscovery/providers/container.go similarity index 96% rename from pkg/autodiscovery/providers/container.go rename to comp/core/autodiscovery/providers/container.go index 0ccbfa87ebed6f..3062ddc88c58e2 100644 --- a/pkg/autodiscovery/providers/container.go +++ b/comp/core/autodiscovery/providers/container.go @@ -13,11 +13,11 @@ import ( "strings" "sync" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/common/utils" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/providers/names" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/telemetry" "github.com/DataDog/datadog-agent/comp/core/workloadmeta" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/common/utils" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/providers/names" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/telemetry" "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/util/containers" "github.com/DataDog/datadog-agent/pkg/util/log" @@ -314,7 +314,3 @@ func findKubernetesInLabels(labels map[string]string) bool { } return false } - -func init() { - RegisterProviderWithComponents(names.KubeContainer, NewContainerConfigProvider) -} diff --git a/comp/core/autodiscovery/providers/container_nop.go b/comp/core/autodiscovery/providers/container_nop.go new file mode 100644 index 00000000000000..d6b8adf7978b24 --- /dev/null +++ b/comp/core/autodiscovery/providers/container_nop.go @@ -0,0 +1,12 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +//go:build serverless + +package providers + +// NewContainerConfigProvider returns a new ConfigProvider subscribed to both container +// and pods +var NewContainerConfigProvider ConfigProviderFactory diff --git a/pkg/autodiscovery/providers/container_test.go b/comp/core/autodiscovery/providers/container_test.go similarity index 99% rename from pkg/autodiscovery/providers/container_test.go rename to comp/core/autodiscovery/providers/container_test.go index 6729632609b4ef..14125ed64046b8 100644 --- a/pkg/autodiscovery/providers/container_test.go +++ b/comp/core/autodiscovery/providers/container_test.go @@ -13,11 +13,11 @@ import ( "github.com/stretchr/testify/assert" "go.uber.org/fx" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/comp/core/config" "github.com/DataDog/datadog-agent/comp/core/log/logimpl" "github.com/DataDog/datadog-agent/comp/core/workloadmeta" "github.com/DataDog/datadog-agent/comp/core/workloadmeta/collectors" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/util/fxutil" ) diff --git a/pkg/autodiscovery/providers/endpointschecks.go b/comp/core/autodiscovery/providers/endpointschecks.go similarity index 94% rename from pkg/autodiscovery/providers/endpointschecks.go rename to comp/core/autodiscovery/providers/endpointschecks.go index b717a76e82e535..32b6fa624bc5a7 100644 --- a/pkg/autodiscovery/providers/endpointschecks.go +++ b/comp/core/autodiscovery/providers/endpointschecks.go @@ -12,8 +12,8 @@ import ( "fmt" "time" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/providers/names" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/providers/names" "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/errors" "github.com/DataDog/datadog-agent/pkg/util/clusteragent" @@ -133,10 +133,6 @@ func (c *EndpointsChecksConfigProvider) initClient() error { return err } -func init() { - RegisterProvider(names.EndpointsChecksRegisterName, NewEndpointsChecksConfigProvider) -} - // GetConfigErrors is not implemented for the EndpointsChecksConfigProvider func (c *EndpointsChecksConfigProvider) GetConfigErrors() map[string]ErrorMsgSet { return make(map[string]ErrorMsgSet) diff --git a/comp/core/autodiscovery/providers/endpointschecks_nop.go b/comp/core/autodiscovery/providers/endpointschecks_nop.go new file mode 100644 index 00000000000000..98914afdece898 --- /dev/null +++ b/comp/core/autodiscovery/providers/endpointschecks_nop.go @@ -0,0 +1,15 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +//go:build !kubelet + +package providers + +import "github.com/DataDog/datadog-agent/pkg/config" + +// NewEndpointsChecksConfigProvider returns a new ConfigProvider collecting +// endpoints check configurations from the cluster-agent. +// Connectivity is not checked at this stage to allow for retries, Collect will do it. +var NewEndpointsChecksConfigProvider func(providerConfig *config.ConfigurationProviders) (ConfigProvider, error) diff --git a/pkg/autodiscovery/providers/etcd.go b/comp/core/autodiscovery/providers/etcd.go similarity index 96% rename from pkg/autodiscovery/providers/etcd.go rename to comp/core/autodiscovery/providers/etcd.go index 3aba00ac9b9b64..688ae9fcd16554 100644 --- a/pkg/autodiscovery/providers/etcd.go +++ b/comp/core/autodiscovery/providers/etcd.go @@ -16,9 +16,9 @@ import ( "go.etcd.io/etcd/client/v2" "golang.org/x/net/context" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/common/utils" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/providers/names" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/common/utils" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/providers/names" "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/util/log" ) @@ -224,10 +224,6 @@ func hasTemplateFields(nodes client.Nodes) bool { return true } -func init() { - RegisterProvider(names.EtcdRegisterName, NewEtcdConfigProvider) -} - // GetConfigErrors is not implemented for the EtcdConfigProvider func (p *EtcdConfigProvider) GetConfigErrors() map[string]ErrorMsgSet { return make(map[string]ErrorMsgSet) diff --git a/comp/core/autodiscovery/providers/etcd_nop.go b/comp/core/autodiscovery/providers/etcd_nop.go new file mode 100644 index 00000000000000..7b10eaa273b09a --- /dev/null +++ b/comp/core/autodiscovery/providers/etcd_nop.go @@ -0,0 +1,13 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +//go:build !etcd + +package providers + +import "github.com/DataDog/datadog-agent/pkg/config" + +// NewEtcdConfigProvider creates a client connection to etcd and create a new EtcdConfigProvider +var NewEtcdConfigProvider func(providerConfig *config.ConfigurationProviders) (ConfigProvider, error) diff --git a/pkg/autodiscovery/providers/etcd_test.go b/comp/core/autodiscovery/providers/etcd_test.go similarity index 100% rename from pkg/autodiscovery/providers/etcd_test.go rename to comp/core/autodiscovery/providers/etcd_test.go diff --git a/pkg/autodiscovery/providers/file.go b/comp/core/autodiscovery/providers/file.go similarity index 88% rename from pkg/autodiscovery/providers/file.go rename to comp/core/autodiscovery/providers/file.go index c7194a9ce6420b..a9e1c26117b54b 100644 --- a/pkg/autodiscovery/providers/file.go +++ b/comp/core/autodiscovery/providers/file.go @@ -8,9 +8,9 @@ package providers import ( "context" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/providers/names" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/telemetry" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/providers/names" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/telemetry" ) // FileConfigProvider collect configuration files from disk diff --git a/pkg/autodiscovery/providers/file_test.go b/comp/core/autodiscovery/providers/file_test.go similarity index 97% rename from pkg/autodiscovery/providers/file_test.go rename to comp/core/autodiscovery/providers/file_test.go index 0def4c4ae38ba4..5598e0676cc0c8 100644 --- a/pkg/autodiscovery/providers/file_test.go +++ b/comp/core/autodiscovery/providers/file_test.go @@ -10,7 +10,7 @@ import ( "os" "testing" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/config" "github.com/stretchr/testify/assert" diff --git a/pkg/autodiscovery/providers/kube_endpoints.go b/comp/core/autodiscovery/providers/kube_endpoints.go similarity index 97% rename from pkg/autodiscovery/providers/kube_endpoints.go rename to comp/core/autodiscovery/providers/kube_endpoints.go index a14022d0595d2f..201761c9d9cf3e 100644 --- a/pkg/autodiscovery/providers/kube_endpoints.go +++ b/comp/core/autodiscovery/providers/kube_endpoints.go @@ -18,10 +18,10 @@ import ( listersv1 "k8s.io/client-go/listers/core/v1" "k8s.io/client-go/tools/cache" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/common/utils" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/providers/names" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/telemetry" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/common/utils" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/providers/names" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/telemetry" "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/util/kubernetes/apiserver" "github.com/DataDog/datadog-agent/pkg/util/log" @@ -352,10 +352,6 @@ func (k *kubeEndpointsConfigProvider) cleanErrorsOfDeletedEndpoints(setCurrentEn } } -func init() { - RegisterProvider(names.KubeEndpointsRegisterName, NewKubeEndpointsConfigProvider) -} - // GetConfigErrors returns a map of configuration errors for each Kubernetes endpoint func (k *kubeEndpointsConfigProvider) GetConfigErrors() map[string]ErrorMsgSet { return k.configErrors diff --git a/pkg/autodiscovery/providers/kube_endpoints_file.go b/comp/core/autodiscovery/providers/kube_endpoints_file.go similarity index 96% rename from pkg/autodiscovery/providers/kube_endpoints_file.go rename to comp/core/autodiscovery/providers/kube_endpoints_file.go index 1798185aec38a2..2223c1b6ec8dc0 100644 --- a/pkg/autodiscovery/providers/kube_endpoints_file.go +++ b/comp/core/autodiscovery/providers/kube_endpoints_file.go @@ -12,9 +12,9 @@ import ( "fmt" "sync" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/common/utils" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/providers/names" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/common/utils" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/providers/names" "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/util/kubernetes/apiserver" "github.com/DataDog/datadog-agent/pkg/util/log" @@ -25,10 +25,6 @@ import ( "k8s.io/client-go/tools/cache" ) -func init() { - RegisterProvider(names.KubeEndpointsFileRegisterName, NewKubeEndpointsFileConfigProvider) -} - type store struct { sync.RWMutex epConfigs map[string]*epConfig diff --git a/comp/core/autodiscovery/providers/kube_endpoints_file_nop.go b/comp/core/autodiscovery/providers/kube_endpoints_file_nop.go new file mode 100644 index 00000000000000..aa4ad62fcc5b3d --- /dev/null +++ b/comp/core/autodiscovery/providers/kube_endpoints_file_nop.go @@ -0,0 +1,13 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +//go:build !(clusterchecks && kubeapiserver) + +package providers + +import "github.com/DataDog/datadog-agent/pkg/config" + +// NewKubeEndpointsFileConfigProvider returns a new KubeEndpointsFileConfigProvider +var NewKubeEndpointsFileConfigProvider func(providerConfig *config.ConfigurationProviders) (ConfigProvider, error) diff --git a/pkg/autodiscovery/providers/kube_endpoints_file_test.go b/comp/core/autodiscovery/providers/kube_endpoints_file_test.go similarity index 98% rename from pkg/autodiscovery/providers/kube_endpoints_file_test.go rename to comp/core/autodiscovery/providers/kube_endpoints_file_test.go index d9dba1b7eaaa48..e5a1b9f136857e 100644 --- a/pkg/autodiscovery/providers/kube_endpoints_file_test.go +++ b/comp/core/autodiscovery/providers/kube_endpoints_file_test.go @@ -10,7 +10,7 @@ package providers import ( "testing" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/stretchr/testify/assert" v1 "k8s.io/api/core/v1" diff --git a/comp/core/autodiscovery/providers/kube_endpoints_nop.go b/comp/core/autodiscovery/providers/kube_endpoints_nop.go new file mode 100644 index 00000000000000..13af3fbe7c8578 --- /dev/null +++ b/comp/core/autodiscovery/providers/kube_endpoints_nop.go @@ -0,0 +1,14 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +//go:build !(clusterchecks && kubeapiserver) + +package providers + +import "github.com/DataDog/datadog-agent/pkg/config" + +// NewKubeEndpointsConfigProvider returns a new ConfigProvider connected to apiserver. +// Connectivity is not checked at this stage to allow for retries, Collect will do it. +var NewKubeEndpointsConfigProvider func(providerConfig *config.ConfigurationProviders) (ConfigProvider, error) diff --git a/pkg/autodiscovery/providers/kube_endpoints_test.go b/comp/core/autodiscovery/providers/kube_endpoints_test.go similarity index 99% rename from pkg/autodiscovery/providers/kube_endpoints_test.go rename to comp/core/autodiscovery/providers/kube_endpoints_test.go index 98b987704bb26c..c3b86156b3cce5 100644 --- a/pkg/autodiscovery/providers/kube_endpoints_test.go +++ b/comp/core/autodiscovery/providers/kube_endpoints_test.go @@ -23,7 +23,7 @@ import ( "k8s.io/client-go/informers" "k8s.io/client-go/kubernetes/fake" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/util/kubernetes" "github.com/DataDog/datadog-agent/pkg/util/kubernetes/apiserver" diff --git a/pkg/autodiscovery/providers/kube_services.go b/comp/core/autodiscovery/providers/kube_services.go similarity index 95% rename from pkg/autodiscovery/providers/kube_services.go rename to comp/core/autodiscovery/providers/kube_services.go index b09dd54d9723c0..cd421353484ee6 100644 --- a/pkg/autodiscovery/providers/kube_services.go +++ b/comp/core/autodiscovery/providers/kube_services.go @@ -17,10 +17,10 @@ import ( listersv1 "k8s.io/client-go/listers/core/v1" "k8s.io/client-go/tools/cache" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/common/utils" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/providers/names" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/telemetry" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/common/utils" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/providers/names" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/telemetry" "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/util/kubernetes/apiserver" "github.com/DataDog/datadog-agent/pkg/util/log" @@ -219,10 +219,6 @@ func (k *KubeServiceConfigProvider) cleanErrorsOfDeletedServices(setCurrentServi } } -func init() { - RegisterProvider(names.KubeServicesRegisterName, NewKubeServiceConfigProvider) -} - // GetConfigErrors returns a map of configuration errors for each Kubernetes service func (k *KubeServiceConfigProvider) GetConfigErrors() map[string]ErrorMsgSet { return k.configErrors diff --git a/pkg/autodiscovery/providers/kube_services_file.go b/comp/core/autodiscovery/providers/kube_services_file.go similarity index 92% rename from pkg/autodiscovery/providers/kube_services_file.go rename to comp/core/autodiscovery/providers/kube_services_file.go index 6668ce8359f3ef..9057ee1c18b4cb 100644 --- a/pkg/autodiscovery/providers/kube_services_file.go +++ b/comp/core/autodiscovery/providers/kube_services_file.go @@ -10,8 +10,8 @@ package providers import ( "context" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/providers/names" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/providers/names" "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/util/kubernetes/apiserver" ) @@ -89,7 +89,3 @@ func toServiceADIdentifiers(advancedIDs []integration.AdvancedADIdentifier) []st return adIdentifiers } - -func init() { - RegisterProvider(names.KubeServicesFileRegisterName, NewKubeServiceFileConfigProvider) -} diff --git a/comp/core/autodiscovery/providers/kube_services_file_nop.go b/comp/core/autodiscovery/providers/kube_services_file_nop.go new file mode 100644 index 00000000000000..e7592bcef86b32 --- /dev/null +++ b/comp/core/autodiscovery/providers/kube_services_file_nop.go @@ -0,0 +1,13 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +//go:build !(clusterchecks && kubeapiserver) + +package providers + +import "github.com/DataDog/datadog-agent/pkg/config" + +// NewKubeServiceFileConfigProvider returns a new KubeServiceFileConfigProvider +var NewKubeServiceFileConfigProvider func(providerConfig *config.ConfigurationProviders) (ConfigProvider, error) diff --git a/pkg/autodiscovery/providers/kube_services_file_test.go b/comp/core/autodiscovery/providers/kube_services_file_test.go similarity index 94% rename from pkg/autodiscovery/providers/kube_services_file_test.go rename to comp/core/autodiscovery/providers/kube_services_file_test.go index cab85e829f0144..b5863a5caaba57 100644 --- a/pkg/autodiscovery/providers/kube_services_file_test.go +++ b/comp/core/autodiscovery/providers/kube_services_file_test.go @@ -10,8 +10,8 @@ package providers import ( "testing" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/providers/names" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/providers/names" "github.com/stretchr/testify/assert" ) diff --git a/comp/core/autodiscovery/providers/kube_services_nop.go b/comp/core/autodiscovery/providers/kube_services_nop.go new file mode 100644 index 00000000000000..17567b64d04692 --- /dev/null +++ b/comp/core/autodiscovery/providers/kube_services_nop.go @@ -0,0 +1,14 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +//go:build !(clusterchecks && kubeapiserver) + +package providers + +import "github.com/DataDog/datadog-agent/pkg/config" + +// NewKubeServiceConfigProvider returns a new ConfigProvider connected to apiserver. +// Connectivity is not checked at this stage to allow for retries, Collect will do it. +var NewKubeServiceConfigProvider func(providerConfig *config.ConfigurationProviders) (ConfigProvider, error) diff --git a/pkg/autodiscovery/providers/kube_services_test.go b/comp/core/autodiscovery/providers/kube_services_test.go similarity index 99% rename from pkg/autodiscovery/providers/kube_services_test.go rename to comp/core/autodiscovery/providers/kube_services_test.go index 974b1668a65cf6..7f510f6cfd1794 100644 --- a/pkg/autodiscovery/providers/kube_services_test.go +++ b/comp/core/autodiscovery/providers/kube_services_test.go @@ -23,7 +23,7 @@ import ( "k8s.io/client-go/informers" "k8s.io/client-go/kubernetes/fake" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/util/kubernetes" ) diff --git a/pkg/autodiscovery/providers/names/provider_names.go b/comp/core/autodiscovery/providers/names/provider_names.go similarity index 100% rename from pkg/autodiscovery/providers/names/provider_names.go rename to comp/core/autodiscovery/providers/names/provider_names.go diff --git a/pkg/autodiscovery/providers/prometheus_common.go b/comp/core/autodiscovery/providers/prometheus_common.go similarity index 94% rename from pkg/autodiscovery/providers/prometheus_common.go rename to comp/core/autodiscovery/providers/prometheus_common.go index c52f44aad45ccd..d5e8202e297778 100644 --- a/pkg/autodiscovery/providers/prometheus_common.go +++ b/comp/core/autodiscovery/providers/prometheus_common.go @@ -6,7 +6,7 @@ package providers import ( - "github.com/DataDog/datadog-agent/pkg/autodiscovery/common/types" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/common/types" "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/util/log" ) diff --git a/pkg/autodiscovery/providers/prometheus_common_test.go b/comp/core/autodiscovery/providers/prometheus_common_test.go similarity index 98% rename from pkg/autodiscovery/providers/prometheus_common_test.go rename to comp/core/autodiscovery/providers/prometheus_common_test.go index 0ed6dec1952945..09c3c88c7e231b 100644 --- a/pkg/autodiscovery/providers/prometheus_common_test.go +++ b/comp/core/autodiscovery/providers/prometheus_common_test.go @@ -10,7 +10,7 @@ import ( "regexp" "testing" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/common/types" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/common/types" "github.com/DataDog/datadog-agent/pkg/config" "github.com/stretchr/testify/assert" diff --git a/pkg/autodiscovery/providers/prometheus_pods.go b/comp/core/autodiscovery/providers/prometheus_pods.go similarity index 86% rename from pkg/autodiscovery/providers/prometheus_pods.go rename to comp/core/autodiscovery/providers/prometheus_pods.go index e462b86a5e611a..749ebb3dcf9ef8 100644 --- a/pkg/autodiscovery/providers/prometheus_pods.go +++ b/comp/core/autodiscovery/providers/prometheus_pods.go @@ -10,10 +10,10 @@ package providers import ( "context" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/common/types" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/common/utils" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/providers/names" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/common/types" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/common/utils" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/providers/names" "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/util/kubernetes/kubelet" ) @@ -80,10 +80,6 @@ func (p *PrometheusPodsConfigProvider) parsePodlist(podlist []*kubelet.Pod) []in return configs } -func init() { - RegisterProvider(names.PrometheusPodsRegisterName, NewPrometheusPodsConfigProvider) -} - // GetConfigErrors is not implemented for the PrometheusPodsConfigProvider func (p *PrometheusPodsConfigProvider) GetConfigErrors() map[string]ErrorMsgSet { return make(map[string]ErrorMsgSet) diff --git a/comp/core/autodiscovery/providers/prometheus_pods_nop.go b/comp/core/autodiscovery/providers/prometheus_pods_nop.go new file mode 100644 index 00000000000000..edddc1fb52e0d6 --- /dev/null +++ b/comp/core/autodiscovery/providers/prometheus_pods_nop.go @@ -0,0 +1,14 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +//go:build !kubelet + +package providers + +import "github.com/DataDog/datadog-agent/pkg/config" + +// NewPrometheusPodsConfigProvider returns a new Prometheus ConfigProvider connected to kubelet. +// Connectivity is not checked at this stage to allow for retries, Collect will do it. +var NewPrometheusPodsConfigProvider func(providerConfig *config.ConfigurationProviders) (ConfigProvider, error) diff --git a/pkg/autodiscovery/providers/prometheus_services.go b/comp/core/autodiscovery/providers/prometheus_services.go similarity index 96% rename from pkg/autodiscovery/providers/prometheus_services.go rename to comp/core/autodiscovery/providers/prometheus_services.go index 7d315b7744a8f1..573eeb449a782a 100644 --- a/pkg/autodiscovery/providers/prometheus_services.go +++ b/comp/core/autodiscovery/providers/prometheus_services.go @@ -13,10 +13,10 @@ import ( "fmt" "sync" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/common/types" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/common/utils" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/providers/names" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/common/types" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/common/utils" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/providers/names" "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/util/kubernetes/apiserver" "github.com/DataDog/datadog-agent/pkg/util/log" @@ -321,10 +321,6 @@ func (p *PrometheusServicesConfigProvider) promAnnotationsDiffer(first, second m return false } -func init() { - RegisterProvider(names.PrometheusServicesRegisterName, NewPrometheusServicesConfigProvider) -} - // GetConfigErrors is not implemented for the PrometheusServicesConfigProvider func (p *PrometheusServicesConfigProvider) GetConfigErrors() map[string]ErrorMsgSet { return make(map[string]ErrorMsgSet) diff --git a/comp/core/autodiscovery/providers/prometheus_services_nop.go b/comp/core/autodiscovery/providers/prometheus_services_nop.go new file mode 100644 index 00000000000000..1c76dd86a5ceeb --- /dev/null +++ b/comp/core/autodiscovery/providers/prometheus_services_nop.go @@ -0,0 +1,13 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +//go:build !(clusterchecks && kubeapiserver) + +package providers + +import "github.com/DataDog/datadog-agent/pkg/config" + +// NewPrometheusServicesConfigProvider returns a new Prometheus ConfigProvider connected to kube apiserver +var NewPrometheusServicesConfigProvider func(providerConfig *config.ConfigurationProviders) (ConfigProvider, error) diff --git a/pkg/autodiscovery/providers/prometheus_services_test.go b/comp/core/autodiscovery/providers/prometheus_services_test.go similarity index 99% rename from pkg/autodiscovery/providers/prometheus_services_test.go rename to comp/core/autodiscovery/providers/prometheus_services_test.go index 7ffcf6d37ea918..d7c833a975cabb 100644 --- a/pkg/autodiscovery/providers/prometheus_services_test.go +++ b/comp/core/autodiscovery/providers/prometheus_services_test.go @@ -14,8 +14,8 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/common/types" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/common/types" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/config" v1 "k8s.io/api/core/v1" diff --git a/pkg/autodiscovery/providers/providers.go b/comp/core/autodiscovery/providers/providers.go similarity index 54% rename from pkg/autodiscovery/providers/providers.go rename to comp/core/autodiscovery/providers/providers.go index df16ea3cd3b8b6..f07b63bd6cde2b 100644 --- a/pkg/autodiscovery/providers/providers.go +++ b/comp/core/autodiscovery/providers/providers.go @@ -8,24 +8,54 @@ package providers import ( "context" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/providers/names" "github.com/DataDog/datadog-agent/comp/core/workloadmeta" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/config" + "github.com/DataDog/datadog-agent/pkg/util/log" ) -// ProviderCatalog keeps track of config providers by name -var ProviderCatalog = make(map[string]ConfigProviderFactory) - // RegisterProvider adds a loader to the providers catalog -func RegisterProvider(name string, factory func(providerConfig *config.ConfigurationProviders) (ConfigProvider, error)) { - RegisterProviderWithComponents(name, func(providerConfig *config.ConfigurationProviders, wmeta workloadmeta.Component) (ConfigProvider, error) { - return factory(providerConfig) - }) +func RegisterProvider(name string, + factory func(providerConfig *config.ConfigurationProviders) (ConfigProvider, error), + providerCatalog map[string]ConfigProviderFactory) { + RegisterProviderWithComponents( + name, + func(providerConfig *config.ConfigurationProviders, wmeta workloadmeta.Component) (ConfigProvider, error) { + return factory(providerConfig) + }, + providerCatalog) } // RegisterProviderWithComponents adds a loader to the providers catalog -func RegisterProviderWithComponents(name string, factory ConfigProviderFactory) { - ProviderCatalog[name] = factory +func RegisterProviderWithComponents(name string, factory ConfigProviderFactory, providerCatalog map[string]ConfigProviderFactory) { + if factory == nil { + log.Infof("ConfigProvider factory %s does not exist.", name) + return + } + _, registered := providerCatalog[name] + if registered { + log.Errorf("ConfigProvider factory %s already registered. Ignoring.", name) + return + } + providerCatalog[name] = factory +} + +// RegisterProviders adds all the default providers to the catalog +func RegisterProviders(providerCatalog map[string]ConfigProviderFactory) { + RegisterProvider(names.CloudFoundryBBS, NewCloudFoundryConfigProvider, providerCatalog) + RegisterProvider(names.ClusterChecksRegisterName, NewClusterChecksConfigProvider, providerCatalog) + RegisterProvider(names.ConsulRegisterName, NewConsulConfigProvider, providerCatalog) + RegisterProviderWithComponents(names.KubeContainer, NewContainerConfigProvider, providerCatalog) + RegisterProvider(names.EndpointsChecksRegisterName, NewEndpointsChecksConfigProvider, providerCatalog) + RegisterProvider(names.EtcdRegisterName, NewEtcdConfigProvider, providerCatalog) + RegisterProvider(names.KubeEndpointsFileRegisterName, NewKubeEndpointsFileConfigProvider, providerCatalog) + RegisterProvider(names.KubeEndpointsRegisterName, NewKubeEndpointsConfigProvider, providerCatalog) + RegisterProvider(names.KubeServicesFileRegisterName, NewKubeServiceFileConfigProvider, providerCatalog) + RegisterProvider(names.KubeServicesRegisterName, NewKubeServiceConfigProvider, providerCatalog) + RegisterProvider(names.PrometheusPodsRegisterName, NewPrometheusPodsConfigProvider, providerCatalog) + RegisterProvider(names.PrometheusServicesRegisterName, NewPrometheusServicesConfigProvider, providerCatalog) + RegisterProvider(names.ZookeeperRegisterName, NewZookeeperConfigProvider, providerCatalog) } // ConfigProviderFactory is any function capable to create a ConfigProvider instance diff --git a/pkg/autodiscovery/providers/remote_config.go b/comp/core/autodiscovery/providers/remote_config.go similarity index 97% rename from pkg/autodiscovery/providers/remote_config.go rename to comp/core/autodiscovery/providers/remote_config.go index 80d7aa2c18da2c..c938c8c3ee45b7 100644 --- a/pkg/autodiscovery/providers/remote_config.go +++ b/comp/core/autodiscovery/providers/remote_config.go @@ -13,8 +13,8 @@ import ( "strings" "sync" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/providers/names" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/providers/names" "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/remoteconfig/state" "github.com/DataDog/datadog-agent/pkg/util/log" diff --git a/pkg/autodiscovery/providers/tests/ad.yaml b/comp/core/autodiscovery/providers/tests/ad.yaml similarity index 100% rename from pkg/autodiscovery/providers/tests/ad.yaml rename to comp/core/autodiscovery/providers/tests/ad.yaml diff --git a/pkg/autodiscovery/providers/tests/ad_deprecated.yaml b/comp/core/autodiscovery/providers/tests/ad_deprecated.yaml similarity index 100% rename from pkg/autodiscovery/providers/tests/ad_deprecated.yaml rename to comp/core/autodiscovery/providers/tests/ad_deprecated.yaml diff --git a/pkg/autodiscovery/providers/tests/ad_with_service_id.yaml b/comp/core/autodiscovery/providers/tests/ad_with_service_id.yaml similarity index 100% rename from pkg/autodiscovery/providers/tests/ad_with_service_id.yaml rename to comp/core/autodiscovery/providers/tests/ad_with_service_id.yaml diff --git a/pkg/autodiscovery/providers/tests/advanced_ad.yaml b/comp/core/autodiscovery/providers/tests/advanced_ad.yaml similarity index 100% rename from pkg/autodiscovery/providers/tests/advanced_ad.yaml rename to comp/core/autodiscovery/providers/tests/advanced_ad.yaml diff --git a/pkg/autodiscovery/providers/tests/bar.yaml.default b/comp/core/autodiscovery/providers/tests/bar.yaml.default similarity index 100% rename from pkg/autodiscovery/providers/tests/bar.yaml.default rename to comp/core/autodiscovery/providers/tests/bar.yaml.default diff --git a/pkg/autodiscovery/providers/tests/baz.d/1.yaml b/comp/core/autodiscovery/providers/tests/baz.d/1.yaml similarity index 100% rename from pkg/autodiscovery/providers/tests/baz.d/1.yaml rename to comp/core/autodiscovery/providers/tests/baz.d/1.yaml diff --git a/pkg/autodiscovery/providers/tests/baz.yaml.default b/comp/core/autodiscovery/providers/tests/baz.yaml.default similarity index 100% rename from pkg/autodiscovery/providers/tests/baz.yaml.default rename to comp/core/autodiscovery/providers/tests/baz.yaml.default diff --git a/pkg/autodiscovery/providers/tests/corge.d/conf.yaml.default b/comp/core/autodiscovery/providers/tests/corge.d/conf.yaml.default similarity index 100% rename from pkg/autodiscovery/providers/tests/corge.d/conf.yaml.default rename to comp/core/autodiscovery/providers/tests/corge.d/conf.yaml.default diff --git a/pkg/autodiscovery/providers/tests/corge.d/logs.yaml b/comp/core/autodiscovery/providers/tests/corge.d/logs.yaml similarity index 100% rename from pkg/autodiscovery/providers/tests/corge.d/logs.yaml rename to comp/core/autodiscovery/providers/tests/corge.d/logs.yaml diff --git a/pkg/autodiscovery/providers/tests/envvars.d/conf.yaml b/comp/core/autodiscovery/providers/tests/envvars.d/conf.yaml similarity index 100% rename from pkg/autodiscovery/providers/tests/envvars.d/conf.yaml rename to comp/core/autodiscovery/providers/tests/envvars.d/conf.yaml diff --git a/pkg/autodiscovery/providers/tests/foo.yaml b/comp/core/autodiscovery/providers/tests/foo.yaml similarity index 100% rename from pkg/autodiscovery/providers/tests/foo.yaml rename to comp/core/autodiscovery/providers/tests/foo.yaml diff --git a/pkg/autodiscovery/providers/tests/foo.yml.default b/comp/core/autodiscovery/providers/tests/foo.yml.default similarity index 100% rename from pkg/autodiscovery/providers/tests/foo.yml.default rename to comp/core/autodiscovery/providers/tests/foo.yml.default diff --git a/pkg/autodiscovery/providers/tests/ignored.d/auto_conf.yaml b/comp/core/autodiscovery/providers/tests/ignored.d/auto_conf.yaml similarity index 100% rename from pkg/autodiscovery/providers/tests/ignored.d/auto_conf.yaml rename to comp/core/autodiscovery/providers/tests/ignored.d/auto_conf.yaml diff --git a/pkg/autodiscovery/providers/tests/invalid.yaml b/comp/core/autodiscovery/providers/tests/invalid.yaml similarity index 100% rename from pkg/autodiscovery/providers/tests/invalid.yaml rename to comp/core/autodiscovery/providers/tests/invalid.yaml diff --git a/pkg/autodiscovery/providers/tests/logs-agent_only.yaml b/comp/core/autodiscovery/providers/tests/logs-agent_only.yaml similarity index 100% rename from pkg/autodiscovery/providers/tests/logs-agent_only.yaml rename to comp/core/autodiscovery/providers/tests/logs-agent_only.yaml diff --git a/pkg/autodiscovery/providers/tests/logs-agent_with_instances.yaml b/comp/core/autodiscovery/providers/tests/logs-agent_with_instances.yaml similarity index 100% rename from pkg/autodiscovery/providers/tests/logs-agent_with_instances.yaml rename to comp/core/autodiscovery/providers/tests/logs-agent_with_instances.yaml diff --git a/pkg/autodiscovery/providers/tests/metrics.yaml b/comp/core/autodiscovery/providers/tests/metrics.yaml similarity index 100% rename from pkg/autodiscovery/providers/tests/metrics.yaml rename to comp/core/autodiscovery/providers/tests/metrics.yaml diff --git a/pkg/autodiscovery/providers/tests/nested/ignore.yaml b/comp/core/autodiscovery/providers/tests/nested/ignore.yaml similarity index 100% rename from pkg/autodiscovery/providers/tests/nested/ignore.yaml rename to comp/core/autodiscovery/providers/tests/nested/ignore.yaml diff --git a/pkg/autodiscovery/providers/tests/nested_default.d/conf.yaml.default b/comp/core/autodiscovery/providers/tests/nested_default.d/conf.yaml.default similarity index 100% rename from pkg/autodiscovery/providers/tests/nested_default.d/conf.yaml.default rename to comp/core/autodiscovery/providers/tests/nested_default.d/conf.yaml.default diff --git a/pkg/autodiscovery/providers/tests/nested_example.d/conf.yaml.example b/comp/core/autodiscovery/providers/tests/nested_example.d/conf.yaml.example similarity index 100% rename from pkg/autodiscovery/providers/tests/nested_example.d/conf.yaml.example rename to comp/core/autodiscovery/providers/tests/nested_example.d/conf.yaml.example diff --git a/pkg/autodiscovery/providers/tests/notaconfig.yaml b/comp/core/autodiscovery/providers/tests/notaconfig.yaml similarity index 100% rename from pkg/autodiscovery/providers/tests/notaconfig.yaml rename to comp/core/autodiscovery/providers/tests/notaconfig.yaml diff --git a/pkg/autodiscovery/providers/tests/qux.d/conf.yaml.default b/comp/core/autodiscovery/providers/tests/qux.d/conf.yaml.default similarity index 100% rename from pkg/autodiscovery/providers/tests/qux.d/conf.yaml.default rename to comp/core/autodiscovery/providers/tests/qux.d/conf.yaml.default diff --git a/pkg/autodiscovery/providers/tests/qux.d/metrics.yaml b/comp/core/autodiscovery/providers/tests/qux.d/metrics.yaml similarity index 100% rename from pkg/autodiscovery/providers/tests/qux.d/metrics.yaml rename to comp/core/autodiscovery/providers/tests/qux.d/metrics.yaml diff --git a/pkg/autodiscovery/providers/tests/testcheck.d/1.yml b/comp/core/autodiscovery/providers/tests/testcheck.d/1.yml similarity index 100% rename from pkg/autodiscovery/providers/tests/testcheck.d/1.yml rename to comp/core/autodiscovery/providers/tests/testcheck.d/1.yml diff --git a/pkg/autodiscovery/providers/tests/testcheck.d/2.yaml b/comp/core/autodiscovery/providers/tests/testcheck.d/2.yaml similarity index 100% rename from pkg/autodiscovery/providers/tests/testcheck.d/2.yaml rename to comp/core/autodiscovery/providers/tests/testcheck.d/2.yaml diff --git a/pkg/autodiscovery/providers/tests/testcheck.d/ignore.txt b/comp/core/autodiscovery/providers/tests/testcheck.d/ignore.txt similarity index 100% rename from pkg/autodiscovery/providers/tests/testcheck.d/ignore.txt rename to comp/core/autodiscovery/providers/tests/testcheck.d/ignore.txt diff --git a/pkg/autodiscovery/providers/tests/testcheck.d/ignoreme/ignore.txt b/comp/core/autodiscovery/providers/tests/testcheck.d/ignoreme/ignore.txt similarity index 100% rename from pkg/autodiscovery/providers/tests/testcheck.d/ignoreme/ignore.txt rename to comp/core/autodiscovery/providers/tests/testcheck.d/ignoreme/ignore.txt diff --git a/pkg/autodiscovery/providers/tests/testcheck.yaml b/comp/core/autodiscovery/providers/tests/testcheck.yaml similarity index 100% rename from pkg/autodiscovery/providers/tests/testcheck.yaml rename to comp/core/autodiscovery/providers/tests/testcheck.yaml diff --git a/pkg/autodiscovery/providers/tests/testcheck.yaml.example b/comp/core/autodiscovery/providers/tests/testcheck.yaml.example similarity index 100% rename from pkg/autodiscovery/providers/tests/testcheck.yaml.example rename to comp/core/autodiscovery/providers/tests/testcheck.yaml.example diff --git a/pkg/autodiscovery/providers/utils.go b/comp/core/autodiscovery/providers/utils.go similarity index 89% rename from pkg/autodiscovery/providers/utils.go rename to comp/core/autodiscovery/providers/utils.go index acd123a585e89e..942d7b5f2a2742 100644 --- a/pkg/autodiscovery/providers/utils.go +++ b/comp/core/autodiscovery/providers/utils.go @@ -25,13 +25,6 @@ const ( initConfigPath string = "init_configs" ) -func init() { - // Where to look for check templates if no custom path is defined - config.Datadog.SetDefault("autoconf_template_dir", "/datadog/check_configs") - // Defaut Timeout in second when talking to storage for configuration (etcd, zookeeper, ...) - config.Datadog.SetDefault("autoconf_template_url_timeout", 5) -} - func buildStoreKey(key ...string) string { parts := []string{config.Datadog.GetString("autoconf_template_dir")} parts = append(parts, key...) diff --git a/pkg/autodiscovery/providers/utils_test.go b/comp/core/autodiscovery/providers/utils_test.go similarity index 100% rename from pkg/autodiscovery/providers/utils_test.go rename to comp/core/autodiscovery/providers/utils_test.go diff --git a/pkg/autodiscovery/providers/zookeeper.go b/comp/core/autodiscovery/providers/zookeeper.go similarity index 95% rename from pkg/autodiscovery/providers/zookeeper.go rename to comp/core/autodiscovery/providers/zookeeper.go index 5cd4cbdbf4d774..b21d580b4cc50f 100644 --- a/pkg/autodiscovery/providers/zookeeper.go +++ b/comp/core/autodiscovery/providers/zookeeper.go @@ -17,9 +17,9 @@ import ( "github.com/samuel/go-zookeeper/zk" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/common/utils" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/providers/names" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/common/utils" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/providers/names" "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/util/log" ) @@ -209,10 +209,6 @@ func (z *ZookeeperConfigProvider) getJSONValue(key string) ([][]integration.Data return utils.ParseJSONValue(string(rawValue)) } -func init() { - RegisterProvider(names.ZookeeperRegisterName, NewZookeeperConfigProvider) -} - // GetConfigErrors is not implemented for the ZookeeperConfigProvider func (z *ZookeeperConfigProvider) GetConfigErrors() map[string]ErrorMsgSet { return make(map[string]ErrorMsgSet) diff --git a/comp/core/autodiscovery/providers/zookeeper_nop.go b/comp/core/autodiscovery/providers/zookeeper_nop.go new file mode 100644 index 00000000000000..4961235ae6069f --- /dev/null +++ b/comp/core/autodiscovery/providers/zookeeper_nop.go @@ -0,0 +1,13 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +//go:build !zk + +package providers + +import "github.com/DataDog/datadog-agent/pkg/config" + +// NewZookeeperConfigProvider returns a new Client connected to a Zookeeper backend. +var NewZookeeperConfigProvider func(providerConfig *config.ConfigurationProviders) (ConfigProvider, error) diff --git a/pkg/autodiscovery/providers/zookeeper_test.go b/comp/core/autodiscovery/providers/zookeeper_test.go similarity index 100% rename from pkg/autodiscovery/providers/zookeeper_test.go rename to comp/core/autodiscovery/providers/zookeeper_test.go diff --git a/pkg/autodiscovery/scheduler/README.md b/comp/core/autodiscovery/scheduler/README.md similarity index 100% rename from pkg/autodiscovery/scheduler/README.md rename to comp/core/autodiscovery/scheduler/README.md diff --git a/pkg/autodiscovery/scheduler/meta.go b/comp/core/autodiscovery/scheduler/meta.go similarity index 97% rename from pkg/autodiscovery/scheduler/meta.go rename to comp/core/autodiscovery/scheduler/meta.go index 3f55ebe87ea42b..7bffdd26d214d5 100644 --- a/pkg/autodiscovery/scheduler/meta.go +++ b/comp/core/autodiscovery/scheduler/meta.go @@ -8,7 +8,7 @@ package scheduler import ( "sync" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/util/log" ) diff --git a/pkg/autodiscovery/scheduler/meta_test.go b/comp/core/autodiscovery/scheduler/meta_test.go similarity index 96% rename from pkg/autodiscovery/scheduler/meta_test.go rename to comp/core/autodiscovery/scheduler/meta_test.go index 9731dd42ffda8e..2cc2f2cb95f15c 100644 --- a/pkg/autodiscovery/scheduler/meta_test.go +++ b/comp/core/autodiscovery/scheduler/meta_test.go @@ -10,7 +10,7 @@ import ( "github.com/stretchr/testify/require" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" ) func makeConfig(name string) integration.Config { diff --git a/pkg/autodiscovery/scheduler/scheduler.go b/comp/core/autodiscovery/scheduler/scheduler.go similarity index 94% rename from pkg/autodiscovery/scheduler/scheduler.go rename to comp/core/autodiscovery/scheduler/scheduler.go index 2596c553c4b8e4..c58abc203b3f39 100644 --- a/pkg/autodiscovery/scheduler/scheduler.go +++ b/comp/core/autodiscovery/scheduler/scheduler.go @@ -10,7 +10,7 @@ package scheduler import ( - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" ) // Scheduler is the interface that should be implemented if you want to schedule and diff --git a/pkg/status/autodiscovery/status.go b/comp/core/autodiscovery/status/status.go similarity index 72% rename from pkg/status/autodiscovery/status.go rename to comp/core/autodiscovery/status/status.go index 52d63f9e4f2575..a52b7952f3d1e8 100644 --- a/pkg/status/autodiscovery/status.go +++ b/comp/core/autodiscovery/status/status.go @@ -3,25 +3,23 @@ // This product includes software developed at Datadog (https://www.datadoghq.com/). // Copyright 2016-present Datadog, Inc. -// Package autodiscovery fetch information needed to render the 'autodiscovery' section of the status page. -package autodiscovery +// Package status fetch information needed to render the 'autodiscovery' section of the status page. +package status import ( "embed" "io" - "github.com/DataDog/datadog-agent/cmd/agent/common" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery" "github.com/DataDog/datadog-agent/comp/core/status" "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/util/containers" ) -// PopulateStatus populates the status stats -func PopulateStatus(stats map[string]interface{}) { +// populateStatus populates the status stats +func populateStatus(ac autodiscovery.Component, stats map[string]interface{}) { stats["adEnabledFeatures"] = config.GetDetectedFeatures() - if common.AC != nil { - stats["adConfigErrors"] = common.AC.GetAutodiscoveryErrors() - } + stats["adConfigErrors"] = ac.GetAutodiscoveryErrors() stats["filterErrors"] = containers.GetFilterErrors() } @@ -29,12 +27,14 @@ func PopulateStatus(stats map[string]interface{}) { var templatesFS embed.FS // Provider provides the functionality to populate the status output -type Provider struct{} +type Provider struct { + ac autodiscovery.Component +} // GetProvider if agent is running in a container environment returns status.Provider otherwise returns nil -func GetProvider() status.Provider { +func GetProvider(acComp autodiscovery.Component) status.Provider { if config.IsContainerized() { - return Provider{} + return Provider{ac: acComp} } return nil @@ -43,7 +43,7 @@ func GetProvider() status.Provider { func (p Provider) getStatusInfo() map[string]interface{} { stats := make(map[string]interface{}) - PopulateStatus(stats) + populateStatus(p.ac, stats) return stats } @@ -60,7 +60,7 @@ func (p Provider) Section() string { // JSON populates the status map func (p Provider) JSON(_ bool, stats map[string]interface{}) error { - PopulateStatus(stats) + populateStatus(p.ac, stats) return nil } diff --git a/pkg/status/autodiscovery/status_templates/autodiscovery.tmpl b/comp/core/autodiscovery/status/status_templates/autodiscovery.tmpl similarity index 100% rename from pkg/status/autodiscovery/status_templates/autodiscovery.tmpl rename to comp/core/autodiscovery/status/status_templates/autodiscovery.tmpl diff --git a/pkg/autodiscovery/telemetry/README.md b/comp/core/autodiscovery/telemetry/README.md similarity index 100% rename from pkg/autodiscovery/telemetry/README.md rename to comp/core/autodiscovery/telemetry/README.md diff --git a/pkg/autodiscovery/telemetry/telemetry.go b/comp/core/autodiscovery/telemetry/telemetry.go similarity index 100% rename from pkg/autodiscovery/telemetry/telemetry.go rename to comp/core/autodiscovery/telemetry/telemetry.go diff --git a/comp/core/flare/flare.go b/comp/core/flare/flare.go index 5e39934f0b8246..2982df38bdc637 100644 --- a/comp/core/flare/flare.go +++ b/comp/core/flare/flare.go @@ -15,6 +15,7 @@ import ( "github.com/DataDog/datadog-agent/comp/aggregator/diagnosesendermanager" "github.com/DataDog/datadog-agent/comp/collector/collector" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery" "github.com/DataDog/datadog-agent/comp/core/config" "github.com/DataDog/datadog-agent/comp/core/flare/helpers" "github.com/DataDog/datadog-agent/comp/core/flare/types" @@ -41,6 +42,7 @@ type dependencies struct { Providers []types.FlareCallback `group:"flare"` Collector optional.Option[collector.Component] Secrets secrets.Component + AC optional.Option[autodiscovery.Component] } type flare struct { @@ -52,7 +54,7 @@ type flare struct { } func newFlare(deps dependencies) (Component, rcclienttypes.TaskListenerProvider) { - diagnoseDeps := diagnose.NewSuitesDeps(deps.Diagnosesendermanager, deps.Collector, deps.Secrets) + diagnoseDeps := diagnose.NewSuitesDeps(deps.Diagnosesendermanager, deps.Collector, deps.Secrets, deps.AC) f := &flare{ log: deps.Log, config: deps.Config, diff --git a/comp/core/flare/flare_test.go b/comp/core/flare/flare_test.go index 5c7966b1eaa196..3bd73b00b0d199 100644 --- a/comp/core/flare/flare_test.go +++ b/comp/core/flare/flare_test.go @@ -10,12 +10,14 @@ import ( "github.com/DataDog/datadog-agent/comp/aggregator/diagnosesendermanager" "github.com/DataDog/datadog-agent/comp/collector/collector" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery" "github.com/DataDog/datadog-agent/comp/core/config" "github.com/DataDog/datadog-agent/comp/core/flare/types" "github.com/DataDog/datadog-agent/comp/core/log/logimpl" "github.com/DataDog/datadog-agent/comp/core/secrets" "github.com/DataDog/datadog-agent/comp/core/secrets/secretsimpl" "github.com/DataDog/datadog-agent/pkg/util/fxutil" + "github.com/DataDog/datadog-agent/pkg/util/optional" "github.com/stretchr/testify/assert" "go.uber.org/fx" ) @@ -36,7 +38,7 @@ func TestFlareCreation(t *testing.T) { fx.Provide(func() diagnosesendermanager.Component { return nil }), fx.Provide(func() Params { return Params{} }), collector.NoneModule(), - + fx.Supply(optional.NewNoneOption[autodiscovery.Component]()), // provider a nil FlareCallback fx.Provide(fx.Annotate( func() types.FlareCallback { return nil }, diff --git a/comp/core/tagger/README.md b/comp/core/tagger/README.md index 0cc312c61fc478..666be69b5b90d9 100644 --- a/comp/core/tagger/README.md +++ b/comp/core/tagger/README.md @@ -61,7 +61,7 @@ cache. Cache invalidation is triggered by the collectors (or source) by either: Tagger entities are identified by a string-typed ID, with one of the following forms: - + | *Service* | *Tagger Entity* | |-----------------------------------------|--------------------------------------------------------------------| | workloadmeta.KindContainer | `container_id://` | diff --git a/comp/core/workloadmeta/workloadmeta.go b/comp/core/workloadmeta/workloadmeta.go index 5e6698bfe5609f..0a0bc5a08260a8 100644 --- a/comp/core/workloadmeta/workloadmeta.go +++ b/comp/core/workloadmeta/workloadmeta.go @@ -105,7 +105,6 @@ func newWorkloadMeta(deps dependencies) provider { // context provided to the OnStart hook. mainCtx, _ := common.GetMainCtxCancel() - // create and setup the Autoconfig instance if deps.Params.InitHelper != nil { err = deps.Params.InitHelper(mainCtx, wm) if err != nil { diff --git a/pkg/cli/standalone/jmx.go b/pkg/cli/standalone/jmx.go index 42896d27336886..35ab820ffe2b93 100644 --- a/pkg/cli/standalone/jmx.go +++ b/pkg/cli/standalone/jmx.go @@ -13,11 +13,12 @@ import ( internalAPI "github.com/DataDog/datadog-agent/comp/api/api" "github.com/DataDog/datadog-agent/comp/collector/collector" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/comp/core/tagger" "github.com/DataDog/datadog-agent/comp/core/workloadmeta" logsAgent "github.com/DataDog/datadog-agent/comp/logs/agent" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/check" "github.com/DataDog/datadog-agent/pkg/collector/corechecks/embed/jmx" "github.com/DataDog/datadog-agent/pkg/jmxfetch" @@ -28,39 +29,50 @@ import ( // ExecJMXCommandConsole runs the provided JMX command name on the selected checks, and // reports with the ConsoleReporter to the agent's `log.Info`. // The common utils, including AutoConfig, must have already been initialized. -func ExecJMXCommandConsole(command string, selectedChecks []string, logLevel string, configs []integration.Config, wmeta workloadmeta.Component, taggerComp tagger.Component, senderManager sender.DiagnoseSenderManager, agentAPI internalAPI.Component, collector optional.Option[collector.Component]) error { - return execJmxCommand(command, selectedChecks, jmxfetch.ReporterConsole, log.JMXInfo, logLevel, configs, wmeta, taggerComp, senderManager, agentAPI, collector) +func ExecJMXCommandConsole(command string, selectedChecks []string, logLevel string, configs []integration.Config, wmeta workloadmeta.Component, taggerComp tagger.Component, ac autodiscovery.Component, senderManager sender.DiagnoseSenderManager, agentAPI internalAPI.Component, collector optional.Option[collector.Component]) error { + return execJmxCommand(command, selectedChecks, jmxfetch.ReporterConsole, log.JMXInfo, logLevel, configs, wmeta, taggerComp, ac, senderManager, agentAPI, collector) } // ExecJmxListWithMetricsJSON runs the JMX command with "with-metrics", reporting // the data as a JSON on the console. It is used by the `check jmx` cli command // of the Agent. // The common utils, including AutoConfig, must have already been initialized. -func ExecJmxListWithMetricsJSON(selectedChecks []string, logLevel string, configs []integration.Config, wmeta workloadmeta.Component, taggerComp tagger.Component, senderManager sender.DiagnoseSenderManager, agentAPI internalAPI.Component, collector optional.Option[collector.Component]) error { +func ExecJmxListWithMetricsJSON(selectedChecks []string, logLevel string, configs []integration.Config, wmeta workloadmeta.Component, taggerComp tagger.Component, ac autodiscovery.Component, senderManager sender.DiagnoseSenderManager, agentAPI internalAPI.Component, collector optional.Option[collector.Component]) error { // don't pollute the JSON with the log pattern. out := func(a ...interface{}) { fmt.Println(a...) } - return execJmxCommand("list_with_metrics", selectedChecks, jmxfetch.ReporterJSON, out, logLevel, configs, wmeta, taggerComp, senderManager, agentAPI, collector) + return execJmxCommand("list_with_metrics", selectedChecks, jmxfetch.ReporterJSON, out, logLevel, configs, wmeta, taggerComp, ac, senderManager, agentAPI, collector) } // ExecJmxListWithRateMetricsJSON runs the JMX command with "with-rate-metrics", reporting // the data as a JSON on the console. It is used by the `check jmx --rate` cli command // of the Agent. // The common utils, including AutoConfig, must have already been initialized. -func ExecJmxListWithRateMetricsJSON(selectedChecks []string, logLevel string, configs []integration.Config, wmeta workloadmeta.Component, taggerComp tagger.Component, senderManager sender.DiagnoseSenderManager, agentAPI internalAPI.Component, collector optional.Option[collector.Component]) error { +func ExecJmxListWithRateMetricsJSON(selectedChecks []string, logLevel string, configs []integration.Config, wmeta workloadmeta.Component, taggerComp tagger.Component, ac autodiscovery.Component, senderManager sender.DiagnoseSenderManager, agentAPI internalAPI.Component, collector optional.Option[collector.Component]) error { // don't pollute the JSON with the log pattern. out := func(a ...interface{}) { fmt.Println(a...) } - return execJmxCommand("list_with_rate_metrics", selectedChecks, jmxfetch.ReporterJSON, out, logLevel, configs, wmeta, taggerComp, senderManager, agentAPI, collector) + return execJmxCommand("list_with_rate_metrics", selectedChecks, jmxfetch.ReporterJSON, out, logLevel, configs, wmeta, taggerComp, ac, senderManager, agentAPI, collector) } // execJmxCommand runs the provided JMX command name on the selected checks. // The common utils, including AutoConfig, must have already been initialized. -func execJmxCommand(command string, selectedChecks []string, reporter jmxfetch.JMXReporter, output func(...interface{}), logLevel string, configs []integration.Config, wmeta workloadmeta.Component, taggerComp tagger.Component, senderManager sender.DiagnoseSenderManager, agentAPI internalAPI.Component, collector optional.Option[collector.Component]) error { +func execJmxCommand(command string, + selectedChecks []string, + reporter jmxfetch.JMXReporter, + output func(...interface{}), + logLevel string, + configs []integration.Config, + wmeta workloadmeta.Component, + taggerComp tagger.Component, + ac autodiscovery.Component, + senderManager sender.DiagnoseSenderManager, + agentAPI internalAPI.Component, + collector optional.Option[collector.Component]) error { // start the cmd HTTP server - if err := agentAPI.StartServer(wmeta, taggerComp, optional.NewNoneOption[logsAgent.Component](), senderManager, collector); err != nil { + if err := agentAPI.StartServer(wmeta, taggerComp, ac, optional.NewNoneOption[logsAgent.Component](), senderManager, collector); err != nil { return fmt.Errorf("Error while starting api server, exiting: %v", err) } diff --git a/pkg/cli/standalone/jmx_nojmx.go b/pkg/cli/standalone/jmx_nojmx.go index 249cb0558d929c..eb0cf73f3a1834 100644 --- a/pkg/cli/standalone/jmx_nojmx.go +++ b/pkg/cli/standalone/jmx_nojmx.go @@ -12,24 +12,25 @@ import ( internalAPI "github.com/DataDog/datadog-agent/comp/api/api" "github.com/DataDog/datadog-agent/comp/collector/collector" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/comp/core/tagger" "github.com/DataDog/datadog-agent/comp/core/workloadmeta" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/util/optional" ) // ExecJMXCommandConsole is not supported when the 'jmx' build tag isn't included -func ExecJMXCommandConsole(command string, selectedChecks []string, logLevel string, configs []integration.Config, wmeta workloadmeta.Component, taggerComp tagger.Component, senderManager sender.DiagnoseSenderManager, agentAPI internalAPI.Component, collector optional.Option[collector.Component]) error { //nolint:revive // TODO fix revive unused-parameter +func ExecJMXCommandConsole(command string, selectedChecks []string, logLevel string, configs []integration.Config, wmeta workloadmeta.Component, taggerComp tagger.Component, ac autodiscovery.Component, senderManager sender.DiagnoseSenderManager, agentAPI internalAPI.Component, collector optional.Option[collector.Component]) error { //nolint:revive // TODO fix revive unused-parameter return fmt.Errorf("not supported: the Agent is compiled without the 'jmx' build tag") } // ExecJmxListWithMetricsJSON is not supported when the 'jmx' build tag isn't included -func ExecJmxListWithMetricsJSON(selectedChecks []string, logLevel string, configs []integration.Config, wmeta workloadmeta.Component, taggerComp tagger.Component, senderManager sender.DiagnoseSenderManager, agentAPI internalAPI.Component, collector optional.Option[collector.Component]) error { //nolint:revive // TODO fix revive unused-parameter +func ExecJmxListWithMetricsJSON(selectedChecks []string, logLevel string, configs []integration.Config, wmeta workloadmeta.Component, taggerComp tagger.Component, ac autodiscovery.Component, senderManager sender.DiagnoseSenderManager, agentAPI internalAPI.Component, collector optional.Option[collector.Component]) error { //nolint:revive // TODO fix revive unused-parameter return fmt.Errorf("not supported: the Agent is compiled without the 'jmx' build tag") } // ExecJmxListWithRateMetricsJSON is not supported when the 'jmx' build tag isn't included -func ExecJmxListWithRateMetricsJSON(selectedChecks []string, logLevel string, configs []integration.Config, wmeta workloadmeta.Component, taggerComp tagger.Component, senderManager sender.DiagnoseSenderManager, agentAPI internalAPI.Component, collector optional.Option[collector.Component]) error { //nolint:revive // TODO fix revive unused-parameter +func ExecJmxListWithRateMetricsJSON(selectedChecks []string, logLevel string, configs []integration.Config, wmeta workloadmeta.Component, taggerComp tagger.Component, ac autodiscovery.Component, senderManager sender.DiagnoseSenderManager, agentAPI internalAPI.Component, collector optional.Option[collector.Component]) error { //nolint:revive // TODO fix revive unused-parameter return fmt.Errorf("not supported: the Agent is compiled without the 'jmx' build tag") } diff --git a/pkg/cli/subcommands/check/command.go b/pkg/cli/subcommands/check/command.go index f47b18cbd9aeac..a1ca0423e8187d 100644 --- a/pkg/cli/subcommands/check/command.go +++ b/pkg/cli/subcommands/check/command.go @@ -33,6 +33,9 @@ import ( authtokenimpl "github.com/DataDog/datadog-agent/comp/api/authtoken/createandfetchimpl" "github.com/DataDog/datadog-agent/comp/collector/collector" "github.com/DataDog/datadog-agent/comp/core" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/autodiscoveryimpl" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/comp/core/config" "github.com/DataDog/datadog-agent/comp/core/flare" "github.com/DataDog/datadog-agent/comp/core/log/logimpl" @@ -62,8 +65,6 @@ import ( "github.com/DataDog/datadog-agent/comp/remote-config/rcservice" "github.com/DataDog/datadog-agent/comp/remote-config/rcserviceha" "github.com/DataDog/datadog-agent/pkg/aggregator" - "github.com/DataDog/datadog-agent/pkg/autodiscovery" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/cli/standalone" pkgcollector "github.com/DataDog/datadog-agent/pkg/collector" "github.com/DataDog/datadog-agent/pkg/collector/check" @@ -164,6 +165,7 @@ func MakeCommand(globalParamsGetter func() GlobalParams) *cobra.Command { fx.Supply(context.Background()), fx.Provide(tagger.NewTaggerParamsForCoreAgent), tagger.Module(), + autodiscoveryimpl.Module(), forwarder.Bundle(), inventorychecksimpl.Module(), // inventorychecksimpl depends on a collector and serializer when created to send payload. @@ -259,6 +261,7 @@ func run( demultiplexer demultiplexer.Component, wmeta workloadmeta.Component, taggerComp tagger.Component, + ac autodiscovery.Component, secretResolver secrets.Component, agentAPI internalAPI.Component, invChecks inventorychecks.Component, @@ -291,8 +294,8 @@ func run( pkgcollector.InitPython(common.GetPythonPaths()...) commonchecks.RegisterChecks(wmeta) - common.LoadComponents(secretResolver, wmeta, pkgconfig.Datadog.GetString("confd_path")) - common.AC.LoadAndRun(context.Background()) + common.LoadComponents(secretResolver, wmeta, ac, pkgconfig.Datadog.GetString("confd_path")) + ac.LoadAndRun(context.Background()) // Create the CheckScheduler, but do not attach it to // AutoDiscovery. @@ -301,7 +304,7 @@ func run( waitCtx, cancelTimeout := context.WithTimeout( context.Background(), time.Duration(cliParams.discoveryTimeout)*time.Second) - allConfigs, err := common.WaitForConfigsFromAD(waitCtx, []string{cliParams.checkName}, int(cliParams.discoveryMinInstances), cliParams.instanceFilter) + allConfigs, err := common.WaitForConfigsFromAD(waitCtx, []string{cliParams.checkName}, int(cliParams.discoveryMinInstances), cliParams.instanceFilter, ac) cancelTimeout() if err != nil { return err @@ -320,11 +323,11 @@ func run( fmt.Println("Please consider using the 'jmx' command instead of 'check jmx'") selectedChecks := []string{cliParams.checkName} if cliParams.checkRate { - if err := standalone.ExecJmxListWithRateMetricsJSON(selectedChecks, config.GetString("log_level"), allConfigs, wmeta, taggerComp, demultiplexer, agentAPI, collector); err != nil { + if err := standalone.ExecJmxListWithRateMetricsJSON(selectedChecks, config.GetString("log_level"), allConfigs, wmeta, taggerComp, ac, demultiplexer, agentAPI, collector); err != nil { return fmt.Errorf("while running the jmx check: %v", err) } } else { - if err := standalone.ExecJmxListWithMetricsJSON(selectedChecks, config.GetString("log_level"), allConfigs, wmeta, taggerComp, demultiplexer, agentAPI, collector); err != nil { + if err := standalone.ExecJmxListWithMetricsJSON(selectedChecks, config.GetString("log_level"), allConfigs, wmeta, taggerComp, ac, demultiplexer, agentAPI, collector); err != nil { return fmt.Errorf("while running the jmx check: %v", err) } } @@ -429,7 +432,7 @@ func run( // something happened while getting the check(s), display some info. if len(cs) == 0 { - for check, error := range autodiscovery.GetConfigErrors() { + for check, error := range autodiscoveryimpl.GetConfigErrors() { if cliParams.checkName == check { fmt.Fprintf(color.Output, "\n%s: invalid config for %s: %s\n", color.RedString("Error"), color.YellowString(check), error) } @@ -442,7 +445,7 @@ func run( } } } - for check, warnings := range autodiscovery.GetResolveWarnings() { + for check, warnings := range autodiscoveryimpl.GetResolveWarnings() { if cliParams.checkName == check { fmt.Fprintf(color.Output, "\n%s: could not resolve %s config:\n", color.YellowString("Warning"), color.YellowString(check)) for _, warning := range warnings { diff --git a/pkg/cli/subcommands/dcaflare/command.go b/pkg/cli/subcommands/dcaflare/command.go index 7ea83fe2152e37..7bf26f1f3e2be2 100644 --- a/pkg/cli/subcommands/dcaflare/command.go +++ b/pkg/cli/subcommands/dcaflare/command.go @@ -20,6 +20,7 @@ import ( "github.com/DataDog/datadog-agent/comp/aggregator/diagnosesendermanager/diagnosesendermanagerimpl" "github.com/DataDog/datadog-agent/comp/collector/collector" "github.com/DataDog/datadog-agent/comp/core" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery" "github.com/DataDog/datadog-agent/comp/core/config" "github.com/DataDog/datadog-agent/comp/core/flare/helpers" "github.com/DataDog/datadog-agent/comp/core/log/logimpl" @@ -94,6 +95,7 @@ func MakeCommand(globalParamsGetter func() GlobalParams) *cobra.Command { fx.Supply(optional.NewNoneOption[collector.Component]()), core.Bundle(), diagnosesendermanagerimpl.Module(), + fx.Supply(optional.NewNoneOption[autodiscovery.Component]()), ) }, } @@ -154,7 +156,11 @@ func readProfileData(seconds int) (flare.ProfileData, error) { return pdata, nil } -func run(cliParams *cliParams, diagnoseSenderManager diagnosesendermanager.Component, collector optional.Option[collector.Component], secretResolver secrets.Component) error { +func run(cliParams *cliParams, + diagnoseSenderManager diagnosesendermanager.Component, + collector optional.Option[collector.Component], + secretResolver secrets.Component, + ac optional.Option[autodiscovery.Component]) error { fmt.Fprintln(color.Output, color.BlueString("Asking the Cluster Agent to build the flare archive.")) var ( profile flare.ProfileData @@ -213,7 +219,7 @@ func run(cliParams *cliParams, diagnoseSenderManager diagnosesendermanager.Compo fmt.Fprintln(color.Output, color.RedString("The agent was unable to make a full flare: %s.", e.Error())) } fmt.Fprintln(color.Output, color.YellowString("Initiating flare locally, some logs will be missing.")) - diagnoseDeps := diagnose.NewSuitesDeps(diagnoseSenderManager, collector, secretResolver) + diagnoseDeps := diagnose.NewSuitesDeps(diagnoseSenderManager, collector, secretResolver, ac) filePath, e = flare.CreateDCAArchive(true, path.GetDistPath(), logFile, profile, diagnoseDeps, nil) if e != nil { fmt.Printf("The flare zipfile failed to be created: %s\n", e) diff --git a/pkg/clusteragent/clusterchecks/common_test.go b/pkg/clusteragent/clusterchecks/common_test.go index 0190bf316a3b1c..fd34a40fd781c4 100644 --- a/pkg/clusteragent/clusterchecks/common_test.go +++ b/pkg/clusteragent/clusterchecks/common_test.go @@ -14,7 +14,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/scheduler" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/scheduler" ) // requireNotLocked tries to lock a clusterStore to diff --git a/pkg/clusteragent/clusterchecks/dispatcher_configs.go b/pkg/clusteragent/clusterchecks/dispatcher_configs.go index 41b7c462b2ad47..8d9dd4f7db0b5b 100644 --- a/pkg/clusteragent/clusterchecks/dispatcher_configs.go +++ b/pkg/clusteragent/clusterchecks/dispatcher_configs.go @@ -8,7 +8,7 @@ package clusterchecks import ( - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/clusteragent/clusterchecks/types" checkid "github.com/DataDog/datadog-agent/pkg/collector/check/id" le "github.com/DataDog/datadog-agent/pkg/util/kubernetes/apiserver/leaderelection/metrics" diff --git a/pkg/clusteragent/clusterchecks/dispatcher_endpoints_configs.go b/pkg/clusteragent/clusterchecks/dispatcher_endpoints_configs.go index ceec3d947875cb..698faf238c4250 100644 --- a/pkg/clusteragent/clusterchecks/dispatcher_endpoints_configs.go +++ b/pkg/clusteragent/clusterchecks/dispatcher_endpoints_configs.go @@ -8,8 +8,8 @@ package clusterchecks import ( - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/providers/names" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/providers/names" le "github.com/DataDog/datadog-agent/pkg/util/kubernetes/apiserver/leaderelection/metrics" ) diff --git a/pkg/clusteragent/clusterchecks/dispatcher_isolate_test.go b/pkg/clusteragent/clusterchecks/dispatcher_isolate_test.go index b12e70c7edb46e..ece79222c8c3d9 100644 --- a/pkg/clusteragent/clusterchecks/dispatcher_isolate_test.go +++ b/pkg/clusteragent/clusterchecks/dispatcher_isolate_test.go @@ -10,7 +10,7 @@ package clusterchecks import ( "testing" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/clusteragent/clusterchecks/types" checkid "github.com/DataDog/datadog-agent/pkg/collector/check/id" "github.com/DataDog/datadog-agent/pkg/config" diff --git a/pkg/clusteragent/clusterchecks/dispatcher_main.go b/pkg/clusteragent/clusterchecks/dispatcher_main.go index 9907ae03163035..e0010bb2b07d96 100644 --- a/pkg/clusteragent/clusterchecks/dispatcher_main.go +++ b/pkg/clusteragent/clusterchecks/dispatcher_main.go @@ -12,7 +12,7 @@ import ( "fmt" "time" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/status/health" "github.com/DataDog/datadog-agent/pkg/util/clusteragent" diff --git a/pkg/clusteragent/clusterchecks/dispatcher_nodes.go b/pkg/clusteragent/clusterchecks/dispatcher_nodes.go index edb507059ef73e..c3e31ca51ef4d8 100644 --- a/pkg/clusteragent/clusterchecks/dispatcher_nodes.go +++ b/pkg/clusteragent/clusterchecks/dispatcher_nodes.go @@ -12,7 +12,7 @@ import ( "math/rand" "time" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/clusteragent/clusterchecks/types" checkid "github.com/DataDog/datadog-agent/pkg/collector/check/id" "github.com/DataDog/datadog-agent/pkg/config" diff --git a/pkg/clusteragent/clusterchecks/dispatcher_rebalance.go b/pkg/clusteragent/clusterchecks/dispatcher_rebalance.go index 44edd7a335b7c3..e701ecffb272ee 100644 --- a/pkg/clusteragent/clusterchecks/dispatcher_rebalance.go +++ b/pkg/clusteragent/clusterchecks/dispatcher_rebalance.go @@ -15,7 +15,7 @@ import ( "gopkg.in/yaml.v2" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/clusteragent/clusterchecks/types" "github.com/DataDog/datadog-agent/pkg/collector/check/defaults" checkid "github.com/DataDog/datadog-agent/pkg/collector/check/id" diff --git a/pkg/clusteragent/clusterchecks/dispatcher_rebalance_test.go b/pkg/clusteragent/clusterchecks/dispatcher_rebalance_test.go index 8714dbac07160e..9550adc53b2f1f 100644 --- a/pkg/clusteragent/clusterchecks/dispatcher_rebalance_test.go +++ b/pkg/clusteragent/clusterchecks/dispatcher_rebalance_test.go @@ -14,7 +14,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/clusteragent/clusterchecks/types" checkid "github.com/DataDog/datadog-agent/pkg/collector/check/id" "github.com/DataDog/datadog-agent/pkg/config" diff --git a/pkg/clusteragent/clusterchecks/dispatcher_test.go b/pkg/clusteragent/clusterchecks/dispatcher_test.go index 929313d040e18f..7dc3d83a4c15a5 100644 --- a/pkg/clusteragent/clusterchecks/dispatcher_test.go +++ b/pkg/clusteragent/clusterchecks/dispatcher_test.go @@ -15,7 +15,7 @@ import ( "github.com/stretchr/testify/require" "gopkg.in/yaml.v2" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/clusteragent/clusterchecks/types" "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/util/kubernetes/clustername" diff --git a/pkg/clusteragent/clusterchecks/handler.go b/pkg/clusteragent/clusterchecks/handler.go index 3e9aa8fd247ada..fc4493d3c46a9c 100644 --- a/pkg/clusteragent/clusterchecks/handler.go +++ b/pkg/clusteragent/clusterchecks/handler.go @@ -13,7 +13,7 @@ import ( "sync" "time" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/scheduler" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/scheduler" "github.com/DataDog/datadog-agent/pkg/clusteragent/api" "github.com/DataDog/datadog-agent/pkg/clusteragent/clusterchecks/types" "github.com/DataDog/datadog-agent/pkg/config" diff --git a/pkg/clusteragent/clusterchecks/handler_api_nocompile.go b/pkg/clusteragent/clusterchecks/handler_api_nocompile.go index 2b4b98ed955a27..cd03f0938ceccc 100644 --- a/pkg/clusteragent/clusterchecks/handler_api_nocompile.go +++ b/pkg/clusteragent/clusterchecks/handler_api_nocompile.go @@ -12,7 +12,7 @@ import ( "context" "errors" - "github.com/DataDog/datadog-agent/pkg/autodiscovery" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery" "github.com/DataDog/datadog-agent/pkg/clusteragent/clusterchecks/types" ) @@ -31,7 +31,7 @@ func (h *Handler) GetState() (types.StateResponse, error) { } // NewHandler not implemented -func NewHandler(_ *autodiscovery.AutoConfig) (*Handler, error) { +func NewHandler(_ autodiscovery.Component) (*Handler, error) { return nil, ErrNotCompiled } diff --git a/pkg/clusteragent/clusterchecks/handler_test.go b/pkg/clusteragent/clusterchecks/handler_test.go index 13c065c1c4fef5..dd351fbba64d92 100644 --- a/pkg/clusteragent/clusterchecks/handler_test.go +++ b/pkg/clusteragent/clusterchecks/handler_test.go @@ -19,7 +19,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/clusteragent/api" "github.com/DataDog/datadog-agent/pkg/clusteragent/clusterchecks/types" "github.com/DataDog/datadog-agent/pkg/util/testutil" diff --git a/pkg/clusteragent/clusterchecks/helpers.go b/pkg/clusteragent/clusterchecks/helpers.go index e8691031801787..8ddddc71872150 100644 --- a/pkg/clusteragent/clusterchecks/helpers.go +++ b/pkg/clusteragent/clusterchecks/helpers.go @@ -11,7 +11,7 @@ import ( "sort" "time" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/clusteragent/clusterchecks/types" ) diff --git a/pkg/clusteragent/clusterchecks/stores.go b/pkg/clusteragent/clusterchecks/stores.go index bab28ba62c0ff5..285e024c0e074e 100644 --- a/pkg/clusteragent/clusterchecks/stores.go +++ b/pkg/clusteragent/clusterchecks/stores.go @@ -11,7 +11,7 @@ import ( "fmt" "sync" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/clusteragent/clusterchecks/types" checkid "github.com/DataDog/datadog-agent/pkg/collector/check/id" le "github.com/DataDog/datadog-agent/pkg/util/kubernetes/apiserver/leaderelection/metrics" diff --git a/pkg/clusteragent/clusterchecks/types/types.go b/pkg/clusteragent/clusterchecks/types/types.go index 2ce00e8937118c..352709a556e414 100644 --- a/pkg/clusteragent/clusterchecks/types/types.go +++ b/pkg/clusteragent/clusterchecks/types/types.go @@ -8,7 +8,7 @@ package types import ( - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" ) const ( diff --git a/pkg/collector/check/check.go b/pkg/collector/check/check.go index d90ac7ad007921..e8fc3206c45f5d 100644 --- a/pkg/collector/check/check.go +++ b/pkg/collector/check/check.go @@ -10,8 +10,8 @@ import ( "errors" "time" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" checkid "github.com/DataDog/datadog-agent/pkg/collector/check/id" "github.com/DataDog/datadog-agent/pkg/collector/check/stats" "github.com/DataDog/datadog-agent/pkg/diagnose/diagnosis" diff --git a/pkg/collector/check/check_test.go b/pkg/collector/check/check_test.go index 2ac85575d6d73e..da92fbcaf2826f 100644 --- a/pkg/collector/check/check_test.go +++ b/pkg/collector/check/check_test.go @@ -12,7 +12,7 @@ import ( "github.com/stretchr/testify/assert" yaml "gopkg.in/yaml.v2" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" ) func TestCollectDefaultMetrics(t *testing.T) { diff --git a/pkg/collector/check/id/id.go b/pkg/collector/check/id/id.go index a63671f07d98f0..7ec6f20dfb6c5b 100644 --- a/pkg/collector/check/id/id.go +++ b/pkg/collector/check/id/id.go @@ -12,7 +12,7 @@ import ( "hash/fnv" "strings" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" ) // ID is the representation of the unique ID of a Check instance diff --git a/pkg/collector/check/id_test.go b/pkg/collector/check/id_test.go index c4d6d90de22bdc..8e967bd189de34 100644 --- a/pkg/collector/check/id_test.go +++ b/pkg/collector/check/id_test.go @@ -11,7 +11,7 @@ import ( "github.com/stretchr/testify/assert" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" checkid "github.com/DataDog/datadog-agent/pkg/collector/check/id" "github.com/DataDog/datadog-agent/pkg/collector/check/stub" ) diff --git a/pkg/collector/check/jmx.go b/pkg/collector/check/jmx.go index 872ee05ba53c3f..9cf15a9aad5ac3 100644 --- a/pkg/collector/check/jmx.go +++ b/pkg/collector/check/jmx.go @@ -8,7 +8,7 @@ package check import ( yaml "gopkg.in/yaml.v2" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" agentconfig "github.com/DataDog/datadog-agent/pkg/config" ) diff --git a/pkg/collector/check/jmx_test.go b/pkg/collector/check/jmx_test.go index 3948a89d56b797..f5d409b9ec7fe6 100644 --- a/pkg/collector/check/jmx_test.go +++ b/pkg/collector/check/jmx_test.go @@ -10,7 +10,7 @@ import ( "github.com/stretchr/testify/assert" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" ) func TestIsJMXInstance(t *testing.T) { diff --git a/pkg/collector/check/loader.go b/pkg/collector/check/loader.go index 888634b72f6273..8f2aa6cb4bae4b 100644 --- a/pkg/collector/check/loader.go +++ b/pkg/collector/check/loader.go @@ -6,8 +6,8 @@ package check import ( + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" ) // Loader is the interface wrapping the operations to load a check from diff --git a/pkg/collector/check/stub/stub.go b/pkg/collector/check/stub/stub.go index ae5dff8a7cfc13..7994d9e2809bdc 100644 --- a/pkg/collector/check/stub/stub.go +++ b/pkg/collector/check/stub/stub.go @@ -9,8 +9,8 @@ package stub import ( "time" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" checkid "github.com/DataDog/datadog-agent/pkg/collector/check/id" "github.com/DataDog/datadog-agent/pkg/collector/check/stats" "github.com/DataDog/datadog-agent/pkg/diagnose/diagnosis" diff --git a/pkg/collector/corechecks/checkbase.go b/pkg/collector/corechecks/checkbase.go index 468940af504678..bed1eb9dd432fc 100644 --- a/pkg/collector/corechecks/checkbase.go +++ b/pkg/collector/corechecks/checkbase.go @@ -12,8 +12,8 @@ import ( yaml "gopkg.in/yaml.v2" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/check/defaults" checkid "github.com/DataDog/datadog-agent/pkg/collector/check/id" "github.com/DataDog/datadog-agent/pkg/collector/check/stats" diff --git a/pkg/collector/corechecks/checkbase_test.go b/pkg/collector/corechecks/checkbase_test.go index 96d1a942350d4a..736301379422e8 100644 --- a/pkg/collector/corechecks/checkbase_test.go +++ b/pkg/collector/corechecks/checkbase_test.go @@ -11,8 +11,8 @@ import ( "github.com/stretchr/testify/assert" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/mocksender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/check/defaults" ) diff --git a/pkg/collector/corechecks/cluster/helm/helm.go b/pkg/collector/corechecks/cluster/helm/helm.go index dc1353ace8361e..34d7fe95ccc073 100644 --- a/pkg/collector/corechecks/cluster/helm/helm.go +++ b/pkg/collector/corechecks/cluster/helm/helm.go @@ -22,8 +22,8 @@ import ( "k8s.io/client-go/informers" "k8s.io/client-go/tools/cache" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/check" core "github.com/DataDog/datadog-agent/pkg/collector/corechecks" "github.com/DataDog/datadog-agent/pkg/collector/corechecks/cluster" diff --git a/pkg/collector/corechecks/cluster/ksm/kubernetes_state.go b/pkg/collector/corechecks/cluster/ksm/kubernetes_state.go index f90048dda615d8..3965ce7dd8fb14 100644 --- a/pkg/collector/corechecks/cluster/ksm/kubernetes_state.go +++ b/pkg/collector/corechecks/cluster/ksm/kubernetes_state.go @@ -16,8 +16,8 @@ import ( "strings" "time" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/check" core "github.com/DataDog/datadog-agent/pkg/collector/corechecks" "github.com/DataDog/datadog-agent/pkg/collector/corechecks/cluster" diff --git a/pkg/collector/corechecks/cluster/kubernetesapiserver/kubernetes_apiserver.go b/pkg/collector/corechecks/cluster/kubernetesapiserver/kubernetes_apiserver.go index cd3dd54a2b6e73..5635803a5354c8 100644 --- a/pkg/collector/corechecks/cluster/kubernetesapiserver/kubernetes_apiserver.go +++ b/pkg/collector/corechecks/cluster/kubernetesapiserver/kubernetes_apiserver.go @@ -19,9 +19,9 @@ import ( "gopkg.in/yaml.v2" v1 "k8s.io/api/core/v1" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/comp/core/tagger" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/check" core "github.com/DataDog/datadog-agent/pkg/collector/corechecks" "github.com/DataDog/datadog-agent/pkg/collector/corechecks/cluster" diff --git a/pkg/collector/corechecks/cluster/kubernetesapiserver/kubernetes_openshift_test.go b/pkg/collector/corechecks/cluster/kubernetesapiserver/kubernetes_openshift_test.go index f913c1e5d9d70c..391aab48897ec3 100644 --- a/pkg/collector/corechecks/cluster/kubernetesapiserver/kubernetes_openshift_test.go +++ b/pkg/collector/corechecks/cluster/kubernetesapiserver/kubernetes_openshift_test.go @@ -16,9 +16,9 @@ import ( osq "github.com/openshift/api/quota/v1" "github.com/stretchr/testify/require" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator" "github.com/DataDog/datadog-agent/pkg/aggregator/mocksender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/config" ) diff --git a/pkg/collector/corechecks/cluster/orchestrator/orchestrator.go b/pkg/collector/corechecks/cluster/orchestrator/orchestrator.go index 28ccb6d6811fd4..3324bc85dc6bca 100644 --- a/pkg/collector/corechecks/cluster/orchestrator/orchestrator.go +++ b/pkg/collector/corechecks/cluster/orchestrator/orchestrator.go @@ -14,8 +14,8 @@ import ( "math/rand" "time" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/check" core "github.com/DataDog/datadog-agent/pkg/collector/corechecks" "github.com/DataDog/datadog-agent/pkg/collector/corechecks/cluster" diff --git a/pkg/collector/corechecks/containerimage/check.go b/pkg/collector/corechecks/containerimage/check.go index 81a47e46c9186d..228d93dc20870b 100644 --- a/pkg/collector/corechecks/containerimage/check.go +++ b/pkg/collector/corechecks/containerimage/check.go @@ -12,9 +12,9 @@ import ( "gopkg.in/yaml.v2" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/comp/core/workloadmeta" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/check" core "github.com/DataDog/datadog-agent/pkg/collector/corechecks" ddConfig "github.com/DataDog/datadog-agent/pkg/config" diff --git a/pkg/collector/corechecks/containerlifecycle/check.go b/pkg/collector/corechecks/containerlifecycle/check.go index b37271610be649..2da437a6859cce 100644 --- a/pkg/collector/corechecks/containerlifecycle/check.go +++ b/pkg/collector/corechecks/containerlifecycle/check.go @@ -13,9 +13,9 @@ import ( "gopkg.in/yaml.v2" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/comp/core/workloadmeta" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/check" core "github.com/DataDog/datadog-agent/pkg/collector/corechecks" ddConfig "github.com/DataDog/datadog-agent/pkg/config" diff --git a/pkg/collector/corechecks/containers/containerd/check.go b/pkg/collector/corechecks/containers/containerd/check.go index f42a1c6e412c76..605722502ae700 100644 --- a/pkg/collector/corechecks/containers/containerd/check.go +++ b/pkg/collector/corechecks/containers/containerd/check.go @@ -18,9 +18,9 @@ import ( "gopkg.in/yaml.v2" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/comp/core/workloadmeta" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/check" "github.com/DataDog/datadog-agent/pkg/collector/corechecks" "github.com/DataDog/datadog-agent/pkg/collector/corechecks/containers/generic" diff --git a/pkg/collector/corechecks/containers/cri/check.go b/pkg/collector/corechecks/containers/cri/check.go index 5275c10e1ef649..99bb71f673855c 100644 --- a/pkg/collector/corechecks/containers/cri/check.go +++ b/pkg/collector/corechecks/containers/cri/check.go @@ -13,9 +13,9 @@ import ( yaml "gopkg.in/yaml.v2" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/comp/core/workloadmeta" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/check" core "github.com/DataDog/datadog-agent/pkg/collector/corechecks" "github.com/DataDog/datadog-agent/pkg/collector/corechecks/containers/generic" diff --git a/pkg/collector/corechecks/containers/docker/check.go b/pkg/collector/corechecks/containers/docker/check.go index ed7b6678d028d3..5c69430f399f34 100644 --- a/pkg/collector/corechecks/containers/docker/check.go +++ b/pkg/collector/corechecks/containers/docker/check.go @@ -18,11 +18,11 @@ import ( dockerTypes "github.com/docker/docker/api/types" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/comp/core/tagger" "github.com/DataDog/datadog-agent/comp/core/tagger/collectors" "github.com/DataDog/datadog-agent/comp/core/workloadmeta" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/check" core "github.com/DataDog/datadog-agent/pkg/collector/corechecks" "github.com/DataDog/datadog-agent/pkg/collector/corechecks/containers/generic" diff --git a/pkg/collector/corechecks/containers/generic/check.go b/pkg/collector/corechecks/containers/generic/check.go index e3ab583a60a590..1530b2d5aabeb1 100644 --- a/pkg/collector/corechecks/containers/generic/check.go +++ b/pkg/collector/corechecks/containers/generic/check.go @@ -11,9 +11,9 @@ import ( yaml "gopkg.in/yaml.v2" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/comp/core/workloadmeta" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/check" core "github.com/DataDog/datadog-agent/pkg/collector/corechecks" "github.com/DataDog/datadog-agent/pkg/util/containers" diff --git a/pkg/collector/corechecks/containers/kubelet/common/config.go b/pkg/collector/corechecks/containers/kubelet/common/config.go index 0cdb753b90bb26..ca52f7945189b5 100644 --- a/pkg/collector/corechecks/containers/kubelet/common/config.go +++ b/pkg/collector/corechecks/containers/kubelet/common/config.go @@ -11,7 +11,7 @@ package common import ( "gopkg.in/yaml.v2" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/common/types" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/common/types" ) const ( diff --git a/pkg/collector/corechecks/containers/kubelet/kubelet.go b/pkg/collector/corechecks/containers/kubelet/kubelet.go index ac1fd8b52e26e7..c399af290b7219 100644 --- a/pkg/collector/corechecks/containers/kubelet/kubelet.go +++ b/pkg/collector/corechecks/containers/kubelet/kubelet.go @@ -9,9 +9,9 @@ package kubelet import ( + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/comp/core/workloadmeta" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/check" core "github.com/DataDog/datadog-agent/pkg/collector/corechecks" "github.com/DataDog/datadog-agent/pkg/collector/corechecks/containers/kubelet/common" diff --git a/pkg/collector/corechecks/containers/kubelet/provider/cadvisor/provider_test.go b/pkg/collector/corechecks/containers/kubelet/provider/cadvisor/provider_test.go index 2a7505f47fe7b7..1e0ee346de9a7a 100644 --- a/pkg/collector/corechecks/containers/kubelet/provider/cadvisor/provider_test.go +++ b/pkg/collector/corechecks/containers/kubelet/provider/cadvisor/provider_test.go @@ -17,11 +17,11 @@ import ( "go.uber.org/fx" "github.com/DataDog/datadog-agent/comp/core" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/common/types" "github.com/DataDog/datadog-agent/comp/core/tagger" "github.com/DataDog/datadog-agent/comp/core/workloadmeta" "github.com/DataDog/datadog-agent/comp/core/workloadmeta/collectors" "github.com/DataDog/datadog-agent/pkg/aggregator/mocksender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/common/types" checkid "github.com/DataDog/datadog-agent/pkg/collector/check/id" "github.com/DataDog/datadog-agent/pkg/collector/corechecks/containers/kubelet/common" commontesting "github.com/DataDog/datadog-agent/pkg/collector/corechecks/containers/kubelet/common/testing" diff --git a/pkg/collector/corechecks/containers/kubelet/provider/health/provider_test.go b/pkg/collector/corechecks/containers/kubelet/provider/health/provider_test.go index 2aadfaa50ad5d0..91a824c9afe8d6 100644 --- a/pkg/collector/corechecks/containers/kubelet/provider/health/provider_test.go +++ b/pkg/collector/corechecks/containers/kubelet/provider/health/provider_test.go @@ -12,8 +12,8 @@ import ( "reflect" "testing" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/common/types" "github.com/DataDog/datadog-agent/pkg/aggregator/mocksender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/common/types" checkid "github.com/DataDog/datadog-agent/pkg/collector/check/id" "github.com/DataDog/datadog-agent/pkg/collector/corechecks/containers/kubelet/common" "github.com/DataDog/datadog-agent/pkg/metrics/servicecheck" diff --git a/pkg/collector/corechecks/containers/kubelet/provider/kubelet/provider_test.go b/pkg/collector/corechecks/containers/kubelet/provider/kubelet/provider_test.go index 5590333ccaad80..876529aad8b6bf 100644 --- a/pkg/collector/corechecks/containers/kubelet/provider/kubelet/provider_test.go +++ b/pkg/collector/corechecks/containers/kubelet/provider/kubelet/provider_test.go @@ -18,11 +18,11 @@ import ( "go.uber.org/fx" "github.com/DataDog/datadog-agent/comp/core" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/common/types" "github.com/DataDog/datadog-agent/comp/core/tagger" "github.com/DataDog/datadog-agent/comp/core/workloadmeta" "github.com/DataDog/datadog-agent/comp/core/workloadmeta/collectors" "github.com/DataDog/datadog-agent/pkg/aggregator/mocksender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/common/types" checkid "github.com/DataDog/datadog-agent/pkg/collector/check/id" "github.com/DataDog/datadog-agent/pkg/collector/corechecks/containers/kubelet/common" commontesting "github.com/DataDog/datadog-agent/pkg/collector/corechecks/containers/kubelet/common/testing" diff --git a/pkg/collector/corechecks/containers/kubelet/provider/node/provider_test.go b/pkg/collector/corechecks/containers/kubelet/provider/node/provider_test.go index 19e104921f8987..652807b6c51576 100644 --- a/pkg/collector/corechecks/containers/kubelet/provider/node/provider_test.go +++ b/pkg/collector/corechecks/containers/kubelet/provider/node/provider_test.go @@ -13,8 +13,8 @@ import ( "reflect" "testing" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/common/types" "github.com/DataDog/datadog-agent/pkg/aggregator/mocksender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/common/types" checkid "github.com/DataDog/datadog-agent/pkg/collector/check/id" "github.com/DataDog/datadog-agent/pkg/collector/corechecks/containers/kubelet/common" "github.com/DataDog/datadog-agent/pkg/util/kubernetes/kubelet/mock" diff --git a/pkg/collector/corechecks/containers/kubelet/provider/pod/provider_test.go b/pkg/collector/corechecks/containers/kubelet/provider/pod/provider_test.go index 6d0e9867b960a6..36b4848d31dca0 100644 --- a/pkg/collector/corechecks/containers/kubelet/provider/pod/provider_test.go +++ b/pkg/collector/corechecks/containers/kubelet/provider/pod/provider_test.go @@ -23,9 +23,9 @@ import ( "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/common/types" "github.com/DataDog/datadog-agent/comp/core/tagger" "github.com/DataDog/datadog-agent/pkg/aggregator/mocksender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/common/types" checkid "github.com/DataDog/datadog-agent/pkg/collector/check/id" "github.com/DataDog/datadog-agent/pkg/collector/corechecks/containers/kubelet/common" commontesting "github.com/DataDog/datadog-agent/pkg/collector/corechecks/containers/kubelet/common/testing" diff --git a/pkg/collector/corechecks/containers/kubelet/provider/probe/provider_test.go b/pkg/collector/corechecks/containers/kubelet/provider/probe/provider_test.go index 557bf111a22f31..ef055f4cc2e4e1 100644 --- a/pkg/collector/corechecks/containers/kubelet/provider/probe/provider_test.go +++ b/pkg/collector/corechecks/containers/kubelet/provider/probe/provider_test.go @@ -19,11 +19,11 @@ import ( "go.uber.org/fx" "github.com/DataDog/datadog-agent/comp/core" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/common/types" "github.com/DataDog/datadog-agent/comp/core/tagger" "github.com/DataDog/datadog-agent/comp/core/workloadmeta" "github.com/DataDog/datadog-agent/comp/core/workloadmeta/collectors" "github.com/DataDog/datadog-agent/pkg/aggregator/mocksender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/common/types" checkid "github.com/DataDog/datadog-agent/pkg/collector/check/id" "github.com/DataDog/datadog-agent/pkg/collector/corechecks/containers/kubelet/common" commontesting "github.com/DataDog/datadog-agent/pkg/collector/corechecks/containers/kubelet/common/testing" diff --git a/pkg/collector/corechecks/containers/kubelet/provider/summary/provider_test.go b/pkg/collector/corechecks/containers/kubelet/provider/summary/provider_test.go index 2f6466d3a1ece3..c4b74b0a38e3c4 100644 --- a/pkg/collector/corechecks/containers/kubelet/provider/summary/provider_test.go +++ b/pkg/collector/corechecks/containers/kubelet/provider/summary/provider_test.go @@ -17,12 +17,12 @@ import ( "github.com/stretchr/testify/assert" "go.uber.org/fx" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/common/types" configcomp "github.com/DataDog/datadog-agent/comp/core/config" "github.com/DataDog/datadog-agent/comp/core/log/logimpl" "github.com/DataDog/datadog-agent/comp/core/tagger" "github.com/DataDog/datadog-agent/comp/core/workloadmeta" "github.com/DataDog/datadog-agent/pkg/aggregator/mocksender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/common/types" checkid "github.com/DataDog/datadog-agent/pkg/collector/check/id" "github.com/DataDog/datadog-agent/pkg/collector/corechecks/containers/kubelet/common" "github.com/DataDog/datadog-agent/pkg/util/containers" diff --git a/pkg/collector/corechecks/ebpf/ebpf.go b/pkg/collector/corechecks/ebpf/ebpf.go index caa1f2177e8981..6c58fdd9ed6bc1 100644 --- a/pkg/collector/corechecks/ebpf/ebpf.go +++ b/pkg/collector/corechecks/ebpf/ebpf.go @@ -16,8 +16,8 @@ import ( "gopkg.in/yaml.v2" sysconfig "github.com/DataDog/datadog-agent/cmd/system-probe/config" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/check" core "github.com/DataDog/datadog-agent/pkg/collector/corechecks" ebpfcheck "github.com/DataDog/datadog-agent/pkg/collector/corechecks/ebpf/probe/ebpfcheck/model" diff --git a/pkg/collector/corechecks/ebpf/oomkill/oom_kill.go b/pkg/collector/corechecks/ebpf/oomkill/oom_kill.go index 3ac9c5b1cb25e7..b838a341fcfe7d 100644 --- a/pkg/collector/corechecks/ebpf/oomkill/oom_kill.go +++ b/pkg/collector/corechecks/ebpf/oomkill/oom_kill.go @@ -19,9 +19,9 @@ import ( yaml "gopkg.in/yaml.v2" sysconfig "github.com/DataDog/datadog-agent/cmd/system-probe/config" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/comp/core/tagger" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/check" core "github.com/DataDog/datadog-agent/pkg/collector/corechecks" "github.com/DataDog/datadog-agent/pkg/collector/corechecks/ebpf/probe/oomkill/model" diff --git a/pkg/collector/corechecks/ebpf/tcpqueuelength/tcp_queue_length.go b/pkg/collector/corechecks/ebpf/tcpqueuelength/tcp_queue_length.go index 9954e0e55d8647..2b8dd2485d3482 100644 --- a/pkg/collector/corechecks/ebpf/tcpqueuelength/tcp_queue_length.go +++ b/pkg/collector/corechecks/ebpf/tcpqueuelength/tcp_queue_length.go @@ -16,10 +16,10 @@ import ( yaml "gopkg.in/yaml.v2" sysconfig "github.com/DataDog/datadog-agent/cmd/system-probe/config" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/comp/core/tagger" "github.com/DataDog/datadog-agent/comp/core/tagger/collectors" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/check" core "github.com/DataDog/datadog-agent/pkg/collector/corechecks" "github.com/DataDog/datadog-agent/pkg/collector/corechecks/ebpf/probe/tcpqueuelength/model" diff --git a/pkg/collector/corechecks/embed/apm/apm.go b/pkg/collector/corechecks/embed/apm/apm.go index aa74422c76d23d..5a64723586e287 100644 --- a/pkg/collector/corechecks/embed/apm/apm.go +++ b/pkg/collector/corechecks/embed/apm/apm.go @@ -19,8 +19,8 @@ import ( "go.uber.org/atomic" yaml "gopkg.in/yaml.v2" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/check" checkid "github.com/DataDog/datadog-agent/pkg/collector/check/id" "github.com/DataDog/datadog-agent/pkg/collector/check/stats" diff --git a/pkg/collector/corechecks/embed/jmx/check.go b/pkg/collector/corechecks/embed/jmx/check.go index 7b8b5064073acd..a017c49275ed63 100644 --- a/pkg/collector/corechecks/embed/jmx/check.go +++ b/pkg/collector/corechecks/embed/jmx/check.go @@ -12,8 +12,8 @@ import ( "fmt" "time" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" checkid "github.com/DataDog/datadog-agent/pkg/collector/check/id" "github.com/DataDog/datadog-agent/pkg/collector/check/stats" pkgConfig "github.com/DataDog/datadog-agent/pkg/config" diff --git a/pkg/collector/corechecks/embed/jmx/loader.go b/pkg/collector/corechecks/embed/jmx/loader.go index fefb169d93a727..1f7ef75ef127c6 100644 --- a/pkg/collector/corechecks/embed/jmx/loader.go +++ b/pkg/collector/corechecks/embed/jmx/loader.go @@ -12,9 +12,9 @@ import ( yaml "gopkg.in/yaml.v2" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" dogstatsdServer "github.com/DataDog/datadog-agent/comp/dogstatsd/server" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/check" "github.com/DataDog/datadog-agent/pkg/collector/loaders" "github.com/DataDog/datadog-agent/pkg/util/log" diff --git a/pkg/collector/corechecks/embed/jmx/loader_test.go b/pkg/collector/corechecks/embed/jmx/loader_test.go index b9fe9382e1497b..5bc3a37cee79ca 100644 --- a/pkg/collector/corechecks/embed/jmx/loader_test.go +++ b/pkg/collector/corechecks/embed/jmx/loader_test.go @@ -16,8 +16,8 @@ import ( "github.com/stretchr/testify/assert" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/providers" "github.com/DataDog/datadog-agent/pkg/aggregator" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/providers" "github.com/DataDog/datadog-agent/pkg/collector/check" ) diff --git a/pkg/collector/corechecks/embed/jmx/runner.go b/pkg/collector/corechecks/embed/jmx/runner.go index eca44c20d197d1..95b129790699c6 100644 --- a/pkg/collector/corechecks/embed/jmx/runner.go +++ b/pkg/collector/corechecks/embed/jmx/runner.go @@ -10,8 +10,8 @@ package jmx import ( "time" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" dogstatsdServer "github.com/DataDog/datadog-agent/comp/dogstatsd/server" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/jmxfetch" jmxStatus "github.com/DataDog/datadog-agent/pkg/status/jmx" diff --git a/pkg/collector/corechecks/embed/jmx/state.go b/pkg/collector/corechecks/embed/jmx/state.go index cfede2f9476b03..16adda3c3b9f3a 100644 --- a/pkg/collector/corechecks/embed/jmx/state.go +++ b/pkg/collector/corechecks/embed/jmx/state.go @@ -12,7 +12,7 @@ import ( "sync" "time" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/check" "github.com/DataDog/datadog-agent/pkg/util/cache" "github.com/DataDog/datadog-agent/pkg/util/log" diff --git a/pkg/collector/corechecks/embed/process/process_agent.go b/pkg/collector/corechecks/embed/process/process_agent.go index 215baf1eb48492..18784f36a255e8 100644 --- a/pkg/collector/corechecks/embed/process/process_agent.go +++ b/pkg/collector/corechecks/embed/process/process_agent.go @@ -19,8 +19,8 @@ import ( "go.uber.org/atomic" "gopkg.in/yaml.v2" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/check" checkid "github.com/DataDog/datadog-agent/pkg/collector/check/id" "github.com/DataDog/datadog-agent/pkg/collector/check/stats" diff --git a/pkg/collector/corechecks/loader.go b/pkg/collector/corechecks/loader.go index 990f3c80761bf1..52157894251473 100644 --- a/pkg/collector/corechecks/loader.go +++ b/pkg/collector/corechecks/loader.go @@ -9,8 +9,8 @@ import ( "errors" "fmt" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/check" "github.com/DataDog/datadog-agent/pkg/collector/loaders" "github.com/DataDog/datadog-agent/pkg/util/log" diff --git a/pkg/collector/corechecks/loader_test.go b/pkg/collector/corechecks/loader_test.go index a0c35bafa7e0fa..0d3e78ce1efea1 100644 --- a/pkg/collector/corechecks/loader_test.go +++ b/pkg/collector/corechecks/loader_test.go @@ -10,9 +10,9 @@ import ( "fmt" "testing" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/check" "github.com/DataDog/datadog-agent/pkg/collector/check/stub" "github.com/DataDog/datadog-agent/pkg/util/optional" diff --git a/pkg/collector/corechecks/longrunning_test.go b/pkg/collector/corechecks/longrunning_test.go index cc053c39152bf1..2a5dfbec0bda7e 100644 --- a/pkg/collector/corechecks/longrunning_test.go +++ b/pkg/collector/corechecks/longrunning_test.go @@ -12,9 +12,9 @@ import ( "testing" "time" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/mocksender" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" checkid "github.com/DataDog/datadog-agent/pkg/collector/check/id" "github.com/DataDog/datadog-agent/pkg/collector/check/stats" "github.com/DataDog/datadog-agent/pkg/diagnose/diagnosis" diff --git a/pkg/collector/corechecks/net/network/network.go b/pkg/collector/corechecks/net/network/network.go index 889beecb987cc6..f47ad89ac85a9d 100644 --- a/pkg/collector/corechecks/net/network/network.go +++ b/pkg/collector/corechecks/net/network/network.go @@ -20,8 +20,8 @@ import ( "github.com/shirou/gopsutil/v3/net" yaml "gopkg.in/yaml.v2" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/check" core "github.com/DataDog/datadog-agent/pkg/collector/corechecks" "github.com/DataDog/datadog-agent/pkg/util/log" diff --git a/pkg/collector/corechecks/net/network/network_test.go b/pkg/collector/corechecks/net/network/network_test.go index b295d42bb77672..b2476ca3d734ca 100644 --- a/pkg/collector/corechecks/net/network/network_test.go +++ b/pkg/collector/corechecks/net/network/network_test.go @@ -14,9 +14,9 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator" "github.com/DataDog/datadog-agent/pkg/aggregator/mocksender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" ) type fakeNetworkStats struct { diff --git a/pkg/collector/corechecks/net/ntp/ntp.go b/pkg/collector/corechecks/net/ntp/ntp.go index 9f97b12cd89031..1ea461f299cc29 100644 --- a/pkg/collector/corechecks/net/ntp/ntp.go +++ b/pkg/collector/corechecks/net/ntp/ntp.go @@ -17,8 +17,8 @@ import ( "github.com/beevik/ntp" "gopkg.in/yaml.v2" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/check" core "github.com/DataDog/datadog-agent/pkg/collector/corechecks" "github.com/DataDog/datadog-agent/pkg/metrics/servicecheck" diff --git a/pkg/collector/corechecks/net/ntp/ntp_test.go b/pkg/collector/corechecks/net/ntp/ntp_test.go index 4794a1a15610e7..f598d874680c8a 100644 --- a/pkg/collector/corechecks/net/ntp/ntp_test.go +++ b/pkg/collector/corechecks/net/ntp/ntp_test.go @@ -16,9 +16,9 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator" "github.com/DataDog/datadog-agent/pkg/aggregator/mocksender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/metrics/servicecheck" "github.com/DataDog/datadog-agent/pkg/util/cloudproviders" diff --git a/pkg/collector/corechecks/nvidia/jetson/jetson.go b/pkg/collector/corechecks/nvidia/jetson/jetson.go index 176e97d29af0da..6aac521af3c1e8 100644 --- a/pkg/collector/corechecks/nvidia/jetson/jetson.go +++ b/pkg/collector/corechecks/nvidia/jetson/jetson.go @@ -17,8 +17,8 @@ import ( "gopkg.in/yaml.v2" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/check" core "github.com/DataDog/datadog-agent/pkg/collector/corechecks" "github.com/DataDog/datadog-agent/pkg/metrics" diff --git a/pkg/collector/corechecks/nvidia/jetson/jetson_test.go b/pkg/collector/corechecks/nvidia/jetson/jetson_test.go index 24cc93dc797b01..6fde9697b0d9f1 100644 --- a/pkg/collector/corechecks/nvidia/jetson/jetson_test.go +++ b/pkg/collector/corechecks/nvidia/jetson/jetson_test.go @@ -12,8 +12,8 @@ import ( "github.com/stretchr/testify/assert" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/mocksender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" ) const ( diff --git a/pkg/collector/corechecks/oracle-dbm/config/config.go b/pkg/collector/corechecks/oracle-dbm/config/config.go index 966af402211b77..428a0982c9af71 100644 --- a/pkg/collector/corechecks/oracle-dbm/config/config.go +++ b/pkg/collector/corechecks/oracle-dbm/config/config.go @@ -13,7 +13,7 @@ import ( "strconv" "strings" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/corechecks/oracle-dbm/common" "github.com/DataDog/datadog-agent/pkg/obfuscate" "github.com/DataDog/datadog-agent/pkg/util/log" diff --git a/pkg/collector/corechecks/oracle-dbm/custom_queries_test.go b/pkg/collector/corechecks/oracle-dbm/custom_queries_test.go index d7fefe3e44c00c..b8549f6c1aa4ab 100644 --- a/pkg/collector/corechecks/oracle-dbm/custom_queries_test.go +++ b/pkg/collector/corechecks/oracle-dbm/custom_queries_test.go @@ -17,8 +17,8 @@ import ( "github.com/stretchr/testify/mock" "github.com/stretchr/testify/require" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/mocksender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/corechecks/oracle-dbm/config" ) diff --git a/pkg/collector/corechecks/oracle-dbm/oracle.go b/pkg/collector/corechecks/oracle-dbm/oracle.go index fe79754d48fb25..242de472806e0d 100644 --- a/pkg/collector/corechecks/oracle-dbm/oracle.go +++ b/pkg/collector/corechecks/oracle-dbm/oracle.go @@ -15,8 +15,8 @@ import ( "strings" "time" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/check" core "github.com/DataDog/datadog-agent/pkg/collector/corechecks" "github.com/DataDog/datadog-agent/pkg/collector/corechecks/oracle-dbm/common" diff --git a/pkg/collector/corechecks/oracle-dbm/statements_test.go b/pkg/collector/corechecks/oracle-dbm/statements_test.go index 035c8b5fc78d25..c6cb9a1460ee1a 100644 --- a/pkg/collector/corechecks/oracle-dbm/statements_test.go +++ b/pkg/collector/corechecks/oracle-dbm/statements_test.go @@ -15,8 +15,8 @@ import ( "testing" "time" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/mocksender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/corechecks/oracle-dbm/common" "github.com/jmoiron/sqlx" "github.com/stretchr/testify/assert" diff --git a/pkg/collector/corechecks/oracle-dbm/testutil.go b/pkg/collector/corechecks/oracle-dbm/testutil.go index 6fc241dc674733..4a08cc5f0b857b 100644 --- a/pkg/collector/corechecks/oracle-dbm/testutil.go +++ b/pkg/collector/corechecks/oracle-dbm/testutil.go @@ -12,9 +12,9 @@ import ( "os" "testing" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/mocksender" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" oracle_common "github.com/DataDog/datadog-agent/pkg/collector/corechecks/oracle-dbm/common" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" diff --git a/pkg/collector/corechecks/orchestrator/pod/pod.go b/pkg/collector/corechecks/orchestrator/pod/pod.go index 928416b7101a0a..51b5f2bb8aa22a 100644 --- a/pkg/collector/corechecks/orchestrator/pod/pod.go +++ b/pkg/collector/corechecks/orchestrator/pod/pod.go @@ -14,8 +14,8 @@ import ( "go.uber.org/atomic" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/check" core "github.com/DataDog/datadog-agent/pkg/collector/corechecks" "github.com/DataDog/datadog-agent/pkg/collector/corechecks/cluster/orchestrator/processors" diff --git a/pkg/collector/corechecks/sbom/check.go b/pkg/collector/corechecks/sbom/check.go index 68b02094fcb14c..448b55aa41156a 100644 --- a/pkg/collector/corechecks/sbom/check.go +++ b/pkg/collector/corechecks/sbom/check.go @@ -13,9 +13,9 @@ import ( "gopkg.in/yaml.v2" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/comp/core/workloadmeta" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/check" core "github.com/DataDog/datadog-agent/pkg/collector/corechecks" ddConfig "github.com/DataDog/datadog-agent/pkg/config" diff --git a/pkg/collector/corechecks/snmp/integration_profile_bundle_test.go b/pkg/collector/corechecks/snmp/integration_profile_bundle_test.go index 54422b58264986..e2365b0c4a2e86 100644 --- a/pkg/collector/corechecks/snmp/integration_profile_bundle_test.go +++ b/pkg/collector/corechecks/snmp/integration_profile_bundle_test.go @@ -12,9 +12,9 @@ import ( "github.com/stretchr/testify/assert" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator" "github.com/DataDog/datadog-agent/pkg/aggregator/mocksender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/collector/corechecks/snmp/internal/checkconfig" diff --git a/pkg/collector/corechecks/snmp/integration_profile_metadata_test.go b/pkg/collector/corechecks/snmp/integration_profile_metadata_test.go index 463e9d1a2a028b..9e03a86f4b19ee 100644 --- a/pkg/collector/corechecks/snmp/integration_profile_metadata_test.go +++ b/pkg/collector/corechecks/snmp/integration_profile_metadata_test.go @@ -17,9 +17,9 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator" "github.com/DataDog/datadog-agent/pkg/aggregator/mocksender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/version" diff --git a/pkg/collector/corechecks/snmp/integration_topology_test.go b/pkg/collector/corechecks/snmp/integration_topology_test.go index 4409cdb8d9a724..de781086f500af 100644 --- a/pkg/collector/corechecks/snmp/integration_topology_test.go +++ b/pkg/collector/corechecks/snmp/integration_topology_test.go @@ -17,9 +17,9 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator" "github.com/DataDog/datadog-agent/pkg/aggregator/mocksender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/version" diff --git a/pkg/collector/corechecks/snmp/internal/checkconfig/config.go b/pkg/collector/corechecks/snmp/internal/checkconfig/config.go index 2ebe3dfaeeeb0d..312a36a47bef78 100644 --- a/pkg/collector/corechecks/snmp/internal/checkconfig/config.go +++ b/pkg/collector/corechecks/snmp/internal/checkconfig/config.go @@ -20,7 +20,7 @@ import ( "github.com/cihub/seelog" "gopkg.in/yaml.v2" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/check/defaults" coreconfig "github.com/DataDog/datadog-agent/pkg/config" coreutil "github.com/DataDog/datadog-agent/pkg/util" diff --git a/pkg/collector/corechecks/snmp/snmp.go b/pkg/collector/corechecks/snmp/snmp.go index 90a40f281a14af..0cc5f70ac74c3b 100644 --- a/pkg/collector/corechecks/snmp/snmp.go +++ b/pkg/collector/corechecks/snmp/snmp.go @@ -13,8 +13,8 @@ import ( "go.uber.org/atomic" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/check" core "github.com/DataDog/datadog-agent/pkg/collector/corechecks" "github.com/DataDog/datadog-agent/pkg/util/log" diff --git a/pkg/collector/corechecks/snmp/snmp_test.go b/pkg/collector/corechecks/snmp/snmp_test.go index e78e990a390725..9509bb038ee373 100644 --- a/pkg/collector/corechecks/snmp/snmp_test.go +++ b/pkg/collector/corechecks/snmp/snmp_test.go @@ -23,9 +23,9 @@ import ( "github.com/DataDog/datadog-agent/comp/aggregator/demultiplexer" "github.com/DataDog/datadog-agent/comp/aggregator/demultiplexer/demultiplexerimpl" "github.com/DataDog/datadog-agent/comp/core" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/comp/forwarder/defaultforwarder" "github.com/DataDog/datadog-agent/pkg/aggregator/mocksender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" coreconfig "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/metadata/externalhost" "github.com/DataDog/datadog-agent/pkg/metrics/servicecheck" diff --git a/pkg/collector/corechecks/system/cpu/cpu/cpu.go b/pkg/collector/corechecks/system/cpu/cpu/cpu.go index 5640965d748947..a8e8408f383680 100644 --- a/pkg/collector/corechecks/system/cpu/cpu/cpu.go +++ b/pkg/collector/corechecks/system/cpu/cpu/cpu.go @@ -12,8 +12,8 @@ import ( "github.com/shirou/gopsutil/v3/cpu" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/check" core "github.com/DataDog/datadog-agent/pkg/collector/corechecks" "github.com/DataDog/datadog-agent/pkg/util/log" diff --git a/pkg/collector/corechecks/system/cpu/cpu/cpu_test.go b/pkg/collector/corechecks/system/cpu/cpu/cpu_test.go index 344e0f25c2fa20..2c8a89438fb720 100644 --- a/pkg/collector/corechecks/system/cpu/cpu/cpu_test.go +++ b/pkg/collector/corechecks/system/cpu/cpu/cpu_test.go @@ -10,8 +10,8 @@ import ( "runtime" "testing" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/mocksender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/metrics" "github.com/shirou/gopsutil/v3/cpu" diff --git a/pkg/collector/corechecks/system/cpu/cpu/cpu_windows.go b/pkg/collector/corechecks/system/cpu/cpu/cpu_windows.go index eb0073c30e8177..fea92164c5267a 100644 --- a/pkg/collector/corechecks/system/cpu/cpu/cpu_windows.go +++ b/pkg/collector/corechecks/system/cpu/cpu/cpu_windows.go @@ -18,7 +18,7 @@ import ( "github.com/DataDog/datadog-agent/pkg/aggregator/sender" "github.com/DataDog/datadog-agent/pkg/gohai/cpu" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/check" core "github.com/DataDog/datadog-agent/pkg/collector/corechecks" "github.com/DataDog/datadog-agent/pkg/util/log" diff --git a/pkg/collector/corechecks/system/cpu/cpu/cpu_windows_test.go b/pkg/collector/corechecks/system/cpu/cpu/cpu_windows_test.go index 57259500457a72..2d5ade60177198 100644 --- a/pkg/collector/corechecks/system/cpu/cpu/cpu_windows_test.go +++ b/pkg/collector/corechecks/system/cpu/cpu/cpu_windows_test.go @@ -12,8 +12,8 @@ import ( "github.com/DataDog/datadog-agent/pkg/metrics" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/mocksender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" gohaicpu "github.com/DataDog/datadog-agent/pkg/gohai/cpu" gohaiutils "github.com/DataDog/datadog-agent/pkg/gohai/utils" pdhtest "github.com/DataDog/datadog-agent/pkg/util/pdhutil" diff --git a/pkg/collector/corechecks/system/cpu/load/load.go b/pkg/collector/corechecks/system/cpu/load/load.go index 50fbd25c81c792..89819d9570ac09 100644 --- a/pkg/collector/corechecks/system/cpu/load/load.go +++ b/pkg/collector/corechecks/system/cpu/load/load.go @@ -13,8 +13,8 @@ import ( "github.com/shirou/gopsutil/v3/cpu" "github.com/shirou/gopsutil/v3/load" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/check" core "github.com/DataDog/datadog-agent/pkg/collector/corechecks" "github.com/DataDog/datadog-agent/pkg/util/log" diff --git a/pkg/collector/corechecks/system/cpu/load/load_test.go b/pkg/collector/corechecks/system/cpu/load/load_test.go index a11479e0965f3d..af820e8fc21fac 100644 --- a/pkg/collector/corechecks/system/cpu/load/load_test.go +++ b/pkg/collector/corechecks/system/cpu/load/load_test.go @@ -13,8 +13,8 @@ import ( "github.com/shirou/gopsutil/v3/cpu" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/mocksender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" ) var avgSample = load.AvgStat{ diff --git a/pkg/collector/corechecks/system/disk/disk/disk.go b/pkg/collector/corechecks/system/disk/disk/disk.go index ab6a676fa91f5f..0aa49da6b1a116 100644 --- a/pkg/collector/corechecks/system/disk/disk/disk.go +++ b/pkg/collector/corechecks/system/disk/disk/disk.go @@ -13,7 +13,7 @@ import ( yaml "gopkg.in/yaml.v2" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/check" core "github.com/DataDog/datadog-agent/pkg/collector/corechecks" "github.com/DataDog/datadog-agent/pkg/util/optional" diff --git a/pkg/collector/corechecks/system/disk/disk/disk_nix.go b/pkg/collector/corechecks/system/disk/disk/disk_nix.go index 3a9036ed9e9d0d..65dcecce94d9a2 100644 --- a/pkg/collector/corechecks/system/disk/disk/disk_nix.go +++ b/pkg/collector/corechecks/system/disk/disk/disk_nix.go @@ -13,8 +13,8 @@ import ( "github.com/shirou/gopsutil/v3/disk" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" core "github.com/DataDog/datadog-agent/pkg/collector/corechecks" "github.com/DataDog/datadog-agent/pkg/util/log" ) diff --git a/pkg/collector/corechecks/system/disk/disk/disk_test.go b/pkg/collector/corechecks/system/disk/disk/disk_test.go index 34429f565b4163..5403c2ba5df910 100644 --- a/pkg/collector/corechecks/system/disk/disk/disk_test.go +++ b/pkg/collector/corechecks/system/disk/disk/disk_test.go @@ -12,8 +12,8 @@ import ( "github.com/shirou/gopsutil/v3/disk" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/mocksender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/corechecks/system/disk/io" ) diff --git a/pkg/collector/corechecks/system/disk/io/iostats.go b/pkg/collector/corechecks/system/disk/io/iostats.go index b1a6cfa3b1a80a..eab9ced70f75bc 100644 --- a/pkg/collector/corechecks/system/disk/io/iostats.go +++ b/pkg/collector/corechecks/system/disk/io/iostats.go @@ -11,8 +11,8 @@ import ( yaml "gopkg.in/yaml.v2" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/check" core "github.com/DataDog/datadog-agent/pkg/collector/corechecks" "github.com/DataDog/datadog-agent/pkg/util/log" diff --git a/pkg/collector/corechecks/system/disk/io/iostats_nix.go b/pkg/collector/corechecks/system/disk/io/iostats_nix.go index 9e376813e5fecf..7de9f184000962 100644 --- a/pkg/collector/corechecks/system/disk/io/iostats_nix.go +++ b/pkg/collector/corechecks/system/disk/io/iostats_nix.go @@ -16,8 +16,8 @@ import ( "github.com/shirou/gopsutil/v3/disk" "github.com/shirou/gopsutil/v3/mem" // for system.io.block_{in,out} + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" core "github.com/DataDog/datadog-agent/pkg/collector/corechecks" "github.com/DataDog/datadog-agent/pkg/util/log" ) diff --git a/pkg/collector/corechecks/system/disk/io/iostats_nix_test.go b/pkg/collector/corechecks/system/disk/io/iostats_nix_test.go index b877cfb15796ff..3e80150d5b3785 100644 --- a/pkg/collector/corechecks/system/disk/io/iostats_nix_test.go +++ b/pkg/collector/corechecks/system/disk/io/iostats_nix_test.go @@ -15,8 +15,8 @@ import ( "github.com/shirou/gopsutil/v3/disk" "github.com/stretchr/testify/assert" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/mocksender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" ) var currentStats = map[string]disk.IOCountersStat{ diff --git a/pkg/collector/corechecks/system/disk/io/iostats_pdh_windows.go b/pkg/collector/corechecks/system/disk/io/iostats_pdh_windows.go index b071d3f93286ac..c5f656a5c3b5e8 100644 --- a/pkg/collector/corechecks/system/disk/io/iostats_pdh_windows.go +++ b/pkg/collector/corechecks/system/disk/io/iostats_pdh_windows.go @@ -15,7 +15,7 @@ import ( "github.com/DataDog/datadog-agent/pkg/aggregator/sender" "github.com/DataDog/datadog-agent/pkg/util/log" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" core "github.com/DataDog/datadog-agent/pkg/collector/corechecks" "github.com/DataDog/datadog-agent/pkg/util/pdhutil" diff --git a/pkg/collector/corechecks/system/disk/io/iostats_pdh_windows_test.go b/pkg/collector/corechecks/system/disk/io/iostats_pdh_windows_test.go index 076d7efea79ebe..b2c3b521161aa9 100644 --- a/pkg/collector/corechecks/system/disk/io/iostats_pdh_windows_test.go +++ b/pkg/collector/corechecks/system/disk/io/iostats_pdh_windows_test.go @@ -11,8 +11,8 @@ import ( "github.com/stretchr/testify/require" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/mocksender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" pdhtest "github.com/DataDog/datadog-agent/pkg/util/pdhutil" ) diff --git a/pkg/collector/corechecks/system/disk/io/iostats_test.go b/pkg/collector/corechecks/system/disk/io/iostats_test.go index 280f44869f6148..996de3e25a050a 100644 --- a/pkg/collector/corechecks/system/disk/io/iostats_test.go +++ b/pkg/collector/corechecks/system/disk/io/iostats_test.go @@ -15,9 +15,9 @@ import ( "github.com/shirou/gopsutil/v3/disk" "github.com/shirou/gopsutil/v3/mem" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator" "github.com/DataDog/datadog-agent/pkg/aggregator/mocksender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" ) var ( diff --git a/pkg/collector/corechecks/system/filehandles/file_handles_bsd.go b/pkg/collector/corechecks/system/filehandles/file_handles_bsd.go index 7da390a4d8631c..ac69d9c9bfb853 100644 --- a/pkg/collector/corechecks/system/filehandles/file_handles_bsd.go +++ b/pkg/collector/corechecks/system/filehandles/file_handles_bsd.go @@ -9,8 +9,8 @@ package filehandles import ( "github.com/blabber/go-freebsd-sysctl/sysctl" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/check" core "github.com/DataDog/datadog-agent/pkg/collector/corechecks" "github.com/DataDog/datadog-agent/pkg/util/log" diff --git a/pkg/collector/corechecks/system/filehandles/file_handles_bsd_test.go b/pkg/collector/corechecks/system/filehandles/file_handles_bsd_test.go index 55c168d11e4619..ab1bc5cf32d2f8 100644 --- a/pkg/collector/corechecks/system/filehandles/file_handles_bsd_test.go +++ b/pkg/collector/corechecks/system/filehandles/file_handles_bsd_test.go @@ -9,8 +9,8 @@ package filehandles import ( "testing" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/mocksender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" ) func GetInt64(_ string) (value int64, err error) { diff --git a/pkg/collector/corechecks/system/filehandles/file_handles_test.go b/pkg/collector/corechecks/system/filehandles/file_handles_test.go index ab8dd2fa57935d..65784e7839d6e8 100644 --- a/pkg/collector/corechecks/system/filehandles/file_handles_test.go +++ b/pkg/collector/corechecks/system/filehandles/file_handles_test.go @@ -10,8 +10,8 @@ import ( "os" "testing" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/mocksender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/util/log" ) diff --git a/pkg/collector/corechecks/system/filehandles/file_handles_windows.go b/pkg/collector/corechecks/system/filehandles/file_handles_windows.go index 679aae3ee85757..ec5174784e81fb 100644 --- a/pkg/collector/corechecks/system/filehandles/file_handles_windows.go +++ b/pkg/collector/corechecks/system/filehandles/file_handles_windows.go @@ -7,8 +7,8 @@ package filehandles import ( + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/check" core "github.com/DataDog/datadog-agent/pkg/collector/corechecks" "github.com/DataDog/datadog-agent/pkg/util/optional" diff --git a/pkg/collector/corechecks/system/filehandles/file_handles_windows_test.go b/pkg/collector/corechecks/system/filehandles/file_handles_windows_test.go index 6f338f31425a11..9dc0e5eb29a96f 100644 --- a/pkg/collector/corechecks/system/filehandles/file_handles_windows_test.go +++ b/pkg/collector/corechecks/system/filehandles/file_handles_windows_test.go @@ -9,8 +9,8 @@ package filehandles import ( "testing" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/mocksender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" pdhtest "github.com/DataDog/datadog-agent/pkg/util/pdhutil" ) diff --git a/pkg/collector/corechecks/system/memory/memory_windows.go b/pkg/collector/corechecks/system/memory/memory_windows.go index fc36d3279d38cf..4d4915d8a941cf 100644 --- a/pkg/collector/corechecks/system/memory/memory_windows.go +++ b/pkg/collector/corechecks/system/memory/memory_windows.go @@ -7,8 +7,8 @@ package memory import ( + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" core "github.com/DataDog/datadog-agent/pkg/collector/corechecks" "github.com/DataDog/datadog-agent/pkg/util/pdhutil" diff --git a/pkg/collector/corechecks/system/memory/memory_windows_test.go b/pkg/collector/corechecks/system/memory/memory_windows_test.go index 7c40e403e04480..8c7ada07164ffe 100644 --- a/pkg/collector/corechecks/system/memory/memory_windows_test.go +++ b/pkg/collector/corechecks/system/memory/memory_windows_test.go @@ -12,8 +12,8 @@ import ( "github.com/stretchr/testify/require" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/mocksender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" pdhtest "github.com/DataDog/datadog-agent/pkg/util/pdhutil" "github.com/DataDog/datadog-agent/pkg/util/winutil" ) diff --git a/pkg/collector/corechecks/system/uptime/uptime_test.go b/pkg/collector/corechecks/system/uptime/uptime_test.go index 23d1e3105270a3..971eedb6438009 100644 --- a/pkg/collector/corechecks/system/uptime/uptime_test.go +++ b/pkg/collector/corechecks/system/uptime/uptime_test.go @@ -8,8 +8,8 @@ package uptime import ( "testing" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/mocksender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" ) func uptimeSampler() (uint64, error) { diff --git a/pkg/collector/corechecks/system/wincrashdetect/wincrashdetect.go b/pkg/collector/corechecks/system/wincrashdetect/wincrashdetect.go index 3fb27a87ba5aa2..d806295b2aa09c 100644 --- a/pkg/collector/corechecks/system/wincrashdetect/wincrashdetect.go +++ b/pkg/collector/corechecks/system/wincrashdetect/wincrashdetect.go @@ -14,8 +14,8 @@ import ( "golang.org/x/sys/windows/registry" yaml "gopkg.in/yaml.v2" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/check" core "github.com/DataDog/datadog-agent/pkg/collector/corechecks" "github.com/DataDog/datadog-agent/pkg/collector/corechecks/system/wincrashdetect/probe" diff --git a/pkg/collector/corechecks/system/winkmem/winkmem.go b/pkg/collector/corechecks/system/winkmem/winkmem.go index b60e4ab3f941e8..bd429cdceb84e8 100644 --- a/pkg/collector/corechecks/system/winkmem/winkmem.go +++ b/pkg/collector/corechecks/system/winkmem/winkmem.go @@ -15,8 +15,8 @@ import ( yaml "gopkg.in/yaml.v2" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/check" core "github.com/DataDog/datadog-agent/pkg/collector/corechecks" "github.com/DataDog/datadog-agent/pkg/util/log" diff --git a/pkg/collector/corechecks/system/winkmem/winkmem_test.go b/pkg/collector/corechecks/system/winkmem/winkmem_test.go index c0acb82297d01d..6bae3fe50d8b64 100644 --- a/pkg/collector/corechecks/system/winkmem/winkmem_test.go +++ b/pkg/collector/corechecks/system/winkmem/winkmem_test.go @@ -11,8 +11,8 @@ import ( "github.com/stretchr/testify/mock" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/mocksender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" ) func TestWinKMem(t *testing.T) { diff --git a/pkg/collector/corechecks/system/winproc/winproc_windows.go b/pkg/collector/corechecks/system/winproc/winproc_windows.go index c94ad16cc2dab2..1ccc38b872e213 100644 --- a/pkg/collector/corechecks/system/winproc/winproc_windows.go +++ b/pkg/collector/corechecks/system/winproc/winproc_windows.go @@ -8,8 +8,8 @@ package winproc import ( + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/check" core "github.com/DataDog/datadog-agent/pkg/collector/corechecks" "github.com/DataDog/datadog-agent/pkg/util/optional" diff --git a/pkg/collector/corechecks/system/winproc/winproc_windows_test.go b/pkg/collector/corechecks/system/winproc/winproc_windows_test.go index adf8cda4654a71..5ec9012e248885 100644 --- a/pkg/collector/corechecks/system/winproc/winproc_windows_test.go +++ b/pkg/collector/corechecks/system/winproc/winproc_windows_test.go @@ -9,8 +9,8 @@ package winproc import ( "testing" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/mocksender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" pdhtest "github.com/DataDog/datadog-agent/pkg/util/pdhutil" ) diff --git a/pkg/collector/corechecks/systemd/systemd.go b/pkg/collector/corechecks/systemd/systemd.go index 003d41b69abd9e..722c0ee1e24a27 100644 --- a/pkg/collector/corechecks/systemd/systemd.go +++ b/pkg/collector/corechecks/systemd/systemd.go @@ -17,8 +17,8 @@ import ( "github.com/coreos/go-systemd/v22/dbus" "gopkg.in/yaml.v2" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/check" "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/metrics/servicecheck" diff --git a/pkg/collector/corechecks/systemd/systemd_test.go b/pkg/collector/corechecks/systemd/systemd_test.go index 4549b9962e76d6..12034eaa3c8e5e 100644 --- a/pkg/collector/corechecks/systemd/systemd_test.go +++ b/pkg/collector/corechecks/systemd/systemd_test.go @@ -19,10 +19,10 @@ import ( "github.com/stretchr/testify/mock" "github.com/stretchr/testify/require" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/comp/metadata/inventorychecks/inventorychecksimpl" "github.com/DataDog/datadog-agent/pkg/aggregator" "github.com/DataDog/datadog-agent/pkg/aggregator/mocksender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/check" checkid "github.com/DataDog/datadog-agent/pkg/collector/check/id" core "github.com/DataDog/datadog-agent/pkg/collector/corechecks" diff --git a/pkg/collector/corechecks/telemetry/check_test.go b/pkg/collector/corechecks/telemetry/check_test.go index c34fe782161112..fe768bcf855553 100644 --- a/pkg/collector/corechecks/telemetry/check_test.go +++ b/pkg/collector/corechecks/telemetry/check_test.go @@ -11,8 +11,8 @@ import ( "github.com/prometheus/client_golang/prometheus" "github.com/stretchr/testify/require" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/mocksender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/corechecks" ) diff --git a/pkg/collector/corechecks/windows_event_log/check.go b/pkg/collector/corechecks/windows_event_log/check.go index 0cfa3a5fbd9c88..65f736e8da09e5 100644 --- a/pkg/collector/corechecks/windows_event_log/check.go +++ b/pkg/collector/corechecks/windows_event_log/check.go @@ -13,8 +13,8 @@ import ( "regexp" "sync" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/check" core "github.com/DataDog/datadog-agent/pkg/collector/corechecks" agentEvent "github.com/DataDog/datadog-agent/pkg/metrics/event" diff --git a/pkg/collector/corechecks/windows_event_log/check_test.go b/pkg/collector/corechecks/windows_event_log/check_test.go index e85fd10f2694ad..dd507983549bcb 100644 --- a/pkg/collector/corechecks/windows_event_log/check_test.go +++ b/pkg/collector/corechecks/windows_event_log/check_test.go @@ -13,15 +13,15 @@ import ( "testing" "time" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/mocksender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" agentCheck "github.com/DataDog/datadog-agent/pkg/collector/check" agentConfig "github.com/DataDog/datadog-agent/pkg/config" agentEvent "github.com/DataDog/datadog-agent/pkg/metrics/event" "github.com/DataDog/datadog-agent/pkg/util/testutil/flake" - "github.com/DataDog/datadog-agent/pkg/util/winutil/eventlog/api" - "github.com/DataDog/datadog-agent/pkg/util/winutil/eventlog/reporter" - "github.com/DataDog/datadog-agent/pkg/util/winutil/eventlog/test" + evtapi "github.com/DataDog/datadog-agent/pkg/util/winutil/eventlog/api" + evtreporter "github.com/DataDog/datadog-agent/pkg/util/winutil/eventlog/reporter" + eventlog_test "github.com/DataDog/datadog-agent/pkg/util/winutil/eventlog/test" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" diff --git a/pkg/collector/corechecks/windows_event_log/config.go b/pkg/collector/corechecks/windows_event_log/config.go index 7367f54f5d9c3f..6d605aed9fde5c 100644 --- a/pkg/collector/corechecks/windows_event_log/config.go +++ b/pkg/collector/corechecks/windows_event_log/config.go @@ -10,7 +10,7 @@ package evtlog import ( "fmt" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/util/optional" yaml "gopkg.in/yaml.v2" diff --git a/pkg/collector/loaders/loaders_test.go b/pkg/collector/loaders/loaders_test.go index 442c7a03e784cc..29a15328bb5a07 100644 --- a/pkg/collector/loaders/loaders_test.go +++ b/pkg/collector/loaders/loaders_test.go @@ -12,9 +12,9 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/mocksender" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/check" ) diff --git a/pkg/collector/metadata/agentchecks/agentchecks.go b/pkg/collector/metadata/agentchecks/agentchecks.go index bdca5d600bc90a..102a506e92d535 100644 --- a/pkg/collector/metadata/agentchecks/agentchecks.go +++ b/pkg/collector/metadata/agentchecks/agentchecks.go @@ -10,8 +10,8 @@ import ( "context" "encoding/json" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/autodiscoveryimpl" hostMetadataUtils "github.com/DataDog/datadog-agent/comp/metadata/host/hostimpl/utils" - "github.com/DataDog/datadog-agent/pkg/autodiscovery" "github.com/DataDog/datadog-agent/pkg/collector" "github.com/DataDog/datadog-agent/pkg/collector/runner/expvars" "github.com/DataDog/datadog-agent/pkg/config" @@ -63,7 +63,7 @@ func GetPayload(ctx context.Context) *Payload { agentChecksPayload.AgentChecks = append(agentChecksPayload.AgentChecks, status) } - configErrors := autodiscovery.GetConfigErrors() + configErrors := autodiscoveryimpl.GetConfigErrors() for check, e := range configErrors { status := []interface{}{ diff --git a/pkg/collector/python/check.go b/pkg/collector/python/check.go index 208d47de6e0523..5f4f00e8003000 100644 --- a/pkg/collector/python/check.go +++ b/pkg/collector/python/check.go @@ -20,8 +20,8 @@ import ( yaml "gopkg.in/yaml.v2" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" checkbase "github.com/DataDog/datadog-agent/pkg/collector/check" "github.com/DataDog/datadog-agent/pkg/collector/check/defaults" checkid "github.com/DataDog/datadog-agent/pkg/collector/check/id" diff --git a/pkg/collector/python/loader.go b/pkg/collector/python/loader.go index 302fb4056fb88f..703878004aea2f 100644 --- a/pkg/collector/python/loader.go +++ b/pkg/collector/python/loader.go @@ -15,12 +15,13 @@ import ( "sync" "unsafe" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/check" "github.com/DataDog/datadog-agent/pkg/collector/loaders" "github.com/DataDog/datadog-agent/pkg/config" + //nolint:revive // TODO(AML) Fix revive linter agentConfig "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/metrics" diff --git a/pkg/collector/python/test_check.go b/pkg/collector/python/test_check.go index 4dfda8ab5cf690..5d633008eb5f96 100644 --- a/pkg/collector/python/test_check.go +++ b/pkg/collector/python/test_check.go @@ -16,10 +16,10 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator" "github.com/DataDog/datadog-agent/pkg/aggregator/mocksender" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" checkid "github.com/DataDog/datadog-agent/pkg/collector/check/id" "github.com/DataDog/datadog-agent/pkg/diagnose/diagnosis" ) diff --git a/pkg/collector/python/test_loader.go b/pkg/collector/python/test_loader.go index 64de43d65bfb6f..cf4862d3a0fd96 100644 --- a/pkg/collector/python/test_loader.go +++ b/pkg/collector/python/test_loader.go @@ -11,8 +11,8 @@ import ( "runtime" "testing" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/mocksender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/stretchr/testify/assert" ) diff --git a/pkg/collector/scheduler.go b/pkg/collector/scheduler.go index 8d224641bbb275..ba97a03b96e73b 100644 --- a/pkg/collector/scheduler.go +++ b/pkg/collector/scheduler.go @@ -16,8 +16,8 @@ import ( "golang.org/x/text/language" "github.com/DataDog/datadog-agent/comp/collector/collector" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/check" checkid "github.com/DataDog/datadog-agent/pkg/collector/check/id" "github.com/DataDog/datadog-agent/pkg/collector/loaders" diff --git a/pkg/collector/scheduler_test.go b/pkg/collector/scheduler_test.go index 40720e63fe0838..d26c53003503ce 100644 --- a/pkg/collector/scheduler_test.go +++ b/pkg/collector/scheduler_test.go @@ -14,7 +14,7 @@ import ( "github.com/stretchr/testify/assert" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/check" ) diff --git a/pkg/config/autodiscovery/autodiscovery.go b/pkg/config/autodiscovery/autodiscovery.go index f02698e43f52fd..34f54e11a80844 100644 --- a/pkg/config/autodiscovery/autodiscovery.go +++ b/pkg/config/autodiscovery/autodiscovery.go @@ -9,8 +9,8 @@ package autodiscovery import ( - "github.com/DataDog/datadog-agent/pkg/autodiscovery/providers" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/providers/names" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/providers" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/providers/names" "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/util/flavor" "github.com/DataDog/datadog-agent/pkg/util/log" diff --git a/pkg/config/legacy/docker.go b/pkg/config/legacy/docker.go index 6b1d5f38c05e07..567bd07966f6ca 100644 --- a/pkg/config/legacy/docker.go +++ b/pkg/config/legacy/docker.go @@ -13,7 +13,7 @@ import ( "path/filepath" "strings" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/providers" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/providers" "github.com/DataDog/datadog-agent/pkg/collector/corechecks/containers/docker" "github.com/DataDog/datadog-agent/pkg/config" diff --git a/pkg/config/legacy/kubernetes.go b/pkg/config/legacy/kubernetes.go index 0476e68498ea67..fdda56b95a00b1 100644 --- a/pkg/config/legacy/kubernetes.go +++ b/pkg/config/legacy/kubernetes.go @@ -12,7 +12,7 @@ import ( "strconv" "strings" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/providers" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/providers" "github.com/DataDog/datadog-agent/pkg/config" yaml "gopkg.in/yaml.v2" diff --git a/pkg/config/setup/config.go b/pkg/config/setup/config.go index ca8612fda4afff..11b24e142621b3 100644 --- a/pkg/config/setup/config.go +++ b/pkg/config/setup/config.go @@ -577,6 +577,9 @@ func InitConfig(config pkgconfigmodel.Config) { config.BindEnvAndSetDefault("statsd_metric_blocklist_match_prefix", false) // Autoconfig + // Defaut Timeout in second when talking to storage for configuration (etcd, zookeeper, ...) + config.BindEnvAndSetDefault("autoconf_template_url_timeout", 5) + // Where to look for check templates if no custom path is defined config.BindEnvAndSetDefault("autoconf_template_dir", "/datadog/check_configs") config.BindEnvAndSetDefault("autoconf_config_files_poll", false) config.BindEnvAndSetDefault("autoconf_config_files_poll_interval", 60) diff --git a/pkg/diagnose/check.go b/pkg/diagnose/check.go index c7248ff417774a..f0f8ed55f9f6a9 100644 --- a/pkg/diagnose/check.go +++ b/pkg/diagnose/check.go @@ -13,6 +13,7 @@ import ( "github.com/DataDog/datadog-agent/cmd/agent/common" "github.com/DataDog/datadog-agent/comp/aggregator/diagnosesendermanager" "github.com/DataDog/datadog-agent/comp/collector/collector" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery" "github.com/DataDog/datadog-agent/comp/core/secrets" "github.com/DataDog/datadog-agent/comp/core/workloadmeta" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" @@ -24,12 +25,21 @@ import ( "github.com/DataDog/datadog-agent/pkg/util/optional" ) -func getDiagnose(diagCfg diagnosis.Config, senderManager sender.DiagnoseSenderManager, collector optional.Option[collector.Component], secretResolver secrets.Component) []diagnosis.Diagnosis { +func getDiagnose(diagCfg diagnosis.Config, senderManager sender.DiagnoseSenderManager, collector optional.Option[collector.Component], secretResolver secrets.Component, acOpt optional.Option[autodiscovery.Component]) []diagnosis.Diagnosis { if coll, ok := collector.Get(); diagCfg.RunningInAgentProcess && ok { return diagnoseChecksInAgentProcess(coll) } - - return diagnoseChecksInCLIProcess(diagCfg, senderManager, secretResolver) + if ac, ok := acOpt.Get(); ok { + return diagnoseChecksInCLIProcess(diagCfg, senderManager, secretResolver, ac) + } + return []diagnosis.Diagnosis{ + { + Result: diagnosis.DiagnosisUnexpectedError, + Name: "Collector or AutoDiscovery not found", + Diagnosis: "Collector or AutoDiscovery not found", + RawError: "Collector or AutoDiscovery not found", + }, + } } func getInstanceDiagnoses(instance check.Check) []diagnosis.Diagnosis { @@ -80,7 +90,7 @@ func diagnoseChecksInAgentProcess(collector collector.Component) []diagnosis.Dia return diagnoses } -func diagnoseChecksInCLIProcess(diagCfg diagnosis.Config, senderManager diagnosesendermanager.Component, secretResolver secrets.Component) []diagnosis.Diagnosis { //nolint:revive // TODO fix revive unused-parameter +func diagnoseChecksInCLIProcess(diagCfg diagnosis.Config, senderManager diagnosesendermanager.Component, secretResolver secrets.Component, ac autodiscovery.Component) []diagnosis.Diagnosis { //nolint:revive // TODO fix revive unused-parameter // other choices // run() github.com\DataDog\datadog-agent\pkg\cli\subcommands\check\command.go // runCheck() github.com\DataDog\datadog-agent\cmd\agent\gui\checks.go @@ -99,8 +109,8 @@ func diagnoseChecksInCLIProcess(diagCfg diagnosis.Config, senderManager diagnose } // Initializing the aggregator with a flush interval of 0 (to disable the flush goroutines) - common.LoadComponents(secretResolver, workloadmeta.GetGlobalStore(), pkgconfig.Datadog.GetString("confd_path")) - common.AC.LoadAndRun(context.Background()) + common.LoadComponents(secretResolver, workloadmeta.GetGlobalStore(), ac, pkgconfig.Datadog.GetString("confd_path")) + ac.LoadAndRun(context.Background()) // Create the CheckScheduler, but do not attach it to // AutoDiscovery. @@ -108,7 +118,7 @@ func diagnoseChecksInCLIProcess(diagCfg diagnosis.Config, senderManager diagnose // Load matching configurations (should we use common.AC.GetAllConfigs()) waitCtx, cancelTimeout := context.WithTimeout(context.Background(), time.Duration(5*time.Second)) - diagnoseConfigs, err := common.WaitForAllConfigsFromAD(waitCtx) + diagnoseConfigs, err := common.WaitForAllConfigsFromAD(waitCtx, ac) cancelTimeout() if err != nil { return []diagnosis.Diagnosis{ diff --git a/pkg/diagnose/runner.go b/pkg/diagnose/runner.go index 71e7bbe9dbcfe8..4246d122a9c33d 100644 --- a/pkg/diagnose/runner.go +++ b/pkg/diagnose/runner.go @@ -15,6 +15,7 @@ import ( "strings" "github.com/DataDog/datadog-agent/comp/collector/collector" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery" "github.com/DataDog/datadog-agent/comp/core/secrets" "github.com/DataDog/datadog-agent/comp/forwarder/eventplatform/eventplatformimpl" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" @@ -339,7 +340,6 @@ func requestDiagnosesFromAgentProcess(diagCfg diagnosis.Config) ([]diagnosis.Dia // Run runs diagnoses. func Run(diagCfg diagnosis.Config, deps SuitesDeps) ([]diagnosis.Diagnoses, error) { - // Make remote call to get diagnoses if !diagCfg.RunLocal { return requestDiagnosesFromAgentProcess(diagCfg) @@ -411,14 +411,16 @@ type SuitesDeps struct { senderManager sender.DiagnoseSenderManager collector optional.Option[collector.Component] secretResolver secrets.Component + AC optional.Option[autodiscovery.Component] } // NewSuitesDeps returns a new SuitesDeps. -func NewSuitesDeps(senderManager sender.DiagnoseSenderManager, collector optional.Option[collector.Component], secretResolver secrets.Component) SuitesDeps { +func NewSuitesDeps(senderManager sender.DiagnoseSenderManager, collector optional.Option[collector.Component], secretResolver secrets.Component, ac optional.Option[autodiscovery.Component]) SuitesDeps { return SuitesDeps{ senderManager: senderManager, collector: collector, secretResolver: secretResolver, + AC: ac, } } @@ -426,7 +428,7 @@ func getSuites(diagCfg diagnosis.Config, deps SuitesDeps) []diagnosis.Suite { catalog := diagnosis.NewCatalog() catalog.Register("check-datadog", func() []diagnosis.Diagnosis { - return getDiagnose(diagCfg, deps.senderManager, deps.collector, deps.secretResolver) + return getDiagnose(diagCfg, deps.senderManager, deps.collector, deps.secretResolver, deps.AC) }) catalog.Register("connectivity-datadog-core-endpoints", func() []diagnosis.Diagnosis { return connectivity.Diagnose(diagCfg) }) catalog.Register("connectivity-datadog-autodiscovery", connectivity.DiagnoseMetadataAutodiscoveryConnectivity) diff --git a/pkg/flare/archive_dca.go b/pkg/flare/archive_dca.go index 4f99b9e8e0b7c6..5dd8abb52c0fc5 100644 --- a/pkg/flare/archive_dca.go +++ b/pkg/flare/archive_dca.go @@ -57,6 +57,7 @@ func createDCAArchive(fb flaretypes.FlareBuilder, confSearchPaths map[string]str log.Errorf("Error getting the status of the DCA, %q", err) return } + } getLogFiles(fb, logFilePath) diff --git a/pkg/flare/cluster_checks.go b/pkg/flare/cluster_checks.go index d235c7407296a6..4510fd1cb089de 100644 --- a/pkg/flare/cluster_checks.go +++ b/pkg/flare/cluster_checks.go @@ -14,8 +14,8 @@ import ( "github.com/fatih/color" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/providers/names" "github.com/DataDog/datadog-agent/pkg/api/util" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/providers/names" "github.com/DataDog/datadog-agent/pkg/clusteragent/clusterchecks/types" "github.com/DataDog/datadog-agent/pkg/config" ) diff --git a/pkg/flare/config_check.go b/pkg/flare/config_check.go index 2d9265bfde386d..3376d02c89a6ae 100644 --- a/pkg/flare/config_check.go +++ b/pkg/flare/config_check.go @@ -13,8 +13,8 @@ import ( "github.com/fatih/color" "github.com/DataDog/datadog-agent/comp/api/api/apiimpl/response" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/api/util" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" checkid "github.com/DataDog/datadog-agent/pkg/collector/check/id" "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/util/scrubber" diff --git a/pkg/flare/config_check_test.go b/pkg/flare/config_check_test.go index 46249d13141f81..942d2dd48fe8ed 100644 --- a/pkg/flare/config_check_test.go +++ b/pkg/flare/config_check_test.go @@ -12,7 +12,7 @@ import ( "github.com/stretchr/testify/assert" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" ) type configType string diff --git a/pkg/jmxfetch/jmxfetch.go b/pkg/jmxfetch/jmxfetch.go index 19afdc7581673a..fc5564ee1d1988 100644 --- a/pkg/jmxfetch/jmxfetch.go +++ b/pkg/jmxfetch/jmxfetch.go @@ -21,9 +21,9 @@ import ( "gopkg.in/yaml.v2" "github.com/DataDog/datadog-agent/cmd/agent/common/path" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" dogstatsdServer "github.com/DataDog/datadog-agent/comp/dogstatsd/server" api "github.com/DataDog/datadog-agent/pkg/api/util" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/status/health" jmxStatus "github.com/DataDog/datadog-agent/pkg/status/jmx" diff --git a/pkg/jmxfetch/jmxfetch_test.go b/pkg/jmxfetch/jmxfetch_test.go index 02b6275ad15225..e38f082de816eb 100644 --- a/pkg/jmxfetch/jmxfetch_test.go +++ b/pkg/jmxfetch/jmxfetch_test.go @@ -10,7 +10,7 @@ package jmxfetch import ( "testing" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/stretchr/testify/require" ) diff --git a/pkg/logs/README.md b/pkg/logs/README.md index 21e9c1f6dc9cbc..3bb44248352057 100644 --- a/pkg/logs/README.md +++ b/pkg/logs/README.md @@ -56,7 +56,7 @@ The remaining components of the logs agent subscribe to these stores and take ap Schedulers can be implemented outside of the logs-agent, but some built-in schedulers are in sub-packages of `pkg/logs/schedulers`. One particularly important scheduler is the *AD scheduler* in `pkg/logs/schedulers/ad`. -The Autodiscovery component (`pkg/autodiscovery`) provides a sequence of configs (`integration.Config`) to the AD scheduler. +The Autodiscovery component (`comp/core/autodiscovery`) provides a sequence of configs (`integration.Config`) to the AD scheduler. The AD scheduler categorizes each config as either a source or a service and submits it accordingly. #### Launchers diff --git a/pkg/logs/internal/util/adlistener/ad.go b/pkg/logs/internal/util/adlistener/ad.go index 9418aa93d1c69c..47507a49b60aa5 100644 --- a/pkg/logs/internal/util/adlistener/ad.go +++ b/pkg/logs/internal/util/adlistener/ad.go @@ -7,12 +7,12 @@ package adlistener import ( - "github.com/DataDog/datadog-agent/pkg/autodiscovery" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/scheduler" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/scheduler" ) -// ADListener implements pkg/autodiscovery/scheduler.Scheduler. +// ADListener implements comp/core/autodiscovery/scheduler.Scheduler. // // It proxies Schedule and Unschedule calls to its parent. // @@ -23,7 +23,7 @@ type ADListener struct { name string // ac is the AutoConfig instance - ac *autodiscovery.AutoConfig + ac autodiscovery.Component // schedule and unschedule are the functions to which Schedule and // Unschedule calls should be proxied. @@ -34,7 +34,7 @@ var _ scheduler.Scheduler = &ADListener{} // NewADListener creates a new ADListener, proxying schedule and unschedule calls to // the given functions. -func NewADListener(name string, ac *autodiscovery.AutoConfig, schedule, unschedule func([]integration.Config)) *ADListener { +func NewADListener(name string, ac autodiscovery.Component, schedule, unschedule func([]integration.Config)) *ADListener { return &ADListener{ name: name, ac: ac, @@ -54,15 +54,15 @@ func (l *ADListener) StopListener() { l.ac.RemoveScheduler(l.name) } -// Stop implements pkg/autodiscovery/scheduler.Scheduler#Stop. +// Stop implements comp/core/autodiscovery/scheduler.Scheduler#Stop. func (l *ADListener) Stop() {} -// Schedule implements pkg/autodiscovery/scheduler.Scheduler#Schedule. +// Schedule implements comp/core/autodiscovery/scheduler.Scheduler#Schedule. func (l *ADListener) Schedule(configs []integration.Config) { l.schedule(configs) } -// Unschedule implements pkg/autodiscovery/scheduler.Scheduler#Unschedule. +// Unschedule implements comp/core/autodiscovery/scheduler.Scheduler#Unschedule. func (l *ADListener) Unschedule(configs []integration.Config) { l.unschedule(configs) } diff --git a/pkg/logs/internal/util/adlistener/ad_test.go b/pkg/logs/internal/util/adlistener/ad_test.go index 124cbd3b99b5dc..6ebdb2cb5d1579 100644 --- a/pkg/logs/internal/util/adlistener/ad_test.go +++ b/pkg/logs/internal/util/adlistener/ad_test.go @@ -8,15 +8,15 @@ package adlistener import ( "testing" - "github.com/DataDog/datadog-agent/pkg/autodiscovery" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/scheduler" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/autodiscoveryimpl" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/scheduler" ) //nolint:revive // TODO(AML) Fix revive linter func TestListenersGetScheduleCalls(t *testing.T) { adsched := scheduler.NewMetaScheduler() - ac := autodiscovery.NewAutoConfigNoStart(adsched, nil) + ac := autodiscoveryimpl.CreateMockAutoConfig(t, adsched) got1 := make(chan struct{}, 1) l1 := NewADListener("l1", ac, func(configs []integration.Config) { diff --git a/pkg/logs/schedulers/ad/scheduler.go b/pkg/logs/schedulers/ad/scheduler.go index 7ec58d3b24ecde..908e121fc139fb 100644 --- a/pkg/logs/schedulers/ad/scheduler.go +++ b/pkg/logs/schedulers/ad/scheduler.go @@ -12,10 +12,10 @@ import ( yaml "gopkg.in/yaml.v2" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/providers/names" logsConfig "github.com/DataDog/datadog-agent/comp/logs/agent/config" - "github.com/DataDog/datadog-agent/pkg/autodiscovery" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/providers/names" pkgconfig "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/logs/internal/util/adlistener" "github.com/DataDog/datadog-agent/pkg/logs/schedulers" @@ -37,7 +37,7 @@ type Scheduler struct { var _ schedulers.Scheduler = &Scheduler{} // New creates a new scheduler. -func New(ac *autodiscovery.AutoConfig) schedulers.Scheduler { +func New(ac autodiscovery.Component) schedulers.Scheduler { sch := &Scheduler{} sch.listener = adlistener.NewADListener("logs-agent AD scheduler", ac, sch.Schedule, sch.Unschedule) return sch diff --git a/pkg/logs/schedulers/ad/scheduler_test.go b/pkg/logs/schedulers/ad/scheduler_test.go index c346b75bed4348..f59ee41e996d68 100644 --- a/pkg/logs/schedulers/ad/scheduler_test.go +++ b/pkg/logs/schedulers/ad/scheduler_test.go @@ -7,17 +7,18 @@ package ad import ( "fmt" - pkgconfig "github.com/DataDog/datadog-agent/pkg/config" - "github.com/DataDog/datadog-agent/pkg/config/model" "strings" "testing" + pkgconfig "github.com/DataDog/datadog-agent/pkg/config" + "github.com/DataDog/datadog-agent/pkg/config/model" + "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/providers/names" "github.com/DataDog/datadog-agent/comp/logs/agent/config" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/providers/names" "github.com/DataDog/datadog-agent/pkg/logs/schedulers" sourcesPkg "github.com/DataDog/datadog-agent/pkg/logs/sources" ) diff --git a/pkg/logs/schedulers/cca/scheduler.go b/pkg/logs/schedulers/cca/scheduler.go index 808a091ff664e8..ad3b37705e4387 100644 --- a/pkg/logs/schedulers/cca/scheduler.go +++ b/pkg/logs/schedulers/cca/scheduler.go @@ -9,8 +9,8 @@ package cca import ( "time" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery" logsConfig "github.com/DataDog/datadog-agent/comp/logs/agent/config" - "github.com/DataDog/datadog-agent/pkg/autodiscovery" coreConfig "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/logs/schedulers" "github.com/DataDog/datadog-agent/pkg/logs/sources" @@ -20,7 +20,7 @@ import ( // Scheduler creates a single source to represent all containers collected due to // the `logs_config.container_collect_all` configuration. type Scheduler struct { - ac *autodiscovery.AutoConfig + ac autodiscovery.Component // added is closed when the source is added (for testing) added chan struct{} } @@ -28,7 +28,7 @@ type Scheduler struct { var _ schedulers.Scheduler = &Scheduler{} // New creates a new scheduler. -func New(ac *autodiscovery.AutoConfig) schedulers.Scheduler { +func New(ac autodiscovery.Component) schedulers.Scheduler { return &Scheduler{ ac: ac, added: make(chan struct{}), diff --git a/pkg/logs/schedulers/cca/scheduler_test.go b/pkg/logs/schedulers/cca/scheduler_test.go index 89dbca36a1b5e5..1928ac239dcde6 100644 --- a/pkg/logs/schedulers/cca/scheduler_test.go +++ b/pkg/logs/schedulers/cca/scheduler_test.go @@ -11,21 +11,22 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/autodiscoveryimpl" logsConfig "github.com/DataDog/datadog-agent/comp/logs/agent/config" - "github.com/DataDog/datadog-agent/pkg/autodiscovery" coreConfig "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/logs/schedulers" ) -func setup() (scheduler *Scheduler, ac *autodiscovery.AutoConfig, spy *schedulers.MockSourceManager) { - ac = autodiscovery.NewAutoConfigNoStart(nil, nil) +func setup(t *testing.T) (scheduler *Scheduler, ac autodiscovery.Component, spy *schedulers.MockSourceManager) { + ac = autodiscoveryimpl.CreateMockAutoConfig(t, nil) scheduler = New(ac).(*Scheduler) spy = &schedulers.MockSourceManager{} return } func TestNothingWhenNoConfig(t *testing.T) { - scheduler, _, spy := setup() + scheduler, _, spy := setup(t) config := coreConfig.Mock(t) config.SetWithoutSource("logs_config.container_collect_all", false) @@ -35,7 +36,7 @@ func TestNothingWhenNoConfig(t *testing.T) { } func TestAfterACStarts(t *testing.T) { - scheduler, ac, spy := setup() + scheduler, ac, spy := setup(t) config := coreConfig.Mock(t) config.SetWithoutSource("logs_config.container_collect_all", true) diff --git a/pkg/snmp/snmpparse/config_snmp.go b/pkg/snmp/snmpparse/config_snmp.go index e918a91077651c..1d82d353f5f05c 100644 --- a/pkg/snmp/snmpparse/config_snmp.go +++ b/pkg/snmp/snmpparse/config_snmp.go @@ -16,8 +16,8 @@ import ( "github.com/DataDog/datadog-agent/comp/api/api/apiimpl/response" snmplistener "github.com/DataDog/datadog-agent/pkg/snmp" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/api/util" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/config" ) diff --git a/pkg/snmp/snmpparse/config_snmp_test.go b/pkg/snmp/snmpparse/config_snmp_test.go index 59263fefc9379d..491df6512745f2 100644 --- a/pkg/snmp/snmpparse/config_snmp_test.go +++ b/pkg/snmp/snmpparse/config_snmp_test.go @@ -11,7 +11,7 @@ import ( "github.com/stretchr/testify/assert" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/config" ) diff --git a/pkg/status/collector/status.go b/pkg/status/collector/status.go index 716ed78ee5ae5a..734ad1de6e001f 100644 --- a/pkg/status/collector/status.go +++ b/pkg/status/collector/status.go @@ -32,10 +32,12 @@ func PopulateStatus(stats map[string]interface{}) { json.Unmarshal(runnerStatsJSON, &runnerStats) //nolint:errcheck stats["runnerStats"] = runnerStats - autoConfigStatsJSON := []byte(expvar.Get("autoconfig").String()) - autoConfigStats := make(map[string]interface{}) - json.Unmarshal(autoConfigStatsJSON, &autoConfigStats) //nolint:errcheck - stats["autoConfigStats"] = autoConfigStats + if expvar.Get("autoconfig") != nil { + autoConfigStatsJSON := []byte(expvar.Get("autoconfig").String()) + autoConfigStats := make(map[string]interface{}) + json.Unmarshal(autoConfigStatsJSON, &autoConfigStats) //nolint:errcheck + stats["autoConfigStats"] = autoConfigStats + } checkSchedulerStatsJSON := []byte(expvar.Get("CheckScheduler").String()) checkSchedulerStats := make(map[string]interface{}) diff --git a/pkg/util/common.go b/pkg/util/common.go index 091f96e16a6fcf..389ec259e5d84a 100644 --- a/pkg/util/common.go +++ b/pkg/util/common.go @@ -17,7 +17,7 @@ import ( "path/filepath" "time" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/version" ) diff --git a/pkg/util/common_test.go b/pkg/util/common_test.go index 3213b7f118d49e..1a8617a0d41276 100644 --- a/pkg/util/common_test.go +++ b/pkg/util/common_test.go @@ -14,7 +14,7 @@ import ( "github.com/stretchr/testify/assert" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" "gopkg.in/yaml.v2" ) diff --git a/pkg/util/jsonquery/yaml_test.go b/pkg/util/jsonquery/yaml_test.go index 231141e78d6be2..4bbea231e1d4bc 100644 --- a/pkg/util/jsonquery/yaml_test.go +++ b/pkg/util/jsonquery/yaml_test.go @@ -10,7 +10,7 @@ import ( "github.com/stretchr/testify/assert" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" ) func TestYAMLExistQuery(t *testing.T) { diff --git a/test/integration/config_providers/etcd/etcd_provider_test.go b/test/integration/config_providers/etcd/etcd_provider_test.go index 3165d90fb351e5..d5cd7cb8b4ce69 100644 --- a/test/integration/config_providers/etcd/etcd_provider_test.go +++ b/test/integration/config_providers/etcd/etcd_provider_test.go @@ -16,7 +16,7 @@ import ( "github.com/stretchr/testify/suite" etcd_client "go.etcd.io/etcd/client/v2" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/providers" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/providers" "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/test/integration/utils" ) diff --git a/test/integration/config_providers/zookeeper/zookeeper_provider_test.go b/test/integration/config_providers/zookeeper/zookeeper_provider_test.go index 1c939cb24516a2..fcadfa9acaac72 100644 --- a/test/integration/config_providers/zookeeper/zookeeper_provider_test.go +++ b/test/integration/config_providers/zookeeper/zookeeper_provider_test.go @@ -15,7 +15,7 @@ import ( "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/providers" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/providers" "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/test/integration/utils" ) diff --git a/test/integration/corechecks/docker/main_test.go b/test/integration/corechecks/docker/main_test.go index a9cc738bd6e07b..63b3b78beabc76 100644 --- a/test/integration/corechecks/docker/main_test.go +++ b/test/integration/corechecks/docker/main_test.go @@ -16,13 +16,13 @@ import ( log "github.com/cihub/seelog" "go.uber.org/fx" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" compcfg "github.com/DataDog/datadog-agent/comp/core/config" "github.com/DataDog/datadog-agent/comp/core/log/logimpl" "github.com/DataDog/datadog-agent/comp/core/tagger" "github.com/DataDog/datadog-agent/comp/core/workloadmeta" "github.com/DataDog/datadog-agent/comp/core/workloadmeta/collectors" "github.com/DataDog/datadog-agent/pkg/aggregator/mocksender" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/integration" "github.com/DataDog/datadog-agent/pkg/collector/check" "github.com/DataDog/datadog-agent/pkg/collector/corechecks/containers/docker" "github.com/DataDog/datadog-agent/pkg/config" diff --git a/test/integration/listeners/docker/docker_listener_test.go b/test/integration/listeners/docker/docker_listener_test.go index 2ee8dbea847ce2..e7cde76a3cecc8 100644 --- a/test/integration/listeners/docker/docker_listener_test.go +++ b/test/integration/listeners/docker/docker_listener_test.go @@ -22,11 +22,11 @@ import ( "go.uber.org/fx" "github.com/DataDog/datadog-agent/comp/core" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/listeners" compcfg "github.com/DataDog/datadog-agent/comp/core/config" "github.com/DataDog/datadog-agent/comp/core/tagger" "github.com/DataDog/datadog-agent/comp/core/workloadmeta" "github.com/DataDog/datadog-agent/comp/core/workloadmeta/collectors" - "github.com/DataDog/datadog-agent/pkg/autodiscovery/listeners" "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/util/containers" "github.com/DataDog/datadog-agent/pkg/util/docker" From 9ec655641faf224d7a70e5e25bc91f5e485b9293 Mon Sep 17 00:00:00 2001 From: Wassim Dhif Date: Fri, 8 Mar 2024 23:22:49 +0100 Subject: [PATCH 104/155] feat(tagger): add `OptOutEnabled` config to the `OriginInfo` (#23586) * feat(tagger): add OptOutEnabled config to OriginInfo Signed-off-by: Wassim DHIF * Update pkg/tagger/types/types.go Co-authored-by: Cedric Lamoriniere --------- Signed-off-by: Wassim DHIF Co-authored-by: Cedric Lamoriniere --- pkg/tagger/types/types.go | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/tagger/types/types.go b/pkg/tagger/types/types.go index cdf068c5cd9992..2fd40d8e75c567 100644 --- a/pkg/tagger/types/types.go +++ b/pkg/tagger/types/types.go @@ -23,4 +23,5 @@ type OriginInfo struct { FromMsg string Cardinality string ProductOrigin ProductOrigin + OptOutEnabled *bool } From af00e79336597e0723c1e20dfe6eaf25a4e13e78 Mon Sep 17 00:00:00 2001 From: Amit Slavin <108348428+amitslavin@users.noreply.github.com> Date: Sun, 10 Mar 2024 19:12:23 +0200 Subject: [PATCH 105/155] improve http2 kernel metrics (#23602) --- .../ebpf/c/protocols/http2/decoding-common.h | 18 ++++- .../ebpf/c/protocols/http2/decoding-defs.h | 5 +- .../ebpf/c/protocols/http2/decoding-tls.h | 9 +-- pkg/network/ebpf/c/protocols/http2/decoding.h | 10 +-- pkg/network/protocols/http2/model_linux.go | 7 +- pkg/network/protocols/http2/raw_traffic.go | 1 + pkg/network/protocols/http2/telemetry.go | 58 +++++++++------ pkg/network/protocols/http2/types_linux.go | 21 +++--- pkg/network/usm/usm_http2_monitor_test.go | 73 +++++++++++++++++-- 9 files changed, 148 insertions(+), 54 deletions(-) diff --git a/pkg/network/ebpf/c/protocols/http2/decoding-common.h b/pkg/network/ebpf/c/protocols/http2/decoding-common.h index 00607a4b92bb86..8a721cc459d583 100644 --- a/pkg/network/ebpf/c/protocols/http2/decoding-common.h +++ b/pkg/network/ebpf/c/protocols/http2/decoding-common.h @@ -167,9 +167,21 @@ static __always_inline void reset_frame(http2_frame_t *out) { } // check_frame_split checks if the frame is split into multiple tcp payloads, if so, it increments the split counter. -static __always_inline void check_frame_split(http2_telemetry_t *http2_tel, __u32 data_off, __u32 data_end, __u32 length){ - if (data_off + length > data_end) { - __sync_fetch_and_add(&http2_tel->fragmented_frame_count, 1); +static __always_inline void check_frame_split(http2_telemetry_t *http2_tel, __u32 data_off, __u32 data_end, http2_frame_t current_frame){ + bool is_headers = current_frame.type == kHeadersFrame; + bool is_rst_frame = current_frame.type == kRSTStreamFrame; + bool is_data_end_of_stream = ((current_frame.flags & HTTP2_END_OF_STREAM) == HTTP2_END_OF_STREAM) && (current_frame.type == kDataFrame); + bool is_headers_end_of_stream = ((current_frame.flags & HTTP2_END_OF_STREAM) == HTTP2_END_OF_STREAM) && (is_headers); + if (data_off + current_frame.length > data_end) { + if (is_headers_end_of_stream) { + __sync_fetch_and_add(&http2_tel->fragmented_frame_count_headers_eos, 1); + } else if (is_data_end_of_stream) { + __sync_fetch_and_add(&http2_tel->fragmented_frame_count_data_eos, 1); + } else if (is_rst_frame) { + __sync_fetch_and_add(&http2_tel->fragmented_frame_count_rst, 1); + } else if (is_headers) { + __sync_fetch_and_add(&http2_tel->fragmented_frame_count_headers, 1); + } } } diff --git a/pkg/network/ebpf/c/protocols/http2/decoding-defs.h b/pkg/network/ebpf/c/protocols/http2/decoding-defs.h index f60464e8bb6b1f..f660c85476f155 100644 --- a/pkg/network/ebpf/c/protocols/http2/decoding-defs.h +++ b/pkg/network/ebpf/c/protocols/http2/decoding-defs.h @@ -243,7 +243,10 @@ typedef struct { __u64 exceeding_max_interesting_frames; __u64 exceeding_max_frames_to_filter; __u64 path_size_bucket[HTTP2_TELEMETRY_PATH_BUCKETS+1]; - __u64 fragmented_frame_count; + __u64 fragmented_frame_count_headers; + __u64 fragmented_frame_count_rst; + __u64 fragmented_frame_count_data_eos; + __u64 fragmented_frame_count_headers_eos; } http2_telemetry_t; typedef struct { diff --git a/pkg/network/ebpf/c/protocols/http2/decoding-tls.h b/pkg/network/ebpf/c/protocols/http2/decoding-tls.h index 265c29a5977e43..86aa035d1aafe6 100644 --- a/pkg/network/ebpf/c/protocols/http2/decoding-tls.h +++ b/pkg/network/ebpf/c/protocols/http2/decoding-tls.h @@ -551,6 +551,8 @@ static __always_inline void tls_find_relevant_frames(tls_dispatcher_arguments_t break; } + check_frame_split(http2_tel, info->data_off, info->data_end, current_frame); + // END_STREAM can appear only in Headers and Data frames. // Check out https://datatracker.ietf.org/doc/html/rfc7540#section-6.1 for data frame, and // https://datatracker.ietf.org/doc/html/rfc7540#section-6.2 for headers frame. @@ -562,11 +564,6 @@ static __always_inline void tls_find_relevant_frames(tls_dispatcher_arguments_t iteration_value->frames_count++; } - // We are not checking for frame splits in the previous condition due to a verifier issue. - if (is_headers_or_rst_frame || is_data_end_of_stream) { - check_frame_split(http2_tel, info->data_off, info->data_end, current_frame.length); - } - info->data_off += current_frame.length; // If we have found enough interesting frames, we can stop iterating. @@ -642,10 +639,10 @@ int uprobe__http2_tls_handle_first_frame(struct pt_regs *ctx) { bpf_map_delete_elem(&http2_remainder, &dispatcher_args_copy.tup); } + check_frame_split(http2_tel, dispatcher_args_copy.data_off, dispatcher_args_copy.data_end, current_frame); bool is_headers_or_rst_frame = current_frame.type == kHeadersFrame || current_frame.type == kRSTStreamFrame; bool is_data_end_of_stream = ((current_frame.flags & HTTP2_END_OF_STREAM) == HTTP2_END_OF_STREAM) && (current_frame.type == kDataFrame); if (is_headers_or_rst_frame || is_data_end_of_stream) { - check_frame_split(http2_tel, dispatcher_args_copy.data_off, dispatcher_args_copy.data_end, current_frame.length); iteration_value->frames_array[0].frame = current_frame; iteration_value->frames_array[0].offset = dispatcher_args_copy.data_off; iteration_value->frames_count = 1; diff --git a/pkg/network/ebpf/c/protocols/http2/decoding.h b/pkg/network/ebpf/c/protocols/http2/decoding.h index 648beebda4d777..1fc81900a28140 100644 --- a/pkg/network/ebpf/c/protocols/http2/decoding.h +++ b/pkg/network/ebpf/c/protocols/http2/decoding.h @@ -558,6 +558,9 @@ static __always_inline bool find_relevant_frames(struct __sk_buff *skb, skb_info break; } + // We are not checking for frame splits in the previous condition due to a verifier issue. + check_frame_split(http2_tel, skb_info->data_off,skb_info->data_end, current_frame); + // END_STREAM can appear only in Headers and Data frames. // Check out https://datatracker.ietf.org/doc/html/rfc7540#section-6.1 for data frame, and // https://datatracker.ietf.org/doc/html/rfc7540#section-6.2 for headers frame. @@ -569,11 +572,6 @@ static __always_inline bool find_relevant_frames(struct __sk_buff *skb, skb_info iteration_value->frames_count++; } - // We are not checking for frame splits in the previous condition due to a verifier issue. - if (is_headers_or_rst_frame || is_data_end_of_stream) { - check_frame_split(http2_tel, skb_info->data_off,skb_info->data_end, current_frame.length); - } - skb_info->data_off += current_frame.length; // If we have found enough interesting frames, we can stop iterating. @@ -656,10 +654,10 @@ int socket__http2_handle_first_frame(struct __sk_buff *skb) { bpf_map_delete_elem(&http2_remainder, &dispatcher_args_copy.tup); } + check_frame_split(http2_tel, dispatcher_args_copy.skb_info.data_off, dispatcher_args_copy.skb_info.data_end, current_frame); bool is_headers_or_rst_frame = current_frame.type == kHeadersFrame || current_frame.type == kRSTStreamFrame; bool is_data_end_of_stream = ((current_frame.flags & HTTP2_END_OF_STREAM) == HTTP2_END_OF_STREAM) && (current_frame.type == kDataFrame); if (is_headers_or_rst_frame || is_data_end_of_stream) { - check_frame_split(http2_tel, dispatcher_args_copy.skb_info.data_off, dispatcher_args_copy.skb_info.data_end, current_frame.length); iteration_value->frames_array[0].frame = current_frame; iteration_value->frames_array[0].offset = dispatcher_args_copy.skb_info.data_off; iteration_value->frames_count = 1; diff --git a/pkg/network/protocols/http2/model_linux.go b/pkg/network/protocols/http2/model_linux.go index efe62e61deef08..50318523ac1a7f 100644 --- a/pkg/network/protocols/http2/model_linux.go +++ b/pkg/network/protocols/http2/model_linux.go @@ -417,7 +417,10 @@ HTTP2Telemetry{ "literal values exceed message count": %d, "messages with more frames than we can filter": %d, "messages with more interesting frames than we can process": %d, - "fragmented frame count": %d, + "fragmented headers frame count": %d, + "fragmented headers frame count end of stream": %d, + "fragmented data frame count end of stream": %d, + "fragmented rst frame count": %d, "path headers length distribution": { "in range [0, 120)": %d, "in range [120, 130)": %d, @@ -429,7 +432,7 @@ HTTP2Telemetry{ "in range [180, infinity)": %d } }`, t.Request_seen, t.Response_seen, t.End_of_stream, t.End_of_stream_rst, t.Literal_value_exceeds_frame, - t.Exceeding_max_frames_to_filter, t.Exceeding_max_interesting_frames, t.Fragmented_frame_count, t.Path_size_bucket[0], t.Path_size_bucket[1], + t.Exceeding_max_frames_to_filter, t.Exceeding_max_interesting_frames, t.Fragmented_frame_count_headers, t.Fragmented_frame_count_headers_eos, t.Fragmented_frame_count_data_eos, t.Fragmented_frame_count_rst, t.Path_size_bucket[0], t.Path_size_bucket[1], t.Path_size_bucket[2], t.Path_size_bucket[3], t.Path_size_bucket[4], t.Path_size_bucket[5], t.Path_size_bucket[6], t.Path_size_bucket[7]) } diff --git a/pkg/network/protocols/http2/raw_traffic.go b/pkg/network/protocols/http2/raw_traffic.go index 2764c8e63798f2..3e6ca6e22e51a6 100644 --- a/pkg/network/protocols/http2/raw_traffic.go +++ b/pkg/network/protocols/http2/raw_traffic.go @@ -18,6 +18,7 @@ import ( type HeadersFrameOptions struct { Headers []hpack.HeaderField DynamicTableUpdateSize uint32 + EndStream bool } // NewHeadersFrameMessage creates a new HTTP2 data frame message with the given header fields. diff --git a/pkg/network/protocols/http2/telemetry.go b/pkg/network/protocols/http2/telemetry.go index 2af08a8b72c738..bf146afdc627ad 100644 --- a/pkg/network/protocols/http2/telemetry.go +++ b/pkg/network/protocols/http2/telemetry.go @@ -66,9 +66,14 @@ type kernelTelemetry struct { exceedingMaxInterestingFrames *tlsAwareCounter // exceedingMaxFramesToFilter Count of times we have left with more frames to filter than the max number of frames to filter. exceedingMaxFramesToFilter *tlsAwareCounter - // fragmentedFrameCount Count of times we have seen a fragmented frame. - fragmentedFrameCount *tlsAwareCounter - + // fragmentedFrameCountRST Count of times we have seen a fragmented RST frame. + fragmentedFrameCountRST *tlsAwareCounter + // fragmentedHeadersFrameEOSCount Count of times we have seen a fragmented headers frame with EOS. + fragmentedHeadersFrameEOSCount *tlsAwareCounter + // fragmentedHeadersFrameCount Count of times we have seen a fragmented headers frame. + fragmentedHeadersFrameCount *tlsAwareCounter + // fragmentedDataFrameEOSCount Count of times we have seen a fragmented data frame with EOS. + fragmentedDataFrameEOSCount *tlsAwareCounter // telemetryLastState represents the latest HTTP2 eBPF Kernel telemetry observed from the kernel telemetryLastState HTTP2Telemetry } @@ -77,15 +82,18 @@ type kernelTelemetry struct { func newHTTP2KernelTelemetry() *kernelTelemetry { metricGroup := libtelemetry.NewMetricGroup("usm.http2", libtelemetry.OptPrometheus) http2KernelTel := &kernelTelemetry{ - metricGroup: metricGroup, - http2requests: newTLSAwareCounter(metricGroup, "requests"), - http2responses: newTLSAwareCounter(metricGroup, "responses"), - endOfStream: newTLSAwareCounter(metricGroup, "eos"), - endOfStreamRST: newTLSAwareCounter(metricGroup, "rst"), - literalValueExceedsFrame: newTLSAwareCounter(metricGroup, "literal_value_exceeds_frame"), - exceedingMaxInterestingFrames: newTLSAwareCounter(metricGroup, "exceeding_max_interesting_frames"), - exceedingMaxFramesToFilter: newTLSAwareCounter(metricGroup, "exceeding_max_frames_to_filter"), - fragmentedFrameCount: newTLSAwareCounter(metricGroup, "exceeding_data_end")} + metricGroup: metricGroup, + http2requests: newTLSAwareCounter(metricGroup, "requests"), + http2responses: newTLSAwareCounter(metricGroup, "responses"), + endOfStream: newTLSAwareCounter(metricGroup, "eos"), + endOfStreamRST: newTLSAwareCounter(metricGroup, "rst"), + literalValueExceedsFrame: newTLSAwareCounter(metricGroup, "literal_value_exceeds_frame"), + exceedingMaxInterestingFrames: newTLSAwareCounter(metricGroup, "exceeding_max_interesting_frames"), + exceedingMaxFramesToFilter: newTLSAwareCounter(metricGroup, "exceeding_max_frames_to_filter"), + fragmentedDataFrameEOSCount: newTLSAwareCounter(metricGroup, "exceeding_data_end_data_eos"), + fragmentedHeadersFrameCount: newTLSAwareCounter(metricGroup, "exceeding_data_end_headers"), + fragmentedHeadersFrameEOSCount: newTLSAwareCounter(metricGroup, "exceeding_data_end_headers_eos"), + fragmentedFrameCountRST: newTLSAwareCounter(metricGroup, "exceeding_data_end_rst")} for bucketIndex := range http2KernelTel.pathSizeBucket { http2KernelTel.pathSizeBucket[bucketIndex] = newTLSAwareCounter(metricGroup, "path_size_bucket_"+(strconv.Itoa(bucketIndex+1))) @@ -105,7 +113,10 @@ func (t *kernelTelemetry) update(tel *HTTP2Telemetry, isTLS bool) { t.literalValueExceedsFrame.add(int64(telemetryDelta.Literal_value_exceeds_frame), isTLS) t.exceedingMaxInterestingFrames.add(int64(telemetryDelta.Exceeding_max_interesting_frames), isTLS) t.exceedingMaxFramesToFilter.add(int64(telemetryDelta.Exceeding_max_frames_to_filter), isTLS) - t.fragmentedFrameCount.add(int64(telemetryDelta.Fragmented_frame_count), isTLS) + t.fragmentedFrameCountRST.add(int64(telemetryDelta.Fragmented_frame_count_rst), isTLS) + t.fragmentedHeadersFrameEOSCount.add(int64(telemetryDelta.Fragmented_frame_count_headers_eos), isTLS) + t.fragmentedHeadersFrameCount.add(int64(telemetryDelta.Fragmented_frame_count_headers), isTLS) + t.fragmentedDataFrameEOSCount.add(int64(telemetryDelta.Fragmented_frame_count_data_eos), isTLS) for bucketIndex := range t.pathSizeBucket { t.pathSizeBucket[bucketIndex].add(int64(telemetryDelta.Path_size_bucket[bucketIndex]), isTLS) } @@ -120,15 +131,18 @@ func (t *kernelTelemetry) Log() { // Sub generates a new HTTP2Telemetry object by subtracting the values of this HTTP2Telemetry object from the other func (t *HTTP2Telemetry) Sub(other HTTP2Telemetry) *HTTP2Telemetry { return &HTTP2Telemetry{ - Request_seen: t.Request_seen - other.Request_seen, - Response_seen: t.Response_seen - other.Response_seen, - End_of_stream: t.End_of_stream - other.End_of_stream, - End_of_stream_rst: t.End_of_stream_rst - other.End_of_stream_rst, - Literal_value_exceeds_frame: t.Literal_value_exceeds_frame - other.Literal_value_exceeds_frame, - Exceeding_max_interesting_frames: t.Exceeding_max_interesting_frames - other.Exceeding_max_interesting_frames, - Exceeding_max_frames_to_filter: t.Exceeding_max_frames_to_filter - other.Exceeding_max_frames_to_filter, - Fragmented_frame_count: t.Fragmented_frame_count - other.Fragmented_frame_count, - Path_size_bucket: computePathSizeBucketDifferences(t.Path_size_bucket, other.Path_size_bucket), + Request_seen: t.Request_seen - other.Request_seen, + Response_seen: t.Response_seen - other.Response_seen, + End_of_stream: t.End_of_stream - other.End_of_stream, + End_of_stream_rst: t.End_of_stream_rst - other.End_of_stream_rst, + Literal_value_exceeds_frame: t.Literal_value_exceeds_frame - other.Literal_value_exceeds_frame, + Exceeding_max_interesting_frames: t.Exceeding_max_interesting_frames - other.Exceeding_max_interesting_frames, + Exceeding_max_frames_to_filter: t.Exceeding_max_frames_to_filter - other.Exceeding_max_frames_to_filter, + Fragmented_frame_count_headers: t.Fragmented_frame_count_headers - other.Fragmented_frame_count_headers, + Fragmented_frame_count_data_eos: t.Fragmented_frame_count_data_eos - other.Fragmented_frame_count_data_eos, + Fragmented_frame_count_rst: t.Fragmented_frame_count_rst - other.Fragmented_frame_count_rst, + Fragmented_frame_count_headers_eos: t.Fragmented_frame_count_headers_eos - other.Fragmented_frame_count_headers_eos, + Path_size_bucket: computePathSizeBucketDifferences(t.Path_size_bucket, other.Path_size_bucket), } } diff --git a/pkg/network/protocols/http2/types_linux.go b/pkg/network/protocols/http2/types_linux.go index fe65b0d1b4733b..874fb78e16dad7 100644 --- a/pkg/network/protocols/http2/types_linux.go +++ b/pkg/network/protocols/http2/types_linux.go @@ -75,15 +75,18 @@ type EbpfTx struct { Stream HTTP2Stream } type HTTP2Telemetry struct { - Request_seen uint64 - Response_seen uint64 - End_of_stream uint64 - End_of_stream_rst uint64 - Literal_value_exceeds_frame uint64 - Exceeding_max_interesting_frames uint64 - Exceeding_max_frames_to_filter uint64 - Path_size_bucket [8]uint64 - Fragmented_frame_count uint64 + Request_seen uint64 + Response_seen uint64 + End_of_stream uint64 + End_of_stream_rst uint64 + Literal_value_exceeds_frame uint64 + Exceeding_max_interesting_frames uint64 + Exceeding_max_frames_to_filter uint64 + Path_size_bucket [8]uint64 + Fragmented_frame_count_headers uint64 + Fragmented_frame_count_rst uint64 + Fragmented_frame_count_data_eos uint64 + Fragmented_frame_count_headers_eos uint64 } type StaticTableEnumValue = uint8 diff --git a/pkg/network/usm/usm_http2_monitor_test.go b/pkg/network/usm/usm_http2_monitor_test.go index 56361862583cec..728cbf7f0d9080 100644 --- a/pkg/network/usm/usm_http2_monitor_test.go +++ b/pkg/network/usm/usm_http2_monitor_test.go @@ -1201,11 +1201,61 @@ func (s *usmHTTP2Suite) TestFrameSplitIntoMultiplePackets() { require.NoError(t, proxy.WaitForConnectionReady(unixPath)) tests := []struct { - name string - messageBuilder func() [][]byte + name string + messageBuilder func() [][]byte + fragmentedFrameCountRST uint64 + fragmentedHeadersFrameEOSCount uint64 + fragmentedHeadersFrameCount uint64 + fragmentedDataFrameEOSCount uint64 }{ { - name: "validate message split into 2 tcp segments", + name: "validate fragmented headers frame with eos", + // The purpose of this test is to validate that we cannot handle reassembled tcp segments. + messageBuilder: func() [][]byte { + const endStream = true + a := newFramer(). + writeHeaders(t, 1, usmhttp2.HeadersFrameOptions{Headers: testHeaders(), EndStream: endStream}). + writeData(t, 1, true, emptyBody).bytes() + return [][]byte{ + // we split it in 10 bytes in order to split the payload itself. + a[:10], + a[10:], + } + }, + fragmentedHeadersFrameEOSCount: 1, + }, + { + name: "validate fragmented data frame with eos", + // The purpose of this test is to validate that we cannot handle reassembled tcp segments. + messageBuilder: func() [][]byte { + a := newFramer(). + writeHeaders(t, 1, usmhttp2.HeadersFrameOptions{Headers: testHeaders()}).bytes() + b := newFramer().writeData(t, 1, true, []byte("test1234")).bytes() + return [][]byte{ + // we split it in 10 bytes in order to split the payload itself. + a, + b[:10], + } + }, + fragmentedDataFrameEOSCount: 1, + }, + { + name: "validate fragmented rst frame", + // The purpose of this test is to validate that we cannot handle reassembled tcp segments. + messageBuilder: func() [][]byte { + a := newFramer(). + writeHeaders(t, 1, usmhttp2.HeadersFrameOptions{Headers: testHeaders()}).bytes() + b := newFramer().writeRSTStream(t, 1, 1).bytes() + return [][]byte{ + // we split it in 10 bytes in order to split the payload itself. + a, + b[:10], + } + }, + fragmentedFrameCountRST: 1, + }, + { + name: "validate fragmented headers frame", // The purpose of this test is to validate that we cannot handle reassembled tcp segments. messageBuilder: func() [][]byte { a := newFramer(). @@ -1216,8 +1266,8 @@ func (s *usmHTTP2Suite) TestFrameSplitIntoMultiplePackets() { a[:10], a[10:], } - }, + fragmentedHeadersFrameCount: 1, }, } for _, tt := range tests { @@ -1235,7 +1285,10 @@ func (s *usmHTTP2Suite) TestFrameSplitIntoMultiplePackets() { assert.Eventually(t, func() bool { telemetry, err := getHTTP2KernelTelemetry(usmMonitor, s.isTLS) require.NoError(t, err, "could not get http2 telemetry") - require.Greater(t, telemetry.Fragmented_frame_count, uint64(0), "expected to see frames split count > 0") + require.Equal(t, telemetry.Fragmented_frame_count_data_eos, tt.fragmentedDataFrameEOSCount, "expected to see %d fragmented data eos frames and got %d", tt.fragmentedDataFrameEOSCount, telemetry.Fragmented_frame_count_data_eos) + require.Equal(t, telemetry.Fragmented_frame_count_headers_eos, tt.fragmentedHeadersFrameEOSCount, "expected to see %d fragmented headers eos frames and got %d", tt.fragmentedHeadersFrameEOSCount, telemetry.Fragmented_frame_count_headers_eos) + require.Equal(t, telemetry.Fragmented_frame_count_rst, tt.fragmentedFrameCountRST, "expected to see %d fragmented rst frames and got %d", tt.fragmentedFrameCountRST, telemetry.Fragmented_frame_count_rst) + require.Equal(t, telemetry.Fragmented_frame_count_headers, tt.fragmentedHeadersFrameCount, "expected to see %d fragmented headers frames and got %d", tt.fragmentedHeadersFrameCount, telemetry.Fragmented_frame_count_headers) return true }, time.Second*5, time.Millisecond*100) @@ -1661,6 +1714,16 @@ func (f *framer) writeHeaders(t *testing.T, streamID uint32, headersFramesOption headersFrame, err := usmhttp2.NewHeadersFrameMessage(headersFramesOptions) require.NoError(t, err, "could not create headers frame") + if headersFramesOptions.EndStream { + require.NoError(t, f.framer.WriteHeaders(http2.HeadersFrameParam{ + StreamID: streamID, + BlockFragment: headersFrame, + EndHeaders: endHeaders, + EndStream: true, + }), "could not write header frames") + return f + } + return f.writeRawHeaders(t, streamID, true, headersFrame) } From 65ffc72d6af9a675d8535966950585ea7957aa08 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Mar 2024 09:16:56 +0000 Subject: [PATCH 106/155] Bump github.com/miekg/dns from 1.1.55 to 1.1.58 (#22250) Bumps [github.com/miekg/dns](https://github.com/miekg/dns) from 1.1.55 to 1.1.58. - [Changelog](https://github.com/miekg/dns/blob/master/Makefile.release) - [Commits](https://github.com/miekg/dns/compare/v1.1.55...v1.1.58) --- updated-dependencies: - dependency-name: github.com/miekg/dns dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 7d3fc533e4e660..50f7f5129739f1 100644 --- a/go.mod +++ b/go.mod @@ -201,7 +201,7 @@ require ( github.com/mailru/easyjson v0.7.7 github.com/mdlayher/netlink v1.6.2 github.com/mholt/archiver/v3 v3.5.1 - github.com/miekg/dns v1.1.55 + github.com/miekg/dns v1.1.58 github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c github.com/moby/sys/mountinfo v0.7.1 github.com/mohae/deepcopy v0.0.0-20170603005431-491d3605edfb diff --git a/go.sum b/go.sum index 03d1757f2135b7..79b29d242ecc99 100644 --- a/go.sum +++ b/go.sum @@ -1350,8 +1350,8 @@ github.com/microsoft/go-rustaudit v0.0.0-20220808201409-204dfee52032/go.mod h1:v github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= -github.com/miekg/dns v1.1.55 h1:GoQ4hpsj0nFLYe+bWiCToyrBEJXkQfOOIvFGFy0lEgo= -github.com/miekg/dns v1.1.55/go.mod h1:uInx36IzPl7FYnDcMeVWxj9byh7DutNykX4G9Sj60FY= +github.com/miekg/dns v1.1.58 h1:ca2Hdkz+cDg/7eNF6V56jjzuZ4aCAE+DbVkILdQWG/4= +github.com/miekg/dns v1.1.58/go.mod h1:Ypv+3b/KadlvW9vJfXOTf300O4UqaHFzFCuHz+rPkBY= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= From 6d50cdf00444570e006d09afd7f8ee39fb150279 Mon Sep 17 00:00:00 2001 From: Sylvain Afchain Date: Mon, 11 Mar 2024 11:17:10 +0100 Subject: [PATCH 107/155] [CWS] add group id to rule def (#23024) --- pkg/security/module/server.go | 9 +++++++-- pkg/security/secl/rules/policy.go | 5 +++++ pkg/security/secl/rules/ruleset.go | 1 + 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/pkg/security/module/server.go b/pkg/security/module/server.go index 7377adfc25c3a1..76673adf0b7cc9 100644 --- a/pkg/security/module/server.go +++ b/pkg/security/module/server.go @@ -325,8 +325,13 @@ func (a *APIServer) SendEvent(rule *rules.Rule, e events.Event, extTagsCb func() // get type tags + container tags if already resolved, see ResolveContainerTags eventTags := e.GetTags() + ruleID := rule.Definition.ID + if rule.Definition.GroupID != "" { + ruleID = rule.Definition.GroupID + } + msg := &pendingMsg{ - ruleID: rule.Definition.ID, + ruleID: ruleID, backendEvent: backendEvent, eventJSON: eventJSON, extTagsCb: extTagsCb, @@ -336,7 +341,7 @@ func (a *APIServer) SendEvent(rule *rules.Rule, e events.Event, extTagsCb func() actionReports: e.GetActionReports(), } - msg.tags = append(msg.tags, "rule_id:"+rule.Definition.ID) + msg.tags = append(msg.tags, "rule_id:"+ruleID) msg.tags = append(msg.tags, rule.Tags...) msg.tags = append(msg.tags, eventTags...) msg.tags = append(msg.tags, common.QueryAccountIDTag()) diff --git a/pkg/security/secl/rules/policy.go b/pkg/security/secl/rules/policy.go index 749574a2708983..50d2c38dc43573 100644 --- a/pkg/security/secl/rules/policy.go +++ b/pkg/security/secl/rules/policy.go @@ -121,6 +121,11 @@ RULES: continue } + if ruleDef.GroupID != "" && !validators.CheckRuleID(ruleDef.GroupID) { + errs = multierror.Append(errs, &ErrRuleLoad{Definition: ruleDef, Err: ErrRuleIDPattern}) + continue + } + if ruleDef.Expression == "" && !ruleDef.Disabled && ruleDef.Combine == "" { errs = multierror.Append(errs, &ErrRuleLoad{Definition: ruleDef, Err: ErrRuleWithoutExpression}) continue diff --git a/pkg/security/secl/rules/ruleset.go b/pkg/security/secl/rules/ruleset.go index 9099388c2a1fa4..db1e16ad969587 100644 --- a/pkg/security/secl/rules/ruleset.go +++ b/pkg/security/secl/rules/ruleset.go @@ -116,6 +116,7 @@ type RuleDefinition struct { Actions []*ActionDefinition `yaml:"actions"` Every time.Duration `yaml:"every"` Silent bool `yaml:"silent"` + GroupID string `yaml:"group_id"` Policy *Policy } From 94d93d71762f23c4b51d127c168aaa4c91706431 Mon Sep 17 00:00:00 2001 From: Paul Cacheux Date: Mon, 11 Mar 2024 11:54:34 +0100 Subject: [PATCH 108/155] [CWS] move `pkg/security/secl` back to a `go 1.21` go mod line (#23595) * allow go modules to require a legacy go mod declaration * handle legacy go mod when updating go * request legacy go mod for `pkg/security/secl` * apply review suggestion --- pkg/security/secl/go.mod | 2 +- tasks/modules.py | 4 +++- tasks/update_go.py | 10 ++++++++-- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/pkg/security/secl/go.mod b/pkg/security/secl/go.mod index 3cef1c3ccbda5d..1d67b13c054965 100644 --- a/pkg/security/secl/go.mod +++ b/pkg/security/secl/go.mod @@ -1,6 +1,6 @@ module github.com/DataDog/datadog-agent/pkg/security/secl -go 1.21.7 +go 1.21 require ( github.com/Masterminds/semver/v3 v3.2.1 diff --git a/tasks/modules.py b/tasks/modules.py index 9b2bf07c138d79..824d1aad4f1682 100644 --- a/tasks/modules.py +++ b/tasks/modules.py @@ -29,6 +29,7 @@ def __init__( independent=False, lint_targets=None, used_by_otel=False, + legacy_go_mod_version=False, ): self.path = path self.targets = targets if targets else ["."] @@ -42,6 +43,7 @@ def __init__( self.importable = importable self.independent = independent self.used_by_otel = used_by_otel + self.legacy_go_mod_version = legacy_go_mod_version self._dependencies = None @@ -200,7 +202,7 @@ def dependency_path(self, agent_version): "pkg/logs/status/statusinterface": GoModule("pkg/logs/status/statusinterface", independent=True), "pkg/logs/status/utils": GoModule("pkg/logs/status/utils", independent=True), "pkg/serializer": GoModule("pkg/serializer", independent=True), - "pkg/security/secl": GoModule("pkg/security/secl", independent=True), + "pkg/security/secl": GoModule("pkg/security/secl", independent=True, legacy_go_mod_version=True), "pkg/status/health": GoModule("pkg/status/health", independent=True), "pkg/remoteconfig/state": GoModule("pkg/remoteconfig/state", independent=True, used_by_otel=True), "pkg/util/cgroups": GoModule( diff --git a/tasks/update_go.py b/tasks/update_go.py index c50adf2a908fa4..dc385cbcba1263 100644 --- a/tasks/update_go.py +++ b/tasks/update_go.py @@ -191,8 +191,14 @@ def _update_go_mods(warn: bool, version: str, include_otel_modules: bool, dry_ru # to allow them to keep using the modules continue mod_file = f"./{path}/go.mod" - # $ only matches \n, not \r\n, so we need to use \r?$ to make it work on Windows - _update_file(warn, mod_file, f"^go {PATTERN_MAJOR_MINOR_BUGFIX}\r?$", f"go {version}", dry_run=dry_run) + + if module.legacy_go_mod_version: + major_minor = _get_major_minor_version(version) + # $ only matches \n, not \r\n, so we need to use \r?$ to make it work on Windows + _update_file(warn, mod_file, f"^go {PATTERN_MAJOR_MINOR}\r?$", f"go {major_minor}", dry_run=dry_run) + else: + # $ only matches \n, not \r\n, so we need to use \r?$ to make it work on Windows + _update_file(warn, mod_file, f"^go {PATTERN_MAJOR_MINOR_BUGFIX}\r?$", f"go {version}", dry_run=dry_run) def _create_releasenote(ctx: Context, version: str): From 51daf04867d1e2f1f563b02cc8b711313b3ba4f2 Mon Sep 17 00:00:00 2001 From: Adel Haj Hassan <41540817+adel121@users.noreply.github.com> Date: Mon, 11 Mar 2024 12:02:55 +0100 Subject: [PATCH 109/155] [CONTINT-3889] add common container registry config for admission controller (#23519) * add common container registry config for admission controller * PR review * PR review --- .../mutate/agent_sidecar/agent_sidecar.go | 13 +++-- .../agent_sidecar/agent_sidecar_test.go | 47 +++++++++++-------- .../auto_instrumentation.go | 2 +- .../auto_instrumentation_test.go | 19 +++++++- .../admission/mutate/common/common.go | 11 +++++ .../cwsinstrumentation/cws_instrumentation.go | 3 +- .../cws_instrumentation_test.go | 19 +++++--- pkg/config/setup/config.go | 7 +-- 8 files changed, 83 insertions(+), 38 deletions(-) diff --git a/pkg/clusteragent/admission/mutate/agent_sidecar/agent_sidecar.go b/pkg/clusteragent/admission/mutate/agent_sidecar/agent_sidecar.go index 6b1136288f445a..b075ddbc97fdbe 100644 --- a/pkg/clusteragent/admission/mutate/agent_sidecar/agent_sidecar.go +++ b/pkg/clusteragent/admission/mutate/agent_sidecar/agent_sidecar.go @@ -46,12 +46,15 @@ type Webhook struct { operations []admiv1.OperationType namespaceSelector *metav1.LabelSelector objectSelector *metav1.LabelSelector + containerRegistry string } // NewWebhook returns a new Webhook func NewWebhook() *Webhook { nsSelector, objSelector := labelSelectors() + containerRegistry := common.ContainerRegistry("admission_controller.agent_sidecar.container_registry") + return &Webhook{ name: webhookName, isEnabled: config.Datadog.GetBool("admission_controller.agent_sidecar.enabled"), @@ -60,6 +63,7 @@ func NewWebhook() *Webhook { operations: []admiv1.OperationType{admiv1.Create}, namespaceSelector: nsSelector, objectSelector: objSelector, + containerRegistry: containerRegistry, } } @@ -103,10 +107,10 @@ func (w *Webhook) MutateFunc() admission.WebhookFunc { // mutate handles mutating pod requests for the agentsidecar webhook func (w *Webhook) mutate(request *admission.MutateRequest) ([]byte, error) { - return common.Mutate(request.Raw, request.Namespace, injectAgentSidecar, request.DynamicClient) + return common.Mutate(request.Raw, request.Namespace, w.injectAgentSidecar, request.DynamicClient) } -func injectAgentSidecar(pod *corev1.Pod, _ string, _ dynamic.Interface) error { +func (w *Webhook) injectAgentSidecar(pod *corev1.Pod, _ string, _ dynamic.Interface) error { if pod == nil { return errors.New("can't inject agent sidecar into nil pod") } @@ -118,7 +122,7 @@ func injectAgentSidecar(pod *corev1.Pod, _ string, _ dynamic.Interface) error { } } - agentSidecarContainer := getDefaultSidecarTemplate() + agentSidecarContainer := getDefaultSidecarTemplate(w.containerRegistry) err := applyProviderOverrides(agentSidecarContainer) if err != nil { @@ -135,13 +139,12 @@ func injectAgentSidecar(pod *corev1.Pod, _ string, _ dynamic.Interface) error { return nil } -func getDefaultSidecarTemplate() *corev1.Container { +func getDefaultSidecarTemplate(containerRegistry string) *corev1.Container { ddSite := os.Getenv("DD_SITE") if ddSite == "" { ddSite = config.DefaultSite } - containerRegistry := config.Datadog.GetString("admission_controller.agent_sidecar.container_registry") imageName := config.Datadog.GetString("admission_controller.agent_sidecar.image_name") imageTag := config.Datadog.GetString("admission_controller.agent_sidecar.image_tag") diff --git a/pkg/clusteragent/admission/mutate/agent_sidecar/agent_sidecar_test.go b/pkg/clusteragent/admission/mutate/agent_sidecar/agent_sidecar_test.go index dd2a805e37c325..1ddd3e250455f7 100644 --- a/pkg/clusteragent/admission/mutate/agent_sidecar/agent_sidecar_test.go +++ b/pkg/clusteragent/admission/mutate/agent_sidecar/agent_sidecar_test.go @@ -19,9 +19,9 @@ import ( "testing" ) -func TestInjectAgentSidecar(t *testing.T) { - mockConfig := config.Mock(t) +const commonRegistry = "gcr.io/datadoghq" +func TestInjectAgentSidecar(t *testing.T) { tests := []struct { Name string Pod *corev1.Pod @@ -61,7 +61,7 @@ func TestInjectAgentSidecar(t *testing.T) { Spec: corev1.PodSpec{ Containers: []corev1.Container{ {Name: "container-name"}, - *getDefaultSidecarTemplate(), + *getDefaultSidecarTemplate(commonRegistry), }, }, } @@ -106,7 +106,7 @@ func TestInjectAgentSidecar(t *testing.T) { Spec: corev1.PodSpec{ Containers: []corev1.Container{ {Name: "container-name"}, - *getDefaultSidecarTemplate(), + *getDefaultSidecarTemplate(commonRegistry), }, }, }, @@ -121,7 +121,7 @@ func TestInjectAgentSidecar(t *testing.T) { Spec: corev1.PodSpec{ Containers: []corev1.Container{ {Name: "container-name"}, - *getDefaultSidecarTemplate(), + *getDefaultSidecarTemplate(commonRegistry), }, }, } @@ -143,7 +143,7 @@ func TestInjectAgentSidecar(t *testing.T) { profilesJSON: "[]", ExpectError: false, ExpectedPodAfterInjection: func() *corev1.Pod { - sidecar := *getDefaultSidecarTemplate() + sidecar := *getDefaultSidecarTemplate(commonRegistry) withEnvOverrides(&sidecar, corev1.EnvVar{ Name: "DD_EKS_FARGATE", Value: "true", @@ -193,7 +193,7 @@ func TestInjectAgentSidecar(t *testing.T) { }]`, ExpectError: false, ExpectedPodAfterInjection: func() *corev1.Pod { - sidecar := *getDefaultSidecarTemplate() + sidecar := *getDefaultSidecarTemplate(commonRegistry) withEnvOverrides(&sidecar, corev1.EnvVar{ Name: "DD_EKS_FARGATE", @@ -225,10 +225,13 @@ func TestInjectAgentSidecar(t *testing.T) { for _, test := range tests { t.Run(test.Name, func(tt *testing.T) { + mockConfig := config.Mock(t) mockConfig.SetWithoutSource("admission_controller.agent_sidecar.provider", test.provider) mockConfig.SetWithoutSource("admission_controller.agent_sidecar.profiles", test.profilesJSON) - err := injectAgentSidecar(test.Pod, "", nil) + webhook := NewWebhook() + + err := webhook.injectAgentSidecar(test.Pod, "", nil) if test.ExpectError { assert.Error(tt, err, "expected non-nil error to be returned") @@ -257,21 +260,23 @@ func TestInjectAgentSidecar(t *testing.T) { } func TestDefaultSidecarTemplateAgentImage(t *testing.T) { - mockConfig := config.Mock(t) - tests := []struct { - name string - setConfig func() - expectedImage string + name string + setConfig func() + containerRegistry string + expectedImage string }{ { - name: "no configuration set", - setConfig: func() {}, - expectedImage: "gcr.io/datadoghq/agent:latest", + name: "no configuration set", + setConfig: func() {}, + containerRegistry: commonRegistry, + expectedImage: fmt.Sprintf("%s/agent:latest", commonRegistry), }, { - name: "setting custom registry, image and tag", + name: "setting custom registry, image and tag", + containerRegistry: "my-registry", setConfig: func() { + mockConfig := config.Mock(t) mockConfig.SetWithoutSource("admission_controller.agent_sidecar.container_registry", "my-registry") mockConfig.SetWithoutSource("admission_controller.agent_sidecar.image_name", "my-image") mockConfig.SetWithoutSource("admission_controller.agent_sidecar.image_tag", "my-tag") @@ -283,14 +288,13 @@ func TestDefaultSidecarTemplateAgentImage(t *testing.T) { for _, test := range tests { t.Run(test.name, func(tt *testing.T) { test.setConfig() - sidecar := getDefaultSidecarTemplate() + sidecar := getDefaultSidecarTemplate(test.containerRegistry) assert.Equal(tt, test.expectedImage, sidecar.Image) }) } } func TestDefaultSidecarTemplateClusterAgentEnvVars(t *testing.T) { - mockConfig := config.Mock(t) tests := []struct { name string @@ -301,6 +305,7 @@ func TestDefaultSidecarTemplateClusterAgentEnvVars(t *testing.T) { { name: "cluster agent not enabled", setConfig: func() { + mockConfig := config.Mock(t) mockConfig.SetWithoutSource("admission_controller.agent_sidecar.cluster_agent.enabled", false) }, unexpectedEnvVars: []string{ @@ -313,6 +318,7 @@ func TestDefaultSidecarTemplateClusterAgentEnvVars(t *testing.T) { { name: "cluster agent enabled with default values", setConfig: func() { + mockConfig := config.Mock(t) mockConfig.SetWithoutSource("admission_controller.agent_sidecar.cluster_agent.enabled", true) }, expectedEnvVars: []corev1.EnvVar{ @@ -344,6 +350,7 @@ func TestDefaultSidecarTemplateClusterAgentEnvVars(t *testing.T) { { name: "cluster agent enabled with custom values", setConfig: func() { + mockConfig := config.Mock(t) mockConfig.SetWithoutSource("admission_controller.agent_sidecar.cluster_agent.enabled", true) mockConfig.SetWithoutSource("cluster_agent.cmd_port", 12345) mockConfig.SetWithoutSource("cluster_agent.kubernetes_service_name", "test-service-name") @@ -379,7 +386,7 @@ func TestDefaultSidecarTemplateClusterAgentEnvVars(t *testing.T) { for _, test := range tests { t.Run(test.name, func(tt *testing.T) { test.setConfig() - sidecar := getDefaultSidecarTemplate() + sidecar := getDefaultSidecarTemplate(commonRegistry) envVarsMap := make(map[string]corev1.EnvVar) for _, envVar := range sidecar.Env { envVarsMap[envVar.Name] = envVar diff --git a/pkg/clusteragent/admission/mutate/autoinstrumentation/auto_instrumentation.go b/pkg/clusteragent/admission/mutate/autoinstrumentation/auto_instrumentation.go index 2f855a6225cbb7..3d9c469a2e647d 100644 --- a/pkg/clusteragent/admission/mutate/autoinstrumentation/auto_instrumentation.go +++ b/pkg/clusteragent/admission/mutate/autoinstrumentation/auto_instrumentation.go @@ -153,7 +153,7 @@ func NewWebhook() (*Webhook, error) { return nil, err } - containerRegistry := config.Datadog.GetString("admission_controller.auto_instrumentation.container_registry") + containerRegistry := mutatecommon.ContainerRegistry("admission_controller.auto_instrumentation.container_registry") return &Webhook{ name: webhookName, diff --git a/pkg/clusteragent/admission/mutate/autoinstrumentation/auto_instrumentation_test.go b/pkg/clusteragent/admission/mutate/autoinstrumentation/auto_instrumentation_test.go index 44ab5734669719..02fee88377094b 100644 --- a/pkg/clusteragent/admission/mutate/autoinstrumentation/auto_instrumentation_test.go +++ b/pkg/clusteragent/admission/mutate/autoinstrumentation/auto_instrumentation_test.go @@ -28,6 +28,8 @@ import ( "github.com/DataDog/datadog-agent/pkg/languagedetection/util" ) +const commonRegistry = "gcr.io/datadoghq" + func TestInjectAutoInstruConfig(t *testing.T) { tests := []struct { name string @@ -310,6 +312,17 @@ func TestExtractLibInfo(t *testing.T) { }, }, }, + { + name: "java from common registry", + pod: common.FakePodWithAnnotation("admission.datadoghq.com/java-lib.version", "v1"), + containerRegistry: "", + expectedLibsToInject: []libInfo{ + { + lang: "java", + image: fmt.Sprintf("%s/dd-lib-java-init:v1", commonRegistry), + }, + }, + }, { name: "js", pod: common.FakePodWithAnnotation("admission.datadoghq.com/js-lib.version", "v1"), @@ -572,7 +585,11 @@ func TestExtractLibInfo(t *testing.T) { t.Run(tt.name, func(t *testing.T) { mockConfig = config.Mock(t) mockConfig.SetWithoutSource("admission_controller.mutate_unlabelled", true) - mockConfig.SetWithoutSource("admission_controller.auto_instrumentation.container_registry", tt.containerRegistry) + mockConfig.SetWithoutSource("admission_controller.container_registry", commonRegistry) + if tt.containerRegistry != "" { + mockConfig.SetWithoutSource("admission_controller.auto_instrumentation.container_registry", tt.containerRegistry) + } + if tt.setupConfig != nil { tt.setupConfig() } diff --git a/pkg/clusteragent/admission/mutate/common/common.go b/pkg/clusteragent/admission/mutate/common/common.go index 67f94f6f85d290..b634749dc434ea 100644 --- a/pkg/clusteragent/admission/mutate/common/common.go +++ b/pkg/clusteragent/admission/mutate/common/common.go @@ -175,3 +175,14 @@ func ShouldMutatePod(pod *corev1.Pod) bool { return config.Datadog.GetBool("admission_controller.mutate_unlabelled") } + +// ContainerRegistry gets the container registry config using the specified +// config option, and falls back to the default container registry if no webhook- +// specific container registry is set. +func ContainerRegistry(specificConfigOpt string) string { + if config.Datadog.IsSet(specificConfigOpt) { + return config.Datadog.GetString(specificConfigOpt) + } + + return config.Datadog.GetString("admission_controller.container_registry") +} diff --git a/pkg/clusteragent/admission/mutate/cwsinstrumentation/cws_instrumentation.go b/pkg/clusteragent/admission/mutate/cwsinstrumentation/cws_instrumentation.go index 6061ea0d2b3822..d5c0dadeb6ea07 100644 --- a/pkg/clusteragent/admission/mutate/cwsinstrumentation/cws_instrumentation.go +++ b/pkg/clusteragent/admission/mutate/cwsinstrumentation/cws_instrumentation.go @@ -233,7 +233,8 @@ func NewCWSInstrumentation() (*CWSInstrumentation, error) { // Parse init container image cwsInjectorImageName := config.Datadog.GetString("admission_controller.cws_instrumentation.image_name") cwsInjectorImageTag := config.Datadog.GetString("admission_controller.cws_instrumentation.image_tag") - cwsInjectorContainerRegistry := config.Datadog.GetString("admission_controller.cws_instrumentation.container_registry") + + cwsInjectorContainerRegistry := common.ContainerRegistry("admission_controller.cws_instrumentation.container_registry") if len(cwsInjectorImageName) == 0 { return nil, fmt.Errorf("can't initialize CWS Instrumentation without an image_name") diff --git a/pkg/clusteragent/admission/mutate/cwsinstrumentation/cws_instrumentation_test.go b/pkg/clusteragent/admission/mutate/cwsinstrumentation/cws_instrumentation_test.go index 212973943cc5d6..ed715743a3454d 100644 --- a/pkg/clusteragent/admission/mutate/cwsinstrumentation/cws_instrumentation_test.go +++ b/pkg/clusteragent/admission/mutate/cwsinstrumentation/cws_instrumentation_test.go @@ -445,6 +445,8 @@ func Test_injectCWSCommandInstrumentation(t *testing.T) { } func Test_injectCWSPodInstrumentation(t *testing.T) { + commonRegistry := "gcr.io/datadoghq" + type args struct { pod *corev1.Pod ns string @@ -457,7 +459,6 @@ func Test_injectCWSPodInstrumentation(t *testing.T) { cwsInjectorImageTag string cwsInjectorContainerRegistry string } - mockConfig := config.Mock(t) tests := []struct { name string args args @@ -490,7 +491,7 @@ func Test_injectCWSPodInstrumentation(t *testing.T) { }, expectedInitContainer: corev1.Container{ Name: cwsInjectorInitContainerName, - Image: "my-image:latest", + Image: fmt.Sprintf("%s/my-image:latest", commonRegistry), Command: []string{"/cws-instrumentation", "setup", "--cws-volume-mount", cwsMountPath}, VolumeMounts: []corev1.VolumeMount{ { @@ -513,7 +514,7 @@ func Test_injectCWSPodInstrumentation(t *testing.T) { }, expectedInitContainer: corev1.Container{ Name: cwsInjectorInitContainerName, - Image: "my-image:my-tag", + Image: fmt.Sprintf("%s/my-image:my-tag", commonRegistry), Command: []string{"/cws-instrumentation", "setup", "--cws-volume-mount", cwsMountPath}, VolumeMounts: []corev1.VolumeMount{ { @@ -570,7 +571,7 @@ func Test_injectCWSPodInstrumentation(t *testing.T) { }, expectedInitContainer: corev1.Container{ Name: cwsInjectorInitContainerName, - Image: "my-image:latest", + Image: fmt.Sprintf("%s/my-image:latest", commonRegistry), Command: []string{"/cws-instrumentation", "setup", "--cws-volume-mount", cwsMountPath}, VolumeMounts: []corev1.VolumeMount{ { @@ -630,7 +631,7 @@ func Test_injectCWSPodInstrumentation(t *testing.T) { }, expectedInitContainer: corev1.Container{ Name: cwsInjectorInitContainerName, - Image: "my-image:latest", + Image: fmt.Sprintf("%s/my-image:latest", commonRegistry), Command: []string{"/cws-instrumentation", "setup", "--cws-volume-mount", cwsMountPath}, VolumeMounts: []corev1.VolumeMount{ { @@ -670,7 +671,7 @@ func Test_injectCWSPodInstrumentation(t *testing.T) { }, expectedInitContainer: corev1.Container{ Name: cwsInjectorInitContainerName, - Image: "my-image:latest", + Image: fmt.Sprintf("%s/my-image:latest", commonRegistry), Command: []string{"/cws-instrumentation", "setup", "--cws-volume-mount", cwsMountPath}, VolumeMounts: []corev1.VolumeMount{ { @@ -684,11 +685,15 @@ func Test_injectCWSPodInstrumentation(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { + mockConfig := config.Mock(t) mockConfig.SetWithoutSource("admission_controller.cws_instrumentation.include", tt.args.include) mockConfig.SetWithoutSource("admission_controller.cws_instrumentation.exclude", tt.args.exclude) mockConfig.SetWithoutSource("admission_controller.cws_instrumentation.image_name", tt.args.cwsInjectorImageName) mockConfig.SetWithoutSource("admission_controller.cws_instrumentation.image_tag", tt.args.cwsInjectorImageTag) - mockConfig.SetWithoutSource("admission_controller.cws_instrumentation.container_registry", tt.args.cwsInjectorContainerRegistry) + mockConfig.SetWithoutSource("admission_controller.container_registry", commonRegistry) + if tt.args.cwsInjectorContainerRegistry != "" { + mockConfig.SetWithoutSource("admission_controller.cws_instrumentation.container_registry", tt.args.cwsInjectorContainerRegistry) + } mockConfig.SetWithoutSource("admission_controller.cws_instrumentation.init_resources.cpu", "") mockConfig.SetWithoutSource("admission_controller.cws_instrumentation.init_resources.memory", "") diff --git a/pkg/config/setup/config.go b/pkg/config/setup/config.go index 11b24e142621b3..253af105ad534f 100644 --- a/pkg/config/setup/config.go +++ b/pkg/config/setup/config.go @@ -1055,6 +1055,7 @@ func InitConfig(config pkgconfigmodel.Config) { config.BindEnvAndSetDefault("admission_controller.enabled", false) config.BindEnvAndSetDefault("admission_controller.mutate_unlabelled", false) config.BindEnvAndSetDefault("admission_controller.port", 8000) + config.BindEnvAndSetDefault("admission_controller.container_registry", "gcr.io/datadoghq") config.BindEnvAndSetDefault("admission_controller.timeout_seconds", 10) // in seconds (see kubernetes/kubernetes#71508) config.BindEnvAndSetDefault("admission_controller.service_name", "datadog-admission-controller") config.BindEnvAndSetDefault("admission_controller.certificate.validity_bound", 365*24) // validity bound of the certificate created by the controller (in hours, default 1 year) @@ -1077,7 +1078,7 @@ func InitConfig(config pkgconfigmodel.Config) { config.BindEnvAndSetDefault("admission_controller.add_aks_selectors", false) // adds in the webhook some selectors that are required in AKS config.BindEnvAndSetDefault("admission_controller.auto_instrumentation.enabled", true) config.BindEnvAndSetDefault("admission_controller.auto_instrumentation.endpoint", "/injectlib") - config.BindEnvAndSetDefault("admission_controller.auto_instrumentation.container_registry", "gcr.io/datadoghq") + config.BindEnv("admission_controller.auto_instrumentation.container_registry") config.BindEnvAndSetDefault("admission_controller.auto_instrumentation.patcher.enabled", false) config.BindEnvAndSetDefault("admission_controller.auto_instrumentation.patcher.fallback_to_file_provider", false) // to be enabled only in e2e tests config.BindEnvAndSetDefault("admission_controller.auto_instrumentation.patcher.file_provider_path", "/etc/datadog-agent/patch/auto-instru.json") // to be used only in e2e tests @@ -1090,7 +1091,7 @@ func InitConfig(config pkgconfigmodel.Config) { config.BindEnvAndSetDefault("admission_controller.cws_instrumentation.include", []string{}) config.BindEnvAndSetDefault("admission_controller.cws_instrumentation.exclude", []string{}) config.BindEnvAndSetDefault("admission_controller.cws_instrumentation.mutate_unlabelled", true) - config.BindEnvAndSetDefault("admission_controller.cws_instrumentation.container_registry", "gcr.io/datadoghq") + config.BindEnv("admission_controller.cws_instrumentation.container_registry") config.BindEnvAndSetDefault("admission_controller.cws_instrumentation.image_name", "cws-instrumentation") config.BindEnvAndSetDefault("admission_controller.cws_instrumentation.image_tag", "latest") config.BindEnv("admission_controller.cws_instrumentation.init_resources.cpu") @@ -1102,7 +1103,7 @@ func InitConfig(config pkgconfigmodel.Config) { config.BindEnvAndSetDefault("admission_controller.agent_sidecar.selectors", "[]") // Should be able to parse it to a list of env vars and resource limits config.BindEnvAndSetDefault("admission_controller.agent_sidecar.profiles", "[]") - config.BindEnvAndSetDefault("admission_controller.agent_sidecar.container_registry", "gcr.io/datadoghq") + config.BindEnv("admission_controller.agent_sidecar.container_registry") config.BindEnvAndSetDefault("admission_controller.agent_sidecar.image_name", "agent") config.BindEnvAndSetDefault("admission_controller.agent_sidecar.image_tag", "latest") config.BindEnvAndSetDefault("admission_controller.agent_sidecar.cluster_agent.enabled", "true") From af85149c182d2bed922a86577e47b11267704f95 Mon Sep 17 00:00:00 2001 From: Alexandre Menasria <47357713+amenasria@users.noreply.github.com> Date: Mon, 11 Mar 2024 12:11:24 +0100 Subject: [PATCH 110/155] [Doc] Better backport/branch label documentation (#23530) * [Doc] Better backport/branch label documentation * Update docs/dev/contributing.md Co-authored-by: May Lee --------- Co-authored-by: May Lee --- docs/dev/contributing.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/dev/contributing.md b/docs/dev/contributing.md index 1c75438b2e07ad..8d17c31525ed38 100644 --- a/docs/dev/contributing.md +++ b/docs/dev/contributing.md @@ -293,6 +293,8 @@ labels that can be use: - `backport/`: Add this label to automatically create a PR against the `` branch with your backported changes. The backport PR creation is triggered: - When a PR with the label is merged - When an already-merged PR gets the label + + If there is a conflict, the bot prompts you with a list of instructions to follow ([example](https://github.com/DataDog/datadog-agent/pull/23316#issuecomment-1973207164)) to manually backport your PR. - `qa/done` or `qa/no-code-change`: used to skip the QA week: - `qa/done` label is recommended in case of code changes **and** manual / automated qa done before merge. - `qa/no-code-change` is recommended if there's no code changes in the Agent binary code. From 0d9cc41189acc1d11dff7232991508cbd5a1e2b3 Mon Sep 17 00:00:00 2001 From: Pierre Gimalac Date: Mon, 11 Mar 2024 12:22:26 +0100 Subject: [PATCH 111/155] feat: make config component writable (#23531) --- comp/core/config/component.go | 8 +++----- comp/core/config/component_mock.go | 5 ++--- comp/core/config/config.go | 7 ++----- comp/core/config/config_test.go | 4 ++-- 4 files changed, 9 insertions(+), 15 deletions(-) diff --git a/comp/core/config/component.go b/comp/core/config/component.go index 4b1f6a91b52200..43a0d8f202da4e 100644 --- a/comp/core/config/component.go +++ b/comp/core/config/component.go @@ -16,9 +16,10 @@ package config import ( + "go.uber.org/fx" + pkgconfigmodel "github.com/DataDog/datadog-agent/pkg/config/model" "github.com/DataDog/datadog-agent/pkg/util/fxutil" - "go.uber.org/fx" ) // team: agent-shared-components @@ -28,13 +29,10 @@ type LogConfig pkgconfigmodel.Reader // Component is the component type. type Component interface { - pkgconfigmodel.Reader + pkgconfigmodel.ReaderWriter // Warnings returns config warnings collected during setup. Warnings() *pkgconfigmodel.Warnings - - // Object returns wrapped config - Object() pkgconfigmodel.Reader } // Module defines the fx options for this component. diff --git a/comp/core/config/component_mock.go b/comp/core/config/component_mock.go index 0819dca0169fc7..37fae0382acee3 100644 --- a/comp/core/config/component_mock.go +++ b/comp/core/config/component_mock.go @@ -20,15 +20,14 @@ package config import ( - pkgconfigmodel "github.com/DataDog/datadog-agent/pkg/config/model" - "github.com/DataDog/datadog-agent/pkg/util/fxutil" "go.uber.org/fx" + + "github.com/DataDog/datadog-agent/pkg/util/fxutil" ) // Mock implements mock-specific methods. type Mock interface { Component - pkgconfigmodel.Writer } // MockModule defines the fx options for the mock component. diff --git a/comp/core/config/config.go b/comp/core/config/config.go index 76d24398f48a3e..75a5e5ef665c81 100644 --- a/comp/core/config/config.go +++ b/comp/core/config/config.go @@ -9,10 +9,11 @@ import ( "os" "strings" + "go.uber.org/fx" + "github.com/DataDog/datadog-agent/comp/core/secrets" pkgconfigmodel "github.com/DataDog/datadog-agent/pkg/config/model" pkgconfigsetup "github.com/DataDog/datadog-agent/pkg/config/setup" - "go.uber.org/fx" ) // Reader is a subset of Config that only allows reading of configuration @@ -98,7 +99,3 @@ func newConfig(deps dependencies) (Component, error) { func (c *cfg) Warnings() *pkgconfigmodel.Warnings { return c.warnings } - -func (c *cfg) Object() pkgconfigmodel.Reader { - return c.Config -} diff --git a/comp/core/config/config_test.go b/comp/core/config/config_test.go index bbb1cde5cba570..940bfb4d1f54a4 100644 --- a/comp/core/config/config_test.go +++ b/comp/core/config/config_test.go @@ -56,8 +56,8 @@ func TestMockConfig(t *testing.T) { // but defaults are set require.Equal(t, "localhost", config.GetString("cmd_host")) - // values can also be set by the mock (config.Writer) - config.(Mock).Set("app_key", "newvalue", model.SourceAgentRuntime) + // values can also be set + config.Set("app_key", "newvalue", model.SourceAgentRuntime) require.Equal(t, "newvalue", config.GetString("app_key")) } From d6a7e7927b96c58b1ca37d5a45453a1a457e3958 Mon Sep 17 00:00:00 2001 From: Pierre Gimalac Date: Mon, 11 Mar 2024 12:32:37 +0100 Subject: [PATCH 112/155] Add missing go mod in modules list (#23541) * fix: add missing go mod in modules list * fix: update Go version for added modules * fix: handle no go.sum file, create empty file in module --- internal/tools/independent-lint/go.mod | 2 +- internal/tools/modformatter/go.mod | 2 +- internal/tools/modformatter/go.sum | 4 ++++ internal/tools/modformatter/modformatter.go | 5 +++-- pkg/tagger/docs.go | 7 +++++++ tasks/go.py | 8 +++++++- tasks/modules.py | 5 +++++ 7 files changed, 28 insertions(+), 5 deletions(-) create mode 100644 internal/tools/modformatter/go.sum create mode 100644 pkg/tagger/docs.go diff --git a/internal/tools/independent-lint/go.mod b/internal/tools/independent-lint/go.mod index 6aced20e33891c..c61878de1d780d 100644 --- a/internal/tools/independent-lint/go.mod +++ b/internal/tools/independent-lint/go.mod @@ -1,6 +1,6 @@ module github.com/DataDog/datadog-agent/cmd/independent-lint -go 1.21 +go 1.21.7 require golang.org/x/mod v0.5.1 diff --git a/internal/tools/modformatter/go.mod b/internal/tools/modformatter/go.mod index 3a48e4d0557542..69a2e6e2f83e98 100644 --- a/internal/tools/modformatter/go.mod +++ b/internal/tools/modformatter/go.mod @@ -1,6 +1,6 @@ module github.com/DataDog/datadog-agent/internal/tools/modformatter -go 1.20 +go 1.21.7 require golang.org/x/mod v0.5.1 diff --git a/internal/tools/modformatter/go.sum b/internal/tools/modformatter/go.sum new file mode 100644 index 00000000000000..2db7d927f3e596 --- /dev/null +++ b/internal/tools/modformatter/go.sum @@ -0,0 +1,4 @@ +golang.org/x/mod v0.5.1 h1:OJxoQ/rynoF0dcCdI7cLPktw/hR2cueqYfjm43oqK38= +golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898 h1:/atklqdjdhuosWIl6AIbOeHJjicWYPqR9bpxqxYG2pA= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/internal/tools/modformatter/modformatter.go b/internal/tools/modformatter/modformatter.go index 4f70b8d17e51b6..469636416e0348 100644 --- a/internal/tools/modformatter/modformatter.go +++ b/internal/tools/modformatter/modformatter.go @@ -11,12 +11,13 @@ package main import ( "flag" "fmt" - "golang.org/x/mod/modfile" - "golang.org/x/mod/module" "log" "os" "path/filepath" "strings" + + "golang.org/x/mod/modfile" + "golang.org/x/mod/module" ) var ( diff --git a/pkg/tagger/docs.go b/pkg/tagger/docs.go new file mode 100644 index 00000000000000..7fbb2d08296d59 --- /dev/null +++ b/pkg/tagger/docs.go @@ -0,0 +1,7 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +// Package tagger provides some shared logic about the tagger +package tagger diff --git a/tasks/go.py b/tasks/go.py index cec281058f3513..bc856a475ef319 100644 --- a/tasks/go.py +++ b/tasks/go.py @@ -381,7 +381,13 @@ def check_mod_tidy(ctx, test_folder="testmodule"): for mod in DEFAULT_MODULES.values(): with ctx.cd(mod.full_path()): ctx.run("go mod tidy") - res = ctx.run("git diff --exit-code go.mod go.sum", warn=True) + + files = "go.mod" + if os.path.exists(os.path.join(mod.full_path(), "go.sum")): + # if the module has no dependency, no go.sum file will be created + files += " go.sum" + + res = ctx.run(f"git diff --exit-code {files}", warn=True) if res.exited is None or res.exited > 0: errors_found.append(f"go.mod or go.sum for {mod.import_path} module is out of sync") diff --git a/tasks/modules.py b/tasks/modules.py index 824d1aad4f1682..83762326b0967f 100644 --- a/tasks/modules.py +++ b/tasks/modules.py @@ -146,6 +146,10 @@ def dependency_path(self, agent_version): "internal/tools": GoModule("internal/tools", condition=lambda: False, should_tag=False), "internal/tools/proto": GoModule("internal/tools/proto", condition=lambda: False, should_tag=False), "internal/tools/modparser": GoModule("internal/tools/modparser", condition=lambda: False, should_tag=False), + "internal/tools/independent-lint": GoModule( + "internal/tools/independent-lint", condition=lambda: False, should_tag=False + ), + "internal/tools/modformatter": GoModule("internal/tools/modformatter", condition=lambda: False, should_tag=False), "test/e2e/containers/otlp_sender": GoModule( "test/e2e/containers/otlp_sender", condition=lambda: False, should_tag=False ), @@ -162,6 +166,7 @@ def dependency_path(self, agent_version): "pkg/gohai": GoModule("pkg/gohai", independent=True, importable=False), "pkg/proto": GoModule("pkg/proto", independent=True, used_by_otel=True), "pkg/trace": GoModule("pkg/trace", independent=True, used_by_otel=True), + "pkg/tagger": GoModule("pkg/tagger", independent=True), "pkg/tagset": GoModule("pkg/tagset", independent=True), "pkg/metrics": GoModule("pkg/metrics", independent=True), "pkg/telemetry": GoModule("pkg/telemetry", independent=True), From eb187baadf1c716ef8252374336e66f1607a18c9 Mon Sep 17 00:00:00 2001 From: Pedro Lambert Date: Mon, 11 Mar 2024 09:35:57 -0400 Subject: [PATCH 113/155] [usm] Use `ebpf.Modifer` for patching helper calls (#23547) * [usm] Use `ebpf.Modifer` for patching helper calls * Add comment --- pkg/ebpf/helper_call_patcher.go | 11 ++++- pkg/network/protocols/events/configuration.go | 45 ++++++++----------- 2 files changed, 29 insertions(+), 27 deletions(-) diff --git a/pkg/ebpf/helper_call_patcher.go b/pkg/ebpf/helper_call_patcher.go index d7c71abc4a0fa8..1408c0fb887acd 100644 --- a/pkg/ebpf/helper_call_patcher.go +++ b/pkg/ebpf/helper_call_patcher.go @@ -14,7 +14,16 @@ import ( "github.com/cilium/ebpf/asm" ) -var noopIns = asm.Mov.Reg(asm.R1, asm.R1) +// noopIns is used in place of the eBPF helpers we wish to remove from +// the bytecode. +// +// note we're using here the same noop instruction used internally by the +// verifier: +// https://elixir.bootlin.com/linux/v6.7/source/kernel/bpf/verifier.c#L18582 +var noopIns = asm.Instruction{ + OpCode: asm.Ja.Op(asm.ImmSource), + Constant: 0, +} // NewHelperCallRemover provides a `Modifier` that patches eBPF bytecode // such that calls to the functions given by `helpers` are replaced by diff --git a/pkg/network/protocols/events/configuration.go b/pkg/network/protocols/events/configuration.go index ba07fdb5ce4e86..235a59557537a0 100644 --- a/pkg/network/protocols/events/configuration.go +++ b/pkg/network/protocols/events/configuration.go @@ -123,15 +123,6 @@ func eventMapName(proto string) string { return proto + eventsMapSuffix } -// noopInstruction is used for the purposes of eBPF patching (see comments -// below) -// we're using here the same noop instruction used internally by the verifier: -// https://elixir.bootlin.com/linux/v6.7/source/kernel/bpf/verifier.c#L18582 -var noopInstruction = asm.Instruction{ - OpCode: asm.Ja.Op(asm.ImmSource), - Constant: 0, -} - // removeRingBufferHelperCalls is called only in the context of kernels that // don't support ring buffers. our eBPF code looks more or less like the // following: @@ -154,24 +145,26 @@ var noopInstruction = asm.Instruction{ // essentially replace `bpf_ringbuf_output` helper calls by a noop operation so // they don't result in verifier errors even when deadcode elimination fails. func removeRingBufferHelperCalls(m *manager.Manager) { - m.InstructionPatchers = append(m.InstructionPatchers, func(m *manager.Manager) error { - progs, err := m.GetProgramSpecs() - if err != nil { - return err - } - - for _, p := range progs { - iter := p.Instructions.Iterate() - for iter.Next() { - ins := iter.Ins - if ins.IsBuiltinCall() && ins.Constant == int64(asm.FnRingbufOutput) { - *ins = noopInstruction - } - } - } + // TODO: this is not the intended API usage of a `ebpf.Modifier`. + // Once we have access to the `ddebpf.Manager`, add this modifier to its list of + // `EnabledModifiers` and let it control the execution of the callbacks + patcher := ddebpf.NewHelperCallRemover(asm.FnRingbufOutput) + err := patcher.BeforeInit(m, nil) - return nil - }) + if err != nil { + // Our production code is actually loading on all Kernels we test on CI + // (including those that don't support Ring Buffers) *even without + // patching*, presumably due to pruning/dead code elimination. The only + // thing failing to load was actually a small eBPF test program. So we + // added the patching almost as an extra safety layer. + // + // All that to say that even if the patching fails, there's still a good + // chance that the program will succeed to load. If it doesn't,there + // isn't much we can do, and the loading error will bubble up and be + // appropriately handled by the upstream code, which is why we don't do + // anything here. + log.Errorf("error patching eBPF bytecode: %s", err) + } } func alreadySetUp(proto string, m *manager.Manager) bool { From 5a503085a6bcb43a5faca9f3d8dafc9f5e9e077c Mon Sep 17 00:00:00 2001 From: Guy Arbitman Date: Mon, 11 Mar 2024 15:45:30 +0200 Subject: [PATCH 114/155] Update pipeline.py (#23596) --- tasks/pipeline.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tasks/pipeline.py b/tasks/pipeline.py index 3637e604a2173d..342f4a47ef057e 100644 --- a/tasks/pipeline.py +++ b/tasks/pipeline.py @@ -498,7 +498,12 @@ def is_system_probe(owners, files): return False -EMAIL_SLACK_ID_MAP = {"guy20495@gmail.com": "U03LJSCAPK2", "safchain@gmail.com": "U01009CUG9X"} +EMAIL_SLACK_ID_MAP = { + "guy20495@gmail.com": "U03LJSCAPK2", + "safchain@gmail.com": "U01009CUG9X", + "usamasaqib.96@live.com": "U03D807V94J", + "leeavital@gmail.com": "UDG2223C1", +} @task From 8ac563430ec6deea6b1d1d731f0bc0bea0835c6e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Mar 2024 14:21:14 +0000 Subject: [PATCH 115/155] Bump github.com/mdlayher/netlink from 1.6.2 to 1.7.2 (#23614) Bumps [github.com/mdlayher/netlink](https://github.com/mdlayher/netlink) from 1.6.2 to 1.7.2. - [Release notes](https://github.com/mdlayher/netlink/releases) - [Changelog](https://github.com/mdlayher/netlink/blob/main/CHANGELOG.md) - [Commits](https://github.com/mdlayher/netlink/compare/v1.6.2...v1.7.2) --- updated-dependencies: - dependency-name: github.com/mdlayher/netlink dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 6 +++--- go.sum | 15 ++++++--------- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/go.mod b/go.mod index 50f7f5129739f1..1d511602e566db 100644 --- a/go.mod +++ b/go.mod @@ -199,7 +199,7 @@ require ( github.com/lxn/walk v0.0.0-20210112085537-c389da54e794 github.com/lxn/win v0.0.0-20210218163916-a377121e959e github.com/mailru/easyjson v0.7.7 - github.com/mdlayher/netlink v1.6.2 + github.com/mdlayher/netlink v1.7.2 github.com/mholt/archiver/v3 v3.5.1 github.com/miekg/dns v1.1.58 github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c @@ -443,7 +443,7 @@ require ( github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/jonboulle/clockwork v0.3.0 // indirect github.com/josharian/intern v1.0.0 // indirect - github.com/josharian/native v1.0.0 // indirect + github.com/josharian/native v1.1.0 // indirect github.com/justincormack/go-memfd v0.0.0-20170219213707-6e4af0518993 github.com/karrick/godirwalk v1.17.0 // indirect github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect @@ -471,7 +471,7 @@ require ( github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.15 // indirect - github.com/mdlayher/socket v0.2.3 // indirect + github.com/mdlayher/socket v0.4.1 // indirect github.com/microsoft/go-rustaudit v0.0.0-20220808201409-204dfee52032 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect diff --git a/go.sum b/go.sum index 79b29d242ecc99..bd9048bf7f86de 100644 --- a/go.sum +++ b/go.sum @@ -1192,8 +1192,8 @@ github.com/jonboulle/clockwork v0.3.0 h1:9BSCMi8C+0qdApAp4auwX0RkLGUjs956h0EkuQy github.com/jonboulle/clockwork v0.3.0/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= -github.com/josharian/native v1.0.0 h1:Ts/E8zCSEsG17dUqv7joXJFybuMLjQfWE04tsBODTxk= -github.com/josharian/native v1.0.0/go.mod h1:7X/raswPFr05uY3HiLlYeyQntB6OO7E/d2Cu7qoaN2w= +github.com/josharian/native v1.1.0 h1:uuaP0hAbW7Y4l0ZRQ6C9zfb7Mg1mbFKry/xzDAfmtLA= +github.com/josharian/native v1.1.0/go.mod h1:7X/raswPFr05uY3HiLlYeyQntB6OO7E/d2Cu7qoaN2w= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= @@ -1339,10 +1339,10 @@ github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A github.com/mattn/go-sqlite3 v1.14.16 h1:yOQRA0RpS5PFz/oikGwBEqvAWhWg5ufRz4ETLjwpU1Y= github.com/mattn/go-sqlite3 v1.14.16/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/mdlayher/netlink v1.6.2 h1:D2zGSkvYsJ6NreeED3JiVTu1lj2sIYATqSaZlhPzUgQ= -github.com/mdlayher/netlink v1.6.2/go.mod h1:O1HXX2sIWSMJ3Qn1BYZk1yZM+7iMki/uYGGiwGyq/iU= -github.com/mdlayher/socket v0.2.3 h1:XZA2X2TjdOwNoNPVPclRCURoX/hokBY8nkTmRZFEheM= -github.com/mdlayher/socket v0.2.3/go.mod h1:bz12/FozYNH/VbvC3q7TRIK/Y6dH1kCKsXaUeXi/FmY= +github.com/mdlayher/netlink v1.7.2 h1:/UtM3ofJap7Vl4QWCPDGXY8d3GIY2UGSDbK+QWmY8/g= +github.com/mdlayher/netlink v1.7.2/go.mod h1:xraEF7uJbxLhc5fpHL4cPe221LI2bdttWlU+ZGLfQSw= +github.com/mdlayher/socket v0.4.1 h1:eM9y2/jlbs1M615oshPQOHZzj6R6wMT7bX5NPiQvn2U= +github.com/mdlayher/socket v0.4.1/go.mod h1:cAqeGjoufqdxWkD7DkpyS+wcefOtmu5OQ8KuoJGIReA= github.com/mholt/archiver/v3 v3.5.1 h1:rDjOBX9JSF5BvoJGvjqK479aL70qh9DIpZCl+k7Clwo= github.com/mholt/archiver/v3 v3.5.1/go.mod h1:e3dqJ7H78uzsRSEACH1joayhuSyhnonssnDhppzS1L4= github.com/microsoft/go-rustaudit v0.0.0-20220808201409-204dfee52032 h1:TLygBUBxikNJJfLwgm+Qwdgq1FtfV8Uh7bcxRyTzK8s= @@ -2172,7 +2172,6 @@ golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.0.0-20220923203811-8be639271d50/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= @@ -2223,7 +2222,6 @@ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220923202941-7f9b1623fab7/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= @@ -2323,7 +2321,6 @@ golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBc 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-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= From 27afe799cf9421ece90afd69a8212bd3c6399448 Mon Sep 17 00:00:00 2001 From: Guy Arbitman Date: Mon, 11 Mar 2024 16:38:57 +0200 Subject: [PATCH 116/155] usm: Report USM status as part of NPM status (#23598) Reverting a breaking change introduced in 7.48 in https://github.com/DataDog/datadog-agent/pull/18972 --- pkg/network/tracer/tracer.go | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/network/tracer/tracer.go b/pkg/network/tracer/tracer.go index 8c1ab18a5039bc..b95c7d963bf986 100644 --- a/pkg/network/tracer/tracer.go +++ b/pkg/network/tracer/tracer.go @@ -680,6 +680,7 @@ func (t *Tracer) GetStats() (map[string]interface{}, error) { "tracer": map[string]interface{}{ "last_check": t.lastCheck.Load(), }, + "universal_service_monitoring": t.usmMonitor.GetUSMStats(), }, nil } From 670e838f4a960ae346da61ef62c19c9f13ca3825 Mon Sep 17 00:00:00 2001 From: Vincent Whitchurch Date: Mon, 11 Mar 2024 15:47:10 +0100 Subject: [PATCH 117/155] usm: http2: Fix status codes 304 and 404 (#23612) --- pkg/network/protocols/http2/model_linux.go | 4 +++ pkg/network/usm/usm_http2_monitor_test.go | 33 ++++++++++++++++++++-- 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/pkg/network/protocols/http2/model_linux.go b/pkg/network/protocols/http2/model_linux.go index 50318523ac1a7f..bd2ded7ee9c7b6 100644 --- a/pkg/network/protocols/http2/model_linux.go +++ b/pkg/network/protocols/http2/model_linux.go @@ -227,8 +227,12 @@ func (tx *EbpfTx) StatusCode() uint16 { return 204 case K206Value: return 206 + case K304Value: + return 304 case K400Value: return 400 + case K404Value: + return 404 case K500Value: return 500 default: diff --git a/pkg/network/usm/usm_http2_monitor_test.go b/pkg/network/usm/usm_http2_monitor_test.go index 728cbf7f0d9080..cf6d2da18886eb 100644 --- a/pkg/network/usm/usm_http2_monitor_test.go +++ b/pkg/network/usm/usm_http2_monitor_test.go @@ -727,9 +727,10 @@ func (s *usmHTTP2Suite) TestRawTraffic() { }, { name: "validate various status codes", - // The purpose of this test is to verify that we support status codes that do not appear in the static table. + // The purpose of this test is to verify that we support status codes that both do and + // do not appear in the static table. messageBuilder: func() [][]byte { - statusCodes := []int{http.StatusCreated, http.StatusMultipleChoices, http.StatusUnauthorized, http.StatusGatewayTimeout} + statusCodes := []int{200, 201, 204, 206, 300, 304, 400, 401, 404, 500, 504} const iterationsPerStatusCode = 3 messages := make([][]byte, 0, len(statusCodes)*iterationsPerStatusCode) for statusCodeIteration, statusCode := range statusCodes { @@ -744,18 +745,46 @@ func (s *usmHTTP2Suite) TestRawTraffic() { return messages }, expectedEndpoints: map[usmhttp.Key]int{ + { + Path: usmhttp.Path{Content: usmhttp.Interner.GetString("/status/200")}, + Method: usmhttp.MethodPost, + }: 3, { Path: usmhttp.Path{Content: usmhttp.Interner.GetString("/status/201")}, Method: usmhttp.MethodPost, }: 3, + { + Path: usmhttp.Path{Content: usmhttp.Interner.GetString("/status/204")}, + Method: usmhttp.MethodPost, + }: 3, + { + Path: usmhttp.Path{Content: usmhttp.Interner.GetString("/status/206")}, + Method: usmhttp.MethodPost, + }: 3, { Path: usmhttp.Path{Content: usmhttp.Interner.GetString("/status/300")}, Method: usmhttp.MethodPost, }: 3, + { + Path: usmhttp.Path{Content: usmhttp.Interner.GetString("/status/304")}, + Method: usmhttp.MethodPost, + }: 3, + { + Path: usmhttp.Path{Content: usmhttp.Interner.GetString("/status/400")}, + Method: usmhttp.MethodPost, + }: 3, { Path: usmhttp.Path{Content: usmhttp.Interner.GetString("/status/401")}, Method: usmhttp.MethodPost, }: 3, + { + Path: usmhttp.Path{Content: usmhttp.Interner.GetString("/status/404")}, + Method: usmhttp.MethodPost, + }: 3, + { + Path: usmhttp.Path{Content: usmhttp.Interner.GetString("/status/500")}, + Method: usmhttp.MethodPost, + }: 3, { Path: usmhttp.Path{Content: usmhttp.Interner.GetString("/status/504")}, Method: usmhttp.MethodPost, From 26cd8c729cc1e8203f5cdd4d1d95287f4cdac3ea Mon Sep 17 00:00:00 2001 From: Kevin Fairise <132568982+KevinFairise2@users.noreply.github.com> Date: Mon, 11 Mar 2024 15:51:29 +0100 Subject: [PATCH 118/155] Add new teams to ddqa (#22996) * Add new teams to ddqa * Address PR feedback, formatting --------- Co-authored-by: Spencer Gilbert --- .ddqa/config.toml | 190 ++++++++++++---------------------------------- 1 file changed, 49 insertions(+), 141 deletions(-) diff --git a/.ddqa/config.toml b/.ddqa/config.toml index 2a251c3f774250..4acb6e64699f0f 100644 --- a/.ddqa/config.toml +++ b/.ddqa/config.toml @@ -1,22 +1,11 @@ global_config_source = "aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0RhdGFEb2cvZ2l0aHViLW1ldGFkYXRhL21hc3Rlci9qaXJhLnRvbWw=" -qa_statuses = [ - "To Do", - "In Progress", - "Done", -] -ignored_labels = [ - "qa/done", - "qa/no-code-change", -] +qa_statuses = ["To Do", "In Progress", "Done"] +ignored_labels = ["qa/done", "qa/no-code-change"] [teams."Agent Metrics Logs"] jira_project = "AMLII" jira_issue_type = "Task" -jira_statuses = [ - "To Do", - "In Progress", - "Done", -] +jira_statuses = ["To Do", "In Progress", "Done"] github_team = "agent-metrics-logs" github_labels = ["team/agent-metrics-logs"] exclude_members = ["olivielpeau"] @@ -24,50 +13,46 @@ exclude_members = ["olivielpeau"] [teams."Agent Shared Components"] jira_project = "ASCII" jira_issue_type = "QA" -jira_statuses = [ - "To Do", - "In Progress", - "Done", -] +jira_statuses = ["To Do", "In Progress", "Done"] github_team = "agent-shared-components" github_labels = ["team/agent-shared-components"] -exclude_members = [ - "sgnn7", - "truthbk", - "cmourot", -] +exclude_members = ["sgnn7", "truthbk", "cmourot"] -[teams."Agent Platform"] -jira_project = "APL" +[teams."Agent Developer Tools"] +jira_project = "ADXT" jira_issue_type = "QA" -jira_statuses = [ - "To Do", - "In Progress", - "Done", -] -github_team = "agent-platform" -github_labels = ["team/agent-platform"] -exclude_members = ["olivielpeau"] +jira_statuses = ["To Do", "In Progress", "Done"] +github_team = "agent-developer-tools" +github_labels = ["team/agent-developer-tools"] +exclude_members = [] + +[teams."Agent CI Experience"] +jira_project = "ACIX" +jira_issue_type = "QA" +jira_statuses = ["To Do", "In Progress", "Done"] +github_team = "agent-ci-experience" +github_labels = ["team/agent-ci-experience"] +exclude_members = [] + +[teams."Agent Build and Releases Experience"] +jira_project = "BARX" +jira_issue_type = "Task" +jira_statuses = ["To Do", "In Progress", "Done"] +github_team = "agent-build-and-releases" +github_labels = ["team/agent-build-and-releases"] +exclude_members = ["hithwen"] [teams."Universal Service Monitoring"] jira_project = "USMON" jira_issue_type = "Task" -jira_statuses = [ - "To Do", - "In Progress", - "Done", -] +jira_statuses = ["To Do", "In Progress", "Done"] github_team = "universal-service-monitoring" github_labels = ["team/usm"] [teams."Network Device Monitoring"] jira_project = "NDMII" jira_issue_type = "Task" -jira_statuses = [ - "To Do", - "In Progress", - "Done", -] +jira_statuses = ["To Do", "In Progress", "Done"] github_team = "network-device-monitoring" github_labels = ["team/network-device-monitoring"] exclude_members = ["leeavital", "heyronhay"] @@ -75,107 +60,66 @@ exclude_members = ["leeavital", "heyronhay"] [teams."Network Performance Monitoring"] jira_project = "NPM" jira_issue_type = "Task" -jira_statuses = [ - "Backlog", - "In Progress", - "Done", -] +jira_statuses = ["Backlog", "In Progress", "Done"] github_team = "networks" github_labels = ["team/networks"] [teams."OpenTelemetry"] jira_project = "OTEL" jira_issue_type = "Task" -jira_statuses = [ - "To Do", - "In Progress", - "Done", -] +jira_statuses = ["To Do", "In Progress", "Done"] github_team = "opentelemetry" github_labels = ["team/opentelemetry"] [teams."eBPF Platform"] jira_project = "EBPF" jira_issue_type = "Task" -jira_statuses = [ - "To Do", - "In Progress", - "Done", -] +jira_statuses = ["To Do", "In Progress", "Done"] github_team = "ebpf-platform" github_labels = ["team/ebpf-platform"] [teams."Agent Integrations"] jira_project = "AI" jira_issue_type = "Task" -jira_statuses = [ - "Backlog", - "In Progress", - "Done", -] +jira_statuses = ["Backlog", "In Progress", "Done"] github_team = "agent-integrations" github_labels = ["team/integrations"] -exclude_members = [ - "ofek", - "alopezz", -] +exclude_members = ["ofek", "alopezz"] [teams."Platform Integrations"] jira_project = "PLINT" jira_issue_type = "Task" -jira_statuses = [ - "To Do", - "In Progress", - "Done", -] +jira_statuses = ["To Do", "In Progress", "Done"] github_team = "platform-integrations" github_labels = ["team/platform-integrations"] -exclude_members = [ - "hithwen", -] +exclude_members = ["hithwen"] [teams."APM"] jira_project = "AIT" jira_component = "Trace Agent" jira_issue_type = "Task" -jira_statuses = [ - "Backlog", - "In Progress", - "Done", -] +jira_statuses = ["Backlog", "In Progress", "Done"] github_team = "apm-go" github_labels = ["team/agent-apm"] [teams."Remote Config"] jira_project = "RC" jira_issue_type = "QA" -jira_statuses = [ - "To Do", - "In Progress", - "Done", -] +jira_statuses = ["To Do", "In Progress", "Done"] github_team = "remote-config" github_labels = ["team/remote-config"] [teams."Container Integrations"] jira_project = "CONTINT" jira_issue_type = "Task" -jira_statuses = [ - "To Do", - "In Progress", - "Done", -] +jira_statuses = ["To Do", "In Progress", "Done"] github_team = "container-integrations" github_labels = ["team/containers"] [teams."Container Ecosystems"] jira_project = "CECO" jira_issue_type = "Task" -jira_statuses = [ - "To Do", - "In Progress", - "Done", -] +jira_statuses = ["To Do", "In Progress", "Done"] github_team = "container-ecosystems" github_labels = ["team/container-ecosystems"] @@ -183,11 +127,7 @@ github_labels = ["team/container-ecosystems"] jira_project = "CWS" jira_component = "Agent" jira_issue_type = "Task" -jira_statuses = [ - "To Do", - "In Progress", - "Done", -] +jira_statuses = ["To Do", "In Progress", "Done"] github_team = "agent-security" github_labels = ["team/agent-security"] exclude_members = [ @@ -199,87 +139,55 @@ exclude_members = [ jira_project = "SEC" jira_component = "CSPM Agent" jira_issue_type = "Task" -jira_statuses = [ - "To Do", - "In Progress", - "Done", -] +jira_statuses = ["To Do", "In Progress", "Done"] github_team = "agent-cspm" github_labels = ["team/agent-cspm"] [teams."Processes"] jira_project = "PROCS" jira_issue_type = "Task" -jira_statuses = [ - "TRIAGE", - "In Progress", - "Done", -] +jira_statuses = ["TRIAGE", "In Progress", "Done"] github_team = "processes" github_labels = ["team/processes"] [teams."Windows Agent"] jira_project = "WINA" jira_issue_type = "QA Task" -jira_statuses = [ - "To Do", - "In Progress", - "Done", -] +jira_statuses = ["To Do", "In Progress", "Done"] github_team = "windows-agent" github_labels = ["team/windows-agent"] [teams."Windows Kernel Integrations"] jira_project = "WKINT" jira_issue_type = "Task" -jira_statuses = [ - "To Do", - "In Progress", - "Done", -] +jira_statuses = ["To Do", "In Progress", "Done"] github_team = "windows-kernel-integrations" github_labels = ["team/windows-kernel-integrations"] [teams."Database Monitoring"] jira_project = "DBMON" jira_issue_type = "Task" -jira_statuses = [ - "Eventually", - "In Progress", - "Done", -] +jira_statuses = ["Eventually", "In Progress", "Done"] github_team = "database-monitoring" github_labels = ["team/database-monitoring"] [teams."Container App"] jira_project = "CAP" jira_issue_type = "Task" -jira_statuses = [ - "💼 To Do", - "💡 In Progress", - "✅ Done", -] +jira_statuses = ["💼 To Do", "💡 In Progress", "✅ Done"] github_team = "container-app" github_labels = ["team/container-app"] [teams."APM Onboarding"] jira_project = "APMON" jira_issue_type = "Story" -jira_statuses = [ - "Selected For Development", - "In Progress", - "Done", -] +jira_statuses = ["Selected For Development", "In Progress", "Done"] github_team = "apm-onboarding" github_labels = ["team/apm-onboarding"] [teams."Agent Release Management"] jira_project = "AGNTR" jira_issue_type = "Task" -jira_statuses = [ - "To Do", - "In Progress", - "Done", -] +jira_statuses = ["To Do", "In Progress", "Done"] github_team = "agent-release-management" github_labels = ["team/agent-release-management"] From 87b6161e51a9381cf098e8eaa56c370c997a946c Mon Sep 17 00:00:00 2001 From: Nicolas Guerguadj <35628945+Kaderinho@users.noreply.github.com> Date: Mon, 11 Mar 2024 16:30:09 +0100 Subject: [PATCH 119/155] Add e2e tests for check command on linux (#23528) * tests: add e2e tests for check command on linux Signed-off-by: Nicolas Guerguadj * chore: move check tests to common file and run tests on Windows (commented for now waiting for a fix on test-infra side) Signed-off-by: Nicolas Guerguadj * Apply suggestions from code review Co-authored-by: Pierre Gimalac * fix: add missing import Signed-off-by: Nicolas Guerguadj --------- Signed-off-by: Nicolas Guerguadj Co-authored-by: Pierre Gimalac --- .gitlab/e2e/e2e.yml | 1 + .../pkg/utils/e2e/client/agent_commands.go | 14 ++++ .../pkg/utils/e2e/client/agentclient/agent.go | 6 ++ .../check/check_common_test.go | 71 +++++++++++++++++++ .../agent-subcommands/check/check_nix_test.go | 41 +++++++++++ .../agent-subcommands/check/check_win_test.go | 33 +++++++++ .../agent-subcommands/check/fixtures/hello.py | 21 ++++++ .../check/fixtures/hello.yaml | 3 + .../tests/agent-subcommands/check/parse.go | 37 ++++++++++ 9 files changed, 227 insertions(+) create mode 100644 test/new-e2e/tests/agent-subcommands/check/check_common_test.go create mode 100644 test/new-e2e/tests/agent-subcommands/check/check_nix_test.go create mode 100644 test/new-e2e/tests/agent-subcommands/check/check_win_test.go create mode 100644 test/new-e2e/tests/agent-subcommands/check/fixtures/hello.py create mode 100644 test/new-e2e/tests/agent-subcommands/check/fixtures/hello.yaml create mode 100644 test/new-e2e/tests/agent-subcommands/check/parse.go diff --git a/.gitlab/e2e/e2e.yml b/.gitlab/e2e/e2e.yml index e3d5d7b0d87064..6fca4ca5c4ec42 100644 --- a/.gitlab/e2e/e2e.yml +++ b/.gitlab/e2e/e2e.yml @@ -175,6 +175,7 @@ new-e2e-agent-subcommands: - EXTRA_PARAMS: --run TestWindowsFlareSuite - EXTRA_PARAMS: --run TestLinuxSecretSuite - EXTRA_PARAMS: --run TestWindowsSecretSuite + - EXTRA_PARAMS: --run TestLinuxCheckSuite allow_failure: true # TODO: To remove when the tests are stable new-e2e-language-detection: diff --git a/test/new-e2e/pkg/utils/e2e/client/agent_commands.go b/test/new-e2e/pkg/utils/e2e/client/agent_commands.go index f50c7b224fd11a..fa1f9f0f06b3fa 100644 --- a/test/new-e2e/pkg/utils/e2e/client/agent_commands.go +++ b/test/new-e2e/pkg/utils/e2e/client/agent_commands.go @@ -73,6 +73,20 @@ func (agent *agentCommandRunner) Hostname(commandArgs ...agentclient.AgentArgsOp return strings.Trim(output, "\n") } +// Check runs check command and returns the runtime Agent check +func (agent *agentCommandRunner) Check(commandArgs ...agentclient.AgentArgsOption) string { + return agent.executeCommand("check", commandArgs...) +} + +// Check runs check command and returns the runtime Agent check or an error +func (agent *agentCommandRunner) CheckWithError(commandArgs ...agentclient.AgentArgsOption) (string, error) { + args, err := optional.MakeParams(commandArgs...) + require.NoError(agent.t, err) + + arguments := append([]string{"check"}, args.Args...) + return agent.executor.execute(arguments) +} + // Config runs config command and returns the runtime agent config func (agent *agentCommandRunner) Config(commandArgs ...agentclient.AgentArgsOption) string { return agent.executeCommand("config", commandArgs...) diff --git a/test/new-e2e/pkg/utils/e2e/client/agentclient/agent.go b/test/new-e2e/pkg/utils/e2e/client/agentclient/agent.go index a09c0d5591b983..d6f94f9c3222fb 100644 --- a/test/new-e2e/pkg/utils/e2e/client/agentclient/agent.go +++ b/test/new-e2e/pkg/utils/e2e/client/agentclient/agent.go @@ -14,6 +14,12 @@ type Agent interface { // Hostname runs hostname command and returns the runtime Agent hostname Hostname(commandArgs ...AgentArgsOption) string + // Check runs check command and returns the runtime Agent check + Check(commandArgs ...AgentArgsOption) string + + // Check runs check command and returns the runtime Agent check or an error + CheckWithError(commandArgs ...AgentArgsOption) (string, error) + // Config runs config command and returns the runtime agent config Config(commandArgs ...AgentArgsOption) string diff --git a/test/new-e2e/tests/agent-subcommands/check/check_common_test.go b/test/new-e2e/tests/agent-subcommands/check/check_common_test.go new file mode 100644 index 00000000000000..59db2a49022c20 --- /dev/null +++ b/test/new-e2e/tests/agent-subcommands/check/check_common_test.go @@ -0,0 +1,71 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +// Package check contains helpers and e2e tests of the check command +package check + +import ( + "fmt" + + "github.com/DataDog/datadog-agent/test/new-e2e/pkg/e2e" + "github.com/DataDog/datadog-agent/test/new-e2e/pkg/environments" + "github.com/DataDog/datadog-agent/test/new-e2e/pkg/utils/e2e/client/agentclient" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +type baseCheckSuite struct { + e2e.BaseSuite[environments.Host] +} + +func (v *baseCheckSuite) TestCheckDisk() { + check := v.Env().Agent.Client.Check(agentclient.WithArgs([]string{"disk"})) + + assert.Contains(v.T(), check, `"metric": "system.disk.total"`) + assert.Contains(v.T(), check, `"metric": "system.disk.used"`) + assert.Contains(v.T(), check, `"metric": "system.disk.free"`) +} + +func (v *baseCheckSuite) TestUnknownCheck() { + _, err := v.Env().Agent.Client.CheckWithError(agentclient.WithArgs([]string{"unknown-check"})) + assert.Error(v.T(), err) + assert.Contains(v.T(), err.Error(), `Error: no valid check found`) +} + +func (v *baseCheckSuite) TestCustomCheck() { + check := v.Env().Agent.Client.Check(agentclient.WithArgs([]string{"hello"})) + assert.Contains(v.T(), check, `"metric": "hello.world"`) + assert.Contains(v.T(), check, `"TAG_KEY:TAG_VALUE"`) + assert.Contains(v.T(), check, `"type": "gauge"`) +} + +func (v *baseCheckSuite) TestCheckRate() { + check := v.Env().Agent.Client.Check(agentclient.WithArgs([]string{"hello", "--check-rate", "--json"})) + data := parseCheckOutput([]byte(check)) + require.NotNil(v.T(), data) + + metrics := data[0].Aggregator.Metrics + + assert.Equal(v.T(), len(metrics), 2) + assert.Equal(v.T(), metrics[0].Metric, "hello.world") + assert.Equal(v.T(), metrics[0].Points[0][1], 123) + assert.Equal(v.T(), metrics[1].Metric, "hello.world") + assert.Equal(v.T(), metrics[1].Points[0][1], 133) +} + +func (v *baseCheckSuite) TestCheckTimes() { + times := 10 + check := v.Env().Agent.Client.Check(agentclient.WithArgs([]string{"hello", "--check-times", fmt.Sprint(times), "--json"})) + + data := parseCheckOutput([]byte(check)) + require.NotNil(v.T(), data) + + metrics := data[0].Aggregator.Metrics + + assert.Equal(v.T(), len(metrics), times) + for idx := 0; idx < times; idx++ { + assert.Equal(v.T(), metrics[idx].Points[0][1], 123+idx*10) // see fixtures/hello.py + } +} diff --git a/test/new-e2e/tests/agent-subcommands/check/check_nix_test.go b/test/new-e2e/tests/agent-subcommands/check/check_nix_test.go new file mode 100644 index 00000000000000..694f72498b2dc9 --- /dev/null +++ b/test/new-e2e/tests/agent-subcommands/check/check_nix_test.go @@ -0,0 +1,41 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +// Package check contains helpers and e2e tests of the check command +package check + +import ( + _ "embed" + "testing" + + "github.com/DataDog/datadog-agent/test/new-e2e/pkg/e2e" + awshost "github.com/DataDog/datadog-agent/test/new-e2e/pkg/environments/aws/host" + "github.com/DataDog/datadog-agent/test/new-e2e/pkg/utils/e2e/client/agentclient" + "github.com/DataDog/test-infra-definitions/components/datadog/agentparams" + "github.com/stretchr/testify/assert" +) + +type linuxCheckSuite struct { + baseCheckSuite +} + +//go:embed fixtures/hello.yaml +var customCheckYaml []byte + +//go:embed fixtures/hello.py +var customCheckPython []byte + +func TestLinuxCheckSuite(t *testing.T) { + e2e.Run(t, &linuxCheckSuite{}, e2e.WithProvisioner(awshost.ProvisionerNoFakeIntake(awshost.WithAgentOptions( + agentparams.WithFile("/etc/datadog-agent/conf.d/hello.yaml", string(customCheckYaml), true), + agentparams.WithFile("/etc/datadog-agent/checks.d/hello.py", string(customCheckPython), true), + )))) +} + +func (v *linuxCheckSuite) TestCheckFlare() { + v.Env().Agent.Client.Check(agentclient.WithArgs([]string{"hello", "--flare"})) + files := v.Env().RemoteHost.MustExecute("sudo ls /var/log/datadog/checks") + assert.Contains(v.T(), files, "check_hello") +} diff --git a/test/new-e2e/tests/agent-subcommands/check/check_win_test.go b/test/new-e2e/tests/agent-subcommands/check/check_win_test.go new file mode 100644 index 00000000000000..c82bf850521ca7 --- /dev/null +++ b/test/new-e2e/tests/agent-subcommands/check/check_win_test.go @@ -0,0 +1,33 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +// Package check contains helpers and e2e tests of the check command +package check + +import ( + "testing" + + "github.com/DataDog/datadog-agent/test/new-e2e/pkg/e2e" + awshost "github.com/DataDog/datadog-agent/test/new-e2e/pkg/environments/aws/host" + "github.com/DataDog/test-infra-definitions/components/datadog/agentparams" + "github.com/DataDog/test-infra-definitions/components/os" + "github.com/DataDog/test-infra-definitions/scenarios/aws/ec2" +) + +type windowsCheckSuite struct { + baseCheckSuite +} + +func TestWindowsCheckSuite(t *testing.T) { + t.Skip("not working because of the following error: unable to import module 'hello': source code string cannot contain null bytes") + + e2e.Run(t, &windowsCheckSuite{}, e2e.WithProvisioner( + awshost.ProvisionerNoFakeIntake( + awshost.WithEC2InstanceOptions(ec2.WithOS(os.WindowsDefault)), + awshost.WithAgentOptions( + agentparams.WithFile("C:/ProgramData/Datadog/conf.d/hello.d/conf.yaml", string(customCheckYaml), true), + agentparams.WithFile("C:/ProgramData/Datadog/checks.d/hello.py", string(customCheckPython), true), + )))) +} diff --git a/test/new-e2e/tests/agent-subcommands/check/fixtures/hello.py b/test/new-e2e/tests/agent-subcommands/check/fixtures/hello.py new file mode 100644 index 00000000000000..ca984787e97da7 --- /dev/null +++ b/test/new-e2e/tests/agent-subcommands/check/fixtures/hello.py @@ -0,0 +1,21 @@ +# the following try/except block will make the custom check compatible with any Agent version +try: + # first, try to import the base class from new versions of the Agent... + from datadog_checks.base import AgentCheck +except ImportError: + # ...if the above failed, the check is running in Agent version < 6.6.0 + from checks import AgentCheck + +# content of the special variable __version__ will be shown in the Agent status page +__version__ = "1.0.0" + + +# flake8: noqa +class HelloCheck(AgentCheck): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.value = 123 + + def check(self, instance): + self.gauge('hello.world', self.value, tags=['TAG_KEY:TAG_VALUE'] + self.instance.get('tags', [])) + self.value += 10 diff --git a/test/new-e2e/tests/agent-subcommands/check/fixtures/hello.yaml b/test/new-e2e/tests/agent-subcommands/check/fixtures/hello.yaml new file mode 100644 index 00000000000000..16adeafbb978f4 --- /dev/null +++ b/test/new-e2e/tests/agent-subcommands/check/fixtures/hello.yaml @@ -0,0 +1,3 @@ +init_config: + +instances: [{}] diff --git a/test/new-e2e/tests/agent-subcommands/check/parse.go b/test/new-e2e/tests/agent-subcommands/check/parse.go new file mode 100644 index 00000000000000..36b665c36c471a --- /dev/null +++ b/test/new-e2e/tests/agent-subcommands/check/parse.go @@ -0,0 +1,37 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +package check + +import ( + "encoding/json" +) + +type root struct { + Aggregator aggregator `json:"aggregator"` +} + +type aggregator struct { + Metrics []metric `json:"metrics"` +} + +type metric struct { + Host string `json:"host"` + Interval int `json:"interval"` + Metric string `json:"metric"` + Points [][]int `json:"points"` + SourceTypeName string `json:"source_type_name"` + Tags []string `json:"tags"` + Type string `json:"type"` +} + +func parseCheckOutput(check []byte) []root { + var data []root + if err := json.Unmarshal([]byte(check), &data); err != nil { + return nil + } + + return data +} From a7631159f5a4e0ac20dd4124aab7b435fd981a11 Mon Sep 17 00:00:00 2001 From: Paul Cacheux Date: Mon, 11 Mar 2024 16:31:57 +0100 Subject: [PATCH 120/155] `upload_security_agent_tests_*` do not need `test_ebpf_*` (#23625) --- .gitlab/kernel_matrix_testing/security_agent.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab/kernel_matrix_testing/security_agent.yml b/.gitlab/kernel_matrix_testing/security_agent.yml index 8df35abcb5137e..190371ec5262fb 100644 --- a/.gitlab/kernel_matrix_testing/security_agent.yml +++ b/.gitlab/kernel_matrix_testing/security_agent.yml @@ -103,7 +103,7 @@ kernel_matrix_testing_setup_env_security_agent_x64: upload_security_agent_tests_x64: extends: - .upload_security_agent_tests - needs: ["go_deps", "prepare_ebpf_functional_tests_x64", "tests_ebpf_x64"] + needs: ["go_deps", "prepare_ebpf_functional_tests_x64"] image: 486234852809.dkr.ecr.us-east-1.amazonaws.com/ci/datadog-agent-buildimages/system-probe_x64$DATADOG_AGENT_SYSPROBE_BUILDIMAGES_SUFFIX:$DATADOG_AGENT_SYSPROBE_BUILDIMAGES tags: ["arch:amd64"] variables: @@ -113,7 +113,7 @@ upload_security_agent_tests_x64: upload_security_agent_tests_arm64: extends: - .upload_security_agent_tests - needs: ["go_deps", "prepare_ebpf_functional_tests_arm64", "tests_ebpf_arm64"] + needs: ["go_deps", "prepare_ebpf_functional_tests_arm64"] image: 486234852809.dkr.ecr.us-east-1.amazonaws.com/ci/datadog-agent-buildimages/system-probe_arm64$DATADOG_AGENT_SYSPROBE_BUILDIMAGES_SUFFIX:$DATADOG_AGENT_SYSPROBE_BUILDIMAGES tags: ["arch:arm64"] variables: From 2ec97fe1f93d271a9d31f0a6ad1b38b30809e17f Mon Sep 17 00:00:00 2001 From: Stanley Liu Date: Mon, 11 Mar 2024 11:36:11 -0400 Subject: [PATCH 121/155] Update OTLP benchmark test with large traces (#23584) * Update benchmark test with large traces * Add config --- pkg/trace/api/otlp_test.go | 51 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 49 insertions(+), 2 deletions(-) diff --git a/pkg/trace/api/otlp_test.go b/pkg/trace/api/otlp_test.go index de2e5fbea8a54f..569529416cd6a2 100644 --- a/pkg/trace/api/otlp_test.go +++ b/pkg/trace/api/otlp_test.go @@ -13,6 +13,7 @@ import ( "fmt" "net/http" "sort" + "strconv" "strings" "testing" "time" @@ -34,6 +35,7 @@ import ( "go.opentelemetry.io/collector/component/componenttest" "go.opentelemetry.io/collector/pdata/pcommon" "go.opentelemetry.io/collector/pdata/ptrace" + "go.opentelemetry.io/collector/pdata/ptrace/ptraceotlp" semconv "go.opentelemetry.io/collector/semconv/v1.6.1" ) @@ -138,6 +140,14 @@ func NewTestConfig(t *testing.T) *config.AgentConfig { return cfg } +func NewBenchmarkTestConfig(b *testing.B) *config.AgentConfig { + cfg := config.New() + attributesTranslator, err := attributes.NewTranslator(componenttest.NewNopTelemetrySettings()) + require.NoError(b, err) + cfg.OTLPReceiver.AttributesTranslator = attributesTranslator + return cfg +} + func TestOTLPMetrics(t *testing.T) { assert := assert.New(t) cfg := NewTestConfig(t) @@ -2048,7 +2058,43 @@ func TestMarshalSpanLinks(t *testing.T) { } } +func generateTraceRequest(traceCount int, spanCount int, attrCount int, attrLength int) ptraceotlp.ExportRequest { + traces := make([]testutil.OTLPResourceSpan, traceCount) + for k := 0; k < traceCount; k++ { + spans := make([]*testutil.OTLPSpan, spanCount) + for i := 0; i < spanCount; i++ { + attributes := make(map[string]interface{}) + for j := 0; j < attrCount; j++ { + attributes["key_"+strconv.Itoa(j)] = strings.Repeat("x", attrLength) + } + + spans[i] = &testutil.OTLPSpan{ + Name: "/path", + TraceState: "state", + Kind: ptrace.SpanKindServer, + Attributes: attributes, + StatusCode: ptrace.StatusCodeOk, + } + } + rattributes := make(map[string]interface{}) + for j := 0; j < attrCount; j++ { + rattributes["key_"+strconv.Itoa(j)] = strings.Repeat("x", attrLength) + } + rattributes["service.name"] = "test-service" + rattributes["deployment.environment"] = "test-env" + rspans := testutil.OTLPResourceSpan{ + Spans: spans, + LibName: "stats-agent-test", + LibVersion: "0.0.1", + Attributes: rattributes, + } + traces[k] = rspans + } + return testutil.NewOTLPTracesRequest(traces) +} + func BenchmarkProcessRequest(b *testing.B) { + largeTraces := generateTraceRequest(10, 100, 100, 100) metadata := http.Header(map[string][]string{ header.Lang: {"go"}, header.ContainerID: {"containerdID"}, @@ -2067,11 +2113,12 @@ func BenchmarkProcessRequest(b *testing.B) { } }() - r := NewOTLPReceiver(out, nil, &statsd.NoOpClient{}, &timing.NoopReporter{}) + cfg := NewBenchmarkTestConfig(b) + r := NewOTLPReceiver(out, cfg, &statsd.NoOpClient{}, &timing.NoopReporter{}) b.ReportAllocs() b.ResetTimer() for i := 0; i < b.N; i++ { - r.processRequest(context.Background(), metadata, otlpTestTracesRequest) + r.processRequest(context.Background(), metadata, largeTraces) } b.StopTimer() end <- struct{}{} From a1df73967ba19540960728257ccefe432d77377c Mon Sep 17 00:00:00 2001 From: Paul Cacheux Date: Mon, 11 Mar 2024 16:36:15 +0100 Subject: [PATCH 122/155] bump `github.com/stretchr/testify` globally to v1.9.0 (#23605) --- cmd/agent/common/path/go.sum | 4 ++-- comp/core/config/go.mod | 2 +- comp/core/config/go.sum | 3 ++- comp/core/hostname/hostnameinterface/go.mod | 2 +- comp/core/hostname/hostnameinterface/go.sum | 4 ++-- comp/core/log/go.mod | 2 +- comp/core/log/go.sum | 6 ++++-- comp/core/secrets/go.mod | 2 +- comp/core/secrets/go.sum | 4 ++-- comp/core/status/go.mod | 2 +- comp/core/status/go.sum | 4 ++-- comp/core/status/statusimpl/go.mod | 2 +- comp/core/status/statusimpl/go.sum | 3 ++- comp/core/telemetry/go.mod | 2 +- comp/core/telemetry/go.sum | 4 ++-- comp/forwarder/defaultforwarder/go.mod | 4 ++-- comp/forwarder/defaultforwarder/go.sum | 8 ++++---- .../orchestrator/orchestratorinterface/go.mod | 4 ++-- .../orchestrator/orchestratorinterface/go.sum | 8 ++++---- comp/logs/agent/config/go.mod | 2 +- comp/logs/agent/config/go.sum | 3 ++- .../components/exporter/serializerexporter/go.mod | 4 ++-- .../components/exporter/serializerexporter/go.sum | 8 ++++---- internal/tools/go.mod | 4 ++-- internal/tools/go.sum | 7 ++++--- internal/tools/modparser/go.mod | 2 +- internal/tools/modparser/go.sum | 11 ++--------- pkg/aggregator/ckey/go.mod | 2 +- pkg/aggregator/ckey/go.sum | 4 ++-- pkg/api/go.mod | 2 +- pkg/api/go.sum | 3 ++- pkg/config/env/go.mod | 2 +- pkg/config/env/go.sum | 3 ++- pkg/config/logs/go.mod | 2 +- pkg/config/logs/go.sum | 4 ++-- pkg/config/model/go.mod | 2 +- pkg/config/model/go.sum | 9 ++------- pkg/config/remote/go.mod | 4 ++-- pkg/config/remote/go.sum | 6 ++++-- pkg/config/setup/go.mod | 2 +- pkg/config/setup/go.sum | 3 ++- pkg/config/utils/go.mod | 2 +- pkg/config/utils/go.sum | 3 ++- pkg/errors/go.mod | 2 +- pkg/errors/go.sum | 4 ++-- pkg/gohai/go.mod | 2 +- pkg/gohai/go.sum | 3 ++- pkg/logs/auditor/go.mod | 2 +- pkg/logs/auditor/go.sum | 3 ++- pkg/logs/client/go.mod | 2 +- pkg/logs/client/go.sum | 3 ++- pkg/logs/diagnostic/go.mod | 2 +- pkg/logs/diagnostic/go.sum | 3 ++- pkg/logs/message/go.mod | 2 +- pkg/logs/message/go.sum | 3 ++- pkg/logs/metrics/go.mod | 2 +- pkg/logs/metrics/go.sum | 4 ++-- pkg/logs/pipeline/go.mod | 2 +- pkg/logs/pipeline/go.sum | 3 ++- pkg/logs/processor/go.mod | 2 +- pkg/logs/processor/go.sum | 3 ++- pkg/logs/sender/go.mod | 2 +- pkg/logs/sender/go.sum | 3 ++- pkg/logs/sources/go.mod | 2 +- pkg/logs/sources/go.sum | 3 ++- pkg/logs/status/utils/go.mod | 2 +- pkg/logs/status/utils/go.sum | 4 ++-- pkg/logs/util/testutils/go.sum | 3 ++- pkg/metrics/go.mod | 2 +- pkg/metrics/go.sum | 4 ++-- pkg/networkdevice/profile/go.mod | 2 +- pkg/networkdevice/profile/go.sum | 4 ++-- pkg/obfuscate/go.mod | 2 +- pkg/obfuscate/go.sum | 8 ++++---- pkg/orchestrator/model/go.sum | 4 ++-- pkg/process/util/api/go.mod | 2 +- pkg/process/util/api/go.sum | 4 ++-- pkg/proto/go.mod | 2 +- pkg/proto/go.sum | 4 ++-- pkg/remoteconfig/state/go.mod | 2 +- pkg/remoteconfig/state/go.sum | 4 ++-- pkg/serializer/go.mod | 4 ++-- pkg/serializer/go.sum | 8 ++++---- pkg/status/health/go.mod | 2 +- pkg/status/health/go.sum | 4 ++-- pkg/tagset/go.mod | 2 +- pkg/tagset/go.sum | 4 ++-- pkg/telemetry/go.mod | 2 +- pkg/telemetry/go.sum | 4 ++-- pkg/trace/go.mod | 2 +- pkg/trace/go.sum | 6 ++++-- pkg/util/backoff/go.mod | 2 +- pkg/util/backoff/go.sum | 4 ++-- pkg/util/buf/go.mod | 2 +- pkg/util/buf/go.sum | 4 ++-- pkg/util/cache/go.mod | 2 +- pkg/util/cache/go.sum | 4 ++-- pkg/util/cgroups/go.mod | 2 +- pkg/util/cgroups/go.sum | 11 ++--------- pkg/util/common/go.mod | 2 +- pkg/util/common/go.sum | 4 ++-- pkg/util/executable/go.mod | 2 +- pkg/util/executable/go.sum | 4 ++-- pkg/util/filesystem/go.mod | 2 +- pkg/util/filesystem/go.sum | 3 ++- pkg/util/flavor/go.mod | 2 +- pkg/util/flavor/go.sum | 3 ++- pkg/util/fxutil/go.mod | 2 +- pkg/util/fxutil/go.sum | 4 ++-- pkg/util/grpc/go.mod | 2 +- pkg/util/grpc/go.sum | 4 ++-- pkg/util/hostname/validate/go.mod | 2 +- pkg/util/hostname/validate/go.sum | 4 ++-- pkg/util/http/go.mod | 2 +- pkg/util/http/go.sum | 4 ++-- pkg/util/json/go.mod | 2 +- pkg/util/json/go.sum | 4 ++-- pkg/util/log/go.mod | 2 +- pkg/util/log/go.sum | 9 ++------- pkg/util/optional/go.mod | 2 +- pkg/util/optional/go.sum | 4 ++-- pkg/util/scrubber/go.mod | 2 +- pkg/util/scrubber/go.sum | 11 ++--------- pkg/util/sort/go.mod | 2 +- pkg/util/sort/go.sum | 4 ++-- pkg/util/startstop/go.mod | 2 +- pkg/util/startstop/go.sum | 4 ++-- pkg/util/statstracker/go.mod | 2 +- pkg/util/statstracker/go.sum | 4 ++-- pkg/util/system/go.mod | 2 +- pkg/util/system/go.sum | 3 ++- pkg/util/testutil/go.mod | 2 +- pkg/util/testutil/go.sum | 4 ++-- pkg/util/uuid/go.sum | 3 ++- pkg/util/winutil/go.mod | 2 +- pkg/util/winutil/go.sum | 4 ++-- pkg/version/go.mod | 2 +- pkg/version/go.sum | 4 ++-- .../testdata/go_mod_formatter/invalid_package/go.mod | 2 +- .../testdata/go_mod_formatter/valid_package/go.mod | 2 +- test/fakeintake/go.mod | 2 +- test/fakeintake/go.sum | 4 ++-- test/new-e2e/go.mod | 4 ++-- test/new-e2e/go.sum | 7 ++++--- 144 files changed, 244 insertions(+), 246 deletions(-) diff --git a/cmd/agent/common/path/go.sum b/cmd/agent/common/path/go.sum index d2b73bcee98f1a..0892d88b987928 100644 --- a/cmd/agent/common/path/go.sum +++ b/cmd/agent/common/path/go.sum @@ -8,8 +8,8 @@ github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 h1:iQTw/8FWTuc7uia github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8= 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/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q= diff --git a/comp/core/config/go.mod b/comp/core/config/go.mod index 4b7c4350eba205..2c76617e15b297 100644 --- a/comp/core/config/go.mod +++ b/comp/core/config/go.mod @@ -35,7 +35,7 @@ require ( github.com/DataDog/datadog-agent/pkg/util/fxutil v0.52.0-rc.3 github.com/DataDog/datadog-agent/pkg/util/winutil v0.52.0-rc.3 github.com/DataDog/viper v1.12.0 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 go.uber.org/fx v1.18.2 ) diff --git a/comp/core/config/go.sum b/comp/core/config/go.sum index 8deea13559b9f8..a3c1b0ee8ef165 100644 --- a/comp/core/config/go.sum +++ b/comp/core/config/go.sum @@ -207,8 +207,9 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= diff --git a/comp/core/hostname/hostnameinterface/go.mod b/comp/core/hostname/hostnameinterface/go.mod index 4fcb702f4d35ba..f6e79fb8e73ee7 100644 --- a/comp/core/hostname/hostnameinterface/go.mod +++ b/comp/core/hostname/hostnameinterface/go.mod @@ -6,7 +6,7 @@ replace github.com/DataDog/datadog-agent/pkg/util/fxutil => ../../../../pkg/util require ( github.com/DataDog/datadog-agent/pkg/util/fxutil v0.52.0-rc.3 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 go.uber.org/fx v1.18.2 ) diff --git a/comp/core/hostname/hostnameinterface/go.sum b/comp/core/hostname/hostnameinterface/go.sum index 7e2b0676070c00..045181eb3f60b6 100644 --- a/comp/core/hostname/hostnameinterface/go.sum +++ b/comp/core/hostname/hostnameinterface/go.sum @@ -17,8 +17,8 @@ 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.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/dig v1.17.0 h1:5Chju+tUvcC+N7N6EV08BJz41UZuO3BmHcN4A287ZLI= diff --git a/comp/core/log/go.mod b/comp/core/log/go.mod index e47bece408eab7..a2f09b2ac2263c 100644 --- a/comp/core/log/go.mod +++ b/comp/core/log/go.mod @@ -40,7 +40,7 @@ require ( github.com/DataDog/datadog-agent/pkg/util/fxutil v0.52.0-rc.3 github.com/DataDog/datadog-agent/pkg/util/log v0.52.0-rc.3 github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575 // v2.6 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 go.uber.org/fx v1.18.2 ) diff --git a/comp/core/log/go.sum b/comp/core/log/go.sum index 99db6fb59e0da3..dfb5dec8466ea0 100644 --- a/comp/core/log/go.sum +++ b/comp/core/log/go.sum @@ -252,16 +252,18 @@ github.com/spf13/viper v1.6.2/go.mod h1:t3iDnF5Jlj76alVNuyFBk5oUMCvsrkbvZK0WQdfD github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= 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.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/tinylib/msgp v1.1.8 h1:FCXC1xanKO4I8plpHGH2P7koL/RzZs12l/+r7vakfm0= github.com/tinylib/msgp v1.1.8/go.mod h1:qkpG+2ldGg4xRFmx+jfTvZPxfGFhi64BcnL9vkCm/Tw= diff --git a/comp/core/secrets/go.mod b/comp/core/secrets/go.mod index b922b8b14f537d..2cd0044bb4c8dd 100644 --- a/comp/core/secrets/go.mod +++ b/comp/core/secrets/go.mod @@ -20,7 +20,7 @@ require ( github.com/DataDog/datadog-agent/pkg/util/log v0.52.0-rc.3 github.com/DataDog/datadog-agent/pkg/util/scrubber v0.52.0-rc.3 github.com/DataDog/datadog-agent/pkg/util/winutil v0.52.0-rc.3 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 go.uber.org/fx v1.18.2 golang.org/x/exp v0.0.0-20231214170342-aacd6d4b4611 golang.org/x/sys v0.14.0 diff --git a/comp/core/secrets/go.sum b/comp/core/secrets/go.sum index ac46e75224dcd1..98d2bf82b4d356 100644 --- a/comp/core/secrets/go.sum +++ b/comp/core/secrets/go.sum @@ -53,8 +53,8 @@ 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.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= go.opentelemetry.io/otel v1.20.0 h1:vsb/ggIY+hUjD/zCAQHpzTmndPqv/ml2ArbsbfBYTAc= go.opentelemetry.io/otel v1.20.0/go.mod h1:oUIGj3D77RwJdM6PPZImDpSZGDvkD9fhesHny69JFrs= go.opentelemetry.io/otel/exporters/prometheus v0.42.0 h1:jwV9iQdvp38fxXi8ZC+lNpxjK16MRcZlpDYvbuO1FiA= diff --git a/comp/core/status/go.mod b/comp/core/status/go.mod index 02ab650194c801..ec398becaa06f5 100644 --- a/comp/core/status/go.mod +++ b/comp/core/status/go.mod @@ -5,7 +5,7 @@ go 1.21.7 require ( github.com/dustin/go-humanize v1.0.1 github.com/fatih/color v1.16.0 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 go.uber.org/fx v1.18.2 golang.org/x/text v0.3.0 ) diff --git a/comp/core/status/go.sum b/comp/core/status/go.sum index 3c703f8a729a51..010a73ec868dc4 100644 --- a/comp/core/status/go.sum +++ b/comp/core/status/go.sum @@ -29,8 +29,8 @@ github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= go.uber.org/atomic v1.6.0 h1:Ezj3JGmsOnG1MoRWQkPBsKLe9DwWD9QeXzTRzzldNVk= go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/dig v1.15.0 h1:vq3YWr8zRj1eFGC7Gvf907hE0eRjPTZ1d3xHadD6liE= diff --git a/comp/core/status/statusimpl/go.mod b/comp/core/status/statusimpl/go.mod index d80bbf62d2d7ac..767f1842b38f10 100644 --- a/comp/core/status/statusimpl/go.mod +++ b/comp/core/status/statusimpl/go.mod @@ -38,7 +38,7 @@ require ( github.com/DataDog/datadog-agent/pkg/util/flavor v0.52.0-rc.3 github.com/DataDog/datadog-agent/pkg/util/fxutil v0.52.0-rc.3 github.com/DataDog/datadog-agent/pkg/version v0.52.0-rc.3 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 go.uber.org/fx v1.18.2 golang.org/x/text v0.14.0 ) diff --git a/comp/core/status/statusimpl/go.sum b/comp/core/status/statusimpl/go.sum index 6995f3df4b8a61..93da3104222c50 100644 --- a/comp/core/status/statusimpl/go.sum +++ b/comp/core/status/statusimpl/go.sum @@ -214,8 +214,9 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= diff --git a/comp/core/telemetry/go.mod b/comp/core/telemetry/go.mod index 464cb6a223b83c..9ef333c8ea4f88 100644 --- a/comp/core/telemetry/go.mod +++ b/comp/core/telemetry/go.mod @@ -8,7 +8,7 @@ require ( github.com/DataDog/datadog-agent/pkg/util/fxutil v0.52.0-rc.3 github.com/prometheus/client_golang v1.17.0 github.com/prometheus/client_model v0.5.0 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 go.opentelemetry.io/otel/exporters/prometheus v0.42.0 go.opentelemetry.io/otel/metric v1.20.0 go.opentelemetry.io/otel/sdk/metric v1.20.0 diff --git a/comp/core/telemetry/go.sum b/comp/core/telemetry/go.sum index 94bdb57601a655..2dbbe9742a8c5f 100644 --- a/comp/core/telemetry/go.sum +++ b/comp/core/telemetry/go.sum @@ -49,8 +49,8 @@ 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.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= go.opentelemetry.io/otel v1.20.0 h1:vsb/ggIY+hUjD/zCAQHpzTmndPqv/ml2ArbsbfBYTAc= go.opentelemetry.io/otel v1.20.0/go.mod h1:oUIGj3D77RwJdM6PPZImDpSZGDvkD9fhesHny69JFrs= go.opentelemetry.io/otel/exporters/prometheus v0.42.0 h1:jwV9iQdvp38fxXi8ZC+lNpxjK16MRcZlpDYvbuO1FiA= diff --git a/comp/forwarder/defaultforwarder/go.mod b/comp/forwarder/defaultforwarder/go.mod index 10f2c68bd8a985..0527603fd4da1b 100644 --- a/comp/forwarder/defaultforwarder/go.mod +++ b/comp/forwarder/defaultforwarder/go.mod @@ -61,7 +61,7 @@ require ( github.com/DataDog/datadog-agent/pkg/version v0.52.0-rc.3 github.com/golang/protobuf v1.5.3 github.com/hashicorp/go-multierror v1.1.1 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 go.uber.org/atomic v1.11.0 go.uber.org/fx v1.18.2 golang.org/x/text v0.14.0 @@ -118,7 +118,7 @@ require ( github.com/spf13/cobra v1.8.0 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/stretchr/objx v0.5.1 // indirect + github.com/stretchr/objx v0.5.2 // indirect github.com/tklauser/go-sysconf v0.3.12 // indirect github.com/tklauser/numcpus v0.6.1 // indirect github.com/yusufpapurcu/wmi v1.2.3 // indirect diff --git a/comp/forwarder/defaultforwarder/go.sum b/comp/forwarder/defaultforwarder/go.sum index e465d80d872cc9..da16687273661a 100644 --- a/comp/forwarder/defaultforwarder/go.sum +++ b/comp/forwarder/defaultforwarder/go.sum @@ -326,8 +326,8 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= -github.com/stretchr/objx v0.5.1 h1:4VhoImhV/Bm0ToFkXFi8hXNXwpDRZ/ynw3amt82mzq0= -github.com/stretchr/objx v0.5.1/go.mod h1:/iHQpkQwBD6DLUmQ4pE+s1TXdob1mORJ4/UFdrifcy0= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= 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.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= @@ -335,9 +335,9 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5 github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= diff --git a/comp/forwarder/orchestrator/orchestratorinterface/go.mod b/comp/forwarder/orchestrator/orchestratorinterface/go.mod index 4609732d80dde6..aeab984ae68439 100644 --- a/comp/forwarder/orchestrator/orchestratorinterface/go.mod +++ b/comp/forwarder/orchestrator/orchestratorinterface/go.mod @@ -124,8 +124,8 @@ require ( github.com/spf13/cobra v1.8.0 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/stretchr/objx v0.5.1 // indirect - github.com/stretchr/testify v1.8.4 // indirect + github.com/stretchr/objx v0.5.2 // indirect + github.com/stretchr/testify v1.9.0 // indirect github.com/tklauser/go-sysconf v0.3.12 // indirect github.com/tklauser/numcpus v0.6.1 // indirect github.com/yusufpapurcu/wmi v1.2.3 // indirect diff --git a/comp/forwarder/orchestrator/orchestratorinterface/go.sum b/comp/forwarder/orchestrator/orchestratorinterface/go.sum index 505fb705a9f35d..5db73871937cc8 100644 --- a/comp/forwarder/orchestrator/orchestratorinterface/go.sum +++ b/comp/forwarder/orchestrator/orchestratorinterface/go.sum @@ -323,8 +323,8 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= -github.com/stretchr/objx v0.5.1 h1:4VhoImhV/Bm0ToFkXFi8hXNXwpDRZ/ynw3amt82mzq0= -github.com/stretchr/objx v0.5.1/go.mod h1:/iHQpkQwBD6DLUmQ4pE+s1TXdob1mORJ4/UFdrifcy0= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= 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.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= @@ -332,9 +332,9 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5 github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= diff --git a/comp/logs/agent/config/go.mod b/comp/logs/agent/config/go.mod index 6c54e4c3445f64..4fe2230221d8a5 100644 --- a/comp/logs/agent/config/go.mod +++ b/comp/logs/agent/config/go.mod @@ -38,7 +38,7 @@ require ( github.com/DataDog/datadog-agent/pkg/util/log v0.52.0-rc.3 github.com/DataDog/datadog-agent/pkg/util/pointer v0.52.0-rc.3 github.com/DataDog/viper v1.12.0 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 go.uber.org/fx v1.18.2 ) diff --git a/comp/logs/agent/config/go.sum b/comp/logs/agent/config/go.sum index 251036f9852bfd..99d68e90709a75 100644 --- a/comp/logs/agent/config/go.sum +++ b/comp/logs/agent/config/go.sum @@ -205,8 +205,9 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= diff --git a/comp/otelcol/otlp/components/exporter/serializerexporter/go.mod b/comp/otelcol/otlp/components/exporter/serializerexporter/go.mod index 0b3e597ef85a89..d689d24cd97a8e 100644 --- a/comp/otelcol/otlp/components/exporter/serializerexporter/go.mod +++ b/comp/otelcol/otlp/components/exporter/serializerexporter/go.mod @@ -64,7 +64,7 @@ require ( github.com/DataDog/opentelemetry-mapping-go/pkg/quantile v0.13.3 github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c // indirect github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.75.0 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 github.com/tinylib/msgp v1.1.8 go.opentelemetry.io/collector v0.91.0 // indirect go.opentelemetry.io/collector/component v0.93.0 @@ -178,7 +178,7 @@ require ( github.com/spf13/cobra v1.8.0 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/stretchr/objx v0.5.1 // indirect + github.com/stretchr/objx v0.5.2 // indirect github.com/tklauser/go-sysconf v0.3.12 // indirect github.com/tklauser/numcpus v0.6.1 // indirect github.com/twmb/murmur3 v1.1.8 // indirect diff --git a/comp/otelcol/otlp/components/exporter/serializerexporter/go.sum b/comp/otelcol/otlp/components/exporter/serializerexporter/go.sum index f52c50346d5dbf..95dbdf2abaa507 100644 --- a/comp/otelcol/otlp/components/exporter/serializerexporter/go.sum +++ b/comp/otelcol/otlp/components/exporter/serializerexporter/go.sum @@ -425,8 +425,8 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= -github.com/stretchr/objx v0.5.1 h1:4VhoImhV/Bm0ToFkXFi8hXNXwpDRZ/ynw3amt82mzq0= -github.com/stretchr/objx v0.5.1/go.mod h1:/iHQpkQwBD6DLUmQ4pE+s1TXdob1mORJ4/UFdrifcy0= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= 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.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= @@ -436,9 +436,9 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/stvp/go-udp-testing v0.0.0-20201019212854-469649b16807/go.mod h1:7jxmlfBCDBXRzr0eAQJ48XC1hBu1np4CS5+cHEYfwpc= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/tinylib/msgp v1.1.8 h1:FCXC1xanKO4I8plpHGH2P7koL/RzZs12l/+r7vakfm0= diff --git a/internal/tools/go.mod b/internal/tools/go.mod index 88a1747a802d94..b13f5bbdd12388 100644 --- a/internal/tools/go.mod +++ b/internal/tools/go.mod @@ -189,8 +189,8 @@ require ( github.com/spf13/viper v1.15.0 // indirect github.com/ssgreg/nlreturn/v2 v2.2.1 // indirect github.com/stbenjam/no-sprintf-host-port v0.1.1 // indirect - github.com/stretchr/objx v0.5.0 // indirect - github.com/stretchr/testify v1.8.4 // indirect + github.com/stretchr/objx v0.5.2 // indirect + github.com/stretchr/testify v1.9.0 // indirect github.com/subosito/gotenv v1.4.2 // indirect github.com/t-yuki/gocover-cobertura v0.0.0-20180217150009-aaee18c8195c // indirect github.com/tdakkota/asciicheck v0.2.0 // indirect diff --git a/internal/tools/go.sum b/internal/tools/go.sum index e367edc2fe5677..367d2e2c926c9c 100644 --- a/internal/tools/go.sum +++ b/internal/tools/go.sum @@ -642,8 +642,9 @@ github.com/stormcat24/protodep v0.1.8/go.mod h1:6OoSZD5GGomKfmH1LvfJxNIRvYhewFXH github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= 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.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= @@ -655,8 +656,8 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8= github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= github.com/t-yuki/gocover-cobertura v0.0.0-20180217150009-aaee18c8195c h1:+aPplBwWcHBo6q9xrfWdMrT9o4kltkmmvpemgIjep/8= diff --git a/internal/tools/modparser/go.mod b/internal/tools/modparser/go.mod index d1081809346585..258ac3318a053f 100644 --- a/internal/tools/modparser/go.mod +++ b/internal/tools/modparser/go.mod @@ -3,7 +3,7 @@ module github.com/DataDog/datadog-agent/internal/tools/modparser go 1.21.7 require ( - github.com/stretchr/testify v1.8.1 + github.com/stretchr/testify v1.9.0 golang.org/x/mod v0.5.1 ) diff --git a/internal/tools/modparser/go.sum b/internal/tools/modparser/go.sum index 0f1017e868a108..840937c5ec2b7c 100644 --- a/internal/tools/modparser/go.sum +++ b/internal/tools/modparser/go.sum @@ -1,21 +1,14 @@ -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/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= -github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= -github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= golang.org/x/mod v0.5.1 h1:OJxoQ/rynoF0dcCdI7cLPktw/hR2cueqYfjm43oqK38= golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898 h1:/atklqdjdhuosWIl6AIbOeHJjicWYPqR9bpxqxYG2pA= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/pkg/aggregator/ckey/go.mod b/pkg/aggregator/ckey/go.mod index 56db9196512ee5..26c89af3e5ed74 100644 --- a/pkg/aggregator/ckey/go.mod +++ b/pkg/aggregator/ckey/go.mod @@ -10,7 +10,7 @@ replace ( require ( github.com/DataDog/datadog-agent/pkg/tagset v0.52.0-rc.3 github.com/DataDog/datadog-agent/pkg/util/sort v0.52.0-rc.3 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 github.com/twmb/murmur3 v1.1.8 ) diff --git a/pkg/aggregator/ckey/go.sum b/pkg/aggregator/ckey/go.sum index 5103686c6222ca..ec7ea5a8e7dbdd 100644 --- a/pkg/aggregator/ckey/go.sum +++ b/pkg/aggregator/ckey/go.sum @@ -2,8 +2,8 @@ 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/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/twmb/murmur3 v1.1.8 h1:8Yt9taO/WN3l08xErzjeschgZU2QSrwm1kclYq+0aRg= github.com/twmb/murmur3 v1.1.8/go.mod h1:Qq/R7NUyOfr65zD+6Q5IHKsJLwP7exErjN6lyyq3OSQ= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= diff --git a/pkg/api/go.mod b/pkg/api/go.mod index 32b84c7b7c628c..7fbb2a9742bb41 100644 --- a/pkg/api/go.mod +++ b/pkg/api/go.mod @@ -39,7 +39,7 @@ require ( github.com/DataDog/datadog-agent/pkg/util/log v0.52.0-rc.3 github.com/DataDog/datadog-agent/pkg/util/system v0.52.0-rc.3 github.com/gorilla/mux v1.8.1 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 ) require ( diff --git a/pkg/api/go.sum b/pkg/api/go.sum index 4722d6f9245814..35bb97fff47991 100644 --- a/pkg/api/go.sum +++ b/pkg/api/go.sum @@ -209,8 +209,9 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= diff --git a/pkg/config/env/go.mod b/pkg/config/env/go.mod index e9631b1729ffcc..5f5bf0e9332460 100644 --- a/pkg/config/env/go.mod +++ b/pkg/config/env/go.mod @@ -15,7 +15,7 @@ require ( github.com/DataDog/datadog-agent/pkg/util/filesystem v0.52.0-rc.3 github.com/DataDog/datadog-agent/pkg/util/log v0.52.0-rc.3 github.com/DataDog/datadog-agent/pkg/util/system/socket v0.52.0-rc.3 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 ) require ( diff --git a/pkg/config/env/go.sum b/pkg/config/env/go.sum index d069607855695a..2b9dc3ad2ebca3 100644 --- a/pkg/config/env/go.sum +++ b/pkg/config/env/go.sum @@ -160,8 +160,9 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= diff --git a/pkg/config/logs/go.mod b/pkg/config/logs/go.mod index 490932cd3b30f3..81b2d51c1985ee 100644 --- a/pkg/config/logs/go.mod +++ b/pkg/config/logs/go.mod @@ -14,7 +14,7 @@ require ( github.com/DataDog/datadog-agent/pkg/util/log v0.52.0-rc.3 github.com/DataDog/datadog-agent/pkg/util/scrubber v0.52.0-rc.3 github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 ) require ( diff --git a/pkg/config/logs/go.sum b/pkg/config/logs/go.sum index 6ddac0ef778525..f46eae3eb27aec 100644 --- a/pkg/config/logs/go.sum +++ b/pkg/config/logs/go.sum @@ -141,8 +141,8 @@ github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ 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.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20200122045848-3419fae592fc/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= diff --git a/pkg/config/model/go.mod b/pkg/config/model/go.mod index 02014866898431..ed192af3a8458e 100644 --- a/pkg/config/model/go.mod +++ b/pkg/config/model/go.mod @@ -13,7 +13,7 @@ require ( github.com/DataDog/viper v1.12.0 github.com/spf13/afero v1.1.2 github.com/spf13/pflag v1.0.3 - github.com/stretchr/testify v1.8.1 + github.com/stretchr/testify v1.9.0 golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 ) diff --git a/pkg/config/model/go.sum b/pkg/config/model/go.sum index 70e4717d512f42..f46eae3eb27aec 100644 --- a/pkg/config/model/go.sum +++ b/pkg/config/model/go.sum @@ -138,15 +138,11 @@ github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnIn github.com/spf13/viper v1.6.2/go.mod h1:t3iDnF5Jlj76alVNuyFBk5oUMCvsrkbvZK0WQdfDi5k= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= 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.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= -github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20200122045848-3419fae592fc/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= @@ -247,7 +243,6 @@ 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.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.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/pkg/config/remote/go.mod b/pkg/config/remote/go.mod index 4d3495d53bd378..d7ae94e7c4fcd1 100644 --- a/pkg/config/remote/go.mod +++ b/pkg/config/remote/go.mod @@ -31,7 +31,7 @@ require ( github.com/benbjohnson/clock v1.3.0 github.com/pkg/errors v0.9.1 github.com/secure-systems-lab/go-securesystemslib v0.7.0 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 go.etcd.io/bbolt v1.3.7 go.uber.org/atomic v1.11.0 google.golang.org/protobuf v1.31.0 @@ -73,7 +73,7 @@ require ( github.com/spf13/cast v1.3.0 // indirect github.com/spf13/jwalterweatherman v1.0.0 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/stretchr/objx v0.5.0 // indirect + github.com/stretchr/objx v0.5.2 // indirect github.com/tinylib/msgp v1.1.8 // indirect golang.org/x/net v0.19.0 // indirect golang.org/x/sys v0.16.0 // indirect diff --git a/pkg/config/remote/go.sum b/pkg/config/remote/go.sum index fdfda47d6cc95c..4e107afb042814 100644 --- a/pkg/config/remote/go.sum +++ b/pkg/config/remote/go.sum @@ -294,8 +294,9 @@ github.com/spf13/viper v1.6.2/go.mod h1:t3iDnF5Jlj76alVNuyFBk5oUMCvsrkbvZK0WQdfD github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= 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.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= @@ -303,8 +304,9 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5 github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/tinylib/msgp v1.1.8 h1:FCXC1xanKO4I8plpHGH2P7koL/RzZs12l/+r7vakfm0= github.com/tinylib/msgp v1.1.8/go.mod h1:qkpG+2ldGg4xRFmx+jfTvZPxfGFhi64BcnL9vkCm/Tw= diff --git a/pkg/config/setup/go.mod b/pkg/config/setup/go.mod index b36c8d4268f018..8a1a701ea846a9 100644 --- a/pkg/config/setup/go.mod +++ b/pkg/config/setup/go.mod @@ -38,7 +38,7 @@ require ( github.com/DataDog/datadog-agent/pkg/util/optional v0.52.0-rc.3 github.com/DataDog/datadog-agent/pkg/util/system v0.52.0-rc.3 github.com/DataDog/datadog-agent/pkg/util/winutil v0.52.0-rc.3 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 gopkg.in/yaml.v2 v2.4.0 ) diff --git a/pkg/config/setup/go.sum b/pkg/config/setup/go.sum index fc9fdbfb0de886..d8002cd8ff9f13 100644 --- a/pkg/config/setup/go.sum +++ b/pkg/config/setup/go.sum @@ -204,8 +204,9 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= diff --git a/pkg/config/utils/go.mod b/pkg/config/utils/go.mod index d8bd09f7e1214b..c4d0e3007c1c5e 100644 --- a/pkg/config/utils/go.mod +++ b/pkg/config/utils/go.mod @@ -33,7 +33,7 @@ require ( github.com/DataDog/datadog-agent/pkg/util/log v0.52.0-rc.3 github.com/DataDog/datadog-agent/pkg/util/optional v0.52.0-rc.3 github.com/DataDog/datadog-agent/pkg/version v0.52.0-rc.3 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 ) require ( diff --git a/pkg/config/utils/go.sum b/pkg/config/utils/go.sum index 08addf2edbf3e9..9f68d201f641ff 100644 --- a/pkg/config/utils/go.sum +++ b/pkg/config/utils/go.sum @@ -200,8 +200,9 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= diff --git a/pkg/errors/go.mod b/pkg/errors/go.mod index e0b6bda0f40517..22a4c828a2f093 100644 --- a/pkg/errors/go.mod +++ b/pkg/errors/go.mod @@ -2,7 +2,7 @@ module github.com/DataDog/datadog-agent/pkg/errors go 1.21.7 -require github.com/stretchr/testify v1.8.4 +require github.com/stretchr/testify v1.9.0 require ( github.com/davecgh/go-spew v1.1.1 // indirect diff --git a/pkg/errors/go.sum b/pkg/errors/go.sum index fa4b6e6825c44c..60ce688a041048 100644 --- a/pkg/errors/go.sum +++ b/pkg/errors/go.sum @@ -2,8 +2,8 @@ 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/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/pkg/gohai/go.mod b/pkg/gohai/go.mod index 3b70abeb049759..7b7faab59faa0e 100644 --- a/pkg/gohai/go.mod +++ b/pkg/gohai/go.mod @@ -9,7 +9,7 @@ require ( github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575 github.com/moby/sys/mountinfo v0.7.1 github.com/shirou/gopsutil/v3 v3.24.1 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 golang.org/x/sys v0.17.0 ) diff --git a/pkg/gohai/go.sum b/pkg/gohai/go.sum index d01dc9870640d3..66d068292b2ca7 100644 --- a/pkg/gohai/go.sum +++ b/pkg/gohai/go.sum @@ -44,8 +44,9 @@ github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSS github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= diff --git a/pkg/logs/auditor/go.mod b/pkg/logs/auditor/go.mod index be9768efe283ef..66afe08126ffc1 100644 --- a/pkg/logs/auditor/go.mod +++ b/pkg/logs/auditor/go.mod @@ -34,7 +34,7 @@ require ( github.com/DataDog/datadog-agent/pkg/logs/sources v0.52.0-rc.3 github.com/DataDog/datadog-agent/pkg/status/health v0.52.0-rc.3 github.com/DataDog/datadog-agent/pkg/util/log v0.52.0-rc.3 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 ) require ( diff --git a/pkg/logs/auditor/go.sum b/pkg/logs/auditor/go.sum index 65c98677397f8d..869c92e74c64ae 100644 --- a/pkg/logs/auditor/go.sum +++ b/pkg/logs/auditor/go.sum @@ -212,8 +212,9 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= diff --git a/pkg/logs/client/go.mod b/pkg/logs/client/go.mod index ba5bca755903c5..279be41b42c9cc 100644 --- a/pkg/logs/client/go.mod +++ b/pkg/logs/client/go.mod @@ -51,7 +51,7 @@ require ( github.com/DataDog/datadog-agent/pkg/util/log v0.52.0-rc.3 github.com/DataDog/datadog-agent/pkg/util/pointer v0.52.0-rc.3 github.com/DataDog/datadog-agent/pkg/version v0.52.0-rc.3 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 golang.org/x/net v0.21.0 ) diff --git a/pkg/logs/client/go.sum b/pkg/logs/client/go.sum index 5be4f3e3e54758..224c4fe3ea78c1 100644 --- a/pkg/logs/client/go.sum +++ b/pkg/logs/client/go.sum @@ -318,8 +318,9 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5 github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= diff --git a/pkg/logs/diagnostic/go.mod b/pkg/logs/diagnostic/go.mod index d093e311307339..f1235cd362c298 100644 --- a/pkg/logs/diagnostic/go.mod +++ b/pkg/logs/diagnostic/go.mod @@ -36,7 +36,7 @@ require ( github.com/DataDog/datadog-agent/comp/logs/agent/config v0.52.0-rc.3 github.com/DataDog/datadog-agent/pkg/logs/message v0.52.0-rc.3 github.com/DataDog/datadog-agent/pkg/logs/sources v0.52.0-rc.3 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 ) require ( diff --git a/pkg/logs/diagnostic/go.sum b/pkg/logs/diagnostic/go.sum index f1b291aecf0014..acf2a0b596529e 100644 --- a/pkg/logs/diagnostic/go.sum +++ b/pkg/logs/diagnostic/go.sum @@ -215,8 +215,9 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= diff --git a/pkg/logs/message/go.mod b/pkg/logs/message/go.mod index c729953176900c..208dd7c84f7b42 100644 --- a/pkg/logs/message/go.mod +++ b/pkg/logs/message/go.mod @@ -30,7 +30,7 @@ require ( github.com/DataDog/datadog-agent/comp/logs/agent/config v0.52.0-rc.3 github.com/DataDog/datadog-agent/pkg/logs/sources v0.52.0-rc.3 github.com/DataDog/datadog-agent/pkg/util/log v0.52.0-rc.3 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 ) require ( diff --git a/pkg/logs/message/go.sum b/pkg/logs/message/go.sum index 65c98677397f8d..869c92e74c64ae 100644 --- a/pkg/logs/message/go.sum +++ b/pkg/logs/message/go.sum @@ -212,8 +212,9 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= diff --git a/pkg/logs/metrics/go.mod b/pkg/logs/metrics/go.mod index 940cab46f850c3..94e468fce32051 100644 --- a/pkg/logs/metrics/go.mod +++ b/pkg/logs/metrics/go.mod @@ -10,7 +10,7 @@ replace ( require ( github.com/DataDog/datadog-agent/pkg/telemetry v0.52.0-rc.3 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 ) require ( diff --git a/pkg/logs/metrics/go.sum b/pkg/logs/metrics/go.sum index 94bdb57601a655..2dbbe9742a8c5f 100644 --- a/pkg/logs/metrics/go.sum +++ b/pkg/logs/metrics/go.sum @@ -49,8 +49,8 @@ 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.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= go.opentelemetry.io/otel v1.20.0 h1:vsb/ggIY+hUjD/zCAQHpzTmndPqv/ml2ArbsbfBYTAc= go.opentelemetry.io/otel v1.20.0/go.mod h1:oUIGj3D77RwJdM6PPZImDpSZGDvkD9fhesHny69JFrs= go.opentelemetry.io/otel/exporters/prometheus v0.42.0 h1:jwV9iQdvp38fxXi8ZC+lNpxjK16MRcZlpDYvbuO1FiA= diff --git a/pkg/logs/pipeline/go.mod b/pkg/logs/pipeline/go.mod index 6823d75a62dbcd..b9ff15ef680e0b 100644 --- a/pkg/logs/pipeline/go.mod +++ b/pkg/logs/pipeline/go.mod @@ -57,7 +57,7 @@ require ( github.com/DataDog/datadog-agent/pkg/logs/status/statusinterface v0.52.0-rc.3 github.com/DataDog/datadog-agent/pkg/status/health v0.52.0-rc.3 github.com/DataDog/datadog-agent/pkg/util/startstop v0.52.0-rc.3 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 go.uber.org/atomic v1.11.0 ) diff --git a/pkg/logs/pipeline/go.sum b/pkg/logs/pipeline/go.sum index f39f8692bf26aa..b7b6f43f7431ed 100644 --- a/pkg/logs/pipeline/go.sum +++ b/pkg/logs/pipeline/go.sum @@ -323,8 +323,9 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5 github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= diff --git a/pkg/logs/processor/go.mod b/pkg/logs/processor/go.mod index 97c44f3298bb2b..7b78339429e059 100644 --- a/pkg/logs/processor/go.mod +++ b/pkg/logs/processor/go.mod @@ -44,7 +44,7 @@ require ( github.com/DataDog/datadog-agent/pkg/logs/metrics v0.52.0-rc.3 github.com/DataDog/datadog-agent/pkg/logs/sources v0.52.0-rc.3 github.com/DataDog/datadog-agent/pkg/util/log v0.52.0-rc.3 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 ) require ( diff --git a/pkg/logs/processor/go.sum b/pkg/logs/processor/go.sum index dae0c9a6c8f37c..10b5a348087547 100644 --- a/pkg/logs/processor/go.sum +++ b/pkg/logs/processor/go.sum @@ -218,8 +218,9 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= diff --git a/pkg/logs/sender/go.mod b/pkg/logs/sender/go.mod index 22f31e14ace5e0..a2658009b5b6c5 100644 --- a/pkg/logs/sender/go.mod +++ b/pkg/logs/sender/go.mod @@ -48,7 +48,7 @@ require ( github.com/DataDog/datadog-agent/pkg/telemetry v0.52.0-rc.3 github.com/DataDog/datadog-agent/pkg/util/log v0.52.0-rc.3 github.com/benbjohnson/clock v1.3.5 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 ) require ( diff --git a/pkg/logs/sender/go.sum b/pkg/logs/sender/go.sum index a4c11ed124545b..6c08cc4af63e98 100644 --- a/pkg/logs/sender/go.sum +++ b/pkg/logs/sender/go.sum @@ -318,8 +318,9 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5 github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= diff --git a/pkg/logs/sources/go.mod b/pkg/logs/sources/go.mod index cc5890f11c21f4..7f7964b5c47e20 100644 --- a/pkg/logs/sources/go.mod +++ b/pkg/logs/sources/go.mod @@ -30,7 +30,7 @@ require ( github.com/DataDog/datadog-agent/pkg/logs/status/utils v0.52.0-rc.3 github.com/DataDog/datadog-agent/pkg/util/log v0.52.0-rc.3 github.com/DataDog/datadog-agent/pkg/util/statstracker v0.52.0-rc.3 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 ) require ( diff --git a/pkg/logs/sources/go.sum b/pkg/logs/sources/go.sum index 65c98677397f8d..869c92e74c64ae 100644 --- a/pkg/logs/sources/go.sum +++ b/pkg/logs/sources/go.sum @@ -212,8 +212,9 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= diff --git a/pkg/logs/status/utils/go.mod b/pkg/logs/status/utils/go.mod index 73e9df59a96fa6..13f572d7d184e3 100644 --- a/pkg/logs/status/utils/go.mod +++ b/pkg/logs/status/utils/go.mod @@ -3,7 +3,7 @@ module github.com/DataDog/datadog-agent/pkg/logs/status/utils go 1.21.7 require ( - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 go.uber.org/atomic v1.11.0 ) diff --git a/pkg/logs/status/utils/go.sum b/pkg/logs/status/utils/go.sum index 9fc084119fb081..8040b08ea112f7 100644 --- a/pkg/logs/status/utils/go.sum +++ b/pkg/logs/status/utils/go.sum @@ -2,8 +2,8 @@ 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/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= diff --git a/pkg/logs/util/testutils/go.sum b/pkg/logs/util/testutils/go.sum index 65c98677397f8d..869c92e74c64ae 100644 --- a/pkg/logs/util/testutils/go.sum +++ b/pkg/logs/util/testutils/go.sum @@ -212,8 +212,9 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= diff --git a/pkg/metrics/go.mod b/pkg/metrics/go.mod index e88c6f8da5e31d..16a0d00895f0f9 100644 --- a/pkg/metrics/go.mod +++ b/pkg/metrics/go.mod @@ -25,7 +25,7 @@ require ( github.com/DataDog/datadog-agent/pkg/util/buf v0.52.0-rc.3 github.com/DataDog/datadog-agent/pkg/util/log v0.52.0-rc.3 github.com/DataDog/opentelemetry-mapping-go/pkg/quantile v0.13.3 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 go.uber.org/atomic v1.11.0 ) diff --git a/pkg/metrics/go.sum b/pkg/metrics/go.sum index 5dea62fb0d8160..029fae2fbda8b3 100644 --- a/pkg/metrics/go.sum +++ b/pkg/metrics/go.sum @@ -295,8 +295,8 @@ github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81P github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= 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.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20200122045848-3419fae592fc/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= diff --git a/pkg/networkdevice/profile/go.mod b/pkg/networkdevice/profile/go.mod index dff73614f98974..8e0a3839229432 100644 --- a/pkg/networkdevice/profile/go.mod +++ b/pkg/networkdevice/profile/go.mod @@ -5,7 +5,7 @@ go 1.21.7 require ( github.com/invopop/jsonschema v0.10.0 github.com/santhosh-tekuri/jsonschema/v5 v5.3.1 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 gopkg.in/yaml.v2 v2.4.0 ) diff --git a/pkg/networkdevice/profile/go.sum b/pkg/networkdevice/profile/go.sum index 143fc1f6bb1438..3ed0cc77db4499 100644 --- a/pkg/networkdevice/profile/go.sum +++ b/pkg/networkdevice/profile/go.sum @@ -25,8 +25,8 @@ github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjR github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= github.com/santhosh-tekuri/jsonschema/v5 v5.3.1 h1:lZUw3E0/J3roVtGQ+SCrUrg3ON6NgVqpn3+iol9aGu4= github.com/santhosh-tekuri/jsonschema/v5 v5.3.1/go.mod h1:uToXkOrWAZ6/Oc07xWQrPOhJotwFIyu2bBVN41fcDUY= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/wk8/go-ordered-map/v2 v2.1.8 h1:5h/BUHu93oj4gIdvHHHGsScSTMijfx5PeYkE/fJgbpc= github.com/wk8/go-ordered-map/v2 v2.1.8/go.mod h1:5nJHM5DyteebpVlHnWMV0rPz6Zp7+xBAnxjb1X5vnTw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/pkg/obfuscate/go.mod b/pkg/obfuscate/go.mod index 7cf855192e45c1..d5b4b3cc1014bf 100644 --- a/pkg/obfuscate/go.mod +++ b/pkg/obfuscate/go.mod @@ -6,7 +6,7 @@ require ( github.com/DataDog/datadog-go/v5 v5.1.1 github.com/DataDog/go-sqllexer v0.0.9 github.com/outcaste-io/ristretto v0.2.1 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 go.uber.org/atomic v1.10.0 ) diff --git a/pkg/obfuscate/go.sum b/pkg/obfuscate/go.sum index 522e7a4a06e1f3..09f53626e5aba6 100644 --- a/pkg/obfuscate/go.sum +++ b/pkg/obfuscate/go.sum @@ -23,13 +23,13 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= -github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= 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.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= diff --git a/pkg/orchestrator/model/go.sum b/pkg/orchestrator/model/go.sum index f2bddf0d445d8b..5b3325ed13caf6 100644 --- a/pkg/orchestrator/model/go.sum +++ b/pkg/orchestrator/model/go.sum @@ -6,8 +6,8 @@ github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaR github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= 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/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= -github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= diff --git a/pkg/process/util/api/go.mod b/pkg/process/util/api/go.mod index 565823175c8e80..9633a11cf0fbd1 100644 --- a/pkg/process/util/api/go.mod +++ b/pkg/process/util/api/go.mod @@ -12,7 +12,7 @@ require ( github.com/DataDog/agent-payload/v5 v5.0.97 github.com/DataDog/datadog-agent/pkg/telemetry v0.52.0-rc.3 github.com/gogo/protobuf v1.3.2 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 ) require ( diff --git a/pkg/process/util/api/go.sum b/pkg/process/util/api/go.sum index 4b6ba2a7f88916..e2a7f449b94a9f 100644 --- a/pkg/process/util/api/go.sum +++ b/pkg/process/util/api/go.sum @@ -61,8 +61,8 @@ 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.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= go.opentelemetry.io/otel v1.20.0 h1:vsb/ggIY+hUjD/zCAQHpzTmndPqv/ml2ArbsbfBYTAc= diff --git a/pkg/proto/go.mod b/pkg/proto/go.mod index 915bf5e51dd1d8..2bd139f7f27fa5 100644 --- a/pkg/proto/go.mod +++ b/pkg/proto/go.mod @@ -9,7 +9,7 @@ require ( github.com/golang/protobuf v1.5.3 github.com/google/gofuzz v1.2.0 github.com/grpc-ecosystem/grpc-gateway v1.16.0 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 github.com/tinylib/msgp v1.1.8 github.com/vmihailenco/msgpack/v4 v4.3.12 google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d diff --git a/pkg/proto/go.sum b/pkg/proto/go.sum index 837c5286cd15d2..02ae2293b314b9 100644 --- a/pkg/proto/go.sum +++ b/pkg/proto/go.sum @@ -45,8 +45,8 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/tinylib/msgp v1.1.8 h1:FCXC1xanKO4I8plpHGH2P7koL/RzZs12l/+r7vakfm0= github.com/tinylib/msgp v1.1.8/go.mod h1:qkpG+2ldGg4xRFmx+jfTvZPxfGFhi64BcnL9vkCm/Tw= github.com/vmihailenco/msgpack/v4 v4.3.12 h1:07s4sz9IReOgdikxLTKNbBdqDMLsjPKXwvCazn8G65U= diff --git a/pkg/remoteconfig/state/go.mod b/pkg/remoteconfig/state/go.mod index 382011a10f8bfd..2cffa9e4a17b87 100644 --- a/pkg/remoteconfig/state/go.mod +++ b/pkg/remoteconfig/state/go.mod @@ -6,7 +6,7 @@ require ( github.com/DataDog/go-tuf v1.0.2-0.5.2 github.com/pkg/errors v0.9.1 github.com/secure-systems-lab/go-securesystemslib v0.7.0 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 ) require ( diff --git a/pkg/remoteconfig/state/go.sum b/pkg/remoteconfig/state/go.sum index 70e4a354917eda..17318bccd4fe91 100644 --- a/pkg/remoteconfig/state/go.sum +++ b/pkg/remoteconfig/state/go.sum @@ -14,8 +14,8 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/secure-systems-lab/go-securesystemslib v0.7.0 h1:OwvJ5jQf9LnIAS83waAjPbcMsODrTQUpJ02eNLUoxBg= github.com/secure-systems-lab/go-securesystemslib v0.7.0/go.mod h1:/2gYnlnHVQ6xeGtfIqFy7Do03K4cdCY0A/GlJLDKLHI= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= golang.org/x/crypto v0.11.0 h1:6Ewdq3tDic1mg5xRO4milcWCfMVQhI4NkqWWvqejpuA= golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio= golang.org/x/sys v0.10.0 h1:SqMFp9UcQJZa+pmYuAKjd9xq1f0j5rLcDIk0mj4qAsA= diff --git a/pkg/serializer/go.mod b/pkg/serializer/go.mod index 0dfba3f38f7be5..735794d5301b8a 100644 --- a/pkg/serializer/go.mod +++ b/pkg/serializer/go.mod @@ -73,7 +73,7 @@ require ( github.com/json-iterator/go v1.1.12 github.com/protocolbuffers/protoscope v0.0.0-20221109213918-8e7a6aafa2c9 github.com/richardartoul/molecule v1.0.1-0.20221107223329-32cfee06a052 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 google.golang.org/protobuf v1.32.0 ) @@ -147,7 +147,7 @@ require ( github.com/spf13/cobra v1.8.0 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/stretchr/objx v0.5.1 // indirect + github.com/stretchr/objx v0.5.2 // indirect github.com/tklauser/go-sysconf v0.3.12 // indirect github.com/tklauser/numcpus v0.6.1 // indirect github.com/twmb/murmur3 v1.1.8 // indirect diff --git a/pkg/serializer/go.sum b/pkg/serializer/go.sum index de8408e693e85e..b3b352bb66d985 100644 --- a/pkg/serializer/go.sum +++ b/pkg/serializer/go.sum @@ -355,8 +355,8 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= -github.com/stretchr/objx v0.5.1 h1:4VhoImhV/Bm0ToFkXFi8hXNXwpDRZ/ynw3amt82mzq0= -github.com/stretchr/objx v0.5.1/go.mod h1:/iHQpkQwBD6DLUmQ4pE+s1TXdob1mORJ4/UFdrifcy0= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= 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.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= @@ -365,9 +365,9 @@ github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= diff --git a/pkg/status/health/go.mod b/pkg/status/health/go.mod index 55d04c54969b3a..8e5a41dd81315f 100644 --- a/pkg/status/health/go.mod +++ b/pkg/status/health/go.mod @@ -2,7 +2,7 @@ module github.com/DataDog/datadog-agent/pkg/status/health go 1.21.7 -require github.com/stretchr/testify v1.8.4 +require github.com/stretchr/testify v1.9.0 require ( github.com/davecgh/go-spew v1.1.1 // indirect diff --git a/pkg/status/health/go.sum b/pkg/status/health/go.sum index fa4b6e6825c44c..60ce688a041048 100644 --- a/pkg/status/health/go.sum +++ b/pkg/status/health/go.sum @@ -2,8 +2,8 @@ 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/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/pkg/tagset/go.mod b/pkg/tagset/go.mod index e6d2266a8d5f08..3641d5376be8bb 100644 --- a/pkg/tagset/go.mod +++ b/pkg/tagset/go.mod @@ -6,7 +6,7 @@ replace github.com/DataDog/datadog-agent/pkg/util/sort => ../util/sort/ require ( github.com/DataDog/datadog-agent/pkg/util/sort v0.52.0-rc.3 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 github.com/twmb/murmur3 v1.1.8 ) diff --git a/pkg/tagset/go.sum b/pkg/tagset/go.sum index 5103686c6222ca..ec7ea5a8e7dbdd 100644 --- a/pkg/tagset/go.sum +++ b/pkg/tagset/go.sum @@ -2,8 +2,8 @@ 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/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/twmb/murmur3 v1.1.8 h1:8Yt9taO/WN3l08xErzjeschgZU2QSrwm1kclYq+0aRg= github.com/twmb/murmur3 v1.1.8/go.mod h1:Qq/R7NUyOfr65zD+6Q5IHKsJLwP7exErjN6lyyq3OSQ= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= diff --git a/pkg/telemetry/go.mod b/pkg/telemetry/go.mod index d6535f2de1cfa5..2a4511c7b23c5b 100644 --- a/pkg/telemetry/go.mod +++ b/pkg/telemetry/go.mod @@ -29,7 +29,7 @@ require ( github.com/prometheus/procfs v0.11.1 // indirect github.com/spf13/cobra v1.7.0 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/stretchr/testify v1.8.4 // indirect + github.com/stretchr/testify v1.9.0 // indirect go.opentelemetry.io/otel v1.20.0 // indirect go.opentelemetry.io/otel/exporters/prometheus v0.42.0 // indirect go.opentelemetry.io/otel/metric v1.20.0 // indirect diff --git a/pkg/telemetry/go.sum b/pkg/telemetry/go.sum index 94bdb57601a655..2dbbe9742a8c5f 100644 --- a/pkg/telemetry/go.sum +++ b/pkg/telemetry/go.sum @@ -49,8 +49,8 @@ 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.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= go.opentelemetry.io/otel v1.20.0 h1:vsb/ggIY+hUjD/zCAQHpzTmndPqv/ml2ArbsbfBYTAc= go.opentelemetry.io/otel v1.20.0/go.mod h1:oUIGj3D77RwJdM6PPZImDpSZGDvkD9fhesHny69JFrs= go.opentelemetry.io/otel/exporters/prometheus v0.42.0 h1:jwV9iQdvp38fxXi8ZC+lNpxjK16MRcZlpDYvbuO1FiA= diff --git a/pkg/trace/go.mod b/pkg/trace/go.mod index 2731d106174a4a..b3773aec173692 100644 --- a/pkg/trace/go.mod +++ b/pkg/trace/go.mod @@ -28,7 +28,7 @@ require ( github.com/google/gofuzz v1.2.0 github.com/google/uuid v1.3.1 github.com/shirou/gopsutil/v3 v3.24.1 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 github.com/tinylib/msgp v1.1.8 github.com/vmihailenco/msgpack/v4 v4.3.12 go.opentelemetry.io/collector/component v0.93.0 diff --git a/pkg/trace/go.sum b/pkg/trace/go.sum index fb1b321d027bbc..296a9e060cda44 100644 --- a/pkg/trace/go.sum +++ b/pkg/trace/go.sum @@ -305,8 +305,9 @@ github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= 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.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= @@ -315,8 +316,9 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/stvp/go-udp-testing v0.0.0-20201019212854-469649b16807/go.mod h1:7jxmlfBCDBXRzr0eAQJ48XC1hBu1np4CS5+cHEYfwpc= github.com/tinylib/msgp v1.1.8 h1:FCXC1xanKO4I8plpHGH2P7koL/RzZs12l/+r7vakfm0= github.com/tinylib/msgp v1.1.8/go.mod h1:qkpG+2ldGg4xRFmx+jfTvZPxfGFhi64BcnL9vkCm/Tw= diff --git a/pkg/util/backoff/go.mod b/pkg/util/backoff/go.mod index ba3512dce0f43d..c9586816749c05 100644 --- a/pkg/util/backoff/go.mod +++ b/pkg/util/backoff/go.mod @@ -2,7 +2,7 @@ module github.com/DataDog/datadog-agent/pkg/util/backoff go 1.21.7 -require github.com/stretchr/testify v1.8.4 +require github.com/stretchr/testify v1.9.0 require ( github.com/davecgh/go-spew v1.1.1 // indirect diff --git a/pkg/util/backoff/go.sum b/pkg/util/backoff/go.sum index fa4b6e6825c44c..60ce688a041048 100644 --- a/pkg/util/backoff/go.sum +++ b/pkg/util/backoff/go.sum @@ -2,8 +2,8 @@ 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/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/pkg/util/buf/go.mod b/pkg/util/buf/go.mod index 6ee88ed0a045dc..22791c6c48a1ea 100644 --- a/pkg/util/buf/go.mod +++ b/pkg/util/buf/go.mod @@ -2,7 +2,7 @@ module github.com/DataDog/datadog-agent/pkg/util/buf go 1.21.7 -require github.com/stretchr/testify v1.8.4 +require github.com/stretchr/testify v1.9.0 require ( github.com/davecgh/go-spew v1.1.1 // indirect diff --git a/pkg/util/buf/go.sum b/pkg/util/buf/go.sum index fa4b6e6825c44c..60ce688a041048 100644 --- a/pkg/util/buf/go.sum +++ b/pkg/util/buf/go.sum @@ -2,8 +2,8 @@ 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/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/pkg/util/cache/go.mod b/pkg/util/cache/go.mod index d87aa1a3401d6c..4f2198c479c0b1 100644 --- a/pkg/util/cache/go.mod +++ b/pkg/util/cache/go.mod @@ -4,7 +4,7 @@ go 1.21.7 require ( github.com/patrickmn/go-cache v2.1.0+incompatible - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 ) require ( diff --git a/pkg/util/cache/go.sum b/pkg/util/cache/go.sum index 5b01f3085822f9..d1ca0678c041be 100644 --- a/pkg/util/cache/go.sum +++ b/pkg/util/cache/go.sum @@ -4,8 +4,8 @@ github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaR github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= 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/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/pkg/util/cgroups/go.mod b/pkg/util/cgroups/go.mod index 7f0ec22fbfdad5..96f50d2cddeb69 100644 --- a/pkg/util/cgroups/go.mod +++ b/pkg/util/cgroups/go.mod @@ -14,7 +14,7 @@ require ( github.com/containerd/cgroups/v3 v3.0.2 github.com/google/go-cmp v0.5.8 github.com/karrick/godirwalk v1.17.0 - github.com/stretchr/testify v1.8.1 + github.com/stretchr/testify v1.9.0 ) require ( diff --git a/pkg/util/cgroups/go.sum b/pkg/util/cgroups/go.sum index e7a33494333684..555765b2c8ca6e 100644 --- a/pkg/util/cgroups/go.sum +++ b/pkg/util/cgroups/go.sum @@ -4,7 +4,6 @@ github.com/containerd/cgroups/v3 v3.0.2 h1:f5WFqIVSgo5IZmtTT3qVBo6TzI1ON6sycSBKk github.com/containerd/cgroups/v3 v3.0.2/go.mod h1:JUgITrzdFqp42uI2ryGA+ge0ap/nxzYgkGmIcetmErE= github.com/coreos/go-systemd/v22 v22.3.2 h1:D9/bQk5vlXQFZ6Kwuu6zaiXJ9oTPe68++AzAJc1DzSI= github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -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/docker/go-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw= @@ -21,13 +20,8 @@ github.com/opencontainers/runtime-spec v1.0.2 h1:UfAcuLBJB9Coz72x1hgl8O5RVzTdNia github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= 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/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= -github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= -github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= golang.org/x/sys v0.2.0 h1:ljd4t30dBnAvMZaQCevtY0xLLD0A+bRZXbgLMLU1F/A= @@ -40,6 +34,5 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= 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.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/pkg/util/common/go.mod b/pkg/util/common/go.mod index 06e546de90a7a1..2ecb840a5d67c8 100644 --- a/pkg/util/common/go.mod +++ b/pkg/util/common/go.mod @@ -2,7 +2,7 @@ module github.com/DataDog/datadog-agent/pkg/util/common go 1.21.7 -require github.com/stretchr/testify v1.8.4 +require github.com/stretchr/testify v1.9.0 require ( github.com/davecgh/go-spew v1.1.1 // indirect diff --git a/pkg/util/common/go.sum b/pkg/util/common/go.sum index fa4b6e6825c44c..60ce688a041048 100644 --- a/pkg/util/common/go.sum +++ b/pkg/util/common/go.sum @@ -2,8 +2,8 @@ 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/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/pkg/util/executable/go.mod b/pkg/util/executable/go.mod index 207c1eaed66b42..d592ad91248535 100644 --- a/pkg/util/executable/go.mod +++ b/pkg/util/executable/go.mod @@ -4,7 +4,7 @@ go 1.21.7 require ( github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 ) require ( diff --git a/pkg/util/executable/go.sum b/pkg/util/executable/go.sum index d392f427f98c84..019aeec36eaa74 100644 --- a/pkg/util/executable/go.sum +++ b/pkg/util/executable/go.sum @@ -4,8 +4,8 @@ github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 h1:iQTw/8FWTuc7uia github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8= 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/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/pkg/util/filesystem/go.mod b/pkg/util/filesystem/go.mod index b9f7f759322c63..3b22462a392550 100644 --- a/pkg/util/filesystem/go.mod +++ b/pkg/util/filesystem/go.mod @@ -12,7 +12,7 @@ require ( github.com/DataDog/datadog-agent/pkg/util/log v0.52.0-rc.3 github.com/hectane/go-acl v0.0.0-20190604041725-da78bae5fc95 github.com/shirou/gopsutil/v3 v3.23.9 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 golang.org/x/sys v0.12.0 ) diff --git a/pkg/util/filesystem/go.sum b/pkg/util/filesystem/go.sum index b89c2d459d22d9..6b7f10f6047e1e 100644 --- a/pkg/util/filesystem/go.sum +++ b/pkg/util/filesystem/go.sum @@ -23,8 +23,9 @@ github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSS github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= github.com/yusufpapurcu/wmi v1.2.3 h1:E1ctvB7uKFMOJw3fdOW32DwGE9I7t++CRUEMKvFoFiw= diff --git a/pkg/util/flavor/go.mod b/pkg/util/flavor/go.mod index f342c3102a217d..dcf4bd9149bef0 100644 --- a/pkg/util/flavor/go.mod +++ b/pkg/util/flavor/go.mod @@ -27,7 +27,7 @@ replace ( require ( github.com/DataDog/datadog-agent/pkg/config/setup v0.52.0-rc.3 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 ) require ( diff --git a/pkg/util/flavor/go.sum b/pkg/util/flavor/go.sum index 08addf2edbf3e9..9f68d201f641ff 100644 --- a/pkg/util/flavor/go.sum +++ b/pkg/util/flavor/go.sum @@ -200,8 +200,9 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= diff --git a/pkg/util/fxutil/go.mod b/pkg/util/fxutil/go.mod index bd342165a6b33f..27077e8f5351bd 100644 --- a/pkg/util/fxutil/go.mod +++ b/pkg/util/fxutil/go.mod @@ -4,7 +4,7 @@ go 1.21.7 require ( github.com/spf13/cobra v1.7.0 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 go.uber.org/fx v1.18.2 ) diff --git a/pkg/util/fxutil/go.sum b/pkg/util/fxutil/go.sum index 7e2b0676070c00..045181eb3f60b6 100644 --- a/pkg/util/fxutil/go.sum +++ b/pkg/util/fxutil/go.sum @@ -17,8 +17,8 @@ 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.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/dig v1.17.0 h1:5Chju+tUvcC+N7N6EV08BJz41UZuO3BmHcN4A287ZLI= diff --git a/pkg/util/grpc/go.mod b/pkg/util/grpc/go.mod index 926bc3fdd9aeab..fe32883fb37749 100644 --- a/pkg/util/grpc/go.mod +++ b/pkg/util/grpc/go.mod @@ -13,7 +13,7 @@ require ( github.com/DataDog/datadog-agent/pkg/util/log v0.52.0-rc.3 github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575 github.com/grpc-ecosystem/go-grpc-middleware v1.2.0 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 golang.org/x/net v0.19.0 google.golang.org/grpc v1.59.0 ) diff --git a/pkg/util/grpc/go.sum b/pkg/util/grpc/go.sum index 4a77f3d03640fc..f9d8e2f5c3ca01 100644 --- a/pkg/util/grpc/go.sum +++ b/pkg/util/grpc/go.sum @@ -64,8 +64,8 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/tinylib/msgp v1.1.8 h1:FCXC1xanKO4I8plpHGH2P7koL/RzZs12l/+r7vakfm0= github.com/tinylib/msgp v1.1.8/go.mod h1:qkpG+2ldGg4xRFmx+jfTvZPxfGFhi64BcnL9vkCm/Tw= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= diff --git a/pkg/util/hostname/validate/go.mod b/pkg/util/hostname/validate/go.mod index 3facce84b8d19c..37018c9dcbae0a 100644 --- a/pkg/util/hostname/validate/go.mod +++ b/pkg/util/hostname/validate/go.mod @@ -9,7 +9,7 @@ replace ( require ( github.com/DataDog/datadog-agent/pkg/util/log v0.52.0-rc.3 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 ) require ( diff --git a/pkg/util/hostname/validate/go.sum b/pkg/util/hostname/validate/go.sum index 5fb3323e7fca78..caba8ce83c9f8a 100644 --- a/pkg/util/hostname/validate/go.sum +++ b/pkg/util/hostname/validate/go.sum @@ -4,8 +4,8 @@ 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/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= diff --git a/pkg/util/http/go.mod b/pkg/util/http/go.mod index f3ba67ce81b83e..4c36d5cc560333 100644 --- a/pkg/util/http/go.mod +++ b/pkg/util/http/go.mod @@ -12,7 +12,7 @@ replace ( require ( github.com/DataDog/datadog-agent/pkg/config/model v0.52.0-rc.3 github.com/DataDog/datadog-agent/pkg/util/log v0.52.0-rc.3 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 golang.org/x/net v0.19.0 ) diff --git a/pkg/util/http/go.sum b/pkg/util/http/go.sum index 3c830f0cedd9a3..5f0a1b69cbb4bf 100644 --- a/pkg/util/http/go.sum +++ b/pkg/util/http/go.sum @@ -247,8 +247,8 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20200122045848-3419fae592fc/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= diff --git a/pkg/util/json/go.mod b/pkg/util/json/go.mod index a3698d25788537..bdb8e85f0d6d63 100644 --- a/pkg/util/json/go.mod +++ b/pkg/util/json/go.mod @@ -4,7 +4,7 @@ go 1.21.7 require ( github.com/json-iterator/go v1.1.12 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 ) require ( diff --git a/pkg/util/json/go.sum b/pkg/util/json/go.sum index 1e0f63e5ac5549..09fb446e3abf1f 100644 --- a/pkg/util/json/go.sum +++ b/pkg/util/json/go.sum @@ -12,8 +12,8 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/pkg/util/log/go.mod b/pkg/util/log/go.mod index 69ac9f3c5e7c4a..79fe710ae50f29 100644 --- a/pkg/util/log/go.mod +++ b/pkg/util/log/go.mod @@ -7,7 +7,7 @@ replace github.com/DataDog/datadog-agent/pkg/util/scrubber => ../scrubber require ( github.com/DataDog/datadog-agent/pkg/util/scrubber v0.52.0-rc.3 github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575 - github.com/stretchr/testify v1.8.1 + github.com/stretchr/testify v1.9.0 go.uber.org/atomic v1.11.0 go.uber.org/zap v1.22.0 ) diff --git a/pkg/util/log/go.sum b/pkg/util/log/go.sum index 9342b6a6fac25d..a6e97cc4198be8 100644 --- a/pkg/util/log/go.sum +++ b/pkg/util/log/go.sum @@ -10,13 +10,9 @@ github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE 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/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= -github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= @@ -30,6 +26,5 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= 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.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/pkg/util/optional/go.mod b/pkg/util/optional/go.mod index 46930bda1b5b81..9f313cb6625cfe 100644 --- a/pkg/util/optional/go.mod +++ b/pkg/util/optional/go.mod @@ -2,7 +2,7 @@ module github.com/DataDog/datadog-agent/pkg/util/optional go 1.21.7 -require github.com/stretchr/testify v1.8.4 +require github.com/stretchr/testify v1.9.0 require ( github.com/davecgh/go-spew v1.1.1 // indirect diff --git a/pkg/util/optional/go.sum b/pkg/util/optional/go.sum index fa4b6e6825c44c..60ce688a041048 100644 --- a/pkg/util/optional/go.sum +++ b/pkg/util/optional/go.sum @@ -2,8 +2,8 @@ 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/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/pkg/util/scrubber/go.mod b/pkg/util/scrubber/go.mod index 720168c21d0a45..d239f1cba3cb4b 100644 --- a/pkg/util/scrubber/go.mod +++ b/pkg/util/scrubber/go.mod @@ -3,7 +3,7 @@ module github.com/DataDog/datadog-agent/pkg/util/scrubber go 1.21.7 require ( - github.com/stretchr/testify v1.8.1 + github.com/stretchr/testify v1.9.0 gopkg.in/yaml.v2 v2.4.0 ) diff --git a/pkg/util/scrubber/go.sum b/pkg/util/scrubber/go.sum index 0926fd86c63367..7415634da77910 100644 --- a/pkg/util/scrubber/go.sum +++ b/pkg/util/scrubber/go.sum @@ -1,19 +1,12 @@ -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/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= -github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= -github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= 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.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/pkg/util/sort/go.mod b/pkg/util/sort/go.mod index cb48f905c827e0..5aa4d99bfb466e 100644 --- a/pkg/util/sort/go.mod +++ b/pkg/util/sort/go.mod @@ -2,7 +2,7 @@ module github.com/DataDog/datadog-agent/pkg/util/sort go 1.21.7 -require github.com/stretchr/testify v1.8.4 +require github.com/stretchr/testify v1.9.0 require ( github.com/davecgh/go-spew v1.1.1 // indirect diff --git a/pkg/util/sort/go.sum b/pkg/util/sort/go.sum index fa4b6e6825c44c..60ce688a041048 100644 --- a/pkg/util/sort/go.sum +++ b/pkg/util/sort/go.sum @@ -2,8 +2,8 @@ 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/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/pkg/util/startstop/go.mod b/pkg/util/startstop/go.mod index 9bc79dd5ad8b13..635c93a33c09f5 100644 --- a/pkg/util/startstop/go.mod +++ b/pkg/util/startstop/go.mod @@ -2,7 +2,7 @@ module github.com/DataDog/datadog-agent/pkg/util/startstop go 1.21.7 -require github.com/stretchr/testify v1.8.4 +require github.com/stretchr/testify v1.9.0 require ( github.com/davecgh/go-spew v1.1.1 // indirect diff --git a/pkg/util/startstop/go.sum b/pkg/util/startstop/go.sum index fa4b6e6825c44c..60ce688a041048 100644 --- a/pkg/util/startstop/go.sum +++ b/pkg/util/startstop/go.sum @@ -2,8 +2,8 @@ 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/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/pkg/util/statstracker/go.mod b/pkg/util/statstracker/go.mod index 93240c5bcf898c..cdc04c120df047 100644 --- a/pkg/util/statstracker/go.mod +++ b/pkg/util/statstracker/go.mod @@ -2,7 +2,7 @@ module github.com/DataDog/datadog-agent/pkg/util/statstracker go 1.21.7 -require github.com/stretchr/testify v1.8.4 +require github.com/stretchr/testify v1.9.0 require ( github.com/davecgh/go-spew v1.1.1 // indirect diff --git a/pkg/util/statstracker/go.sum b/pkg/util/statstracker/go.sum index fa4b6e6825c44c..60ce688a041048 100644 --- a/pkg/util/statstracker/go.sum +++ b/pkg/util/statstracker/go.sum @@ -2,8 +2,8 @@ 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/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/pkg/util/system/go.mod b/pkg/util/system/go.mod index f401490243c815..1910102cdfe379 100644 --- a/pkg/util/system/go.mod +++ b/pkg/util/system/go.mod @@ -18,7 +18,7 @@ require ( github.com/DataDog/datadog-agent/pkg/util/testutil v0.52.0-rc.3 github.com/DataDog/datadog-agent/pkg/util/winutil v0.52.0-rc.3 github.com/shirou/gopsutil/v3 v3.23.12 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 go.uber.org/atomic v1.11.0 golang.org/x/sys v0.16.0 ) diff --git a/pkg/util/system/go.sum b/pkg/util/system/go.sum index 8e8faadfe8b5fc..736eb0f117493c 100644 --- a/pkg/util/system/go.sum +++ b/pkg/util/system/go.sum @@ -28,8 +28,9 @@ github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSS github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= diff --git a/pkg/util/testutil/go.mod b/pkg/util/testutil/go.mod index 3f3350cc22050d..70a183c1d69a20 100644 --- a/pkg/util/testutil/go.mod +++ b/pkg/util/testutil/go.mod @@ -2,7 +2,7 @@ module github.com/DataDog/datadog-agent/pkg/util/testutil go 1.21.7 -require github.com/stretchr/testify v1.8.4 +require github.com/stretchr/testify v1.9.0 require ( github.com/davecgh/go-spew v1.1.1 // indirect diff --git a/pkg/util/testutil/go.sum b/pkg/util/testutil/go.sum index fa4b6e6825c44c..60ce688a041048 100644 --- a/pkg/util/testutil/go.sum +++ b/pkg/util/testutil/go.sum @@ -2,8 +2,8 @@ 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/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/pkg/util/uuid/go.sum b/pkg/util/uuid/go.sum index a436ed2d0dc95d..9b83c417c1830b 100644 --- a/pkg/util/uuid/go.sum +++ b/pkg/util/uuid/go.sum @@ -28,8 +28,9 @@ github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSS github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= diff --git a/pkg/util/winutil/go.mod b/pkg/util/winutil/go.mod index b18dc66baef4c0..523129ac87e2bc 100644 --- a/pkg/util/winutil/go.mod +++ b/pkg/util/winutil/go.mod @@ -11,7 +11,7 @@ require ( github.com/DataDog/datadog-agent/pkg/util/log v0.52.0-rc.3 github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575 github.com/fsnotify/fsnotify v1.7.0 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 go.uber.org/atomic v1.11.0 golang.org/x/sys v0.14.0 ) diff --git a/pkg/util/winutil/go.sum b/pkg/util/winutil/go.sum index c25f42a430cbef..8aa2b601edd003 100644 --- a/pkg/util/winutil/go.sum +++ b/pkg/util/winutil/go.sum @@ -6,8 +6,8 @@ github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nos github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= 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/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q= diff --git a/pkg/version/go.mod b/pkg/version/go.mod index 9fcdcc5d865ed3..67385cbb7ba5b0 100644 --- a/pkg/version/go.mod +++ b/pkg/version/go.mod @@ -2,7 +2,7 @@ module github.com/DataDog/datadog-agent/pkg/version go 1.21.7 -require github.com/stretchr/testify v1.8.4 +require github.com/stretchr/testify v1.9.0 require ( github.com/davecgh/go-spew v1.1.1 // indirect diff --git a/pkg/version/go.sum b/pkg/version/go.sum index fa4b6e6825c44c..60ce688a041048 100644 --- a/pkg/version/go.sum +++ b/pkg/version/go.sum @@ -2,8 +2,8 @@ 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/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/tasks/unit-tests/testdata/go_mod_formatter/invalid_package/go.mod b/tasks/unit-tests/testdata/go_mod_formatter/invalid_package/go.mod index 021c0c3560c4f6..b32bfb3f26cfbe 100644 --- a/tasks/unit-tests/testdata/go_mod_formatter/invalid_package/go.mod +++ b/tasks/unit-tests/testdata/go_mod_formatter/invalid_package/go.mod @@ -22,7 +22,7 @@ require ( github.com/DataDog/datadog-agent/pkg/util/buf v0.51.0-rc.1 github.com/DataDog/datadog-agent/pkg/util/log v0.51.0-rc.1 github.com/DataDog/opentelemetry-mapping-go/pkg/quantile v0.11.0 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 go.uber.org/atomic v1.11.0 ) diff --git a/tasks/unit-tests/testdata/go_mod_formatter/valid_package/go.mod b/tasks/unit-tests/testdata/go_mod_formatter/valid_package/go.mod index 4f3602febcb04b..06852d8f271c1b 100644 --- a/tasks/unit-tests/testdata/go_mod_formatter/valid_package/go.mod +++ b/tasks/unit-tests/testdata/go_mod_formatter/valid_package/go.mod @@ -24,7 +24,7 @@ require ( github.com/DataDog/datadog-agent/pkg/util/buf v0.51.0-rc.1 github.com/DataDog/datadog-agent/pkg/util/log v0.51.0-rc.1 github.com/DataDog/opentelemetry-mapping-go/pkg/quantile v0.11.0 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 go.uber.org/atomic v1.11.0 ) diff --git a/test/fakeintake/go.mod b/test/fakeintake/go.mod index 79468486aa7292..b02d0f93503d78 100644 --- a/test/fakeintake/go.mod +++ b/test/fakeintake/go.mod @@ -14,7 +14,7 @@ require ( github.com/olekukonko/tablewriter v0.0.5 github.com/prometheus/client_golang v1.17.0 github.com/spf13/cobra v1.8.0 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 github.com/tinylib/msgp v1.1.8 google.golang.org/protobuf v1.31.0 ) diff --git a/test/fakeintake/go.sum b/test/fakeintake/go.sum index 56918fef45156f..b577279e44e282 100644 --- a/test/fakeintake/go.sum +++ b/test/fakeintake/go.sum @@ -64,8 +64,8 @@ github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= 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/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/tinylib/msgp v1.1.8 h1:FCXC1xanKO4I8plpHGH2P7koL/RzZs12l/+r7vakfm0= github.com/tinylib/msgp v1.1.8/go.mod h1:qkpG+2ldGg4xRFmx+jfTvZPxfGFhi64BcnL9vkCm/Tw= github.com/vmihailenco/msgpack/v4 v4.3.12 h1:07s4sz9IReOgdikxLTKNbBdqDMLsjPKXwvCazn8G65U= diff --git a/test/new-e2e/go.mod b/test/new-e2e/go.mod index f987de4d5a4959..3a7f806132a5c0 100644 --- a/test/new-e2e/go.mod +++ b/test/new-e2e/go.mod @@ -44,7 +44,7 @@ require ( github.com/pulumiverse/pulumi-time/sdk v0.0.0-20231010123146-089d7304da13 github.com/samber/lo v1.39.0 github.com/sethvargo/go-retry v0.2.4 - github.com/stretchr/testify v1.8.5-0.20231013065317-89920137cdfa + github.com/stretchr/testify v1.9.0 golang.org/x/crypto v0.21.0 golang.org/x/sys v0.18.0 golang.org/x/term v0.18.0 @@ -195,7 +195,7 @@ require ( github.com/spf13/cast v1.6.0 // indirect github.com/spf13/cobra v1.8.0 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/stretchr/objx v0.5.0 // indirect + github.com/stretchr/objx v0.5.2 // indirect github.com/texttheater/golang-levenshtein v1.0.1 // indirect github.com/tinylib/msgp v1.1.8 // indirect github.com/tweekmonster/luser v0.0.0-20161003172636-3fa38070dbd7 // indirect diff --git a/test/new-e2e/go.sum b/test/new-e2e/go.sum index f719d01f3618b9..b98e9046232d52 100644 --- a/test/new-e2e/go.sum +++ b/test/new-e2e/go.sum @@ -422,8 +422,9 @@ 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/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= 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.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= @@ -433,8 +434,8 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.5-0.20231013065317-89920137cdfa h1:I9YHewamqSIcEG6rpRhgF9p79H0cOojefpiOH0pe0VY= -github.com/stretchr/testify v1.8.5-0.20231013065317-89920137cdfa/go.mod h1:LZ02lxBfF+JCTGmBu/SyjoaIlOF6u2nxMP788uhnZlI= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/texttheater/golang-levenshtein v1.0.1 h1:+cRNoVrfiwufQPhoMzB6N0Yf/Mqajr6t1lOv8GyGE2U= github.com/texttheater/golang-levenshtein v1.0.1/go.mod h1:PYAKrbF5sAiq9wd+H82hs7gNaen0CplQ9uvm6+enD/8= github.com/tinylib/msgp v1.1.8 h1:FCXC1xanKO4I8plpHGH2P7koL/RzZs12l/+r7vakfm0= From caafdd50a2bc93494ba5d9cd0687298dd33b2e75 Mon Sep 17 00:00:00 2001 From: Guy Arbitman Date: Mon, 11 Mar 2024 17:40:55 +0200 Subject: [PATCH 123/155] usm: kafka: Migrate encoding to use gostreamer (#23601) Migrating the kafka encoding to use inline encoding and protobuf marshaling by using the gostreamer interface. This PR matches PR #19533 for http2, and #18408 for http. --- pkg/network/encoding/marshal/format.go | 8 +- pkg/network/encoding/marshal/kafka.go | 87 ++++++---------------- pkg/network/encoding/marshal/kafka_test.go | 24 ++++-- 3 files changed, 40 insertions(+), 79 deletions(-) diff --git a/pkg/network/encoding/marshal/format.go b/pkg/network/encoding/marshal/format.go index 6b1e154c28b029..e78020e585d199 100644 --- a/pkg/network/encoding/marshal/format.go +++ b/pkg/network/encoding/marshal/format.go @@ -6,7 +6,6 @@ package marshal import ( - "bytes" "math" "reflect" "unsafe" @@ -99,12 +98,7 @@ func FormatConnection(builder *model.ConnectionBuilder, conn network.ConnectionS staticTags, dynamicTags = httpEncoder.GetHTTPAggregationsAndTags(conn, builder) _, _ = http2Encoder.WriteHTTP2AggregationsAndTags(conn, builder) - // TODO: optimize kafkEncoder to take a writer and use gostreamer - if dsa := kafkaEncoder.GetKafkaAggregations(conn); dsa != nil { - builder.SetDataStreamsAggregations(func(b *bytes.Buffer) { - b.Write(dsa) - }) - } + kafkaEncoder.WriteKafkaAggregations(conn, builder) conn.StaticTags |= staticTags tags, tagChecksum := formatTags(conn, tagsSet, dynamicTags) diff --git a/pkg/network/encoding/marshal/kafka.go b/pkg/network/encoding/marshal/kafka.go index 0280410c752e05..d1a1bba576a7ce 100644 --- a/pkg/network/encoding/marshal/kafka.go +++ b/pkg/network/encoding/marshal/kafka.go @@ -6,29 +6,19 @@ package marshal import ( - "sync" + "bytes" + "io" model "github.com/DataDog/agent-payload/v5/process" - "github.com/gogo/protobuf/proto" "github.com/DataDog/datadog-agent/pkg/network" "github.com/DataDog/datadog-agent/pkg/network/protocols/kafka" "github.com/DataDog/datadog-agent/pkg/network/types" ) -var kafkaAggregationPool = sync.Pool{ - New: func() any { - return &model.KafkaAggregation{ - Header: new(model.KafkaRequestHeader), - } - }, -} - type kafkaEncoder struct { - byConnection *USMConnectionIndex[kafka.Key, *kafka.RequestStat] - - // cached object - aggregations *model.DataStreamsAggregations + kafkaAggregationsBuilder *model.DataStreamsAggregationsBuilder + byConnection *USMConnectionIndex[kafka.Key, *kafka.RequestStat] } func newKafkaEncoder(kafkaPayloads map[kafka.Key]*kafka.RequestStat) *kafkaEncoder { @@ -37,82 +27,49 @@ func newKafkaEncoder(kafkaPayloads map[kafka.Key]*kafka.RequestStat) *kafkaEncod } return &kafkaEncoder{ - aggregations: &model.DataStreamsAggregations{ - // It's not that important to get the initial size of this slice - // right because we're re-using it multiple times and should quickly - // converge to a final size after a few calls to - // `GetKafkaAggregations` - KafkaAggregations: make([]*model.KafkaAggregation, 0, 10), - }, + kafkaAggregationsBuilder: model.NewDataStreamsAggregationsBuilder(nil), byConnection: GroupByConnection("kafka", kafkaPayloads, func(key kafka.Key) types.ConnectionKey { return key.ConnectionKey }), } } -func (e *kafkaEncoder) GetKafkaAggregations(c network.ConnectionStats) []byte { +func (e *kafkaEncoder) WriteKafkaAggregations(c network.ConnectionStats, builder *model.ConnectionBuilder) { if e == nil { - return nil + return } connectionData := e.byConnection.Find(c) if connectionData == nil || len(connectionData.Data) == 0 || connectionData.IsPIDCollision(c) { - return nil - } - - return e.encodeData(connectionData) -} - -func (e *kafkaEncoder) Close() { - if e == nil { return } - e.reset() - e.byConnection.Close() + builder.SetDataStreamsAggregations(func(b *bytes.Buffer) { + e.encodeData(connectionData, b) + }) } -func (e *kafkaEncoder) encodeData(connectionData *USMConnectionData[kafka.Key, *kafka.RequestStat]) []byte { - e.reset() +func (e *kafkaEncoder) encodeData(connectionData *USMConnectionData[kafka.Key, *kafka.RequestStat], w io.Writer) { + e.kafkaAggregationsBuilder.Reset(w) for _, kv := range connectionData.Data { key := kv.Key stats := kv.Value - - kafkaAggregation := kafkaAggregationPool.Get().(*model.KafkaAggregation) - - kafkaAggregation.Header.RequestType = uint32(key.RequestAPIKey) - kafkaAggregation.Header.RequestVersion = uint32(key.RequestVersion) - kafkaAggregation.Topic = key.TopicName - kafkaAggregation.Count = uint32(stats.Count) - - e.aggregations.KafkaAggregations = append(e.aggregations.KafkaAggregations, kafkaAggregation) + e.kafkaAggregationsBuilder.AddKafkaAggregations(func(builder *model.KafkaAggregationBuilder) { + builder.SetHeader(func(header *model.KafkaRequestHeaderBuilder) { + header.SetRequest_type(uint32(key.RequestAPIKey)) + header.SetRequest_version(uint32(key.RequestVersion)) + }) + builder.SetTopic(key.TopicName) + builder.SetCount(uint32(stats.Count)) + }) } - - serializedData, _ := proto.Marshal(e.aggregations) - return serializedData } -func (e *kafkaEncoder) reset() { +func (e *kafkaEncoder) Close() { if e == nil { return } - for i, kafkaAggregation := range e.aggregations.KafkaAggregations { - // The pooled *model.KafkaAggregation object comes along with a - // pre-allocated *model.KafkaHeader object as well, so we ensure that we - // clean both objects but keep them linked together before returning it - // to the pool. - - header := kafkaAggregation.Header - header.Reset() - - kafkaAggregation.Reset() - kafkaAggregation.Header = header - - kafkaAggregationPool.Put(kafkaAggregation) - e.aggregations.KafkaAggregations[i] = nil - } - - e.aggregations.KafkaAggregations = e.aggregations.KafkaAggregations[:0] + e.byConnection.Close() } diff --git a/pkg/network/encoding/marshal/kafka_test.go b/pkg/network/encoding/marshal/kafka_test.go index d4744b807e67a5..76252f2c7e507c 100644 --- a/pkg/network/encoding/marshal/kafka_test.go +++ b/pkg/network/encoding/marshal/kafka_test.go @@ -174,7 +174,11 @@ func (s *KafkaSuite) TestKafkaIDCollisionRegression() { // assert that the other connections sharing the same (source,destination) // addresses but different PIDs *won't* be associated with the Kafka stats // object - assert.Nil(encoder.GetKafkaAggregations(in.Conns[1])) + streamer := NewProtoTestStreamer[*model.Connection]() + encoder.WriteKafkaAggregations(in.Conns[1], model.NewConnectionBuilder(streamer)) + var conn model.Connection + streamer.Unwrap(t, &conn) + assert.Empty(conn.DataStreamsAggregations) } func (s *KafkaSuite) TestKafkaLocalhostScenario() { @@ -231,14 +235,17 @@ func (s *KafkaSuite) TestKafkaLocalhostScenario() { } func getKafkaAggregations(t *testing.T, encoder *kafkaEncoder, c network.ConnectionStats) *model.DataStreamsAggregations { - kafkaBlob := encoder.GetKafkaAggregations(c) - require.NotNil(t, kafkaBlob) + streamer := NewProtoTestStreamer[*model.Connection]() + encoder.WriteKafkaAggregations(c, model.NewConnectionBuilder(streamer)) - aggregations := new(model.DataStreamsAggregations) - err := proto.Unmarshal(kafkaBlob, aggregations) + var conn model.Connection + streamer.Unwrap(t, &conn) + + var aggregations model.DataStreamsAggregations + err := proto.Unmarshal(conn.DataStreamsAggregations, &aggregations) require.NoError(t, err) - return aggregations + return &aggregations } func generateBenchMarkPayloadKafka(entries uint16) network.Connections { @@ -275,12 +282,15 @@ func generateBenchMarkPayloadKafka(entries uint16) network.Connections { func commonBenchmarkKafkaEncoder(b *testing.B, entries uint16) { payload := generateBenchMarkPayloadKafka(entries) + streamer := NewProtoTestStreamer[*model.Connection]() + a := model.NewConnectionBuilder(streamer) b.ResetTimer() b.ReportAllocs() var h *kafkaEncoder for i := 0; i < b.N; i++ { h = newKafkaEncoder(payload.Kafka) - h.GetKafkaAggregations(payload.Conns[0]) + streamer.Reset() + h.WriteKafkaAggregations(payload.Conns[0], a) h.Close() } } From 951860eb0a7035cf9d66c7cd58d6331768e93546 Mon Sep 17 00:00:00 2001 From: Guy Arbitman Date: Mon, 11 Mar 2024 17:56:49 +0200 Subject: [PATCH 124/155] usm: kafka: Remove redundant struct (#23622) The original kafka_transaction_t wrapped kafka_transaction_batch_entry_t with 2 other fields however, the other fields were redundant, thus after removing them we left with a reudndnat wrapper to kafka_transaction_batch_entry_t. After removing all redundnat fields and structs renamed kafka_transaction_batch_entry_t to kafka_transaction_t for the simplicity --- .../ebpf/c/protocols/kafka/kafka-parsing.h | 22 +++++++++---------- pkg/network/ebpf/c/protocols/kafka/types.h | 10 --------- .../ebpf/c/protocols/kafka/usm-events.h | 2 +- pkg/network/protocols/kafka/types.go | 2 +- 4 files changed, 13 insertions(+), 23 deletions(-) diff --git a/pkg/network/ebpf/c/protocols/kafka/kafka-parsing.h b/pkg/network/ebpf/c/protocols/kafka/kafka-parsing.h index 2f0438616c1952..c9b9b26726f645 100644 --- a/pkg/network/ebpf/c/protocols/kafka/kafka-parsing.h +++ b/pkg/network/ebpf/c/protocols/kafka/kafka-parsing.h @@ -40,7 +40,7 @@ int socket__kafka_filter(struct __sk_buff* skb) { } bpf_memset(kafka, 0, sizeof(kafka_transaction_t)); - if (!fetch_dispatching_arguments(&kafka->base.tup, &skb_info)) { + if (!fetch_dispatching_arguments(&kafka->tup, &skb_info)) { log_debug("socket__kafka_filter failed to fetch arguments for tail call"); return 0; } @@ -48,7 +48,7 @@ int socket__kafka_filter(struct __sk_buff* skb) { if (!kafka_allow_packet(kafka, skb, &skb_info)) { return 0; } - normalize_tuple(&kafka->base.tup); + normalize_tuple(&kafka->tup); (void)kafka_process(kafka, skb, skb_info.data_off); return 0; @@ -77,8 +77,8 @@ static __always_inline bool kafka_process(kafka_transaction_t *kafka_transaction return false; } - kafka_transaction->base.request_api_key = kafka_header.api_key; - kafka_transaction->base.request_api_version = kafka_header.api_version; + kafka_transaction->request_api_key = kafka_header.api_key; + kafka_transaction->request_api_version = kafka_header.api_version; offset += sizeof(kafka_header_t); @@ -112,16 +112,16 @@ static __always_inline bool kafka_process(kafka_transaction_t *kafka_transaction if (topic_name_size <= 0 || topic_name_size > TOPIC_NAME_MAX_ALLOWED_SIZE) { return false; } - bpf_memset(kafka_transaction->base.topic_name, 0, TOPIC_NAME_MAX_STRING_SIZE); - read_into_buffer_topic_name_parser((char *)kafka_transaction->base.topic_name, skb, offset); + bpf_memset(kafka_transaction->topic_name, 0, TOPIC_NAME_MAX_STRING_SIZE); + read_into_buffer_topic_name_parser((char *)kafka_transaction->topic_name, skb, offset); offset += topic_name_size; - kafka_transaction->base.topic_name_size = topic_name_size; + kafka_transaction->topic_name_size = topic_name_size; - CHECK_STRING_COMPOSED_OF_ASCII_FOR_PARSING(TOPIC_NAME_MAX_STRING_SIZE_TO_VALIDATE, topic_name_size, kafka_transaction->base.topic_name); + CHECK_STRING_COMPOSED_OF_ASCII_FOR_PARSING(TOPIC_NAME_MAX_STRING_SIZE_TO_VALIDATE, topic_name_size, kafka_transaction->topic_name); - log_debug("kafka: topic name is %s", kafka_transaction->base.topic_name); + log_debug("kafka: topic name is %s", kafka_transaction->topic_name); - kafka_batch_enqueue(&kafka_transaction->base); + kafka_batch_enqueue(kafka_transaction); return true; } @@ -130,7 +130,7 @@ static __always_inline bool kafka_process(kafka_transaction_t *kafka_transaction // of interest such as empty ACKs, UDP data or encrypted traffic. static __always_inline bool kafka_allow_packet(kafka_transaction_t *kafka, struct __sk_buff* skb, skb_info_t *skb_info) { // we're only interested in TCP traffic - if (!(kafka->base.tup.metadata&CONN_TYPE_TCP)) { + if (!(kafka->tup.metadata&CONN_TYPE_TCP)) { return false; } diff --git a/pkg/network/ebpf/c/protocols/kafka/types.h b/pkg/network/ebpf/c/protocols/kafka/types.h index d4e4d3f9da20e0..a5710f9afe258a 100644 --- a/pkg/network/ebpf/c/protocols/kafka/types.h +++ b/pkg/network/ebpf/c/protocols/kafka/types.h @@ -24,16 +24,6 @@ typedef struct { __u16 request_api_version; char topic_name[TOPIC_NAME_MAX_STRING_SIZE]; __u16 topic_name_size; -} kafka_transaction_batch_entry_t; - -// Kafka transaction information associated to a certain socket (tuple_t) -typedef struct { - // this field is used to disambiguate segments in the context of keep-alives - // we populate it with the TCP seq number of the request and then the response segments - __u32 tcp_seq; - - __u32 current_offset_in_request_fragment; - kafka_transaction_batch_entry_t base; } kafka_transaction_t; #endif diff --git a/pkg/network/ebpf/c/protocols/kafka/usm-events.h b/pkg/network/ebpf/c/protocols/kafka/usm-events.h index 38c487777f103f..b14021809f5847 100644 --- a/pkg/network/ebpf/c/protocols/kafka/usm-events.h +++ b/pkg/network/ebpf/c/protocols/kafka/usm-events.h @@ -4,6 +4,6 @@ #include "protocols/kafka/types.h" #include "protocols/events.h" -USM_EVENTS_INIT(kafka, kafka_transaction_batch_entry_t, KAFKA_BATCH_SIZE); +USM_EVENTS_INIT(kafka, kafka_transaction_t, KAFKA_BATCH_SIZE); #endif diff --git a/pkg/network/protocols/kafka/types.go b/pkg/network/protocols/kafka/types.go index 805bbad7e38b98..b5308fee3664e2 100644 --- a/pkg/network/protocols/kafka/types.go +++ b/pkg/network/protocols/kafka/types.go @@ -15,4 +15,4 @@ import "C" type ConnTuple C.conn_tuple_t -type EbpfTx C.kafka_transaction_batch_entry_t +type EbpfTx C.kafka_transaction_t From bf00fa7c6b2f0259fa5e39dae74662ad99d81cf9 Mon Sep 17 00:00:00 2001 From: Guy Arbitman Date: Mon, 11 Mar 2024 17:58:39 +0200 Subject: [PATCH 125/155] apply log limit on rc client (#23599) * Move log limit to a shared package * rc: limit spamming log * Fixed revive linter --- pkg/config/remote/client/client.go | 5 +++- pkg/network/dns/cache.go | 4 ++-- pkg/network/protocols/http/statkeeper.go | 5 ++-- .../protocols/http2/incomplete_stats.go | 5 ++-- pkg/network/protocols/http2/model_linux.go | 2 +- pkg/process/checks/container.go | 5 ++-- pkg/process/checks/net.go | 5 ++-- pkg/process/checks/process.go | 4 ++-- pkg/process/monitor/process_monitor.go | 5 ++-- pkg/{process/util => util/log}/log_limit.go | 24 +++++++++---------- .../util => util/log}/log_limit_test.go | 2 +- 11 files changed, 32 insertions(+), 34 deletions(-) rename pkg/{process/util => util/log}/log_limit.go (70%) rename pkg/{process/util => util/log}/log_limit_test.go (98%) diff --git a/pkg/config/remote/client/client.go b/pkg/config/remote/client/client.go index 3f7a7fe356bac5..5f751090063f35 100644 --- a/pkg/config/remote/client/client.go +++ b/pkg/config/remote/client/client.go @@ -387,6 +387,7 @@ func (c *Client) pollLoop() { successfulFirstRun = true } + logLimit := log.NewLogLimit(5, time.Minute) for { interval := c.pollInterval + c.backoffPolicy.GetBackoffDuration(c.backoffErrorCount) if !successfulFirstRun && interval > time.Second { @@ -414,7 +415,9 @@ func (c *Client) pollLoop() { if !successfulFirstRun { // As some clients may start before the core-agent server is up, we log the first error // as an Info log as the race is expected. If the error persists, we log with error logs - log.Infof("retrying the first update of remote-config state (%v)", err) + if logLimit.ShouldLog() { + log.Infof("retrying the first update of remote-config state (%v)", err) + } } else { c.lastUpdateError = err c.backoffPolicy.IncError(c.backoffErrorCount) diff --git a/pkg/network/dns/cache.go b/pkg/network/dns/cache.go index 3f194625274392..3afc21989d5ffb 100644 --- a/pkg/network/dns/cache.go +++ b/pkg/network/dns/cache.go @@ -43,7 +43,7 @@ type reverseDNSCache struct { // maxDomainsPerIP is the maximum number of domains mapped to a single IP maxDomainsPerIP int - oversizedLogLimit *util.LogLimit + oversizedLogLimit *log.Limit } func newReverseDNSCache(size int, expirationPeriod time.Duration) *reverseDNSCache { @@ -51,7 +51,7 @@ func newReverseDNSCache(size int, expirationPeriod time.Duration) *reverseDNSCac data: make(map[util.Address]*dnsCacheVal), exit: make(chan struct{}), size: size, - oversizedLogLimit: util.NewLogLimit(10, time.Minute*10), + oversizedLogLimit: log.NewLogLimit(10, time.Minute*10), maxDomainsPerIP: 1000, } diff --git a/pkg/network/protocols/http/statkeeper.go b/pkg/network/protocols/http/statkeeper.go index b4e1e8d0c7dba1..304c37699ea4b6 100644 --- a/pkg/network/protocols/http/statkeeper.go +++ b/pkg/network/protocols/http/statkeeper.go @@ -14,7 +14,6 @@ import ( "github.com/DataDog/datadog-agent/pkg/network/config" "github.com/DataDog/datadog-agent/pkg/network/usm/utils" - "github.com/DataDog/datadog-agent/pkg/process/util" "github.com/DataDog/datadog-agent/pkg/util/log" ) @@ -35,7 +34,7 @@ type StatKeeper struct { // http path buffer buffer []byte - oversizedLogLimit *util.LogLimit + oversizedLogLimit *log.Limit } // NewStatkeeper returns a new StatKeeper. @@ -61,7 +60,7 @@ func NewStatkeeper(c *config.Config, telemetry *Telemetry, incompleteBuffer Inco connectionAggregator: connectionAggregator, buffer: make([]byte, getPathBufferSize(c)), telemetry: telemetry, - oversizedLogLimit: util.NewLogLimit(10, time.Minute*10), + oversizedLogLimit: log.NewLogLimit(10, time.Minute*10), } } diff --git a/pkg/network/protocols/http2/incomplete_stats.go b/pkg/network/protocols/http2/incomplete_stats.go index 381be826d71c65..3d8b22abc42874 100644 --- a/pkg/network/protocols/http2/incomplete_stats.go +++ b/pkg/network/protocols/http2/incomplete_stats.go @@ -12,7 +12,6 @@ import ( "github.com/DataDog/datadog-agent/pkg/network/config" "github.com/DataDog/datadog-agent/pkg/network/protocols/http" - "github.com/DataDog/datadog-agent/pkg/process/util" "github.com/DataDog/datadog-agent/pkg/util/log" ) @@ -25,7 +24,7 @@ type incompleteBuffer struct { data []*EbpfTx maxEntries int minAgeNano int64 - oversizedLogLimit *util.LogLimit + oversizedLogLimit *log.Limit } // NewIncompleteBuffer returns a new incompleteBuffer. @@ -34,7 +33,7 @@ func NewIncompleteBuffer(c *config.Config) http.IncompleteBuffer { data: make([]*EbpfTx, 0), maxEntries: c.MaxHTTPStatsBuffered, minAgeNano: defaultMinAge.Nanoseconds(), - oversizedLogLimit: util.NewLogLimit(10, time.Minute*10), + oversizedLogLimit: log.NewLogLimit(10, time.Minute*10), } } diff --git a/pkg/network/protocols/http2/model_linux.go b/pkg/network/protocols/http2/model_linux.go index bd2ded7ee9c7b6..f4f53f86c3cd8c 100644 --- a/pkg/network/protocols/http2/model_linux.go +++ b/pkg/network/protocols/http2/model_linux.go @@ -25,7 +25,7 @@ import ( "github.com/DataDog/datadog-agent/pkg/util/log" ) -var oversizedLogLimit = util.NewLogLimit(10, time.Minute*10) +var oversizedLogLimit = log.NewLogLimit(10, time.Minute*10) // validatePath validates the given path. func validatePath(str string) error { diff --git a/pkg/process/checks/container.go b/pkg/process/checks/container.go index 951830e21acc5d..0ca3bec0a99cf7 100644 --- a/pkg/process/checks/container.go +++ b/pkg/process/checks/container.go @@ -14,7 +14,6 @@ import ( ddconfig "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/process/statsd" - "github.com/DataDog/datadog-agent/pkg/process/util" proccontainers "github.com/DataDog/datadog-agent/pkg/process/util/containers" "github.com/DataDog/datadog-agent/pkg/util/cloudproviders" "github.com/DataDog/datadog-agent/pkg/util/log" @@ -42,7 +41,7 @@ type ContainerCheck struct { lastRates map[string]*proccontainers.ContainerRateMetrics networkID string - containerFailedLogLimit *util.LogLimit + containerFailedLogLimit *log.Limit maxBatchSize int } @@ -58,7 +57,7 @@ func (c *ContainerCheck) Init(_ *SysProbeConfig, info *HostInfo, _ bool) error { } c.networkID = networkID - c.containerFailedLogLimit = util.NewLogLimit(10, time.Minute*10) + c.containerFailedLogLimit = log.NewLogLimit(10, time.Minute*10) c.maxBatchSize = getMaxBatchSize(c.config) return nil } diff --git a/pkg/process/checks/net.go b/pkg/process/checks/net.go index 4b8c5d3a13303a..e8e8c6f89ecf58 100644 --- a/pkg/process/checks/net.go +++ b/pkg/process/checks/net.go @@ -22,7 +22,6 @@ import ( "github.com/DataDog/datadog-agent/pkg/process/metadata/parser" "github.com/DataDog/datadog-agent/pkg/process/net" "github.com/DataDog/datadog-agent/pkg/process/net/resolver" - putil "github.com/DataDog/datadog-agent/pkg/process/util" "github.com/DataDog/datadog-agent/pkg/util/cloudproviders" "github.com/DataDog/datadog-agent/pkg/util/log" "github.com/DataDog/datadog-agent/pkg/util/subscriptions" @@ -58,7 +57,7 @@ type ConnectionsCheck struct { maxConnsPerMessage int tracerClientID string networkID string - notInitializedLogLimit *putil.LogLimit + notInitializedLogLimit *log.Limit dockerFilter *parser.DockerProxy serviceExtractor *parser.ServiceExtractor @@ -74,7 +73,7 @@ type ProcessConnRates map[int32]*model.ProcessNetworks func (c *ConnectionsCheck) Init(syscfg *SysProbeConfig, hostInfo *HostInfo, _ bool) error { c.hostInfo = hostInfo c.maxConnsPerMessage = syscfg.MaxConnsPerMessage - c.notInitializedLogLimit = putil.NewLogLimit(1, time.Minute*10) + c.notInitializedLogLimit = log.NewLogLimit(1, time.Minute*10) // We use the current process PID as the system-probe client ID c.tracerClientID = ProcessAgentClientID diff --git a/pkg/process/checks/process.go b/pkg/process/checks/process.go index e51ef1dcb7e49d..7faabb9d3a885b 100644 --- a/pkg/process/checks/process.go +++ b/pkg/process/checks/process.go @@ -91,7 +91,7 @@ type ProcessCheck struct { realtimeLastProcs map[int32]*procutil.Stats realtimeLastRun time.Time - notInitializedLogLimit *util.LogLimit + notInitializedLogLimit *log.Limit // lastPIDs is []int32 that holds PIDs that the check fetched last time, // will be reused by RT process collection to get stats @@ -128,7 +128,7 @@ func (p *ProcessCheck) Init(syscfg *SysProbeConfig, info *HostInfo, oneShot bool procutil.WithIgnoreZombieProcesses(p.config.GetBool(configIgnoreZombies))) p.containerProvider = proccontainers.GetSharedContainerProvider() - p.notInitializedLogLimit = util.NewLogLimit(1, time.Minute*10) + p.notInitializedLogLimit = log.NewLogLimit(1, time.Minute*10) networkID, err := cloudproviders.GetNetworkID(context.TODO()) if err != nil { diff --git a/pkg/process/monitor/process_monitor.go b/pkg/process/monitor/process_monitor.go index 8a540e1eb5c21b..49347d9e3ea656 100644 --- a/pkg/process/monitor/process_monitor.go +++ b/pkg/process/monitor/process_monitor.go @@ -19,7 +19,6 @@ import ( "go.uber.org/atomic" "github.com/DataDog/datadog-agent/pkg/network/protocols/telemetry" - "github.com/DataDog/datadog-agent/pkg/process/util" "github.com/DataDog/datadog-agent/pkg/runtime" "github.com/DataDog/datadog-agent/pkg/util/kernel" "github.com/DataDog/datadog-agent/pkg/util/log" @@ -37,7 +36,7 @@ var ( // Must initialize the sets, as we can register callbacks prior to calling Initialize. processExecCallbacks: make(map[*ProcessCallback]struct{}, 0), processExitCallbacks: make(map[*ProcessCallback]struct{}, 0), - oversizedLogLimit: util.NewLogLimit(10, 10*time.Minute), + oversizedLogLimit: log.NewLogLimit(10, 10*time.Minute), } ) @@ -124,7 +123,7 @@ type ProcessMonitor struct { tel processMonitorTelemetry - oversizedLogLimit *util.LogLimit + oversizedLogLimit *log.Limit } // ProcessCallback is a callback function that is called on a given pid that represents a new process. diff --git a/pkg/process/util/log_limit.go b/pkg/util/log/log_limit.go similarity index 70% rename from pkg/process/util/log_limit.go rename to pkg/util/log/log_limit.go index 0a304f3b35acc5..290382f333250c 100644 --- a/pkg/process/util/log_limit.go +++ b/pkg/util/log/log_limit.go @@ -3,7 +3,7 @@ // This product includes software developed at Datadog (https://www.datadoghq.com/). // Copyright 2016-present Datadog, Inc. -package util +package log import ( "time" @@ -11,24 +11,24 @@ import ( "go.uber.org/atomic" ) -// LogLimit is a utility that can be used to avoid logging noisily -type LogLimit struct { - // n is the times remaining that the LogLimit will return true for ShouldLog. +// Limit is a utility that can be used to avoid logging noisily +type Limit struct { + // n is the times remaining that the Limit will return true for ShouldLog. // we repeatedly subtract 1 from it, if it is nonzero. n *atomic.Int32 // exit and ticker must be different channels - // becaues Stopping a ticker will not close the ticker channel, + // because Stopping a ticker will not close the ticker channel, // and we will otherwise leak memory ticker *time.Ticker exit chan struct{} } -// NewLogLimit creates a LogLimit where shouldLog will return +// NewLogLimit creates a Limit where shouldLog will return // true the first N times it is called, and will return true once every // interval thereafter. -func NewLogLimit(n int, interval time.Duration) *LogLimit { - l := &LogLimit{ +func NewLogLimit(n int, interval time.Duration) *Limit { + l := &Limit{ n: atomic.NewInt32(int32(n)), ticker: time.NewTicker(interval), exit: make(chan struct{}), @@ -39,7 +39,7 @@ func NewLogLimit(n int, interval time.Duration) *LogLimit { } // ShouldLog returns true if the caller should log -func (l *LogLimit) ShouldLog() bool { +func (l *Limit) ShouldLog() bool { n := l.n.Load() if n > 0 { // try to decrement n, doing nothing on concurrent attempts @@ -51,12 +51,12 @@ func (l *LogLimit) ShouldLog() bool { } // Close will stop the underlying ticker -func (l *LogLimit) Close() { +func (l *Limit) Close() { l.ticker.Stop() close(l.exit) } -func (l *LogLimit) resetLoop() { +func (l *Limit) resetLoop() { for { select { case <-l.ticker.C: @@ -67,7 +67,7 @@ func (l *LogLimit) resetLoop() { } } -func (l *LogLimit) resetCounter() { +func (l *Limit) resetCounter() { // c.n == 0, it means we have gotten through the first few logs, and after ticker.T we should // do another log l.n.CompareAndSwap(0, 1) diff --git a/pkg/process/util/log_limit_test.go b/pkg/util/log/log_limit_test.go similarity index 98% rename from pkg/process/util/log_limit_test.go rename to pkg/util/log/log_limit_test.go index 7fbb448c212903..609fd3995655da 100644 --- a/pkg/process/util/log_limit_test.go +++ b/pkg/util/log/log_limit_test.go @@ -3,7 +3,7 @@ // This product includes software developed at Datadog (https://www.datadoghq.com/). // Copyright 2016-present Datadog, Inc. -package util +package log import ( "testing" From e4ef17285dd2e0242d6864bd1ebe96eb90584f71 Mon Sep 17 00:00:00 2001 From: Kevin Fairise <132568982+KevinFairise2@users.noreply.github.com> Date: Mon, 11 Mar 2024 17:05:58 +0100 Subject: [PATCH 126/155] fix(CI): Fix rules with 'changes' by adding compare_to (#23610) --- .gitlab-ci.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 492c962f549f43..5109584791ff1e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1146,6 +1146,7 @@ workflow: - pkg/config/remote/**/* - comp/remote-config/**/* - test/new-e2e/tests/remote-config/**/* + compare_to: main # TODO: use a variable, when this is supported https://gitlab.com/gitlab-org/gitlab/-/issues/369916 - when: manual allow_failure: true @@ -1170,6 +1171,7 @@ workflow: paths: # TODO: Add paths that should trigger tests for ASC - test/new-e2e/tests/agent-shared-components/**/* + compare_to: main # TODO: use a variable, when this is supported https://gitlab.com/gitlab-org/gitlab/-/issues/369916 - when: manual allow_failure: true @@ -1179,6 +1181,7 @@ workflow: paths: # TODO: Add paths that should trigger tests for subcommands - test/new-e2e/tests/agent-subcommands/**/* + compare_to: main # TODO: use a variable, when this is supported https://gitlab.com/gitlab-org/gitlab/-/issues/369916 - when: manual allow_failure: true @@ -1188,6 +1191,7 @@ workflow: paths: # TODO: Add paths that should trigger tests for language detection - test/new-e2e/tests/language-detection/**/* + compare_to: main # TODO: use a variable, when this is supported https://gitlab.com/gitlab-org/gitlab/-/issues/369916 - when: manual allow_failure: true @@ -1197,6 +1201,7 @@ workflow: paths: # TODO: Add paths that should trigger tests for npm - test/new-e2e/tests/npm/**/* + compare_to: main # TODO: use a variable, when this is supported https://gitlab.com/gitlab-org/gitlab/-/issues/369916 - when: manual allow_failure: true @@ -1206,6 +1211,7 @@ workflow: paths: # TODO: Add paths that should trigger tests for AML - test/new-e2e/tests/agent-metrics-logs/**/* + compare_to: main # TODO: use a variable, when this is supported https://gitlab.com/gitlab-org/gitlab/-/issues/369916 - when: manual allow_failure: true @@ -1215,6 +1221,7 @@ workflow: paths: # TODO: Add paths that should trigger tests for CWS - test/new-e2e/tests/cws/**/* + compare_to: main # TODO: use a variable, when this is supported https://gitlab.com/gitlab-org/gitlab/-/issues/369916 - when: manual allow_failure: true @@ -1224,6 +1231,7 @@ workflow: paths: # TODO: Add paths that should trigger tests for process - test/new-e2e/tests/process/**/* + compare_to: main # TODO: use a variable, when this is supported https://gitlab.com/gitlab-org/gitlab/-/issues/369916 - when: manual allow_failure: true @@ -1233,6 +1241,7 @@ workflow: paths: # TODO: Add paths that should trigger tests for orchestrator - test/new-e2e/tests/orchestrator/**/* + compare_to: main # TODO: use a variable, when this is supported https://gitlab.com/gitlab-org/gitlab/-/issues/369916 - when: manual allow_failure: true From 8c5ec0f072ca053b31bc91d38db55d46d256a8e4 Mon Sep 17 00:00:00 2001 From: Guy Arbitman Date: Mon, 11 Mar 2024 18:10:10 +0200 Subject: [PATCH 127/155] usm: kafka: Bump batch size to 30 (#23619) The original value was 15 per batch. However, the buffer is preallocated with constant size, thus we don't gain anything from having fewer values per batch. Increase the value to the max possible --- pkg/network/ebpf/c/protocols/kafka/defs.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/network/ebpf/c/protocols/kafka/defs.h b/pkg/network/ebpf/c/protocols/kafka/defs.h index be6b7eadd9dfa1..850565f00156c0 100644 --- a/pkg/network/ebpf/c/protocols/kafka/defs.h +++ b/pkg/network/ebpf/c/protocols/kafka/defs.h @@ -13,6 +13,6 @@ #define TOPIC_NAME_MAX_STRING_SIZE 80 // This controls the number of Kafka transactions read from userspace at a time -#define KAFKA_BATCH_SIZE 15 +#define KAFKA_BATCH_SIZE 30 #endif From 92f12df4484a87944e2c4e031c672babde48c107 Mon Sep 17 00:00:00 2001 From: Derek Brown Date: Mon, 11 Mar 2024 10:23:40 -0700 Subject: [PATCH 128/155] [WKINT-396] Fix tests that are hanging in CI (#23311) * [WKINT=396] Fix tests that are hanging in CI There are two problems which may be fixed by this. The previous version, the tests are inexplicably hanging (more work to do). In this version, etw was broken, which was obscured by ignoring failed tests due to the known hanging problem. This PR fixes the fact that USM was broken, and may fix the hanging problem, too. * Fixes problem in underlying ETW code that was causing tests to intermittently fail. Underlying problem is that the ETW message that was being used to clean up a connection sometimes comes out of the expected order ( the close comes before the connection sent notificiation). This was causing us to intermittently drop a connection. In the real world, it would mean that every now and again a connection would be missed. In the test, when that one case came up, the test would fail and hang forever. This PR fixes the underlying problem by switching the ETW notification that causes cleanup to a different message, which (empirically) always comes last. Also add additional test that floods the web server. With the 10k connection test, (empirically again) I always got the out of order at least once. Of course, since it's not predictable, it's possible to do 10K conns and always get the original behavior. But the change in the test should cover the out-of-order case and prove that it's fixed. * change codeowners * Update .github/CODEOWNERS Co-authored-by: pducolin <45568537+pducolin@users.noreply.github.com> * Update tests and handling of failed connections. * remove unused ParseAsciiString() * lint --------- Co-authored-by: pducolin <45568537+pducolin@users.noreply.github.com> --- .github/CODEOWNERS | 1 + .../protocols/http/etw_http_service.go | 82 +++++- .../protocols/http/etw_http_service_defs.go | 36 +-- pkg/network/protocols/http/etw_interface.go | 2 + .../protocols/http/etw_interface_test.go | 253 ++++++++++++------ pkg/network/protocols/http/model_windows.go | 13 + .../rspec_datadog/win-sysprobe-test_spec.rb | 2 +- 7 files changed, 277 insertions(+), 112 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index cdb9658dca6b74..df88d42cafa50b 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -517,6 +517,7 @@ /test/kitchen/test/integration/win-install-fail/ @DataDog/windows-agent /test/kitchen/test/integration/win-installopts/ @DataDog/windows-agent /test/kitchen/test/integration/win-no-subservices/ @DataDog/windows-agent +/test/kitchen/test/integration/win-sysprobe-test/ @DataDog/windows-kernel-integrations /test/kitchen/test/integration/win-reinstall-option/ @DataDog/windows-agent /test/kitchen/test/integration/win-repair/ @DataDog/windows-agent /test/kitchen/test/integration/win-user/ @DataDog/windows-agent diff --git a/pkg/network/protocols/http/etw_http_service.go b/pkg/network/protocols/http/etw_http_service.go index 761fe65ca5c85f..162a8fd16e5629 100644 --- a/pkg/network/protocols/http/etw_http_service.go +++ b/pkg/network/protocols/http/etw_http_service.go @@ -81,6 +81,7 @@ // 1. HTTP transactions events are always in the scope of // HTTPConnectionTraceTaskConnConn 21 [Local & Remote IP/Ports] // HTTPConnectionTraceTaskConnClose 23 +// HTTPConnectionTraceTaskConnCleanup 24 // // // 2. HTTP Req/Resp (the same ActivityID) @@ -92,15 +93,22 @@ // // or // +// // b. HTTPRequestTraceTaskRecvReq 1 [Correlated to Connection by builtin ActivityID<->ReleatedActivityID] // HTTPRequestTraceTaskParse 2 [verb, url] // HTTPRequestTraceTaskDeliver 3 [siteId, reqQueueName, url] // HTTPRequestTraceTaskFastResp 4 [statusCode, verb, headerLen, cachePolicy = 0] // HTTPRequestTraceTaskSendComplete 10 [httpStatus] + +// c. HTTPRequestTraceTaskRecvReq 1 [Correlated to Connection by builtin ActivityID<->ReleatedActivityID] +// HTTPRequestTraceTaskParse 2 [verb, url] +// HTTPRequestTraceTaskRejectedArgs 64 [] +// HTTPRequestTraceTaskSendComplete 10 [httpStatus] + // // or // -// c. HTTPRequestTraceTaskRecvReq 1 [Correlated to Connection by builtin ActivityID<->ReleatedActivityID] +// d. HTTPRequestTraceTaskRecvReq 1 [Correlated to Connection by builtin ActivityID<->ReleatedActivityID] // HTTPRequestTraceTaskParse 2 [verb, url] // HTTPRequestTraceTaskDeliver 3 [siteId, reqQueueName, url] // HTTPRequestTraceTaskFastResp 4 [statusCode, verb, headerLen, cachePolicy=1] @@ -109,7 +117,7 @@ // // or // -// d. HTTPRequestTraceTaskRecvReq 1 [Correlated to Connection by builtin ActivityID<->ReleatedActivityID] +// e. HTTPRequestTraceTaskRecvReq 1 [Correlated to Connection by builtin ActivityID<->ReleatedActivityID] // HTTPRequestTraceTaskParse 2 [verb, url] // HTTPRequestTraceTaskSrvdFrmCache 16 [site, bytesSent] // @@ -193,6 +201,10 @@ type HttpConnLink struct { http WinHttpTransaction url string + + // list of etw notifications, in order, that this transaction has been seen + // this is for internal debugging; is not surfaced anywhere. + opcodes []uint16 } //nolint:revive // TODO(WKIT) Fix revive linter @@ -536,8 +548,8 @@ func httpCallbackOnHTTPConnectionTraceTaskConnConn(eventInfo *etw.DDEventRecord) } // ------------------------------------------------------------- -// HttpService ETW Event #23 (HTTPConnectionTraceTaskConnClose) -func httpCallbackOnHTTPConnectionTraceTaskConnClose(eventInfo *etw.DDEventRecord) { +// HttpService ETW Event #24 (HTTPConnectionTraceTaskConnCleanup) +func httpCallbackOnHTTPConnectionTraceTaskConnCleanup(eventInfo *etw.DDEventRecord) { if HttpServiceLogVerbosity == HttpServiceLogVeryVerbose { reportHttpCallbackEvents(eventInfo, true) } @@ -645,10 +657,16 @@ func httpCallbackOnHTTPRequestTraceTaskRecvReq(eventInfo *etw.DDEventRecord) { } // Initialize ReqResp and Conn Link - reqRespAndLink := &HttpConnLink{} - reqRespAndLink.connActivityId = eventInfo.EventHeader.ActivityID - reqRespAndLink.http.Txn.Tup = connOpen.conn.tup - reqRespAndLink.http.Txn.RequestStarted = winutil.FileTimeToUnixNano(uint64(eventInfo.EventHeader.TimeStamp)) + reqRespAndLink := &HttpConnLink{ + connActivityId: eventInfo.EventHeader.ActivityID, + opcodes: make([]uint16, 0, 10), // allocate enough slots for the opcodes we expect. + http: WinHttpTransaction{ + Txn: driver.HttpTransactionType{ + Tup: connOpen.conn.tup, + RequestStarted: winutil.FileTimeToUnixNano(uint64(eventInfo.EventHeader.TimeStamp)), + }, + }, + } // Save Req/Resp Conn Link and back reference to it http2openConn[*rai] = reqRespAndLink @@ -697,7 +715,7 @@ func httpCallbackOnHTTPRequestTraceTaskParse(eventInfo *etw.DDEventRecord) { if !found { return } - + httpConnLink.opcodes = append(httpConnLink.opcodes, eventInfo.EventHeader.EventDescriptor.ID) // Verb (in future we can cast number to) httpConnLink.http.Txn.RequestMethod = uint32(VerbToMethod(userData.GetUint32(8))) @@ -785,9 +803,10 @@ func httpCallbackOnHTTPRequestTraceTaskDeliver(eventInfo *etw.DDEventRecord) { // Get req/resp conn link httpConnLink, found := getHttpConnLink(eventInfo.EventHeader.ActivityID) if !found { + log.Warnf("connlink not found at tracetaskdeliver") return } - + httpConnLink.opcodes = append(httpConnLink.opcodes, eventInfo.EventHeader.EventDescriptor.ID) // Extra output connOpen, connFound := getConnOpen(httpConnLink.connActivityId) if !connFound { @@ -812,6 +831,7 @@ func httpCallbackOnHTTPRequestTraceTaskDeliver(eventInfo *etw.DDEventRecord) { httpConnLink.http.AppPool = appPool httpConnLink.http.SiteID = userData.GetUint32(16) httpConnLink.http.SiteName = iisConfig.GetSiteNameFromID(httpConnLink.http.SiteID) + // Parse url if urlOffset > userData.Length() { parsingErrorCount++ @@ -872,6 +892,7 @@ func httpCallbackOnHTTPRequestTraceTaskRecvResp(eventInfo *etw.DDEventRecord) { if !found { return } + httpConnLink.opcodes = append(httpConnLink.opcodes, eventInfo.EventHeader.EventDescriptor.ID) httpConnLink.http.Txn.ResponseStatusCode = userData.GetUint16(16) // <<>> @@ -926,7 +947,7 @@ func httpCallbackOnHTTPRequestTraceTaskSrvdFrmCache(eventInfo *etw.DDEventRecord if !found { return } - + httpConnLink.opcodes = append(httpConnLink.opcodes, eventInfo.EventHeader.EventDescriptor.ID) // Get from HTTP.sys cache (httpCache) cacheEntry, found := httpCache[httpConnLink.url] if !found { @@ -1120,7 +1141,18 @@ func httpCallbackOnHTTPRequestTraceTaskSend(eventInfo *etw.DDEventRecord) { if !found { return } + if httpConnLink.http.Txn.ResponseStatusCode == 0 { + /* + * this condition will happen in case (c). If the request fails for some reason + * (for example server is overloaded), then we won't get TaskFastResp, which usually + * sets the status code. So if we don't already have the status code, assign it + * here. + */ + userData := etwimpl.GetUserData(eventInfo) + httpConnLink.http.Txn.ResponseStatusCode = userData.GetUint16(8) + } + httpConnLink.opcodes = append(httpConnLink.opcodes, eventInfo.EventHeader.EventDescriptor.ID) completeReqRespTracking(eventInfo, httpConnLink) } @@ -1153,6 +1185,15 @@ func httpCallbackOnHttpSslConnEvent(eventInfo *etw.DDEventRecord) { } } +func httpCallbackOnHTTPRequestRejectedArgs(eventInfo *etw.DDEventRecord) { + // Get req/resp conn link + httpConnLink, found := getHttpConnLink(eventInfo.EventHeader.ActivityID) + if found { + httpConnLink.opcodes = append(httpConnLink.opcodes, eventInfo.EventHeader.EventDescriptor.ID) + } + +} + //nolint:revive // TODO(WKIT) Fix revive linter func reportHttpCallbackEvents(eventInfo *etw.DDEventRecord, willBeProcessed bool) { var processingStatus string @@ -1172,6 +1213,11 @@ func reportHttpCallbackEvents(eventInfo *etw.DDEventRecord, willBeProcessed bool //nolint:revive // TODO(WKIT) Fix revive linter func httpCallbackOnHttpServiceNonProcessedEvents(eventInfo *etw.DDEventRecord) { + // Get req/resp conn link + httpConnLink, found := getHttpConnLink(eventInfo.EventHeader.ActivityID) + if found { + httpConnLink.opcodes = append(httpConnLink.opcodes, eventInfo.EventHeader.EventDescriptor.ID) + } notHandledEventsCount++ if HttpServiceLogVerbosity == HttpServiceLogVeryVerbose { reportHttpCallbackEvents(eventInfo, false) @@ -1232,9 +1278,17 @@ func (hei *EtwInterface) OnEvent(eventInfo *etw.DDEventRecord) { httpCallbackOnHTTPConnectionTraceTaskConnConn(eventInfo) // #23 - case EVENT_ID_HttpService_HTTPConnectionTraceTaskConnClose: - httpCallbackOnHTTPConnectionTraceTaskConnClose(eventInfo) + //case EVENT_ID_HttpService_HTTPConnectionTraceTaskConnClose: + // httpCallbackOnHTTPConnectionTraceTaskConnClose(eventInfo) + // NOTE originally the cleanup function was done on (23) ConnClose. However it was discovered + // (the hard way) that every once in a while ConnCLose comes in out of order (in the test case) + // prior to (12) EVENT_ID_HttpService_HTTPRequestTraceTaskFastSend. This would cause + // some connections to be dropped. Using ConnCleanup (empirically) always comes last. + // + // #24 + case EVENT_ID_HttpService_HTTPConnectionTraceTaskConnCleanup: + httpCallbackOnHTTPConnectionTraceTaskConnCleanup(eventInfo) // #1 case EVENT_ID_HttpService_HTTPRequestTraceTaskRecvReq: httpCallbackOnHTTPRequestTraceTaskRecvReq(eventInfo) @@ -1283,6 +1337,8 @@ func (hei *EtwInterface) OnEvent(eventInfo *etw.DDEventRecord) { case EVENT_ID_HttpService_HTTPRequestTraceTaskLastSndError: httpCallbackOnHTTPRequestTraceTaskSend(eventInfo) + case EVENT_ID_HttpService_HTTPRequestTraceTaskRequestRejectedArgs: + httpCallbackOnHTTPRequestRejectedArgs(eventInfo) default: httpCallbackOnHttpServiceNonProcessedEvents(eventInfo) } diff --git a/pkg/network/protocols/http/etw_http_service_defs.go b/pkg/network/protocols/http/etw_http_service_defs.go index db786f1e5810d5..80421293251dbf 100644 --- a/pkg/network/protocols/http/etw_http_service_defs.go +++ b/pkg/network/protocols/http/etw_http_service_defs.go @@ -16,23 +16,25 @@ import ( const ( //revive:disable:var-naming Name is intended to match the Windows API name //revive:disable:exported - EVENT_ID_HttpService_HTTPConnectionTraceTaskConnConn = 0x15 - EVENT_ID_HttpService_HTTPConnectionTraceTaskConnClose = 0x17 - EVENT_ID_HttpService_HTTPRequestTraceTaskRecvReq = 0x1 - EVENT_ID_HttpService_HTTPRequestTraceTaskParse = 0x2 - EVENT_ID_HttpService_HTTPRequestTraceTaskDeliver = 0x3 - EVENT_ID_HttpService_HTTPRequestTraceTaskRecvResp = 0x4 - EVENT_ID_HttpService_HTTPRequestTraceTaskFastResp = 0x8 - EVENT_ID_HttpService_HTTPRequestTraceTaskSrvdFrmCache = 0x10 - EVENT_ID_HttpService_HTTPRequestTraceTaskCachedNotModified = 0x11 - EVENT_ID_HttpService_HTTPCacheTraceTaskAddedCacheEntry = 0x19 - EVENT_ID_HttpService_HTTPCacheTraceTaskFlushedCache = 0x1b - EVENT_ID_HttpService_HTTPSSLTraceTaskSslConnEvent = 0x22 - EVENT_ID_HttpService_HTTPRequestTraceTaskSendComplete = 0xa - EVENT_ID_HttpService_HTTPRequestTraceTaskCachedAndSend = 0xb - EVENT_ID_HttpService_HTTPRequestTraceTaskFastSend = 0xc - EVENT_ID_HttpService_HTTPRequestTraceTaskZeroSend = 0xd - EVENT_ID_HttpService_HTTPRequestTraceTaskLastSndError = 0xe + EVENT_ID_HttpService_HTTPConnectionTraceTaskConnConn = 21 + EVENT_ID_HttpService_HTTPConnectionTraceTaskConnClose = 23 + EVENT_ID_HttpService_HTTPConnectionTraceTaskConnCleanup = 24 + EVENT_ID_HttpService_HTTPRequestTraceTaskRecvReq = 1 + EVENT_ID_HttpService_HTTPRequestTraceTaskParse = 2 + EVENT_ID_HttpService_HTTPRequestTraceTaskDeliver = 3 + EVENT_ID_HttpService_HTTPRequestTraceTaskRecvResp = 4 + EVENT_ID_HttpService_HTTPRequestTraceTaskFastResp = 8 + EVENT_ID_HttpService_HTTPRequestTraceTaskSrvdFrmCache = 16 + EVENT_ID_HttpService_HTTPRequestTraceTaskCachedNotModified = 17 + EVENT_ID_HttpService_HTTPCacheTraceTaskAddedCacheEntry = 25 + EVENT_ID_HttpService_HTTPCacheTraceTaskFlushedCache = 27 + EVENT_ID_HttpService_HTTPSSLTraceTaskSslConnEvent = 34 + EVENT_ID_HttpService_HTTPRequestTraceTaskSendComplete = 10 + EVENT_ID_HttpService_HTTPRequestTraceTaskCachedAndSend = 11 + EVENT_ID_HttpService_HTTPRequestTraceTaskFastSend = 12 + EVENT_ID_HttpService_HTTPRequestTraceTaskZeroSend = 13 + EVENT_ID_HttpService_HTTPRequestTraceTaskLastSndError = 14 + EVENT_ID_HttpService_HTTPRequestTraceTaskRequestRejectedArgs = 64 //revive:enable:exported //revive:enable:var-naming ) diff --git a/pkg/network/protocols/http/etw_interface.go b/pkg/network/protocols/http/etw_interface.go index 040ed6f73d45a5..e627feb76d7532 100644 --- a/pkg/network/protocols/http/etw_interface.go +++ b/pkg/network/protocols/http/etw_interface.go @@ -94,6 +94,7 @@ func (hei *EtwInterface) SetMaxRequestBytes(maxRequestBytes uint64) { //nolint:revive // TODO(WKIT) Fix revive linter func (hei *EtwInterface) StartReadingHttpFlows() { + hei.OnStart() hei.eventLoopWG.Add(2) startingEtwChan := make(chan struct{}) @@ -157,6 +158,7 @@ func (hei *EtwInterface) StartReadingHttpFlows() { //nolint:revive // TODO(WKIT) Fix revive linter func (hei *EtwInterface) Close() { + hei.OnStop() if hei.session != nil { _ = hei.session.StopTracing() hei.eventLoopWG.Wait() diff --git a/pkg/network/protocols/http/etw_interface_test.go b/pkg/network/protocols/http/etw_interface_test.go index 21fa75b2649009..d59569bfed00db 100644 --- a/pkg/network/protocols/http/etw_interface_test.go +++ b/pkg/network/protocols/http/etw_interface_test.go @@ -8,6 +8,7 @@ package http import ( + "flag" "fmt" "net/netip" "sync" @@ -18,6 +19,7 @@ import ( nethttp "net/http" + "github.com/DataDog/datadog-agent/pkg/ebpf/ebpftest" "github.com/DataDog/datadog-agent/pkg/network/config" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -34,74 +36,101 @@ type testDef struct { code uint16 maxpath int64 pathTrucated bool + count uint64 } +var itersArg = flag.Uint64("iters", 10000, "set the number of iterations for the flood test") + func setupTests() []testDef { td := []testDef{ { - name: "Test default site ipv4", + name: "Test default site ipv4 flood", site: "Default Web Site", addr: "127.0.0.1", port: 80, path: "/", code: 200, + /* + note: you can really only do one test at this volume. Or, if you want to do more than one test, + you need to space them out at two minute intervals. + Since we're doing localhost, and the connections drop into TIME_WAIT when the request is complete, + then the host runs out of usable tcp 4-tuples to use. Don't do more than one "flood" test, or + if it's necessary, leave a cooldown in between tests. + */ + count: *itersArg, }, { - name: "Test default site ipv4 bad path", - site: "Default Web Site", - addr: "127.0.0.1", - port: 80, - path: "/foo", - code: 404, + name: "Test default site ipv4", + site: "Default Web Site", + addr: "127.0.0.1", + port: 80, + path: "/", + code: 200, + count: 1, }, { - name: "Test site1 ipv4", - site: "TestSite1", - addr: "127.0.0.1", - port: 8081, - path: "/", - code: 200, + name: "Test default site ipv4 bad path", + site: "Default Web Site", + addr: "127.0.0.1", + port: 80, + path: "/foo", + code: 404, + count: 1, }, { - name: "Test site2 ipv4", - site: "TestSite2", - addr: "127.0.0.1", - port: 8082, - path: "/", - code: 200, + name: "Test site1 ipv4", + site: "TestSite1", + addr: "127.0.0.1", + port: 8081, + path: "/", + code: 200, + count: 1, }, { - name: "Test default site ipv6", - site: "Default Web Site", - addr: "::1", - port: 80, - path: "/", - code: 200, + name: "Test site2 ipv4", + site: "TestSite2", + addr: "127.0.0.1", + port: 8082, + path: "/", + code: 200, + count: 1, }, { - name: "Test default site ipv6 bad path", - site: "Default Web Site", - addr: "::1", - port: 80, - path: "/foo", - code: 404, + name: "Test default site ipv6", + site: "Default Web Site", + addr: "::1", + port: 80, + path: "/", + code: 200, + count: 1, }, { - name: "Test site1 ipv6", - site: "TestSite1", - addr: "::1", - port: 8081, - path: "/", - code: 200, + name: "Test default site ipv6 bad path", + site: "Default Web Site", + addr: "::1", + port: 80, + path: "/foo", + code: 404, + count: 1, }, { - name: "Test site2 ipv6", - site: "TestSite2", - addr: "::1", - port: 8082, - path: "/", - code: 200, + name: "Test site1 ipv6", + site: "TestSite1", + addr: "::1", + port: 8081, + path: "/", + code: 200, + count: 1, + }, + { + name: "Test site2 ipv6", + site: "TestSite2", + addr: "::1", + port: 8082, + path: "/", + code: 200, + count: 1, }, { name: "Test path limit one short", @@ -111,6 +140,7 @@ func setupTests() []testDef { path: "/eightch", maxpath: 10, code: 404, + count: 1, }, { name: "Test path limit at boundary", @@ -121,6 +151,7 @@ func setupTests() []testDef { pathTrucated: true, maxpath: 10, code: 404, + count: 1, }, { name: "Test path limit one over", @@ -131,14 +162,16 @@ func setupTests() []testDef { pathTrucated: true, maxpath: 10, code: 404, + count: 1, }, } return td } -func executeRequestForTest(t *testing.T, etw *EtwInterface, test testDef) (*WinHttpTransaction, error) { +func executeRequestForTest(t *testing.T, etw *EtwInterface, test testDef) ([]WinHttpTransaction, map[int]int, error) { var txns []WinHttpTransaction + responsecount := make(map[int]int) var ok bool var wg sync.WaitGroup @@ -155,7 +188,7 @@ func executeRequestForTest(t *testing.T, etw *EtwInterface, test testDef) (*WinH ok = tok } } - if len(txns) > 0 { + if uint64(len(txns)) >= test.count { break } } @@ -169,20 +202,38 @@ func executeRequestForTest(t *testing.T, etw *EtwInterface, test testDef) (*WinH } else { urlstr = fmt.Sprintf("http://[%s]:%d%s", test.addr, test.port, test.path) } - resp, err := nethttp.Get(urlstr) - require.NoError(t, err) - _ = resp.Body.Close() + for i := uint64(0); i < test.count; i++ { + wg.Add(1) + go func() { + defer wg.Done() + resp, err := nethttp.Get(urlstr) + require.NoError(t, err) + + // in the flood test, we will get a bunch of errors since we actually + // exceed IIS' capacity to handle the load. But that's OK. Just + // track how many successes & errors so we can match to the transactions + // returned below. + code := resp.StatusCode + if v, ok := responsecount[code]; ok { + responsecount[code] = v + 1 + } else { + responsecount[code] = 1 + } + err = resp.Body.Close() + require.NoError(t, err) + }() + } wg.Wait() - assert.Equal(t, 1, len(txns)) + assert.Equal(t, test.count, uint64(len(txns))) assert.Equal(t, true, ok) - tx := txns[0] - return &tx, nil + + return txns, responsecount, nil } func TestEtwTransactions(t *testing.T) { - t.Skip("Skipping test as it is failing on CI: WKIT-292") + ebpftest.LogLevel(t, "info") cfg := config.New() cfg.EnableHTTPMonitoring = true cfg.EnableNativeTLSMonitoring = true @@ -203,6 +254,11 @@ func TestEtwTransactions(t *testing.T) { t.Run(test.name, func(t *testing.T) { + // this overrides the setting in etw_http_service.go to allow our max unrecovered connections to be + // large enough to handle the flood + if test.count > completedHttpTxMaxCount { + completedHttpTxMaxCount = test.count + 1 + } var expectedMax uint16 if test.maxpath == 0 { @@ -212,41 +268,76 @@ func TestEtwTransactions(t *testing.T) { expectedMax = uint16(test.maxpath) etw.SetMaxRequestBytes(uint64(test.maxpath)) } - tx, err := executeRequestForTest(t, etw, test) + t.Logf("Running %d iterations", test.count) + txns, responsecount, err := executeRequestForTest(t, etw, test) require.NoError(t, err) - assert.Equal(t, uint16(expectedMax), tx.Txn.MaxRequestFragment) - tgtbuf := make([]byte, cfg.HTTPMaxRequestFragment) - outbuf, fullpath := computePath(tgtbuf, tx.RequestFragment) - pathAsString := string(outbuf) + failed := false + assert.Equal(t, test.count, uint64(len(txns))) + for idx, tx := range txns { + assert.Equal(t, uint16(expectedMax), tx.Txn.MaxRequestFragment) + tgtbuf := make([]byte, cfg.HTTPMaxRequestFragment) + outbuf, fullpath := computePath(tgtbuf, tx.RequestFragment) + pathAsString := string(outbuf) - if test.pathTrucated { - assert.Equal(t, int(test.maxpath-1), len(pathAsString)) - assert.Equal(t, test.path[:test.maxpath-1], pathAsString) - assert.False(t, fullpath, "expecting fullpath to not be set") - } else { - assert.Equal(t, test.path, pathAsString, "unexpected path") - assert.True(t, fullpath, "expecting fullpath to be set") - } + if test.pathTrucated { + assert.Equal(t, int(test.maxpath-1), len(pathAsString)) + assert.Equal(t, test.path[:test.maxpath-1], pathAsString) + assert.False(t, fullpath, "expecting fullpath to not be set") + } else { + assert.Equal(t, test.path, pathAsString, "unexpected path") + assert.True(t, fullpath, "expecting fullpath to be set") + } - expectedAddr := netip.MustParseAddr(test.addr) - var hostaddr netip.Addr + expectedAddr := netip.MustParseAddr(test.addr) + var hostaddr netip.Addr - if expectedAddr.Is4() { - assert.Equal(t, windows.AF_INET, int(tx.Txn.Tup.Family), "unexpected address family") - hostaddr = netip.AddrFrom4([4]byte(tx.Txn.Tup.LocalAddr[:4])) - } else if expectedAddr.Is6() { - assert.Equal(t, windows.AF_INET6, int(tx.Txn.Tup.Family), "unexpected address family") - hostaddr = netip.AddrFrom16(tx.Txn.Tup.LocalAddr) - } else { - assert.FailNow(t, "Unexpected address family") + if expectedAddr.Is4() { + assert.Equal(t, windows.AF_INET, int(tx.Txn.Tup.Family), "unexpected address family") + hostaddr = netip.AddrFrom4([4]byte(tx.Txn.Tup.LocalAddr[:4])) + } else if expectedAddr.Is6() { + assert.Equal(t, windows.AF_INET6, int(tx.Txn.Tup.Family), "unexpected address family") + hostaddr = netip.AddrFrom16(tx.Txn.Tup.LocalAddr) + } else { + assert.FailNow(t, "Unexpected address family") + } + + if !assert.Equal(t, expectedAddr, hostaddr) { + failed = true + } + if !assert.Equal(t, test.port, tx.Txn.Tup.LocalPort, "unexpected port %d", idx) { + failed = true + } + if !assert.Equal(t, MethodGet, Method(tx.Txn.RequestMethod), "unexpected request method %d", idx) { + failed = true + } + + // in the flood test, we will get a bunch of errors since we actually + // exceed IIS' capacity to handle the load. But that's OK. Just + // track how many successes & errors so we can match to the transactions + // Only check the site and app pool for 200s, as in the error cases we don't seem + // to get that informatoin. + + if tx.Txn.ResponseStatusCode == 200 { + if !assert.Equal(t, test.site, tx.SiteName, "unexpected site %d", idx) { + failed = true + } + + if !assert.Equal(t, "DefaultAppPool", tx.AppPool, "unexpectedd App Pool %d", idx) { + failed = true + } + if failed { + break + } + } + // by decrementing this, we're looking to see that our notifications had + // the same number of transactions for each http response. + responsecount[int(tx.Txn.ResponseStatusCode)]-- + + } + for k, v := range responsecount { + assert.Equal(t, 0, v, "Unexpected response code %d", k) } - assert.Equal(t, expectedAddr, hostaddr) - assert.Equal(t, int(test.code), int(tx.Txn.ResponseStatusCode), "unexpected status code") - assert.Equal(t, test.port, tx.Txn.Tup.LocalPort, "unexpected port") - assert.Equal(t, test.site, tx.SiteName, "unexpected site") - assert.Equal(t, MethodGet, Method(tx.Txn.RequestMethod), "unexpected request method") - assert.Equal(t, "DefaultAppPool", tx.AppPool, "unexpectedd App Pool") }) diff --git a/pkg/network/protocols/http/model_windows.go b/pkg/network/protocols/http/model_windows.go index c87d03d8f0f87e..9c21bb1170fd14 100644 --- a/pkg/network/protocols/http/model_windows.go +++ b/pkg/network/protocols/http/model_windows.go @@ -10,6 +10,7 @@ package http import ( "encoding/binary" "fmt" + "net/netip" "strconv" "strings" @@ -118,7 +119,19 @@ func (tx *WinHttpTransaction) DynamicTags() []string { //nolint:revive // TODO(WKIT) Fix revive linter func (tx *WinHttpTransaction) String() string { var output strings.Builder + var l netip.Addr + var r netip.Addr + if isIPV4(&tx.Txn.Tup) { + l = netip.AddrFrom4([4]byte(tx.Txn.Tup.LocalAddr[:4])) + r = netip.AddrFrom4([4]byte(tx.Txn.Tup.RemoteAddr[:4])) + } else { + l = netip.AddrFrom16(tx.Txn.Tup.LocalAddr) + r = netip.AddrFrom16(tx.Txn.Tup.RemoteAddr) + } + lap := netip.AddrPortFrom(l, tx.Txn.Tup.LocalPort) + rap := netip.AddrPortFrom(r, tx.Txn.Tup.RemotePort) output.WriteString("httpTX{") + output.WriteString("\n LocalAddr: " + lap.String() + " RemoteAddr: " + rap.String()) output.WriteString("\n Method: '" + tx.Method().String() + "', ") output.WriteString("\n MaxRequest: '" + strconv.Itoa(int(tx.Txn.MaxRequestFragment)) + "', ") //output.WriteString("Fragment: '" + hex.EncodeToString(tx.RequestFragment[:]) + "', ") diff --git a/test/kitchen/test/integration/win-sysprobe-test/rspec_datadog/win-sysprobe-test_spec.rb b/test/kitchen/test/integration/win-sysprobe-test/rspec_datadog/win-sysprobe-test_spec.rb index 2a05377e89aea0..3e1efaac7d850b 100644 --- a/test/kitchen/test/integration/win-sysprobe-test/rspec_datadog/win-sysprobe-test_spec.rb +++ b/test/kitchen/test/integration/win-sysprobe-test/rspec_datadog/win-sysprobe-test_spec.rb @@ -26,7 +26,7 @@ def check_output(output, wait_thr) Dir.glob("#{root_dir}/**/testsuite.exe").each do |f| pkg = f.delete_prefix(root_dir).delete_suffix('/testsuite') - describe "security agent tests for #{pkg}" do + describe "system probe tests for #{pkg}" do it 'successfully runs' do Dir.chdir(File.dirname(f)) do Open3.popen2e(f, "-test.v", "-test.timeout=10m", "-test.count=1") do |_, output, wait_thr| From a92168dd0477db1bd6dd5d1c0566dc0df96bf27c Mon Sep 17 00:00:00 2001 From: Paul Cacheux Date: Mon, 11 Mar 2024 18:30:34 +0100 Subject: [PATCH 129/155] bump `github.com/DataDog/datadog-go/v5` to v5.5.0 globally (#23615) --- comp/core/log/go.mod | 2 +- comp/core/log/go.sum | 5 +++-- pkg/obfuscate/go.mod | 2 +- pkg/obfuscate/go.sum | 10 ++++++++-- pkg/trace/go.mod | 2 +- pkg/trace/go.sum | 4 ++-- 6 files changed, 16 insertions(+), 9 deletions(-) diff --git a/comp/core/log/go.mod b/comp/core/log/go.mod index a2f09b2ac2263c..74d2bb6a0ba976 100644 --- a/comp/core/log/go.mod +++ b/comp/core/log/go.mod @@ -61,7 +61,7 @@ require ( github.com/DataDog/datadog-agent/pkg/util/system v0.52.0-rc.3 // indirect github.com/DataDog/datadog-agent/pkg/util/system/socket v0.52.0-rc.3 // indirect github.com/DataDog/datadog-agent/pkg/util/winutil v0.52.0-rc.3 // indirect - github.com/DataDog/datadog-go/v5 v5.1.1 // indirect + github.com/DataDog/datadog-go/v5 v5.5.0 // indirect github.com/DataDog/go-sqllexer v0.0.9 // indirect github.com/DataDog/go-tuf v1.0.2-0.5.2 // indirect github.com/DataDog/opentelemetry-mapping-go/pkg/otlp/attributes v0.13.3 // indirect diff --git a/comp/core/log/go.sum b/comp/core/log/go.sum index dfb5dec8466ea0..a4182afaff371b 100644 --- a/comp/core/log/go.sum +++ b/comp/core/log/go.sum @@ -3,8 +3,8 @@ contrib.go.opencensus.io/exporter/prometheus v0.4.2 h1:sqfsYl5GIY/L570iT+l93ehxa contrib.go.opencensus.io/exporter/prometheus v0.4.2/go.mod h1:dvEHbiKmgvbr5pjaF9fpw1KeYcjrnC1J8B+JKjsZyRQ= github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/DataDog/datadog-go/v5 v5.1.1 h1:JLZ6s2K1pG2h9GkvEvMdEGqMDyVLEAccdX5TltWcLMU= -github.com/DataDog/datadog-go/v5 v5.1.1/go.mod h1:KhiYb2Badlv9/rofz+OznKoEF5XKTonWyhx5K83AP8E= +github.com/DataDog/datadog-go/v5 v5.5.0 h1:G5KHeB8pWBNXT4Jtw0zAkhdxEAWSpWH00geHI6LDrKU= +github.com/DataDog/datadog-go/v5 v5.5.0/go.mod h1:K9kcYBlxkcPP8tvvjZZKs/m1edNAUFzBbdpTUKfCsuw= github.com/DataDog/go-sqllexer v0.0.9 h1:Cx2Cu1S0hfj4coCCA8hzjM9+UNFRkcu1avIV//RU5Qw= github.com/DataDog/go-sqllexer v0.0.9/go.mod h1:nB4Ea2YNsqMwtbWMc4Fm/oP98IIrSPapqwOwPioMspY= github.com/DataDog/go-tuf v1.0.2-0.5.2 h1:EeZr937eKAWPxJ26IykAdWA4A0jQXJgkhUjqEI/w7+I= @@ -261,6 +261,7 @@ github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81P github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= diff --git a/pkg/obfuscate/go.mod b/pkg/obfuscate/go.mod index d5b4b3cc1014bf..05c9f501bdb89b 100644 --- a/pkg/obfuscate/go.mod +++ b/pkg/obfuscate/go.mod @@ -3,7 +3,7 @@ module github.com/DataDog/datadog-agent/pkg/obfuscate go 1.21.7 require ( - github.com/DataDog/datadog-go/v5 v5.1.1 + github.com/DataDog/datadog-go/v5 v5.5.0 github.com/DataDog/go-sqllexer v0.0.9 github.com/outcaste-io/ristretto v0.2.1 github.com/stretchr/testify v1.9.0 diff --git a/pkg/obfuscate/go.sum b/pkg/obfuscate/go.sum index 09f53626e5aba6..ca6903d7bc746a 100644 --- a/pkg/obfuscate/go.sum +++ b/pkg/obfuscate/go.sum @@ -1,5 +1,5 @@ -github.com/DataDog/datadog-go/v5 v5.1.1 h1:JLZ6s2K1pG2h9GkvEvMdEGqMDyVLEAccdX5TltWcLMU= -github.com/DataDog/datadog-go/v5 v5.1.1/go.mod h1:KhiYb2Badlv9/rofz+OznKoEF5XKTonWyhx5K83AP8E= +github.com/DataDog/datadog-go/v5 v5.5.0 h1:G5KHeB8pWBNXT4Jtw0zAkhdxEAWSpWH00geHI6LDrKU= +github.com/DataDog/datadog-go/v5 v5.5.0/go.mod h1:K9kcYBlxkcPP8tvvjZZKs/m1edNAUFzBbdpTUKfCsuw= github.com/DataDog/go-sqllexer v0.0.9 h1:Cx2Cu1S0hfj4coCCA8hzjM9+UNFRkcu1avIV//RU5Qw= github.com/DataDog/go-sqllexer v0.0.9/go.mod h1:nB4Ea2YNsqMwtbWMc4Fm/oP98IIrSPapqwOwPioMspY= github.com/Microsoft/go-winio v0.5.0/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= @@ -23,11 +23,16 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= 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.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= @@ -39,6 +44,7 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= 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-20210405180319-a5a99cb37ef4 h1:4nGaVu0QrbjT/AK2PRLuQfQuh6DJve+pELhqTdAj3x0= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/pkg/trace/go.mod b/pkg/trace/go.mod index b3773aec173692..b69dd143d5e74e 100644 --- a/pkg/trace/go.mod +++ b/pkg/trace/go.mod @@ -17,7 +17,7 @@ require ( github.com/DataDog/datadog-agent/pkg/util/log v0.52.0-rc.3 github.com/DataDog/datadog-agent/pkg/util/pointer v0.52.0-rc.3 github.com/DataDog/datadog-agent/pkg/util/scrubber v0.52.0-rc.3 - github.com/DataDog/datadog-go/v5 v5.1.1 + github.com/DataDog/datadog-go/v5 v5.5.0 github.com/DataDog/opentelemetry-mapping-go/pkg/otlp/attributes v0.13.3 github.com/DataDog/sketches-go v1.4.2 github.com/Microsoft/go-winio v0.6.1 diff --git a/pkg/trace/go.sum b/pkg/trace/go.sum index 296a9e060cda44..c5b9bc6df5227d 100644 --- a/pkg/trace/go.sum +++ b/pkg/trace/go.sum @@ -35,8 +35,8 @@ contrib.go.opencensus.io/exporter/prometheus v0.4.2/go.mod h1:dvEHbiKmgvbr5pjaF9 dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/DataDog/datadog-go/v5 v5.1.1 h1:JLZ6s2K1pG2h9GkvEvMdEGqMDyVLEAccdX5TltWcLMU= -github.com/DataDog/datadog-go/v5 v5.1.1/go.mod h1:KhiYb2Badlv9/rofz+OznKoEF5XKTonWyhx5K83AP8E= +github.com/DataDog/datadog-go/v5 v5.5.0 h1:G5KHeB8pWBNXT4Jtw0zAkhdxEAWSpWH00geHI6LDrKU= +github.com/DataDog/datadog-go/v5 v5.5.0/go.mod h1:K9kcYBlxkcPP8tvvjZZKs/m1edNAUFzBbdpTUKfCsuw= github.com/DataDog/go-sqllexer v0.0.9 h1:Cx2Cu1S0hfj4coCCA8hzjM9+UNFRkcu1avIV//RU5Qw= github.com/DataDog/go-sqllexer v0.0.9/go.mod h1:nB4Ea2YNsqMwtbWMc4Fm/oP98IIrSPapqwOwPioMspY= github.com/DataDog/go-tuf v1.0.2-0.5.2 h1:EeZr937eKAWPxJ26IykAdWA4A0jQXJgkhUjqEI/w7+I= From ac8dfc658b919e276d14851bc7bfc2881628829d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Mar 2024 17:57:49 +0000 Subject: [PATCH 130/155] Bump github.com/shirou/gopsutil/v3 from 3.24.1 to 3.24.2 (#23635) Bumps [github.com/shirou/gopsutil/v3](https://github.com/shirou/gopsutil) from 3.24.1 to 3.24.2. - [Release notes](https://github.com/shirou/gopsutil/releases) - [Commits](https://github.com/shirou/gopsutil/compare/v3.24.1...v3.24.2) --- updated-dependencies: - dependency-name: github.com/shirou/gopsutil/v3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/go.mod b/go.mod index 1d511602e566db..7e577cae2f2672 100644 --- a/go.mod +++ b/go.mod @@ -224,7 +224,7 @@ require ( github.com/robfig/cron/v3 v3.0.1 github.com/samber/lo v1.39.0 github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da - github.com/shirou/gopsutil/v3 v3.24.1 + github.com/shirou/gopsutil/v3 v3.24.2 github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4 github.com/sirupsen/logrus v1.9.3 github.com/skydive-project/go-debouncer v1.0.0 @@ -547,7 +547,7 @@ require ( github.com/xor-gate/ar v0.0.0-20170530204233-5c72ae81e2b7 // indirect github.com/yashtewari/glob-intersection v0.2.0 // indirect github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d // indirect - github.com/yusufpapurcu/wmi v1.2.3 // indirect + github.com/yusufpapurcu/wmi v1.2.4 // indirect go.etcd.io/etcd/api/v3 v3.6.0-alpha.0 // indirect go.etcd.io/etcd/client/pkg/v3 v3.6.0-alpha.0.0.20220522111935-c3bc4116dcd1 // indirect go.etcd.io/etcd/client/v3 v3.6.0-alpha.0 // indirect diff --git a/go.sum b/go.sum index bd9048bf7f86de..e733fb14dea53a 100644 --- a/go.sum +++ b/go.sum @@ -1637,8 +1637,8 @@ github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8= github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I= github.com/shibumi/go-pathspec v1.3.0 h1:QUyMZhFo0Md5B8zV8x2tesohbb5kfbpTi9rBnKh5dkI= github.com/shibumi/go-pathspec v1.3.0/go.mod h1:Xutfslp817l2I1cZvgcfeMQJG5QnU2lh5tVaaMCl3jE= -github.com/shirou/gopsutil/v3 v3.24.1 h1:R3t6ondCEvmARp3wxODhXMTLC/klMa87h2PHUw5m7QI= -github.com/shirou/gopsutil/v3 v3.24.1/go.mod h1:UU7a2MSBQa+kW1uuDq8DeEBS8kmrnQwsv2b5O513rwU= +github.com/shirou/gopsutil/v3 v3.24.2 h1:kcR0erMbLg5/3LcInpw0X/rrPSqq4CDPyI6A6ZRC18Y= +github.com/shirou/gopsutil/v3 v3.24.2/go.mod h1:tSg/594BcA+8UdQU2XcW803GWYgdtauFFPgJCJKZlVk= github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4 h1:udFKJ0aHUL60LboW/A+DfgoHVedieIzIXE8uylPue0U= github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4/go.mod h1:qsXQc7+bwAM3Q1u/4XEfrquwF8Lw7D7y5cD8CuHnfIc= github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM= @@ -1865,8 +1865,8 @@ github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1 github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yuin/gopher-lua v1.1.0 h1:BojcDhfyDWgU2f2TOzYK/g5p2gxMrku8oupLDqlnSqE= github.com/yuin/gopher-lua v1.1.0/go.mod h1:GBR0iDaNXjAgGg9zfCvksxSRnQx76gclCIb7kdAd1Pw= -github.com/yusufpapurcu/wmi v1.2.3 h1:E1ctvB7uKFMOJw3fdOW32DwGE9I7t++CRUEMKvFoFiw= -github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= +github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= github.com/zclconf/go-cty v1.10.0/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= github.com/zclconf/go-cty v1.13.0 h1:It5dfKTTZHe9aeppbNOda3mN7Ag7sg6QkBNm6TkyFa0= github.com/zclconf/go-cty v1.13.0/go.mod h1:YKQzy/7pZ7iq2jNFzy5go57xdxdWoLLpaEp4u238AE0= @@ -2346,7 +2346,7 @@ golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= From dfa32f3bead0e012dfd523e54fff8c060cb11993 Mon Sep 17 00:00:00 2001 From: Guillaume Fournier <36961134+Gui774ume@users.noreply.github.com> Date: Mon, 11 Mar 2024 18:58:54 +0100 Subject: [PATCH 131/155] [CWS] Fix CWS instrumentation user (#23629) * [CWS] fix CWS instrumentation user * [CWS] fix CWS instrumentation tests --- Dockerfiles/cws-instrumentation/Dockerfile | 1 + .../cwsinstrumentation/cws_instrumentation.go | 10 +++++++ .../cws_instrumentation_test.go | 26 +++++++++++++++++++ 3 files changed, 37 insertions(+) diff --git a/Dockerfiles/cws-instrumentation/Dockerfile b/Dockerfiles/cws-instrumentation/Dockerfile index 2e1959be9081be..730dcfa1571e81 100644 --- a/Dockerfiles/cws-instrumentation/Dockerfile +++ b/Dockerfiles/cws-instrumentation/Dockerfile @@ -1,3 +1,4 @@ FROM scratch ARG TARGETARCH COPY --chmod=0755 cws-instrumentation.$TARGETARCH /cws-instrumentation +USER 10000 diff --git a/pkg/clusteragent/admission/mutate/cwsinstrumentation/cws_instrumentation.go b/pkg/clusteragent/admission/mutate/cwsinstrumentation/cws_instrumentation.go index d5c0dadeb6ea07..947404faffe6ff 100644 --- a/pkg/clusteragent/admission/mutate/cwsinstrumentation/cws_instrumentation.go +++ b/pkg/clusteragent/admission/mutate/cwsinstrumentation/cws_instrumentation.go @@ -41,6 +41,8 @@ const ( cwsInstrumentationPodAnotationReady = "ready" cwsInjectorInitContainerName = "cws-instrumentation" cwsUserSessionDataMaxSize = 1024 + cwsInjectorInitContainerUser = int64(10000) + cwsInjectorInitContainerGroup = int64(10000) // PodLabelEnabled is used to label pods that should be instrumented or skipped by the CWS mutating webhook PodLabelEnabled = "admission.datadoghq.com/cws-instrumentation.enabled" @@ -449,6 +451,9 @@ func injectCWSInitContainer(pod *corev1.Pod, resources *corev1.ResourceRequireme } } + runAsUser := cwsInjectorInitContainerUser + runAsGroup := cwsInjectorInitContainerGroup + initContainer := corev1.Container{ Name: cwsInjectorInitContainerName, Image: image, @@ -459,6 +464,11 @@ func injectCWSInitContainer(pod *corev1.Pod, resources *corev1.ResourceRequireme MountPath: cwsMountPath, }, }, + // Set a default user and group to support pod deployments with a `runAsNonRoot` security context + SecurityContext: &corev1.SecurityContext{ + RunAsUser: &runAsUser, + RunAsGroup: &runAsGroup, + }, } if resources != nil { initContainer.Resources = *resources diff --git a/pkg/clusteragent/admission/mutate/cwsinstrumentation/cws_instrumentation_test.go b/pkg/clusteragent/admission/mutate/cwsinstrumentation/cws_instrumentation_test.go index ed715743a3454d..86d341882a39b3 100644 --- a/pkg/clusteragent/admission/mutate/cwsinstrumentation/cws_instrumentation_test.go +++ b/pkg/clusteragent/admission/mutate/cwsinstrumentation/cws_instrumentation_test.go @@ -446,6 +446,8 @@ func Test_injectCWSCommandInstrumentation(t *testing.T) { func Test_injectCWSPodInstrumentation(t *testing.T) { commonRegistry := "gcr.io/datadoghq" + runAsUser := cwsInjectorInitContainerUser + runAsGroup := cwsInjectorInitContainerGroup type args struct { pod *corev1.Pod @@ -499,6 +501,10 @@ func Test_injectCWSPodInstrumentation(t *testing.T) { MountPath: cwsMountPath, }, }, + SecurityContext: &corev1.SecurityContext{ + RunAsUser: &runAsUser, + RunAsGroup: &runAsGroup, + }, }, wantInstrumentation: true, }, @@ -522,6 +528,10 @@ func Test_injectCWSPodInstrumentation(t *testing.T) { MountPath: cwsMountPath, }, }, + SecurityContext: &corev1.SecurityContext{ + RunAsUser: &runAsUser, + RunAsGroup: &runAsGroup, + }, }, wantInstrumentation: true, }, @@ -545,6 +555,10 @@ func Test_injectCWSPodInstrumentation(t *testing.T) { MountPath: cwsMountPath, }, }, + SecurityContext: &corev1.SecurityContext{ + RunAsUser: &runAsUser, + RunAsGroup: &runAsGroup, + }, }, wantInstrumentation: true, }, @@ -579,6 +593,10 @@ func Test_injectCWSPodInstrumentation(t *testing.T) { MountPath: cwsMountPath, }, }, + SecurityContext: &corev1.SecurityContext{ + RunAsUser: &runAsUser, + RunAsGroup: &runAsGroup, + }, }, wantInstrumentation: true, }, @@ -639,6 +657,10 @@ func Test_injectCWSPodInstrumentation(t *testing.T) { MountPath: cwsMountPath, }, }, + SecurityContext: &corev1.SecurityContext{ + RunAsUser: &runAsUser, + RunAsGroup: &runAsGroup, + }, }, wantInstrumentation: true, }, @@ -679,6 +701,10 @@ func Test_injectCWSPodInstrumentation(t *testing.T) { MountPath: cwsMountPath, }, }, + SecurityContext: &corev1.SecurityContext{ + RunAsUser: &runAsUser, + RunAsGroup: &runAsGroup, + }, }, wantInstrumentation: true, }, From 0842cff0c7169b12605cb716c782b333888630e6 Mon Sep 17 00:00:00 2001 From: Paul Cacheux Date: Mon, 11 Mar 2024 19:05:19 +0100 Subject: [PATCH 132/155] [CWS] fix KMT CWS tests (#23607) * fix `tty_offset` offset on ubuntu 18.04 * fix vm area struct offset on kernel 6.1 and higher * fix sizeof inode on some versions of amazon linux kernel 5.4 * fix `creds_uid_offset` on amazon linux kernel 5.4 * fix `creds_uid_offset` on other kernels * fix flow constants * fix AL iokcb ctx offset * fix `tty_offset` on amazon linux kernel 5.4 --- pkg/security/probe/constantfetch/fallback.go | 40 +++++++++++++------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/pkg/security/probe/constantfetch/fallback.go b/pkg/security/probe/constantfetch/fallback.go index 4ec5e1c900d7ac..1e14ba24f32ce8 100644 --- a/pkg/security/probe/constantfetch/fallback.go +++ b/pkg/security/probe/constantfetch/fallback.go @@ -186,7 +186,11 @@ func getSizeOfStructInode(kv *kernel.Version) uint64 { case kv.IsCOSKernel() && kv.IsInRangeCloseOpen(kernel.Kernel5_10, kernel.Kernel5_11): sizeOf = 704 case kv.IsAmazonLinuxKernel() && kv.IsInRangeCloseOpen(kernel.Kernel5_4, kernel.Kernel5_5): - sizeOf = 584 + if kv.Code.Patch() > 250 { + sizeOf = 592 + } else { + sizeOf = 584 + } case kv.IsAmazonLinuxKernel() && kv.IsInRangeCloseOpen(kernel.Kernel5_10, kernel.Kernel5_11): if kv.Code.Patch() > 100 { sizeOf = 592 @@ -260,13 +264,11 @@ func getSignalTTYOffset(kv *kernel.Version) uint64 { case kv.IsAmazonLinuxKernel() && kv.IsInRangeCloseOpen(kernel.Kernel4_14, kernel.Kernel4_15): return 368 case kv.IsAmazonLinuxKernel() && kv.IsInRangeCloseOpen(kernel.Kernel5_4, kernel.Kernel5_5): - return 400 + return 400 + getNoHzOffset() case kv.IsAmazonLinux2023Kernel() && kv.IsInRangeCloseOpen(kernel.Kernel6_1, kernel.Kernel6_2): return 408 - case kv.IsUbuntuKernel() && kv.IsInRangeCloseOpen(kernel.Kernel4_15, kernel.Kernel4_16): - return 368 - case kv.IsUbuntuKernel() && kv.IsInRangeCloseOpen(kernel.Kernel4_16, kernel.Kernel4_19): - return 376 + case kv.IsUbuntuKernel() && kv.IsInRangeCloseOpen(kernel.Kernel4_15, kernel.Kernel4_19): + return 368 + getNoHzOffset() case kv.IsUbuntuKernel() && kv.Code < kernel.Kernel5_19: return 400 + getNoHzOffset() case kv.IsUbuntuKernel() && kv.Code >= kernel.Kernel5_19: @@ -304,14 +306,22 @@ func getTTYNameOffset(kv *kernel.Version) uint64 { } func getCredsUIDOffset(kv *kernel.Version) uint64 { - size := uint64(4) - switch { case kv.IsCOSKernel(): - size += 16 + return 20 + case kv.IsAmazonLinuxKernel() && kv.IsInRangeCloseOpen(kernel.Kernel5_4, kernel.Kernel5_5) && kv.Code.Patch() > 250: + return 8 + case kv.IsAmazonLinuxKernel() && kv.IsInRangeCloseOpen(kernel.Kernel5_10, kernel.Kernel5_11) && kv.Code.Patch() > 200: + return 8 + case kv.IsDebianKernel() && kv.IsInRangeCloseOpen(kernel.Kernel4_19, kernel.Kernel4_20) && kv.Code.Patch() > 250: + return 8 + case kv.IsDebianKernel() && kv.IsInRangeCloseOpen(kernel.Kernel5_10, kernel.Kernel5_11) && kv.Code.Patch() > 200: + return 8 + case kv.IsDebianKernel() && kv.IsInRangeCloseOpen(kernel.Kernel6_1, kernel.Kernel6_2) && kv.Code.Patch() > 70: + return 8 + default: + return 4 } - - return size } func getBpfMapIDOffset(kv *kernel.Version) uint64 { @@ -784,6 +794,8 @@ func getFlowi4SAddrOffset(kv *kernel.Version) uint64 { offset = 56 case kv.IsOracleUEKKernel() && kv.IsInRangeCloseOpen(kernel.Kernel5_4, kernel.Kernel5_5): offset = 56 + case kv.IsDebianKernel() && kv.IsInRangeCloseOpen(kernel.Kernel6_1, kernel.Kernel6_2) && kv.Code.Patch() > 70: + offset = 40 case kv.IsInRangeCloseOpen(kernel.Kernel5_0, kernel.Kernel5_1): offset = 32 @@ -852,6 +864,8 @@ func getIoKcbCtxOffset(kv *kernel.Version) uint64 { return 80 case kv.IsUbuntuKernel() && kv.IsInRangeCloseOpen(kernel.Kernel5_4, kernel.Kernel5_5): return 96 + case kv.IsAmazonLinuxKernel() && kv.IsInRangeCloseOpen(kernel.Kernel5_4, kernel.Kernel5_5) && kv.Code.Patch() > 250: + return 96 case kv.Code >= kernel.Kernel5_16: return 88 default: @@ -924,9 +938,7 @@ func getLinuxBinPrmEnvcOffset(kv *kernel.Version) uint64 { func getVMAreaStructFlagsOffset(kv *kernel.Version) uint64 { switch { - case kv.IsAmazonLinux2023Kernel() && kv.IsInRangeCloseOpen(kernel.Kernel6_1, kernel.Kernel6_2): - return 32 - case kv.IsUbuntuKernel() && kv.IsInRangeCloseOpen(kernel.Kernel6_2, kernel.Kernel6_6): + case kv.Code >= kernel.Kernel6_1: return 32 } return 80 From 237b5841a80c4b8663cc90bee0d287a6de4e219c Mon Sep 17 00:00:00 2001 From: Ken Schneider <103530259+ken-schneider@users.noreply.github.com> Date: Mon, 11 Mar 2024 15:47:42 -0400 Subject: [PATCH 133/155] [Network Path] Initial Agent Implementation (#23018) * import dublintraceroute from module * point to fork without graphviz * move networkpath logic to separate package * use system-probe for linux * use datadog org fork * fix linter errors * fix linter error * fix licenses * update CODEOWNERS * fix config path * clean up code * remove conf.yaml.example * rename utils * enable system probe traceroute in windows * update traceroute url for windows * fix windows linter errors * address PR comments * address PR comments * fix linter error * address PR comments * fix function name --- .github/CODEOWNERS | 3 + LICENSE-3rdparty.csv | 4 + cmd/system-probe/config/config.go | 4 + cmd/system-probe/config/ns.go | 5 + cmd/system-probe/modules/all_linux.go | 1 + cmd/system-probe/modules/all_windows.go | 1 + cmd/system-probe/modules/traceroute.go | 95 ++++++++ cmd/system-probe/modules/traceroute_linux.go | 23 ++ .../modules/traceroute_windows.go | 20 ++ comp/forwarder/eventplatform/component.go | 3 + .../eventplatformimpl/epforwarder.go | 12 + go.mod | 3 +- go.sum | 6 +- pkg/collector/check/stats/stats.go | 1 + .../corechecks/networkpath/config.go | 41 ++++ .../corechecks/networkpath/networkpath.go | 110 +++++++++ pkg/commonchecks/corechecks.go | 2 + pkg/config/setup/config.go | 3 + pkg/config/setup/system_probe.go | 4 + pkg/networkpath/traceroute/runner.go | 217 ++++++++++++++++++ pkg/networkpath/traceroute/traceroute.go | 55 +++++ .../traceroute/traceroute_darwin.go | 31 +++ .../traceroute/traceroute_linux.go | 56 +++++ .../traceroute/traceroute_windows.go | 56 +++++ pkg/process/net/common.go | 32 +++ pkg/process/net/common_linux.go | 1 + pkg/process/net/common_windows.go | 1 + 27 files changed, 787 insertions(+), 3 deletions(-) create mode 100644 cmd/system-probe/modules/traceroute.go create mode 100644 cmd/system-probe/modules/traceroute_linux.go create mode 100644 cmd/system-probe/modules/traceroute_windows.go create mode 100644 pkg/collector/corechecks/networkpath/config.go create mode 100644 pkg/collector/corechecks/networkpath/networkpath.go create mode 100644 pkg/networkpath/traceroute/runner.go create mode 100644 pkg/networkpath/traceroute/traceroute.go create mode 100644 pkg/networkpath/traceroute/traceroute_darwin.go create mode 100644 pkg/networkpath/traceroute/traceroute_linux.go create mode 100644 pkg/networkpath/traceroute/traceroute_windows.go diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index df88d42cafa50b..ca6cb9d87be986 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -176,6 +176,7 @@ /cmd/system-probe/modules/process* @DataDog/processes /cmd/system-probe/modules/eventmonitor* @DataDog/agent-security /cmd/system-probe/modules/tcp_queue_tracer* @DataDog/container-integrations +/cmd/system-probe/modules/traceroute* @DataDog/network-device-monitoring @Datadog/Networks /cmd/system-probe/modules/ping* @DataDog/network-device-monitoring /cmd/system-probe/windows/ @DataDog/windows-kernel-integrations /cmd/system-probe/windows_resources/ @DataDog/windows-kernel-integrations @@ -464,6 +465,8 @@ /pkg/sbom/ @DataDog/container-integrations @DataDog/agent-security /pkg/internaltelemetry @DataDog/windows-kernel-integrations /pkg-config/ @DataDog/agent-build-and-releases +/pkg/networkpath/ @DataDog/network-device-monitoring @DataDog/Networks +/pkg/collector/corechecks/networkpath/ @DataDog/network-device-monitoring @DataDog/Networks /releasenotes/ @DataDog/documentation /releasenotes-installscript/ @DataDog/documentation diff --git a/LICENSE-3rdparty.csv b/LICENSE-3rdparty.csv index b1303684eb2882..67ee67e6bf3be0 100644 --- a/LICENSE-3rdparty.csv +++ b/LICENSE-3rdparty.csv @@ -176,6 +176,10 @@ core,github.com/DataDog/viper,MIT,Copyright (c) 2014 Steve Francia core,github.com/DataDog/watermarkpodautoscaler/api/v1alpha1,Apache-2.0,"Copyright 2016-present Datadog, Inc" core,github.com/DataDog/zstd,BSD-3-Clause,"Copyright (c) 2016, Datadog " core,github.com/DataDog/zstd_0,BSD-3-Clause,"Copyright (c) 2016, Datadog " +core,github.com/Datadog/dublin-traceroute/go/dublintraceroute/net,BSD-2-Clause,Copyright (c) 2015-present Andrea Barberio +core,github.com/Datadog/dublin-traceroute/go/dublintraceroute/probes,BSD-2-Clause,Copyright (c) 2015-present Andrea Barberio +core,github.com/Datadog/dublin-traceroute/go/dublintraceroute/probes/probev4,BSD-2-Clause,Copyright (c) 2015-present Andrea Barberio +core,github.com/Datadog/dublin-traceroute/go/dublintraceroute/results,BSD-2-Clause,Copyright (c) 2015-present Andrea Barberio core,github.com/DisposaBoy/JsonConfigReader,MIT,* Andreas Jaekle `https://github.com/ekle` | * DisposaBoy `https://github.com/DisposaBoy` | * Steven Osborn `https://github.com/steve918` | Copyright (c) 2012 The JsonConfigReader Authors | This is the official list of JsonConfigReader authors for copyright purposes. core,github.com/GoogleCloudPlatform/docker-credential-gcr/config,Apache-2.0,"Copyright 2016 Google, Inc." core,github.com/GoogleCloudPlatform/docker-credential-gcr/credhelper,Apache-2.0,"Copyright 2016 Google, Inc." diff --git a/cmd/system-probe/config/config.go b/cmd/system-probe/config/config.go index bb375c99211bfa..f9f915cdfb3ad9 100644 --- a/cmd/system-probe/config/config.go +++ b/cmd/system-probe/config/config.go @@ -40,6 +40,7 @@ const ( WindowsCrashDetectModule types.ModuleName = "windows_crash_detection" ComplianceModule types.ModuleName = "compliance" PingModule types.ModuleName = "ping" + TracerouteModule types.ModuleName = "traceroute" ) // New creates a config object for system-probe. It assumes no configuration has been loaded as this point. @@ -139,6 +140,9 @@ func load() (*types.Config, error) { if cfg.GetBool(pngNS("enabled")) { c.EnabledModules[PingModule] = struct{}{} } + if cfg.GetBool(tracerouteNS("enabled")) { + c.EnabledModules[TracerouteModule] = struct{}{} + } if cfg.GetBool(wcdNS("enabled")) { c.EnabledModules[WindowsCrashDetectModule] = struct{}{} diff --git a/cmd/system-probe/config/ns.go b/cmd/system-probe/config/ns.go index 1ea084edbcbafc..15f114207d4c19 100644 --- a/cmd/system-probe/config/ns.go +++ b/cmd/system-probe/config/ns.go @@ -50,3 +50,8 @@ func wcdNS(k ...string) string { func pngNS(k ...string) string { return nskey("ping", k...) } + +// tracerouteNS adds `traceroute` namespace to config key +func tracerouteNS(k ...string) string { + return nskey("traceroute", k...) +} diff --git a/cmd/system-probe/modules/all_linux.go b/cmd/system-probe/modules/all_linux.go index 889492dabb148d..6e7ffacf743f56 100644 --- a/cmd/system-probe/modules/all_linux.go +++ b/cmd/system-probe/modules/all_linux.go @@ -28,6 +28,7 @@ var All = []module.Factory{ LanguageDetectionModule, ComplianceModule, Pinger, + Traceroute, } func inactivityEventLog(_ time.Duration) { diff --git a/cmd/system-probe/modules/all_windows.go b/cmd/system-probe/modules/all_windows.go index 518bec8026f3af..793194f6124cb7 100644 --- a/cmd/system-probe/modules/all_windows.go +++ b/cmd/system-probe/modules/all_windows.go @@ -24,6 +24,7 @@ var All = []module.Factory{ // so EventMonitor has to follow NetworkTracer EventMonitor, WinCrashProbe, + Traceroute, } func inactivityEventLog(duration time.Duration) { diff --git a/cmd/system-probe/modules/traceroute.go b/cmd/system-probe/modules/traceroute.go new file mode 100644 index 00000000000000..77c25555f34b11 --- /dev/null +++ b/cmd/system-probe/modules/traceroute.go @@ -0,0 +1,95 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +//go:build linux || windows + +package modules + +import ( + "encoding/json" + "net/http" + "time" + + "github.com/DataDog/datadog-agent/cmd/system-probe/api/module" + sysconfigtypes "github.com/DataDog/datadog-agent/cmd/system-probe/config/types" + tracerouteutil "github.com/DataDog/datadog-agent/pkg/networkpath/traceroute" + "github.com/DataDog/datadog-agent/pkg/util/log" + "github.com/gorilla/mux" + "go.uber.org/atomic" + "google.golang.org/grpc" +) + +type traceroute struct{} + +var ( + _ module.Module = &traceroute{} + + tracerouteConfigNamespaces = []string{"traceroute"} +) + +func createTracerouteModule(_ *sysconfigtypes.Config) (module.Module, error) { + return &traceroute{}, nil +} + +func (t *traceroute) GetStats() map[string]interface{} { + return nil +} + +func (t *traceroute) Register(httpMux *module.Router) error { + var runCounter = atomic.NewUint64(0) + + // TODO: what other config should be passed as part of this request? + httpMux.HandleFunc("/traceroute/{host}", func(w http.ResponseWriter, req *http.Request) { + start := time.Now() + vars := mux.Vars(req) + id := getClientID(req) + host := vars["host"] + + cfg := tracerouteutil.Config{ + DestHostname: host, + } + + // Run traceroute + path, err := tracerouteutil.RunTraceroute(cfg) + if err != nil { + log.Errorf("unable to run traceroute for host: %s: %s", cfg.DestHostname, err.Error()) + w.WriteHeader(http.StatusInternalServerError) + return + } + + resp, err := json.Marshal(path) + if err != nil { + log.Errorf("unable to marshall traceroute response: %s", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + _, err = w.Write(resp) + if err != nil { + log.Errorf("unable to write traceroute response: %s", err) + } + + runCount := runCounter.Inc() + logTracerouteRequests(host, id, runCount, start) + }) + + return nil +} + +func (t *traceroute) RegisterGRPC(_ grpc.ServiceRegistrar) error { + return nil +} + +func (t *traceroute) Close() {} + +func logTracerouteRequests(host string, client string, runCount uint64, start time.Time) { + args := []interface{}{host, client, runCount, time.Since(start)} + msg := "Got request on /traceroute/%s?client_id=%s (count: %d): retrieved traceroute in %s" + switch { + case runCount <= 5, runCount%20 == 0: + log.Infof(msg, args...) + default: + log.Debugf(msg, args...) + } +} diff --git a/cmd/system-probe/modules/traceroute_linux.go b/cmd/system-probe/modules/traceroute_linux.go new file mode 100644 index 00000000000000..f7bec225a6b9d0 --- /dev/null +++ b/cmd/system-probe/modules/traceroute_linux.go @@ -0,0 +1,23 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +// go:build linux + +package modules + +import ( + "github.com/DataDog/datadog-agent/cmd/system-probe/api/module" + "github.com/DataDog/datadog-agent/cmd/system-probe/config" +) + +// Traceroute is a factory for NDMs Traceroute module +var Traceroute = module.Factory{ + Name: config.TracerouteModule, + ConfigNamespaces: tracerouteConfigNamespaces, + Fn: createTracerouteModule, + NeedsEBPF: func() bool { + return false + }, +} diff --git a/cmd/system-probe/modules/traceroute_windows.go b/cmd/system-probe/modules/traceroute_windows.go new file mode 100644 index 00000000000000..32a93f37c473dc --- /dev/null +++ b/cmd/system-probe/modules/traceroute_windows.go @@ -0,0 +1,20 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +// go:build windows + +package modules + +import ( + "github.com/DataDog/datadog-agent/cmd/system-probe/api/module" + "github.com/DataDog/datadog-agent/cmd/system-probe/config" +) + +// Traceroute is a factory for NDMs Traceroute module +var Traceroute = module.Factory{ + Name: config.TracerouteModule, + ConfigNamespaces: tracerouteConfigNamespaces, + Fn: createTracerouteModule, +} diff --git a/comp/forwarder/eventplatform/component.go b/comp/forwarder/eventplatform/component.go index 5c59df4573f366..d66bff6ad8e887 100644 --- a/comp/forwarder/eventplatform/component.go +++ b/comp/forwarder/eventplatform/component.go @@ -22,6 +22,9 @@ const ( // EventTypeNetworkDevicesNetFlow is the event type for network devices NetFlow data EventTypeNetworkDevicesNetFlow = "network-devices-netflow" + // EventTypeNetworkPath is the event type for network devices Network Path data + EventTypeNetworkPath = "network-path" + // EventTypeContainerLifecycle represents a container lifecycle event EventTypeContainerLifecycle = "container-lifecycle" // EventTypeContainerImages represents a container images event diff --git a/comp/forwarder/eventplatform/eventplatformimpl/epforwarder.go b/comp/forwarder/eventplatform/eventplatformimpl/epforwarder.go index 46dc720ced5b01..1edb155cbbf463 100644 --- a/comp/forwarder/eventplatform/eventplatformimpl/epforwarder.go +++ b/comp/forwarder/eventplatform/eventplatformimpl/epforwarder.go @@ -152,6 +152,18 @@ var passthroughPipelineDescs = []passthroughPipelineDesc{ // by aggregator. defaultInputChanSize: 10000, }, + { + eventType: eventplatform.EventTypeNetworkPath, + category: "Network Path", + contentType: logshttp.JSONContentType, + endpointsConfigPrefix: "network_path.forwarder.", + hostnameEndpointPrefix: "netpath-intake.", + intakeTrackType: "netpath", + defaultBatchMaxConcurrentSend: 10, + defaultBatchMaxContentSize: pkgconfig.DefaultBatchMaxContentSize, + defaultBatchMaxSize: pkgconfig.DefaultBatchMaxSize, + defaultInputChanSize: pkgconfig.DefaultInputChanSize, + }, { eventType: eventplatform.EventTypeContainerLifecycle, category: "Container", diff --git a/go.mod b/go.mod index 7e577cae2f2672..5675c17341a041 100644 --- a/go.mod +++ b/go.mod @@ -471,7 +471,7 @@ require ( github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.15 // indirect - github.com/mdlayher/socket v0.4.1 // indirect + github.com/mdlayher/socket v0.5.0 // indirect github.com/microsoft/go-rustaudit v0.0.0-20220808201409-204dfee52032 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect @@ -670,6 +670,7 @@ require ( github.com/DataDog/datadog-agent/pkg/version v0.52.0-rc.3 github.com/DataDog/go-libddwaf/v2 v2.2.2 github.com/DataDog/opentelemetry-mapping-go/pkg/otlp/logs v0.13.3 + github.com/Datadog/dublin-traceroute v0.0.1 github.com/aquasecurity/trivy v0.49.2-0.20240212231818-6a2ed8bdfe76 github.com/aws/aws-sdk-go-v2/service/kms v1.27.1 github.com/aws/aws-sdk-go-v2/service/rds v1.73.0 diff --git a/go.sum b/go.sum index e733fb14dea53a..90b73eb56d270e 100644 --- a/go.sum +++ b/go.sum @@ -326,6 +326,8 @@ github.com/DataDog/zstd v1.5.5 h1:oWf5W7GtOLgp6bciQYDmhHHjdhYkALu6S/5Ni9ZgSvQ= github.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/DataDog/zstd_0 v0.0.0-20210310093942-586c1286621f h1:5Vuo4niPKFkfwW55jV4vY0ih3VQ9RaQqeqY67fvRn8A= github.com/DataDog/zstd_0 v0.0.0-20210310093942-586c1286621f/go.mod h1:oXfOhM/Kr8OvqS6tVqJwxPBornV0yrx3bc+l0BDr7PQ= +github.com/Datadog/dublin-traceroute v0.0.1 h1:xh5xfA25gjrpRK72lQotL79S4vAvxpc4UOQdR22p2IY= +github.com/Datadog/dublin-traceroute v0.0.1/go.mod h1:k2H1x9n5hEVXV7BnEhf3J7Y9A1R8Jj2AwosJMV6Qz60= github.com/DisposaBoy/JsonConfigReader v0.0.0-20130112093355-33a99fdf1d5e/go.mod h1:GCzqZQHydohgVLSIqRKZeTt8IGb1Y4NaFfim3H40uUI= github.com/DisposaBoy/JsonConfigReader v0.0.0-20201129172854-99cf318d67e7 h1:AJKJCKcb/psppPl/9CUiQQnTG+Bce0/cIweD5w5Q7aQ= github.com/DisposaBoy/JsonConfigReader v0.0.0-20201129172854-99cf318d67e7/go.mod h1:GCzqZQHydohgVLSIqRKZeTt8IGb1Y4NaFfim3H40uUI= @@ -1341,8 +1343,8 @@ github.com/mattn/go-sqlite3 v1.14.16/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/mdlayher/netlink v1.7.2 h1:/UtM3ofJap7Vl4QWCPDGXY8d3GIY2UGSDbK+QWmY8/g= github.com/mdlayher/netlink v1.7.2/go.mod h1:xraEF7uJbxLhc5fpHL4cPe221LI2bdttWlU+ZGLfQSw= -github.com/mdlayher/socket v0.4.1 h1:eM9y2/jlbs1M615oshPQOHZzj6R6wMT7bX5NPiQvn2U= -github.com/mdlayher/socket v0.4.1/go.mod h1:cAqeGjoufqdxWkD7DkpyS+wcefOtmu5OQ8KuoJGIReA= +github.com/mdlayher/socket v0.5.0 h1:ilICZmJcQz70vrWVes1MFera4jGiWNocSkykwwoy3XI= +github.com/mdlayher/socket v0.5.0/go.mod h1:WkcBFfvyG8QENs5+hfQPl1X6Jpd2yeLIYgrGFmJiJxI= github.com/mholt/archiver/v3 v3.5.1 h1:rDjOBX9JSF5BvoJGvjqK479aL70qh9DIpZCl+k7Clwo= github.com/mholt/archiver/v3 v3.5.1/go.mod h1:e3dqJ7H78uzsRSEACH1joayhuSyhnonssnDhppzS1L4= github.com/microsoft/go-rustaudit v0.0.0-20220808201409-204dfee52032 h1:TLygBUBxikNJJfLwgm+Qwdgq1FtfV8Uh7bcxRyTzK8s= diff --git a/pkg/collector/check/stats/stats.go b/pkg/collector/check/stats/stats.go index a2b2a2072a6bbf..a5fc683035135c 100644 --- a/pkg/collector/check/stats/stats.go +++ b/pkg/collector/check/stats/stats.go @@ -33,6 +33,7 @@ var EventPlatformNameTranslations = map[string]string{ "network-devices-metadata": "Network Devices Metadata", "network-devices-netflow": "Network Devices NetFlow", "network-devices-snmp-traps": "SNMP Traps", + "network-path": "Network Path", } var ( diff --git a/pkg/collector/corechecks/networkpath/config.go b/pkg/collector/corechecks/networkpath/config.go new file mode 100644 index 00000000000000..6673748fe2577d --- /dev/null +++ b/pkg/collector/corechecks/networkpath/config.go @@ -0,0 +1,41 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +package networkpath + +import ( + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" + "gopkg.in/yaml.v2" +) + +// InstanceConfig is used to deserialize integration instance config +type InstanceConfig struct { + DestName string `yaml:"name"` + DestHostname string `yaml:"hostname"` +} + +// CheckConfig defines the configuration of the +// Network Path integration +type CheckConfig struct { + DestHostname string + DestName string +} + +// NewCheckConfig builds a new check config +func NewCheckConfig(rawInstance integration.Data, _ integration.Data) (*CheckConfig, error) { + instance := InstanceConfig{} + + err := yaml.Unmarshal(rawInstance, &instance) + if err != nil { + return nil, err + } + + c := &CheckConfig{} + + c.DestHostname = instance.DestHostname + c.DestName = instance.DestName + + return c, nil +} diff --git a/pkg/collector/corechecks/networkpath/networkpath.go b/pkg/collector/corechecks/networkpath/networkpath.go new file mode 100644 index 00000000000000..14c8f62958e027 --- /dev/null +++ b/pkg/collector/corechecks/networkpath/networkpath.go @@ -0,0 +1,110 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +// Package networkpath defines the agent corecheck for +// the Network Path integration +package networkpath + +import ( + "encoding/json" + "fmt" + "time" + + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" + "github.com/DataDog/datadog-agent/comp/forwarder/eventplatform" + "github.com/DataDog/datadog-agent/pkg/aggregator/sender" + "github.com/DataDog/datadog-agent/pkg/collector/check" + core "github.com/DataDog/datadog-agent/pkg/collector/corechecks" + "github.com/DataDog/datadog-agent/pkg/networkpath/traceroute" + "github.com/DataDog/datadog-agent/pkg/util/log" + "github.com/DataDog/datadog-agent/pkg/util/optional" +) + +// CheckName defines the name of the +// Network Path check +const CheckName = "network_path" + +// Check doesn't need additional fields +type Check struct { + core.CheckBase + config *CheckConfig + lastCheckTime time.Time +} + +// Run executes the check +func (c *Check) Run() error { + startTime := time.Now() + senderInstance, err := c.GetSender() + if err != nil { + return err + } + + cfg := traceroute.Config{ + DestHostname: c.config.DestHostname, + } + + tr := traceroute.New(cfg) + path, err := tr.Run() + if err != nil { + return fmt.Errorf("failed to trace path: %w", err) + } + + // send to EP + err = c.SendNetPathMDToEP(senderInstance, path) + if err != nil { + return fmt.Errorf("failed to send network path metadata: %w", err) + } + + duration := time.Since(startTime) + log.Debugf("check duration: %2f for destination: '%s' %s", duration.Seconds(), c.config.DestHostname, c.config.DestName) + + if !c.lastCheckTime.IsZero() { + interval := startTime.Sub(c.lastCheckTime) + log.Tracef("time since last check %2f for destination: '%s' %s", interval.Seconds(), c.config.DestHostname, c.config.DestName) + } + c.lastCheckTime = startTime + + return nil +} + +// SendNetPathMDToEP sends a traced network path to EP +func (c *Check) SendNetPathMDToEP(sender sender.Sender, path traceroute.NetworkPath) error { + payloadBytes, err := json.Marshal(path) + if err != nil { + return fmt.Errorf("error marshalling device metadata: %s", err) + } + log.Debugf("traceroute path metadata payload: %s", string(payloadBytes)) + sender.EventPlatformEvent(payloadBytes, eventplatform.EventTypeNetworkPath) + return nil +} + +// Configure the networkpath check +func (c *Check) Configure(senderManager sender.SenderManager, integrationConfigDigest uint64, rawInstance integration.Data, rawInitConfig integration.Data, source string) error { + // Must be called before c.CommonConfigure + c.BuildID(integrationConfigDigest, rawInstance, rawInitConfig) + + err := c.CommonConfigure(senderManager, integrationConfigDigest, rawInitConfig, rawInstance, source) + if err != nil { + return fmt.Errorf("common configure failed: %s", err) + } + + config, err := NewCheckConfig(rawInstance, rawInitConfig) + if err != nil { + return err + } + c.config = config + return nil +} + +// Factory creates a new check factory +func Factory() optional.Option[func() check.Check] { + return optional.NewOption(newCheck) +} + +func newCheck() check.Check { + return &Check{ + CheckBase: core.NewCheckBase(CheckName), + } +} diff --git a/pkg/commonchecks/corechecks.go b/pkg/commonchecks/corechecks.go index d64d18ea34085e..1f86c586a55542 100644 --- a/pkg/commonchecks/corechecks.go +++ b/pkg/commonchecks/corechecks.go @@ -27,6 +27,7 @@ import ( "github.com/DataDog/datadog-agent/pkg/collector/corechecks/embed/process" "github.com/DataDog/datadog-agent/pkg/collector/corechecks/net/network" "github.com/DataDog/datadog-agent/pkg/collector/corechecks/net/ntp" + "github.com/DataDog/datadog-agent/pkg/collector/corechecks/networkpath" nvidia "github.com/DataDog/datadog-agent/pkg/collector/corechecks/nvidia/jetson" oracle "github.com/DataDog/datadog-agent/pkg/collector/corechecks/oracle-dbm" "github.com/DataDog/datadog-agent/pkg/collector/corechecks/orchestrator/pod" @@ -56,6 +57,7 @@ func RegisterChecks(store workloadmeta.Component) { corecheckLoader.RegisterCheck(telemetryCheck.CheckName, telemetryCheck.Factory()) corecheckLoader.RegisterCheck(ntp.CheckName, ntp.Factory()) corecheckLoader.RegisterCheck(snmp.CheckName, snmp.Factory()) + corecheckLoader.RegisterCheck(networkpath.CheckName, networkpath.Factory()) corecheckLoader.RegisterCheck(io.CheckName, io.Factory()) corecheckLoader.RegisterCheck(filehandles.CheckName, filehandles.Factory()) corecheckLoader.RegisterCheck(containerimage.CheckName, containerimage.Factory(store)) diff --git a/pkg/config/setup/config.go b/pkg/config/setup/config.go index 253af105ad534f..5707e9b0a79537 100644 --- a/pkg/config/setup/config.go +++ b/pkg/config/setup/config.go @@ -708,6 +708,9 @@ func InitConfig(config pkgconfigmodel.Config) { config.BindEnvAndSetDefault("network_devices.netflow.enabled", "false") bindEnvAndSetLogsConfigKeys(config, "network_devices.netflow.forwarder.") + // Network Path + bindEnvAndSetLogsConfigKeys(config, "network_path.forwarder.") + // Kube ApiServer config.BindEnvAndSetDefault("kubernetes_kubeconfig_path", "") config.BindEnvAndSetDefault("kubernetes_apiserver_ca_path", "") diff --git a/pkg/config/setup/system_probe.go b/pkg/config/setup/system_probe.go index 9d3e35ecb49991..5cce029a6a965c 100644 --- a/pkg/config/setup/system_probe.go +++ b/pkg/config/setup/system_probe.go @@ -28,6 +28,7 @@ const ( diNS = "dynamic_instrumentation" wcdNS = "windows_crash_detection" pngNS = "ping" + tracerouteNS = "traceroute" defaultConnsMessageBatchSize = 600 // defaultServiceMonitoringJavaAgentArgs is default arguments that are passing to the injected java USM agent @@ -357,6 +358,9 @@ func InitSystemProbeConfig(cfg pkgconfigmodel.Config) { // Ping cfg.BindEnvAndSetDefault(join(pngNS, "enabled"), false) + // Traceroute + cfg.BindEnvAndSetDefault(join(tracerouteNS, "enabled"), false) + initCWSSystemProbeConfig(cfg) } diff --git a/pkg/networkpath/traceroute/runner.go b/pkg/networkpath/traceroute/runner.go new file mode 100644 index 00000000000000..2e0dd0299a99b0 --- /dev/null +++ b/pkg/networkpath/traceroute/runner.go @@ -0,0 +1,217 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +package traceroute + +import ( + "context" + "fmt" + "net" + "sort" + "time" + + "github.com/DataDog/datadog-agent/pkg/util/hostname" + "github.com/DataDog/datadog-agent/pkg/util/log" + "github.com/Datadog/dublin-traceroute/go/dublintraceroute/probes/probev4" + "github.com/Datadog/dublin-traceroute/go/dublintraceroute/results" + + "github.com/google/uuid" +) + +// TODO: are these good defaults? +const ( + DefaultSourcePort = 12345 + DefaultDestPort = 33434 + DefaultNumPaths = 1 + DefaultMinTTL = 1 + DefaultMaxTTL = 30 + DefaultDelay = 50 //msec + DefaultReadTimeout = 3 * time.Second + DefaultOutputFormat = "json" +) + +// RunTraceroute wraps the implementation of traceroute +// so it can be called from the different OS implementations +// +// This code is experimental and will be replaced with a more +// complete implementation. +func RunTraceroute(cfg Config) (NetworkPath, error) { + rawDest := cfg.DestHostname + dests, err := net.LookupIP(rawDest) + if err != nil || len(dests) == 0 { + return NetworkPath{}, fmt.Errorf("cannot resolve %s: %v", rawDest, err) + } + + //TODO: should we get smarter about IP address resolution? + // if it's a hostname, perhaps we could run multiple traces + // for each of the different IPs it resolves to up to a threshold? + // use first resolved IP for now + dest := dests[0] + + dt := &probev4.UDPv4{ + Target: dest, + SrcPort: uint16(DefaultSourcePort), // TODO: what's a good value? + DstPort: uint16(DefaultDestPort), // TODO: what's a good value? + UseSrcPort: false, + NumPaths: uint16(DefaultNumPaths), + MinTTL: uint8(DefaultMinTTL), // TODO: what's a good value? + MaxTTL: uint8(15), + Delay: time.Duration(DefaultDelay) * time.Millisecond, // TODO: what's a good value? + Timeout: DefaultReadTimeout, // TODO: what's a good value? + BrokenNAT: false, + } + results, err := dt.Traceroute() + if err != nil { + return NetworkPath{}, fmt.Errorf("traceroute run failed: %s", err.Error()) + } + log.Debugf("Raw results: %+v", results) + + hname, err := hostname.Get(context.TODO()) + if err != nil { + return NetworkPath{}, err + } + + pathResult, err := processResults(results, hname, rawDest, dest) + if err != nil { + return NetworkPath{}, err + } + + return pathResult, nil +} + +func processResults(r *results.Results, hname string, destinationHost string, destinationIP net.IP) (NetworkPath, error) { + type node struct { + node string + probe *results.Probe + } + + pathID := uuid.New().String() + + traceroutePath := NetworkPath{ + PathID: pathID, + Timestamp: time.Now().UnixMilli(), + Source: NetworkPathSource{ + Hostname: hname, + }, + Destination: NetworkPathDestination{ + Hostname: destinationHost, + IPAddress: destinationIP.String(), + }, + } + + for idx, probes := range r.Flows { + log.Debugf("Flow idx: %d\n", idx) + for probleIndex, probe := range probes { + log.Debugf("%d - %d - %s\n", probleIndex, probe.Sent.IP.TTL, probe.Name) + } + } + + flowIDs := make([]int, 0, len(r.Flows)) + for flowID := range r.Flows { + flowIDs = append(flowIDs, int(flowID)) + } + sort.Ints(flowIDs) + + for _, flowID := range flowIDs { + hops := r.Flows[uint16(flowID)] + if len(hops) == 0 { + log.Debugf("No hops for flow ID %d", flowID) + continue + } + var nodes []node + // add first hop + firstNodeName := hops[0].Sent.IP.SrcIP.String() + nodes = append(nodes, node{node: firstNodeName, probe: &hops[0]}) + + // then add all the other hops + for _, hop := range hops { + hop := hop + nodename := fmt.Sprintf("unknown_hop_%d)", hop.Sent.IP.TTL) + label := "*" + hostname := "" + if hop.Received != nil { + nodename = hop.Received.IP.SrcIP.String() + if hop.Name != nodename { + hostname = "\n" + hop.Name + } + // MPLS labels + mpls := "" + if len(hop.Received.ICMP.MPLSLabels) > 0 { + mpls = "MPLS labels: \n" + for _, mplsLabel := range hop.Received.ICMP.MPLSLabels { + mpls += fmt.Sprintf(" - %d, ttl: %d\n", mplsLabel.Label, mplsLabel.TTL) + } + } + label = fmt.Sprintf("%s%s\n%s\n%s", nodename, hostname, hop.Received.ICMP.Description, mpls) + } + nodes = append(nodes, node{node: nodename, probe: &hop}) + + if hop.IsLast { + break + } + log.Debugf("Label: %s", label) + } + // add edges + if len(nodes) <= 1 { + // no edges to add if there is only one node + continue + } + + // start at node 1. Each node back-references the previous one + for idx := 1; idx < len(nodes); idx++ { + if idx >= len(nodes) { + // we are at the second-to-last node + break + } + prev := nodes[idx-1] + cur := nodes[idx] + + edgeLabel := "" + if idx == 1 { + edgeLabel += fmt.Sprintf( + "srcport %d\ndstport %d", + cur.probe.Sent.UDP.SrcPort, + cur.probe.Sent.UDP.DstPort, + ) + } + if prev.probe.NATID != cur.probe.NATID { + edgeLabel += "\nNAT detected" + } + edgeLabel += fmt.Sprintf("\n%d.%d ms", int(cur.probe.RttUsec/1000), int(cur.probe.RttUsec%1000)) + + isSuccess := cur.probe.Received != nil + ip := cur.node + durationMs := float64(cur.probe.RttUsec) / 1000 + + hop := NetworkPathHop{ + TTL: idx, + IPAddress: ip, + Hostname: getHostname(cur.node), + RTT: durationMs, + Success: isSuccess, + } + traceroutePath.Hops = append(traceroutePath.Hops, hop) + } + } + + log.Debugf("Traceroute path metadata payload: %+v", traceroutePath) + return traceroutePath, nil +} + +func getHostname(ipAddr string) string { + // TODO: this reverse lookup appears to have some standard timeout that is relatively + // high. Consider switching to something where there is greater control. + currHost := "" + currHostList, _ := net.LookupAddr(ipAddr) + log.Debugf("Reverse DNS List: %+v", currHostList) + + if len(currHostList) > 0 { + // TODO: Reverse DNS: Do we need to handle cases with multiple DNS being returned? + currHost = currHostList[0] + } else { + currHost = ipAddr + } + return currHost +} diff --git a/pkg/networkpath/traceroute/traceroute.go b/pkg/networkpath/traceroute/traceroute.go new file mode 100644 index 00000000000000..7dd73e5ba82668 --- /dev/null +++ b/pkg/networkpath/traceroute/traceroute.go @@ -0,0 +1,55 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +// Package traceroute adds traceroute functionality to the agent +package traceroute + +type ( + // Config specifies the configuration of an instance + // of Traceroute + Config struct { + // TODO: add common configuration + DestHostname string + } + + // Traceroute defines an interface for running + // traceroutes for the Network Path integration + Traceroute interface { + Run() (NetworkPath, error) + } + + // NetworkPathHop encapsulates the data for a single + // hop within a path + NetworkPathHop struct { + TTL int `json:"ttl"` + IPAddress string `json:"ip_address"` + Hostname string `json:"hostname"` + RTT float64 `json:"rtt"` + Success bool `json:"success"` + } + + // NetworkPathSource encapsulates information + // about the source of a path + NetworkPathSource struct { + Hostname string `json:"hostname"` + } + + // NetworkPathDestination encapsulates information + // about the destination of a path + NetworkPathDestination struct { + Hostname string `json:"hostname"` + IPAddress string `json:"ip_address"` + } + + // NetworkPath encapsulates data that defines a + // path between two hosts as mapped by the agent + NetworkPath struct { + Timestamp int64 `json:"timestamp"` + PathID string `json:"path_id"` + Source NetworkPathSource `json:"source"` + Destination NetworkPathDestination `json:"destination"` + Hops []NetworkPathHop `json:"hops"` + } +) diff --git a/pkg/networkpath/traceroute/traceroute_darwin.go b/pkg/networkpath/traceroute/traceroute_darwin.go new file mode 100644 index 00000000000000..fab39291d8e658 --- /dev/null +++ b/pkg/networkpath/traceroute/traceroute_darwin.go @@ -0,0 +1,31 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +//go:build darwin + +package traceroute + +// MacTraceroute defines a structure for +// running traceroute from an agent running +// on macOS +type MacTraceroute struct { + cfg Config +} + +// New creates a new instance of MacTraceroute +// based on an input configuration +func New(cfg Config) *MacTraceroute { + return &MacTraceroute{ + cfg: cfg, + } +} + +// Run executes a traceroute +func (m *MacTraceroute) Run() (NetworkPath, error) { + // TODO: mac implementation, can we get this no system-probe or root access? + // To test: we probably can, but maybe not without modifying + // the library we currently use + return RunTraceroute(m.cfg) +} diff --git a/pkg/networkpath/traceroute/traceroute_linux.go b/pkg/networkpath/traceroute/traceroute_linux.go new file mode 100644 index 00000000000000..8d2d18b4533cb0 --- /dev/null +++ b/pkg/networkpath/traceroute/traceroute_linux.go @@ -0,0 +1,56 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +//go:build linux + +package traceroute + +import ( + "encoding/json" + + dd_config "github.com/DataDog/datadog-agent/pkg/config" + "github.com/DataDog/datadog-agent/pkg/process/net" + "github.com/DataDog/datadog-agent/pkg/util/log" +) + +const ( + clientID = "traceroute-agent-linux" +) + +// LinuxTraceroute defines a structure for +// running traceroute from an agent running +// on Linux +type LinuxTraceroute struct { + cfg Config +} + +// New creates a new instance of LinuxTraceroute +// based on an input configuration +func New(cfg Config) *LinuxTraceroute { + return &LinuxTraceroute{ + cfg: cfg, + } +} + +// Run executes a traceroute +func (l *LinuxTraceroute) Run() (NetworkPath, error) { + tu, err := net.GetRemoteSystemProbeUtil( + dd_config.SystemProbe.GetString("system_probe_config.sysprobe_socket")) + if err != nil { + log.Warnf("could not initialize system-probe connection: %s", err.Error()) + return NetworkPath{}, err + } + resp, err := tu.GetTraceroute(clientID, l.cfg.DestHostname) + if err != nil { + return NetworkPath{}, err + } + + var path NetworkPath + if err := json.Unmarshal(resp, &path); err != nil { + return NetworkPath{}, err + } + + return path, nil +} diff --git a/pkg/networkpath/traceroute/traceroute_windows.go b/pkg/networkpath/traceroute/traceroute_windows.go new file mode 100644 index 00000000000000..9a5969d8e0070a --- /dev/null +++ b/pkg/networkpath/traceroute/traceroute_windows.go @@ -0,0 +1,56 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2016-present Datadog, Inc. + +//go:build windows + +package traceroute + +import ( + "encoding/json" + + dd_config "github.com/DataDog/datadog-agent/pkg/config" + "github.com/DataDog/datadog-agent/pkg/process/net" + "github.com/DataDog/datadog-agent/pkg/util/log" +) + +const ( + clientID = "traceroute-agent-windows" +) + +// WindowsTraceroute defines a structure for +// running traceroute from an agent running +// on Windows +type WindowsTraceroute struct { + cfg Config +} + +// New creates a new instance of WindowsTraceroute +// based on an input configuration +func New(cfg Config) *WindowsTraceroute { + return &WindowsTraceroute{ + cfg: cfg, + } +} + +// Run executes a traceroute +func (w *WindowsTraceroute) Run() (NetworkPath, error) { + tu, err := net.GetRemoteSystemProbeUtil( + dd_config.SystemProbe.GetString("system_probe_config.sysprobe_socket")) + if err != nil { + log.Warnf("could not initialize system-probe connection: %s", err.Error()) + return NetworkPath{}, err + } + resp, err := tu.GetTraceroute(clientID, w.cfg.DestHostname) + if err != nil { + return NetworkPath{}, err + } + + var path NetworkPath + if err := json.Unmarshal(resp, &path); err != nil { + return NetworkPath{}, err + } + + return path, nil +} diff --git a/pkg/process/net/common.go b/pkg/process/net/common.go index bbc69649132759..c36ae62e154ef8 100644 --- a/pkg/process/net/common.go +++ b/pkg/process/net/common.go @@ -194,6 +194,38 @@ func (r *RemoteSysProbeUtil) GetPing(clientID string, host string, count int, in return body, nil } +// GetTraceroute returns the results of a traceroute to a host +func (r *RemoteSysProbeUtil) GetTraceroute(clientID string, host string) ([]byte, error) { + req, err := http.NewRequest("GET", fmt.Sprintf("%s/%s?client_id=%s", tracerouteURL, host, clientID), nil) + if err != nil { + return nil, err + } + + req.Header.Set("Accept", "application/json") + resp, err := r.httpClient.Do(req) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + if resp.StatusCode == http.StatusBadRequest { + body, err := io.ReadAll(resp.Body) + if err != nil { + return nil, fmt.Errorf("traceroute request failed: Probe Path %s, url: %s, status code: %d", r.path, tracerouteURL, resp.StatusCode) + } + return nil, fmt.Errorf("traceroute request failed: Probe Path %s, url: %s, status code: %d, error: %s", r.path, tracerouteURL, resp.StatusCode, string(body)) + } else if resp.StatusCode != http.StatusOK { + return nil, fmt.Errorf("traceroute request failed: Probe Path %s, url: %s, status code: %d", r.path, tracerouteURL, resp.StatusCode) + } + + body, err := io.ReadAll(resp.Body) + if err != nil { + return nil, err + } + + return body, nil +} + // GetStats returns the expvar stats of the system probe func (r *RemoteSysProbeUtil) GetStats() (map[string]interface{}, error) { req, err := http.NewRequest("GET", statsURL, nil) diff --git a/pkg/process/net/common_linux.go b/pkg/process/net/common_linux.go index 45d774271e9bd4..2e24fcdbc878e2 100644 --- a/pkg/process/net/common_linux.go +++ b/pkg/process/net/common_linux.go @@ -16,6 +16,7 @@ import ( const ( pingURL = "http://unix/" + string(sysconfig.PingModule) + "/ping/" + tracerouteURL = "http://unix/" + string(sysconfig.TracerouteModule) + "/traceroute/" connectionsURL = "http://unix/" + string(sysconfig.NetworkTracerModule) + "/connections" procStatsURL = "http://unix/" + string(sysconfig.ProcessModule) + "/stats" registerURL = "http://unix/" + string(sysconfig.NetworkTracerModule) + "/register" diff --git a/pkg/process/net/common_windows.go b/pkg/process/net/common_windows.go index fc655e19a2ea57..6a8bc96f0a5b19 100644 --- a/pkg/process/net/common_windows.go +++ b/pkg/process/net/common_windows.go @@ -18,6 +18,7 @@ const ( registerURL = "http://localhost:3333/" + string(sysconfig.NetworkTracerModule) + "/register" languageDetectionURL = "http://localhost:3333/" + string(sysconfig.LanguageDetectionModule) + "/detect" statsURL = "http://localhost:3333/debug/stats" + tracerouteURL = "http://localhost:3333/" + string(sysconfig.TracerouteModule) + "/traceroute/" netType = "tcp" // procStatsURL is not used in windows, the value is added to avoid compilation error in windows From 0e32c8b2a616246f662746fea6a3a055f5ae0f3d Mon Sep 17 00:00:00 2001 From: Arthur Bellal Date: Mon, 11 Mar 2024 21:24:36 +0100 Subject: [PATCH 134/155] (fleet) add a tracer OCI entry to the catalog (#23640) This PR: - Adds a tracer OCI to the catalog - Fixes the handling of remote images without an explicit platform set commit-id:efb0816e --- pkg/updater/defaults/boostrap.json | 2 +- pkg/updater/defaults/catalog.json | 6 ++---- pkg/updater/download.go | 19 ++++++++++++++++--- 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/pkg/updater/defaults/boostrap.json b/pkg/updater/defaults/boostrap.json index c2c237162033ab..cbee9b0f52d91e 100644 --- a/pkg/updater/defaults/boostrap.json +++ b/pkg/updater/defaults/boostrap.json @@ -1,4 +1,4 @@ { "datadog-agent": "7.53.0-devel.git.156.4681fd9.pipeline.29311299-1", - "dd-trace-java": "1.31.0" + "dd-trace-java": "1.32.0-SNAPSHOT~09be0fb775~pipeline.29892278.beta.09be0fb7" } diff --git a/pkg/updater/defaults/catalog.json b/pkg/updater/defaults/catalog.json index 8547f3527f7877..d6b552676c7da6 100644 --- a/pkg/updater/defaults/catalog.json +++ b/pkg/updater/defaults/catalog.json @@ -2,10 +2,8 @@ "packages": [ { "package": "dd-trace-java", - "version": "1.31.0", - "url": "https://storage.googleapis.com/updater-dev/dd-trace-java-1.31.0.tar", - "sha256": "9c0e49e671430a4a10f1dfbf64624bab34b7b190576669a37f3aaeef8fbf4a7f", - "size": 26594816 + "version": "1.32.0-SNAPSHOT~09be0fb775~pipeline.29892278.beta.09be0fb7", + "url": "oci://us-docker.pkg.dev/datadog-sandbox/updater-dev/auto_inject-java@sha256:7235bf68d0a44afc97f5c0c720c0ad3c7be1e6099cf437546633c46ae35f30f4" }, { "package": "datadog-agent", diff --git a/pkg/updater/download.go b/pkg/updater/download.go index ada01e6a827b26..7619981bd29bc3 100644 --- a/pkg/updater/download.go +++ b/pkg/updater/download.go @@ -82,11 +82,25 @@ func (d *downloader) downloadRegistry(ctx context.Context, url string) (oci.Imag OS: runtime.GOOS, Architecture: runtime.GOARCH, } - image, err := remote.Image(digest, remote.WithContext(ctx), remote.WithPlatform(platform)) + index, err := remote.Index(digest, remote.WithContext(ctx)) if err != nil { return nil, fmt.Errorf("could not download image: %w", err) } - return image, nil + indexManifest, err := index.IndexManifest() + if err != nil { + return nil, fmt.Errorf("could not get index manifest: %w", err) + } + for _, manifest := range indexManifest.Manifests { + if manifest.Platform != nil && !manifest.Platform.Satisfies(platform) { + continue + } + image, err := index.Image(manifest.Digest) + if err != nil { + return nil, fmt.Errorf("could not get image: %w", err) + } + return image, nil + } + return nil, fmt.Errorf("no matching image found in the index") } func (d *downloader) downloadHTTP(ctx context.Context, url string, sha256hash string, size int64, tmpDir string) (oci.Image, error) { @@ -165,7 +179,6 @@ func (d *downloader) downloadHTTP(ctx context.Context, url string, sha256hash st return nil, fmt.Errorf("could not get image: %w", err) } return image, nil - } return nil, fmt.Errorf("no matching image found in the index") } From f1a15cbfb4f13a337d6d61101a644dfb8053a6d2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Mar 2024 20:48:03 +0000 Subject: [PATCH 135/155] Bump actions/upload-artifact from 3 to 4 (#21613) Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3 to 4. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/serverless-binary-size.yml | 2 +- .github/workflows/serverless-integration.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/serverless-binary-size.yml b/.github/workflows/serverless-binary-size.yml index 1d63d6781f20c0..7f78fe86952381 100644 --- a/.github/workflows/serverless-binary-size.yml +++ b/.github/workflows/serverless-binary-size.yml @@ -109,7 +109,7 @@ jobs: done - name: Archive dependency graphs - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 if: steps.compare.outputs.diff > env.SIZE_ALLOWANCE with: name: dependency-graphs diff --git a/.github/workflows/serverless-integration.yml b/.github/workflows/serverless-integration.yml index 414c3dbdb51230..84bcba076aaa61 100644 --- a/.github/workflows/serverless-integration.yml +++ b/.github/workflows/serverless-integration.yml @@ -74,7 +74,7 @@ jobs: - name: Archive raw logs if: always() - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: rawlogs path: ${{ steps.rawlogs.outputs.dir }} From d55591bebe2140ea51251afa95296ca01af39838 Mon Sep 17 00:00:00 2001 From: Scott Opell Date: Mon, 11 Mar 2024 17:12:39 -0400 Subject: [PATCH 136/155] Adds regression experiment focused on python tag performance (#23642) * Adds regression experiment focused on python tag performance * Fixes linting error * Fix python formatting --- .../datadog-agent/checks.d/my-check.py | 70 +++++++++++++++++++ .../datadog-agent/conf.d/my-check.d/conf.yaml | 10 +++ .../datadog-agent/datadog.yaml | 13 ++++ .../pycheck_1000_100byte_tags/experiment.yaml | 24 +++++++ .../lading/lading.yaml | 9 +++ 5 files changed, 126 insertions(+) create mode 100644 test/regression/cases/pycheck_1000_100byte_tags/datadog-agent/checks.d/my-check.py create mode 100644 test/regression/cases/pycheck_1000_100byte_tags/datadog-agent/conf.d/my-check.d/conf.yaml create mode 100644 test/regression/cases/pycheck_1000_100byte_tags/datadog-agent/datadog.yaml create mode 100644 test/regression/cases/pycheck_1000_100byte_tags/experiment.yaml create mode 100644 test/regression/cases/pycheck_1000_100byte_tags/lading/lading.yaml diff --git a/test/regression/cases/pycheck_1000_100byte_tags/datadog-agent/checks.d/my-check.py b/test/regression/cases/pycheck_1000_100byte_tags/datadog-agent/checks.d/my-check.py new file mode 100644 index 00000000000000..8cce2f10e49eab --- /dev/null +++ b/test/regression/cases/pycheck_1000_100byte_tags/datadog-agent/checks.d/my-check.py @@ -0,0 +1,70 @@ +import random +import string + +from datadog_checks.checks import AgentCheck + + +def generate_tag_sets(rng, num_sets, tags_per_set, tag_length, unique_tagset_ratio): + """ + Generate tag sets with a specified ratio, at the tagset level, of unique strings to potentially reused tag sets, + using a specified seed for reproducibility. + + Parameters: + - rng (Random): pre-seeded entropy source + - num_sets (int): Number of tag sets to generate. + - tags_per_set (int): Number of tags in each set. + - tag_length (int): Total length of each tag, including the delimiter. + - unique_tagset_ratio (float): Value between 1 and 0, indicating the ratio of unique tag sets. + - seed (int): Seed value for random number generator to ensure reproducibility. + + Returns: + - List[List[str]]: A list of tag sets. + """ + + def generate_tag(tag_length): + if tag_length % 2 == 0: + half_length = tag_length // 2 - 1 + else: + half_length = (tag_length - 1) // 2 + + if tag_length % 2 == 0 and rng.choice([True, False]): + left_length = half_length + 1 + right_length = half_length + else: + left_length = half_length + right_length = half_length + 1 if tag_length % 2 == 0 else half_length + + left_part = ''.join(rng.choice(string.ascii_letters + string.digits) for _ in range(left_length)) + right_part = ''.join(rng.choice(string.ascii_letters + string.digits) for _ in range(right_length)) + return f"{left_part}:{right_part}" + + tag_sets = [] + + for _ in range(num_sets): + if rng.random() <= unique_tagset_ratio or not tag_sets: + # Generate a unique tag set + current_set = set() + while len(current_set) < tags_per_set: + current_set.add(generate_tag(tag_length)) + tag_sets.append(list(current_set)) + else: + # Reuse an entire tag set from the previously generated ones + tag_sets.append(rng.choice(tag_sets).copy()) + + return tag_sets + + +class MyCheck(AgentCheck): + def check(self, instance): + seed = instance.get("seed", 11235813) + rng = random.Random() + rng.seed(seed) + + num_tagsets = instance.get("num_tagsets", 10) + tags_per_set = instance.get("tags_per_set", 10) + tag_length = instance.get("tag_length", 100) + unique_tagset_ratio = instance.get("unique_tagset_ratio", 0.5) + tag_sets = generate_tag_sets(rng, num_tagsets, tags_per_set, tag_length, unique_tagset_ratio) + + for tag_set in tag_sets: + self.gauge('hello.world', rng.random() * 1000, tags=tag_set) diff --git a/test/regression/cases/pycheck_1000_100byte_tags/datadog-agent/conf.d/my-check.d/conf.yaml b/test/regression/cases/pycheck_1000_100byte_tags/datadog-agent/conf.d/my-check.d/conf.yaml new file mode 100644 index 00000000000000..1792246671ee4d --- /dev/null +++ b/test/regression/cases/pycheck_1000_100byte_tags/datadog-agent/conf.d/my-check.d/conf.yaml @@ -0,0 +1,10 @@ +instances: + - seed: abcdef + num_tagsets: 10 + tags_per_set: 1000 + tag_length: 100 + + - seed: 12255457845 + num_tagsets: 10 + tags_per_set: 1000 + tag_length: 100 diff --git a/test/regression/cases/pycheck_1000_100byte_tags/datadog-agent/datadog.yaml b/test/regression/cases/pycheck_1000_100byte_tags/datadog-agent/datadog.yaml new file mode 100644 index 00000000000000..7dd846f73b92ef --- /dev/null +++ b/test/regression/cases/pycheck_1000_100byte_tags/datadog-agent/datadog.yaml @@ -0,0 +1,13 @@ +auth_token_file_path: /tmp/agent-auth-token + +# Disable cloud detection. This stops the Agent from poking around the +# execution environment & network. This is particularly important if the target +# has network access. +cloud_provider_metadata: [] + +telemetry: + enabled: true + +memtrack_enabled: false + +dd_url: localhost:9092 diff --git a/test/regression/cases/pycheck_1000_100byte_tags/experiment.yaml b/test/regression/cases/pycheck_1000_100byte_tags/experiment.yaml new file mode 100644 index 00000000000000..0735804722017b --- /dev/null +++ b/test/regression/cases/pycheck_1000_100byte_tags/experiment.yaml @@ -0,0 +1,24 @@ +optimization_goal: cpu +erratic: false + +environment: + DD_TELEMETRY_ENABLED: true + DD_API_KEY: 000001 + DD_HOSTNAME: smp-regression + +profiling_environment: + DD_INTEGRATION_PROFILING: true + DD_TRACE_AGENT_URL: unix:///var/run/datadog/apm.socket + DD_INTERNAL_PROFILING_BLOCK_PROFILE_RATE: 10000 + DD_INTERNAL_PROFILING_CPU_DURATION: 1m + DD_INTERNAL_PROFILING_DELTA_PROFILES: true + DD_INTERNAL_PROFILING_ENABLED: true + DD_INTERNAL_PROFILING_ENABLE_GOROUTINE_STACKTRACES: true + DD_INTERNAL_PROFILING_MUTEX_PROFILE_FRACTION: 10 + DD_INTERNAL_PROFILING_PERIOD: 1m + DD_INTERNAL_PROFILING_UNIX_SOCKET: /var/run/datadog/apm.socket + DD_PROFILING_EXECUTION_TRACE_ENABLED: true + DD_PROFILING_EXECUTION_TRACE_PERIOD: 1m + DD_PROFILING_WAIT_PROFILE: true + + DD_INTERNAL_PROFILING_EXTRA_TAGS: experiment:pycheck_1000_100byte_tags diff --git a/test/regression/cases/pycheck_1000_100byte_tags/lading/lading.yaml b/test/regression/cases/pycheck_1000_100byte_tags/lading/lading.yaml new file mode 100644 index 00000000000000..baef26704fcab9 --- /dev/null +++ b/test/regression/cases/pycheck_1000_100byte_tags/lading/lading.yaml @@ -0,0 +1,9 @@ +generator: + +blackhole: + - http: + binding_addr: "127.0.0.1:9092" + +target_metrics: + - prometheus: + uri: "http://127.0.0.1:5000/telemetry" From 7e16440e850456e2ef99a91854ff0d53c9bb8538 Mon Sep 17 00:00:00 2001 From: Scott Opell Date: Mon, 11 Mar 2024 17:20:37 -0400 Subject: [PATCH 137/155] Removes custom block sizes from experiments triggering a fallback to better default block sizes (#23556) --- .../cases/tcp_dd_logs_filter_exclude/lading/lading.yaml | 1 - test/regression/cases/tcp_syslog_to_blackhole/lading/lading.yaml | 1 - test/regression/cases/uds_dogstatsd_to_api/lading/lading.yaml | 1 - .../regression/cases/uds_dogstatsd_to_api_cpu/lading/lading.yaml | 1 - 4 files changed, 4 deletions(-) diff --git a/test/regression/cases/tcp_dd_logs_filter_exclude/lading/lading.yaml b/test/regression/cases/tcp_dd_logs_filter_exclude/lading/lading.yaml index 282c062f46dd06..4c90e5fd995cfa 100644 --- a/test/regression/cases/tcp_dd_logs_filter_exclude/lading/lading.yaml +++ b/test/regression/cases/tcp_dd_logs_filter_exclude/lading/lading.yaml @@ -5,7 +5,6 @@ generator: addr: "127.0.0.1:10000" variant: "datadog_log" bytes_per_second: "50 Mb" - block_sizes: ["8Kb", "4Kb", "2Kb", "1Kb", "512b", "256b", "128b"] maximum_prebuild_cache_size_bytes: "400 Mb" blackhole: diff --git a/test/regression/cases/tcp_syslog_to_blackhole/lading/lading.yaml b/test/regression/cases/tcp_syslog_to_blackhole/lading/lading.yaml index d92ea11abe1555..2063be707c40b4 100644 --- a/test/regression/cases/tcp_syslog_to_blackhole/lading/lading.yaml +++ b/test/regression/cases/tcp_syslog_to_blackhole/lading/lading.yaml @@ -5,7 +5,6 @@ generator: addr: "127.0.0.1:10000" variant: "syslog5424" bytes_per_second: "50 Mb" - block_sizes: ["1Mb", "0.5Mb", "0.25Mb", "0.125Mb", "128Kb"] maximum_prebuild_cache_size_bytes: "256 Mb" blackhole: diff --git a/test/regression/cases/uds_dogstatsd_to_api/lading/lading.yaml b/test/regression/cases/uds_dogstatsd_to_api/lading/lading.yaml index 6532b2037895af..7e51445e0ca4a0 100644 --- a/test/regression/cases/uds_dogstatsd_to_api/lading/lading.yaml +++ b/test/regression/cases/uds_dogstatsd_to_api/lading/lading.yaml @@ -42,7 +42,6 @@ generator: set: 0 histogram: 0 bytes_per_second: "100 MiB" - block_sizes: ["256b", "512b", "1Kb", "2Kb", "3Kb", "4Kb", "5Kb", "6Kb"] maximum_prebuild_cache_size_bytes: "500 Mb" blackhole: diff --git a/test/regression/cases/uds_dogstatsd_to_api_cpu/lading/lading.yaml b/test/regression/cases/uds_dogstatsd_to_api_cpu/lading/lading.yaml index 6532b2037895af..7e51445e0ca4a0 100644 --- a/test/regression/cases/uds_dogstatsd_to_api_cpu/lading/lading.yaml +++ b/test/regression/cases/uds_dogstatsd_to_api_cpu/lading/lading.yaml @@ -42,7 +42,6 @@ generator: set: 0 histogram: 0 bytes_per_second: "100 MiB" - block_sizes: ["256b", "512b", "1Kb", "2Kb", "3Kb", "4Kb", "5Kb", "6Kb"] maximum_prebuild_cache_size_bytes: "500 Mb" blackhole: From c8b0d374fa17550453b7e42c2bc3ea2573a71559 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Mar 2024 22:30:08 +0000 Subject: [PATCH 138/155] Bump golang.org/x/tools from 0.18.0 to 0.19.0 in /pkg/security/secl (#23650) * Bump golang.org/x/tools from 0.18.0 to 0.19.0 in /pkg/security/secl Bumps [golang.org/x/tools](https://github.com/golang/tools) from 0.18.0 to 0.19.0. - [Release notes](https://github.com/golang/tools/releases) - [Commits](https://github.com/golang/tools/compare/v0.18.0...v0.19.0) --- updated-dependencies: - dependency-name: golang.org/x/tools dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * Auto-generate go.sum and LICENSE-3rdparty.csv changes --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dependabot[bot] --- go.mod | 10 +++++----- go.sum | 20 ++++++++++---------- pkg/security/secl/go.mod | 4 ++-- pkg/security/secl/go.sum | 8 ++++---- 4 files changed, 21 insertions(+), 21 deletions(-) diff --git a/go.mod b/go.mod index 5675c17341a041..3f9c1f316b0ae4 100644 --- a/go.mod +++ b/go.mod @@ -270,12 +270,12 @@ require ( go4.org/netipx v0.0.0-20220812043211-3cc044ffd68d golang.org/x/arch v0.6.0 golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 - golang.org/x/net v0.21.0 + golang.org/x/net v0.22.0 golang.org/x/sync v0.6.0 golang.org/x/sys v0.18.0 golang.org/x/text v0.14.0 golang.org/x/time v0.5.0 - golang.org/x/tools v0.18.0 + golang.org/x/tools v0.19.0 golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 google.golang.org/genproto v0.0.0-20231212172506-995d672761c0 // indirect google.golang.org/grpc v1.61.0 @@ -568,10 +568,10 @@ require ( go.opentelemetry.io/otel/sdk/metric v1.22.0 // indirect go.opentelemetry.io/otel/trace v1.23.1 // indirect go.opentelemetry.io/proto/otlp v1.1.0 // indirect - golang.org/x/crypto v0.19.0 // indirect - golang.org/x/mod v0.15.0 + golang.org/x/crypto v0.21.0 // indirect + golang.org/x/mod v0.16.0 golang.org/x/oauth2 v0.16.0 // indirect - golang.org/x/term v0.17.0 // indirect + golang.org/x/term v0.18.0 // indirect gonum.org/v1/gonum v0.14.0 // indirect google.golang.org/api v0.156.0 // indirect google.golang.org/appengine v1.6.8 // indirect diff --git a/go.sum b/go.sum index 90b73eb56d270e..bd283ab0536d3b 100644 --- a/go.sum +++ b/go.sum @@ -2063,8 +2063,8 @@ golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4 golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= -golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= -golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= +golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= 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= @@ -2109,8 +2109,8 @@ golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8= -golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.16.0 h1:QX4fJ0Rr5cPQCF7O9lh9Se4pmwfwskqZfq5moyldzic= +golang.org/x/mod v0.16.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= 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-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -2181,8 +2181,8 @@ golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= -golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= -golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc= +golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190130055435-99b60b757ec1/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -2361,8 +2361,8 @@ golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= -golang.org/x/term v0.17.0 h1:mkTF7LCd6WGJNL3K1Ad7kwxNfYAW6a8a8QqtMblp/4U= -golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8= +golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -2455,8 +2455,8 @@ golang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.18.0 h1:k8NLag8AGHnn+PHbl7g43CtqZAwG60vZkLqgyZgIHgQ= -golang.org/x/tools v0.18.0/go.mod h1:GL7B4CwcLLeo59yx/9UWWuNOW1n3VZ4f5axWfML7Lcg= +golang.org/x/tools v0.19.0 h1:tfGCXNR1OsFG+sVdLAitlpjAvD/I6dHDKnYrpEZUHkw= +golang.org/x/tools v0.19.0/go.mod h1:qoJWxmGSIBmAeriMx19ogtrEPrGtDbPK634QFIcLAhc= 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= diff --git a/pkg/security/secl/go.mod b/pkg/security/secl/go.mod index 1d67b13c054965..0e579059425f39 100644 --- a/pkg/security/secl/go.mod +++ b/pkg/security/secl/go.mod @@ -17,7 +17,7 @@ require ( github.com/stretchr/testify v1.9.0 golang.org/x/sys v0.18.0 golang.org/x/text v0.14.0 - golang.org/x/tools v0.18.0 + golang.org/x/tools v0.19.0 gopkg.in/yaml.v2 v2.4.0 gopkg.in/yaml.v3 v3.0.1 ) @@ -33,6 +33,6 @@ require ( github.com/pmezard/go-difflib v1.0.0 // indirect github.com/shopspring/decimal v1.2.0 // indirect golang.org/x/crypto v0.3.0 // indirect - golang.org/x/mod v0.15.0 // indirect + golang.org/x/mod v0.16.0 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect ) diff --git a/pkg/security/secl/go.sum b/pkg/security/secl/go.sum index a9f88a0343cfd4..bd7c91910834f4 100644 --- a/pkg/security/secl/go.sum +++ b/pkg/security/secl/go.sum @@ -69,8 +69,8 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.3.0 h1:a06MkbcxBrEFc0w0QIZWXrH/9cCX6KJyWbBOIwAn+7A= golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8= -golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.16.0 h1:QX4fJ0Rr5cPQCF7O9lh9Se4pmwfwskqZfq5moyldzic= +golang.org/x/mod v0.16.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= @@ -99,8 +99,8 @@ golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.18.0 h1:k8NLag8AGHnn+PHbl7g43CtqZAwG60vZkLqgyZgIHgQ= -golang.org/x/tools v0.18.0/go.mod h1:GL7B4CwcLLeo59yx/9UWWuNOW1n3VZ4f5axWfML7Lcg= +golang.org/x/tools v0.19.0 h1:tfGCXNR1OsFG+sVdLAitlpjAvD/I6dHDKnYrpEZUHkw= +golang.org/x/tools v0.19.0/go.mod h1:qoJWxmGSIBmAeriMx19ogtrEPrGtDbPK634QFIcLAhc= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= From b3092e7109a82ce5bc7189a2604a450b0a0bfa7d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Mar 2024 22:35:13 +0000 Subject: [PATCH 139/155] Bump docker/setup-buildx-action from 2 to 3 (#19488) Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 2 to 3. - [Release notes](https://github.com/docker/setup-buildx-action/releases) - [Commits](https://github.com/docker/setup-buildx-action/compare/v2...v3) --- updated-dependencies: - dependency-name: docker/setup-buildx-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/serverless-binary-size.yml | 2 +- .github/workflows/serverless-integration.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/serverless-binary-size.yml b/.github/workflows/serverless-binary-size.yml index 7f78fe86952381..e986f76826d55c 100644 --- a/.github/workflows/serverless-binary-size.yml +++ b/.github/workflows/serverless-binary-size.yml @@ -31,7 +31,7 @@ jobs: path: go/src/github.com/DataDog/datadog-lambda-extension - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3 - name: Previous binary size and dependencies id: previous diff --git a/.github/workflows/serverless-integration.yml b/.github/workflows/serverless-integration.yml index 84bcba076aaa61..b2eb185fb7c2bb 100644 --- a/.github/workflows/serverless-integration.yml +++ b/.github/workflows/serverless-integration.yml @@ -49,7 +49,7 @@ jobs: platforms: amd64,arm64 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3 - name: Create raw logs directory id: rawlogs From f44e4bab70b9df5f71ac5c10078cf5fd023e9df4 Mon Sep 17 00:00:00 2001 From: Paul Cacheux Date: Tue, 12 Mar 2024 01:11:41 +0100 Subject: [PATCH 140/155] [CWS] fix rare event corruption (#23354) * debug whole event content * use fixed ringbuffer * `inv -e generate-licenses` --- LICENSE-3rdparty.csv | 1 + go.mod | 3 +++ go.sum | 12 +++++++----- pkg/security/probe/probe_ebpf.go | 1 + 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/LICENSE-3rdparty.csv b/LICENSE-3rdparty.csv index 67ee67e6bf3be0..c16b42cee1174f 100644 --- a/LICENSE-3rdparty.csv +++ b/LICENSE-3rdparty.csv @@ -814,6 +814,7 @@ core,github.com/cilium/ebpf/btf,MIT,"Copyright (c) 2017 Nathan Sweet | Copyright core,github.com/cilium/ebpf/features,MIT,"Copyright (c) 2017 Nathan Sweet | Copyright (c) 2018, 2019 Cloudflare | Copyright (c) 2019 Authors of Cilium" core,github.com/cilium/ebpf/internal,MIT,"Copyright (c) 2017 Nathan Sweet | Copyright (c) 2018, 2019 Cloudflare | Copyright (c) 2019 Authors of Cilium" core,github.com/cilium/ebpf/internal/epoll,MIT,"Copyright (c) 2017 Nathan Sweet | Copyright (c) 2018, 2019 Cloudflare | Copyright (c) 2019 Authors of Cilium" +core,github.com/cilium/ebpf/internal/kallsyms,MIT,"Copyright (c) 2017 Nathan Sweet | Copyright (c) 2018, 2019 Cloudflare | Copyright (c) 2019 Authors of Cilium" core,github.com/cilium/ebpf/internal/kconfig,MIT,"Copyright (c) 2017 Nathan Sweet | Copyright (c) 2018, 2019 Cloudflare | Copyright (c) 2019 Authors of Cilium" core,github.com/cilium/ebpf/internal/sys,MIT,"Copyright (c) 2017 Nathan Sweet | Copyright (c) 2018, 2019 Cloudflare | Copyright (c) 2019 Authors of Cilium" core,github.com/cilium/ebpf/internal/sysenc,MIT,"Copyright (c) 2017 Nathan Sweet | Copyright (c) 2018, 2019 Cloudflare | Copyright (c) 2019 Authors of Cilium" diff --git a/go.mod b/go.mod index 3f9c1f316b0ae4..41da02e68966b4 100644 --- a/go.mod +++ b/go.mod @@ -851,6 +851,9 @@ replace github.com/moby/buildkit => github.com/moby/buildkit v0.13.0 // Fixes a panic in trivy, see gitlab.com/cznic/libc/-/issues/25 replace modernc.org/sqlite => modernc.org/sqlite v1.19.3 +// Fixes eBPF ring buffer corruption, to remove when this is merged upstream +replace github.com/cilium/ebpf => github.com/paulcacheux/ebpf v0.11.1-0.20240309154158-cb664e155bd2 + // Exclude specific versions of knadh/koanf to fix building with a `go.work`, following // https://github.com/open-telemetry/opentelemetry-collector/issues/8127 exclude ( diff --git a/go.sum b/go.sum index bd283ab0536d3b..a4402478d93e99 100644 --- a/go.sum +++ b/go.sum @@ -597,9 +597,6 @@ github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5P github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/cihub/seelog v0.0.0-20151216151435-d2c6e5aa9fbf h1:XI2tOTCBqEnMyN2j1yPBI07yQHeywUSCEf8YWqf0oKw= github.com/cihub/seelog v0.0.0-20151216151435-d2c6e5aa9fbf/go.mod h1:9d6lWj8KzO/fd/NrVaLscBKmPigpZpn5YawRPw+e3Yo= -github.com/cilium/ebpf v0.7.0/go.mod h1:/oI2+1shJiTGAMgl6/RgJr36Eo1jzrRcAWbcXO2usCA= -github.com/cilium/ebpf v0.13.0 h1:K+41peBnbROzY6nHc9Kq79B4lnJpiF/BMpBuoTGAWSY= -github.com/cilium/ebpf v0.13.0/go.mod h1:DHp1WyrLeiBh19Cf/tfiSMhqheEiK8fXFZ4No0P1Hso= github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/clbanning/mxj v1.8.4 h1:HuhwZtbyvyOw+3Z1AowPkU87JkJUSv751ELWaiTpj8I= @@ -762,7 +759,6 @@ github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8 github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/foxcpp/go-mockdns v1.0.0 h1:7jBqxd3WDWwi/6WhDvacvH1XsN3rOLXyHM1uhvIx6FI= github.com/foxcpp/go-mockdns v1.0.0/go.mod h1:lgRN6+KxQBawyIghpnl5CezHFGS9VLzvtVlwxvzXTQ4= -github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= github.com/freddierice/go-losetup v0.0.0-20170407175016-fc9adea44124 h1:TVfi5xMshZAXzVXozESk8bi0JSTPwHkx7qtLOkkcu/c= github.com/freddierice/go-losetup v0.0.0-20170407175016-fc9adea44124/go.mod h1:zAk7fcFx45euzK9Az14j6Hd9n8Cwhnjp/NBfhSIAmFg= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= @@ -1500,6 +1496,8 @@ github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0Mw github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc= github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= +github.com/paulcacheux/ebpf v0.11.1-0.20240309154158-cb664e155bd2 h1:zFC/w2BEdAoKj4c0yVkEm26IFiZXbN6zqqDJCPEJRz8= +github.com/paulcacheux/ebpf v0.11.1-0.20240309154158-cb664e155bd2/go.mod h1:DHp1WyrLeiBh19Cf/tfiSMhqheEiK8fXFZ4No0P1Hso= github.com/pborman/uuid v0.0.0-20180122190007-c65b2f87fee3/go.mod h1:VyrYX9gd7irzKovcSS6BIIEwPRkP2Wm2m9ufcdFSJ34= github.com/pborman/uuid v1.2.1 h1:+ZZIw58t/ozdjRaXh/3awHfmWRbzYxJoAdNJxe/3pvw= github.com/pborman/uuid v1.2.1/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= @@ -2059,6 +2057,7 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= @@ -2075,6 +2074,7 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/exp v0.0.0-20230224173230-c95f2b4c22f2/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 h1:LfspQV/FYTatPTr/3HzIcmiUFH7PGP+OQ6mgDYo3yuQ= golang.org/x/exp v0.0.0-20240222234643-814bf88cf225/go.mod h1:CxmFvTBINI24O/j8iY7H1xHzx2i4OsyguNBmN/uPtqc= golang.org/x/exp/typeparams v0.0.0-20220613132600-b0d781184e0d h1:+W8Qf4iJtMGKkyAygcKohjxTk4JPsL9DpzApJ22m5Ic= @@ -2107,8 +2107,10 @@ golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.16.0 h1:QX4fJ0Rr5cPQCF7O9lh9Se4pmwfwskqZfq5moyldzic= golang.org/x/mod v0.16.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -2310,7 +2312,6 @@ golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210906170528-6f6e22806c34/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -2453,6 +2454,7 @@ 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.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.19.0 h1:tfGCXNR1OsFG+sVdLAitlpjAvD/I6dHDKnYrpEZUHkw= diff --git a/pkg/security/probe/probe_ebpf.go b/pkg/security/probe/probe_ebpf.go index 9f8a894bff829c..73b38fdf6720fd 100644 --- a/pkg/security/probe/probe_ebpf.go +++ b/pkg/security/probe/probe_ebpf.go @@ -546,6 +546,7 @@ func (p *EBPFProbe) handleEvent(CPU int, data []byte) { if eventType > model.MaxKernelEventType { p.monitors.eventStreamMonitor.CountInvalidEvent(eventstream.EventStreamMap, eventstream.InvalidType, dataLen) seclog.Errorf("unsupported event type %d", eventType) + seclog.Errorf("event: %x", data) return } From 559554ac4c9fcc7147fea741ad8d2574bdfef5e1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Mar 2024 00:47:04 +0000 Subject: [PATCH 141/155] Bump docker/setup-qemu-action from 2 to 3 (#19489) Bumps [docker/setup-qemu-action](https://github.com/docker/setup-qemu-action) from 2 to 3. - [Release notes](https://github.com/docker/setup-qemu-action/releases) - [Commits](https://github.com/docker/setup-qemu-action/compare/v2...v3) --- updated-dependencies: - dependency-name: docker/setup-qemu-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/serverless-integration.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/serverless-integration.yml b/.github/workflows/serverless-integration.yml index b2eb185fb7c2bb..dc62ec88e1eea7 100644 --- a/.github/workflows/serverless-integration.yml +++ b/.github/workflows/serverless-integration.yml @@ -43,7 +43,7 @@ jobs: - name: Set up QEMU id: qemu - uses: docker/setup-qemu-action@v2 + uses: docker/setup-qemu-action@v3 with: image: tonistiigi/binfmt:latest platforms: amd64,arm64 From 6f712f436f70f76b5d1881998833850b8fa10fdd Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 12 Mar 2024 07:28:08 +0000 Subject: [PATCH 142/155] CWS: sync BTFhub constants (#23663) Co-authored-by: paulcacheux --- pkg/security/probe/constantfetch/btfhub/constants.json | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/pkg/security/probe/constantfetch/btfhub/constants.json b/pkg/security/probe/constantfetch/btfhub/constants.json index ae38473b8336bc..6d60b0eae18bc6 100644 --- a/pkg/security/probe/constantfetch/btfhub/constants.json +++ b/pkg/security/probe/constantfetch/btfhub/constants.json @@ -1,5 +1,5 @@ { - "commit": "973bbc2195c238935e5858f624300eb278d94877", + "commit": "2c59c7c702116851536f5a9ccf127123bf53bc01", "constants": [ { "binprm_file_offset": 168, @@ -23276,6 +23276,13 @@ "uname_release": "3.10.0-1160.11.1.el7.x86_64", "cindex": 37 }, + { + "distrib": "rhel", + "version": "7", + "arch": "x86_64", + "uname_release": "3.10.0-1160.114.2.el7.x86_64", + "cindex": 37 + }, { "distrib": "rhel", "version": "7", From e7497a03fe140b1c7cfa4d874feec98899e6c083 Mon Sep 17 00:00:00 2001 From: Paul Cacheux Date: Tue, 12 Mar 2024 09:33:24 +0100 Subject: [PATCH 143/155] fix serverless integration tests artifact names (#23661) --- .github/workflows/serverless-integration.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/serverless-integration.yml b/.github/workflows/serverless-integration.yml index dc62ec88e1eea7..4f06a1a5c0b9c2 100644 --- a/.github/workflows/serverless-integration.yml +++ b/.github/workflows/serverless-integration.yml @@ -76,5 +76,5 @@ jobs: if: always() uses: actions/upload-artifact@v4 with: - name: rawlogs + name: rawlogs-${{ matrix.suite }}-${{ matrix.architecture }} path: ${{ steps.rawlogs.outputs.dir }} From ba7079d92077ab5898378594dcafb9cd88a77e57 Mon Sep 17 00:00:00 2001 From: Gustavo Caso Date: Tue, 12 Mar 2024 09:47:36 +0100 Subject: [PATCH 144/155] fix system probe status provider (#23606) * fix system probe status provider * ensure to use the systemprobe configuration object --- cmd/agent/subcommands/run/command.go | 4 ++-- pkg/status/systemprobe/status.go | 12 +++++++----- pkg/status/systemprobe/status_unsupported.go | 4 ++-- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/cmd/agent/subcommands/run/command.go b/cmd/agent/subcommands/run/command.go index b061fa45b8ef11..ca1268df3e5946 100644 --- a/cmd/agent/subcommands/run/command.go +++ b/cmd/agent/subcommands/run/command.go @@ -325,8 +325,8 @@ func getSharedFxOption() fx.Option { fx.Provide(func(config config.Component) status.InformationProvider { return status.NewInformationProvider(clusteragentStatus.GetProvider(config)) }), - fx.Provide(func(config config.Component) status.InformationProvider { - return status.NewInformationProvider(systemprobeStatus.GetProvider(config)) + fx.Provide(func(sysprobeconfig sysprobeconfig.Component) status.InformationProvider { + return status.NewInformationProvider(systemprobeStatus.GetProvider(sysprobeconfig)) }), fx.Provide(func(config config.Component) status.InformationProvider { return status.NewInformationProvider(httpproxyStatus.GetProvider(config)) diff --git a/pkg/status/systemprobe/status.go b/pkg/status/systemprobe/status.go index 17df46c8fff715..b2e21cd225d33d 100644 --- a/pkg/status/systemprobe/status.go +++ b/pkg/status/systemprobe/status.go @@ -13,8 +13,8 @@ import ( "fmt" "io" - "github.com/DataDog/datadog-agent/comp/core/config" "github.com/DataDog/datadog-agent/comp/core/status" + "github.com/DataDog/datadog-agent/comp/core/sysprobeconfig" "github.com/DataDog/datadog-agent/pkg/process/net" ) @@ -45,10 +45,12 @@ type Provider struct { } // GetProvider if system probe is enabled returns status.Provider otherwise returns nil -func GetProvider(conf config.Component) status.Provider { - if conf.GetBool("system_probe_config.enabled") { +func GetProvider(config sysprobeconfig.Component) status.Provider { + systemProbeConfig := config.SysProbeObject() + + if systemProbeConfig.Enabled { return Provider{ - SocketPath: conf.GetString("system_probe_config.sysprobe_socket"), + SocketPath: systemProbeConfig.SocketAddress, } } @@ -77,7 +79,7 @@ func (p Provider) JSON(_ bool, stats map[string]interface{}) error { // Text renders the text output func (p Provider) Text(_ bool, buffer io.Writer) error { - return status.RenderText(templatesFS, "clusteragent.tmpl", buffer, p.getStatusInfo()) + return status.RenderText(templatesFS, "systemprobe.tmpl", buffer, p.getStatusInfo()) } // HTML renders the html output diff --git a/pkg/status/systemprobe/status_unsupported.go b/pkg/status/systemprobe/status_unsupported.go index 149379d258ecb5..31c25232586598 100644 --- a/pkg/status/systemprobe/status_unsupported.go +++ b/pkg/status/systemprobe/status_unsupported.go @@ -9,8 +9,8 @@ package systemprobe import ( - "github.com/DataDog/datadog-agent/comp/core/config" "github.com/DataDog/datadog-agent/comp/core/status" + "github.com/DataDog/datadog-agent/comp/core/sysprobeconfig" ) // GetStatus returns a notice that it is not supported on systems that do not at least build the process agent @@ -21,6 +21,6 @@ func GetStatus(stats map[string]interface{}, _ string) { } // GetProvider returns nil -func GetProvider(_ config.Component) status.Provider { +func GetProvider(_ sysprobeconfig.Component) status.Provider { return nil } From 51a28847f3eca95263c628f662c772c3e6ec6025 Mon Sep 17 00:00:00 2001 From: Kangyi LI Date: Tue, 12 Mar 2024 10:22:37 +0100 Subject: [PATCH 145/155] update ECS v4 client (#23248) * update ecs v4 client * address feedback * address feedback --- pkg/util/ecs/metadata/clients.go | 32 +++++ pkg/util/ecs/metadata/testutil/dummy_ecs.go | 2 +- pkg/util/ecs/metadata/v3or4/client_test.go | 128 ++++++++++++++++++ .../v3or4/testdata/task_with_tags.json | 106 +++++++++++++++ pkg/util/ecs/metadata/v3or4/types.go | 50 +++++-- 5 files changed, 306 insertions(+), 12 deletions(-) create mode 100644 pkg/util/ecs/metadata/v3or4/client_test.go create mode 100644 pkg/util/ecs/metadata/v3or4/testdata/task_with_tags.json diff --git a/pkg/util/ecs/metadata/clients.go b/pkg/util/ecs/metadata/clients.go index 01d9e14cbc1835..819ca629de7741 100644 --- a/pkg/util/ecs/metadata/clients.go +++ b/pkg/util/ecs/metadata/clients.go @@ -35,12 +35,15 @@ type util struct { initRetryV1 retry.Retrier initRetryV2 retry.Retrier initRetryV3orV4 retry.Retrier + initRetryV4 retry.Retrier initV1 sync.Once initV2 sync.Once initV3orV4 sync.Once + initV4 sync.Once v1 v1.Client v2 v2.Client v3or4 v3or4.Client + v4 v3or4.Client } // V1 returns a client for the ECS metadata API v1, also called introspection @@ -116,6 +119,30 @@ func V3orV4FromCurrentTask() (v3or4.Client, error) { return globalUtil.v3or4, nil } +// V4FromCurrentTask returns a client for the ECS metadata API v4 by detecting +// the endpoint address from the task the executable is running in. Returns an +// error if it was not possible to detect the endpoint address. +func V4FromCurrentTask() (v3or4.Client, error) { + if !config.IsCloudProviderEnabled(common.CloudProviderName) { + return nil, fmt.Errorf("Cloud Provider %s is disabled by configuration", common.CloudProviderName) + } + + globalUtil.initV4.Do(func() { + globalUtil.initRetryV4.SetupRetrier(&retry.Config{ //nolint:errcheck + Name: "ecsutil-meta-v4", + AttemptMethod: initV4, + Strategy: retry.Backoff, + InitialRetryDelay: initialRetryDelay, + MaxRetryDelay: maxRetryDelay, + }) + }) + if err := globalUtil.initRetryV4.TriggerRetry(); err != nil { + log.Debugf("ECS metadata v4 client init error: %s", err) + return nil, err + } + return globalUtil.v4, nil +} + // newAutodetectedClientV1 detects the metadata v1 API endpoint and creates a new // client for it. Returns an error if it was not possible to find the endpoint. func newAutodetectedClientV1() (v1.Client, error) { @@ -179,3 +206,8 @@ func initV3orV4() error { globalUtil.v3or4 = client return nil } + +func initV4() (err error) { + globalUtil.v4, err = newClientV4ForCurrentTask() + return err +} diff --git a/pkg/util/ecs/metadata/testutil/dummy_ecs.go b/pkg/util/ecs/metadata/testutil/dummy_ecs.go index 84c84b3e5922bc..c8c03b17d223ec 100644 --- a/pkg/util/ecs/metadata/testutil/dummy_ecs.go +++ b/pkg/util/ecs/metadata/testutil/dummy_ecs.go @@ -47,7 +47,7 @@ func NewDummyECS(ops ...Option) (*DummyECS, error) { mux: http.NewServeMux(), fileHandlers: make(map[string]string), rawHandlers: make(map[string]string), - Requests: make(chan *http.Request, 3), + Requests: make(chan *http.Request, 10), } for _, o := range ops { o(d) diff --git a/pkg/util/ecs/metadata/v3or4/client_test.go b/pkg/util/ecs/metadata/v3or4/client_test.go new file mode 100644 index 00000000000000..5805ed8a127c03 --- /dev/null +++ b/pkg/util/ecs/metadata/v3or4/client_test.go @@ -0,0 +1,128 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2022-present Datadog, Inc. + +//go:build docker + +package v3or4 + +import ( + "context" + "fmt" + "testing" + + "github.com/stretchr/testify/require" + + "github.com/DataDog/datadog-agent/pkg/util/ecs/metadata/testutil" +) + +func TestGetV4TaskWithTags(t *testing.T) { + testDataPath := "./testdata/task_with_tags.json" + dummyECS, err := testutil.NewDummyECS( + testutil.FileHandlerOption("/v4/1234-1/taskWithTags", testDataPath), + ) + require.NoError(t, err) + ts := dummyECS.Start() + defer ts.Close() + + client := NewClient(fmt.Sprintf("%s/v4/1234-1", ts.URL), "v4") + task, err := client.GetTaskWithTags(context.Background()) + require.NoError(t, err) + + require.Equal(t, expected, task) +} + +// expected is an expected Task from ./testdata/task.json +var expected = &Task{ + ClusterName: "arn:aws:ecs:us-east-1:123457279990:cluster/ecs-cluster", + TaskARN: "arn:aws:ecs:us-east-1:123457279990:task/ecs-cluster/938f6d263c464aa5985dc67ab7f38a7e", + KnownStatus: "RUNNING", + DesiredStatus: "RUNNING", + Family: "my-redis", + Version: "1", + Limits: map[string]float64{ + "CPU": 1, + "Memory": 2048, + }, + PullStartedAt: "2023-11-20T12:09:45.059013479Z", + PullStoppedAt: "2023-11-20T12:10:41.166377771Z", + AvailabilityZone: "us-east-1d", + LaunchType: "EC2", + TaskTags: map[string]string{ + "aws:ecs:cluster": "ecs-cluster", + "aws:ecs:launchtype": "EC2", + }, + EphemeralStorageMetrics: map[string]int64{"Utilized": 2298, "Reserved": 20496}, + Containers: []Container{ + { + DockerID: "938f6d263c464aa5985dc67ab7f38a7e-1714341083", + Name: "log_router", + DockerName: "log_router", + Image: "amazon/aws-for-fluent-bit:latest", + ImageID: "sha256:ed2bd1c0fa887e59338a8761e040acc495213fd3c1b2be661c44c7158425e6e3", + DesiredStatus: "RUNNING", + KnownStatus: "RUNNING", + Limits: map[string]uint64{"CPU": 2}, + CreatedAt: "2023-11-20T12:10:44.559880428Z", + StartedAt: "2023-11-20T12:10:44.559880428Z", + Type: "NORMAL", + LogDriver: "awslogs", + LogOptions: map[string]string{ + "awslogs-group": "aws", + "awslogs-region": "us-east-1", + "awslogs-stream": "log_router/log_router/938f6d263c464a", + }, + ContainerARN: "arn:aws:ecs:us-east-1:601427279990:container/ecs-cluster/938f6d263c464aa59/dc51359e-7f8a", + Networks: []Network{ + { + NetworkMode: "awsvpc", + IPv4Addresses: []string{"172.31.15.128"}, + }, + }, + Snapshotter: "overlayfs", + }, + { + DockerID: "938f6d263c464aa5985dc67ab7f38a7e-2537586469", + Name: "datadog-agent", + DockerName: "datadog-agent", + Image: "public.ecr.aws/datadog/agent:latest", + ImageID: "sha256:ba1d175ac08f8241d62c07785cbc6e026310cd2293dc4cf148e05d63655d1297", + Labels: map[string]string{ + "com.amazonaws.ecs.container-name": "datadog-agent", + "com.amazonaws.ecs.task-definition-family": "my-redis", + "com.amazonaws.ecs.task-definition-version": "1", + }, + DesiredStatus: "RUNNING", + KnownStatus: "RUNNING", + Limits: map[string]uint64{"CPU": 2}, + CreatedAt: "2023-11-20T12:10:44.404563253Z", + StartedAt: "2023-11-20T12:10:44.404563253Z", + Type: "NORMAL", + Health: &HealthStatus{ + Status: "HEALTHY", + Since: "2023-11-20T12:11:16.383262018Z", + }, + Volumes: []Volume{ + { + DockerName: "my-redis-1-dd-sockets", + Destination: "/var/run/datadog", + }, + }, + LogDriver: "awslogs", + LogOptions: map[string]string{ + "awslogs-group": "aws", + "awslogs-region": "us-east-1", + "awslogs-stream": "log_router/datadog-agent/938f6d263c46e", + }, + ContainerARN: "arn:aws:ecs:us-east-1:601427279990:container/ecs-cluster/938f6d263c464aa/a17c293b-ab52", + Networks: []Network{ + { + NetworkMode: "awsvpc", + IPv4Addresses: []string{"172.31.115.123"}, + }, + }, + Snapshotter: "overlayfs", + }, + }, +} diff --git a/pkg/util/ecs/metadata/v3or4/testdata/task_with_tags.json b/pkg/util/ecs/metadata/v3or4/testdata/task_with_tags.json new file mode 100644 index 00000000000000..d6930853e9fa65 --- /dev/null +++ b/pkg/util/ecs/metadata/v3or4/testdata/task_with_tags.json @@ -0,0 +1,106 @@ +{ + "Cluster": "arn:aws:ecs:us-east-1:123457279990:cluster/ecs-cluster", + "TaskARN": "arn:aws:ecs:us-east-1:123457279990:task/ecs-cluster/938f6d263c464aa5985dc67ab7f38a7e", + "Family": "my-redis", + "Revision": "1", + "DesiredStatus": "RUNNING", + "KnownStatus": "RUNNING", + "Limits": { "CPU": 1, "Memory": 2048 }, + "PullStartedAt": "2023-11-20T12:09:45.059013479Z", + "PullStoppedAt": "2023-11-20T12:10:41.166377771Z", + "AvailabilityZone": "us-east-1d", + "LaunchType": "EC2", + "Containers": [ + { + "DockerId": "938f6d263c464aa5985dc67ab7f38a7e-1714341083", + "Name": "log_router", + "DockerName": "log_router", + "Image": "amazon/aws-for-fluent-bit:latest", + "ImageID": "sha256:ed2bd1c0fa887e59338a8761e040acc495213fd3c1b2be661c44c7158425e6e3", + "DesiredStatus": "RUNNING", + "KnownStatus": "RUNNING", + "Limits": { "CPU": 2 }, + "CreatedAt": "2023-11-20T12:10:44.559880428Z", + "StartedAt": "2023-11-20T12:10:44.559880428Z", + "Type": "NORMAL", + "LogDriver": "awslogs", + "LogOptions": { + "awslogs-group": "aws", + "awslogs-region": "us-east-1", + "awslogs-stream": "log_router/log_router/938f6d263c464a" + }, + "ContainerARN": "arn:aws:ecs:us-east-1:601427279990:container/ecs-cluster/938f6d263c464aa59/dc51359e-7f8a", + "Networks": [ + { + "NetworkMode": "awsvpc", + "IPv4Addresses": ["172.31.15.128"], + "AttachmentIndex": 0, + "MACAddress": "0e:73:3c:72:d3:c6", + "IPv4SubnetCIDRBlock": "172.31.15.0/24", + "DomainNameServers": ["172.31.44.19", "172.31.0.2"], + "PrivateDNSName": "ip-123-31-115-123.ec2.internal", + "SubnetGatewayIpv4Address": "172.31.15.1/24" + } + ], + "Snapshotter": "overlayfs" + }, + { + "DockerId": "938f6d263c464aa5985dc67ab7f38a7e-2537586469", + "Name": "datadog-agent", + "DockerName": "datadog-agent", + "Image": "public.ecr.aws/datadog/agent:latest", + "ImageID": "sha256:ba1d175ac08f8241d62c07785cbc6e026310cd2293dc4cf148e05d63655d1297", + "Labels": { + "com.amazonaws.ecs.container-name": "datadog-agent", + "com.amazonaws.ecs.task-definition-family": "my-redis", + "com.amazonaws.ecs.task-definition-version": "1" + }, + "DesiredStatus": "RUNNING", + "KnownStatus": "RUNNING", + "Limits": { "CPU": 2 }, + "CreatedAt": "2023-11-20T12:10:44.404563253Z", + "StartedAt": "2023-11-20T12:10:44.404563253Z", + "Type": "NORMAL", + "Health": { + "status": "HEALTHY", + "statusSince": "2023-11-20T12:11:16.383262018Z" + }, + "Volumes": [ + { + "DockerName": "my-redis-1-dd-sockets", + "Destination": "/var/run/datadog" + } + ], + "LogDriver": "awslogs", + "LogOptions": { + "awslogs-group": "aws", + "awslogs-region": "us-east-1", + "awslogs-stream": "log_router/datadog-agent/938f6d263c46e" + }, + "ContainerARN": "arn:aws:ecs:us-east-1:601427279990:container/ecs-cluster/938f6d263c464aa/a17c293b-ab52", + "Networks": [ + { + "NetworkMode": "awsvpc", + "IPv4Addresses": ["172.31.115.123"], + "AttachmentIndex": 0, + "MACAddress": "0e:73:3c:72:d3:ca", + "IPv4SubnetCIDRBlock": "172.31.11.0/24", + "DomainNameServers": ["172.31.44.17", "172.31.0.2"], + "PrivateDNSName": "ip-123-31-115-125.ec2.internal", + "SubnetGatewayIpv4Address": "172.31.11.1/24" + } + ], + "Snapshotter": "overlayfs" + } +], + "ClockDrift": { + "ClockErrorBound": 0.5730080000000001, + "ReferenceTimestamp": "2023-12-27T16:06:41Z", + "ClockSynchronizationStatus": "SYNCHRONIZED" + }, + "TaskTags": { + "aws:ecs:cluster": "ecs-cluster", + "aws:ecs:launchtype": "EC2" + }, + "EphemeralStorageMetrics": { "Utilized": 2298, "Reserved": 20496 } +} diff --git a/pkg/util/ecs/metadata/v3or4/types.go b/pkg/util/ecs/metadata/v3or4/types.go index db84f187cf5945..5b6a62268322c6 100644 --- a/pkg/util/ecs/metadata/v3or4/types.go +++ b/pkg/util/ecs/metadata/v3or4/types.go @@ -7,17 +7,24 @@ package v3or4 // Task represents a task as returned by the ECS metadata API v3 or v4. type Task struct { - ClusterName string `json:"Cluster"` - Containers []Container `json:"Containers"` - KnownStatus string `json:"KnownStatus"` - TaskARN string `json:"TaskARN"` - Family string `json:"Family"` - Version string `json:"Revision"` - Limits map[string]float64 `json:"Limits,omitempty"` - DesiredStatus string `json:"DesiredStatus"` - LaunchType string `json:"LaunchType,omitempty"` // present only in v4 - ContainerInstanceTags map[string]string `json:"ContainerInstanceTags,omitempty"` - TaskTags map[string]string `json:"TaskTags,omitempty"` + ClusterName string `json:"Cluster"` + Containers []Container `json:"Containers"` + KnownStatus string `json:"KnownStatus"` + TaskARN string `json:"TaskARN"` + Family string `json:"Family"` + Version string `json:"Revision"` + Limits map[string]float64 `json:"Limits,omitempty"` + DesiredStatus string `json:"DesiredStatus"` + LaunchType string `json:"LaunchType,omitempty"` // present only in v4 + ContainerInstanceTags map[string]string `json:"ContainerInstanceTags,omitempty"` + TaskTags map[string]string `json:"TaskTags,omitempty"` + EphemeralStorageMetrics map[string]int64 `json:"EphemeralStorageMetrics,omitempty"` + ServiceName string `json:"ServiceName,omitempty"` + VPCID string `json:"VPCID,omitempty"` + PullStartedAt string `json:"PullStartedAt,omitempty"` + PullStoppedAt string `json:"PullStoppedAt,omitempty"` + ExecutionStoppedAt string `json:"ExecutionStoppedAt,omitempty"` + AvailabilityZone string `json:"AvailabilityZone,omitempty"` } // Container represents a container within a task. @@ -39,12 +46,25 @@ type Container struct { LogDriver string `json:"LogDriver,omitempty"` // present only in v4 LogOptions map[string]string `json:"LogOptions,omitempty"` // present only in v4 ContainerARN string `json:"ContainerARN,omitempty"` // present only in v4 + Health *HealthStatus `json:"Health,omitempty"` + Volumes []Volume `json:"Volumes,omitempty"` + ExitCode *uint32 `json:"ExitCode,omitempty"` + Snapshotter string `json:"Snapshotter,omitempty"` +} + +// HealthStatus represents the health status of a container +type HealthStatus struct { + Status string `json:"status,omitempty"` + Since string `json:"statusSince,omitempty"` + ExitCode *uint32 `json:"exitCode,omitempty"` + Output string `json:"output,omitempty"` } // Network represents the network of a container type Network struct { NetworkMode string `json:"NetworkMode"` // supports awsvpc and bridge IPv4Addresses []string `json:"IPv4Addresses"` // one-element list + IPv6Addresses []string `json:"IPv6Addresses,omitempty"` } // Port represents the ports of a container @@ -52,4 +72,12 @@ type Port struct { ContainerPort uint16 `json:"ContainerPort,omitempty"` Protocol string `json:"Protocol,omitempty"` HostPort uint16 `json:"HostPort,omitempty"` + HostIP string `json:"HostIP,omitempty"` +} + +// Volume represents the volumes of a container +type Volume struct { + DockerName string `json:"DockerName,omitempty"` + Source string `json:"Source,omitempty"` + Destination string `json:"Destination,omitempty"` } From 42955c0c634aad65d8261fed1f36ca5b41946c6f Mon Sep 17 00:00:00 2001 From: Sylvain Afchain Date: Tue, 12 Mar 2024 10:45:18 +0100 Subject: [PATCH 146/155] [CWS] ensure ebpfless probe read complete message (#23664) --- pkg/security/probe/probe_ebpfless.go | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/pkg/security/probe/probe_ebpfless.go b/pkg/security/probe/probe_ebpfless.go index e72aa2cd71d724..337a24b3f62c4b 100644 --- a/pkg/security/probe/probe_ebpfless.go +++ b/pkg/security/probe/probe_ebpfless.go @@ -341,12 +341,16 @@ func (p *EBPFLessProbe) readMsg(conn net.Conn, msg *ebpfless.Message) error { p.buf = make([]byte, size) } - n, err = conn.Read(p.buf[:size]) - if err != nil { - return err + var read uint32 + for read < size { + n, err = conn.Read(p.buf[read:size]) + if err != nil { + return err + } + read += uint32(n) } - return msgpack.Unmarshal(p.buf[0:n], msg) + return msgpack.Unmarshal(p.buf[0:size], msg) } // GetClientsCount returns the number of connected clients From 8128f8b3429f7639e16096e1997d26e603be4aa3 Mon Sep 17 00:00:00 2001 From: Nicolas Guerguadj <35628945+Kaderinho@users.noreply.github.com> Date: Tue, 12 Mar 2024 12:08:09 +0100 Subject: [PATCH 147/155] chore: run asc e2e tests on every code change (#23574) Signed-off-by: Nicolas Guerguadj --- .gitlab-ci.yml | 6 +++--- .gitlab/e2e/e2e.yml | 1 - 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5109584791ff1e..baff9389b9a681 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1173,17 +1173,17 @@ workflow: - test/new-e2e/tests/agent-shared-components/**/* compare_to: main # TODO: use a variable, when this is supported https://gitlab.com/gitlab-org/gitlab/-/issues/369916 - when: manual - allow_failure: true .on_subcommands_or_e2e_changes_or_manual: - !reference [.on_e2e_main_release_or_rc] - changes: paths: - # TODO: Add paths that should trigger tests for subcommands + - cmd/**/* + - pkg/**/* + - comp/**/* - test/new-e2e/tests/agent-subcommands/**/* compare_to: main # TODO: use a variable, when this is supported https://gitlab.com/gitlab-org/gitlab/-/issues/369916 - when: manual - allow_failure: true .on_language-detection_or_e2e_changes_or_manual: - !reference [.on_e2e_main_release_or_rc] diff --git a/.gitlab/e2e/e2e.yml b/.gitlab/e2e/e2e.yml index 6fca4ca5c4ec42..69c8b1c0e219e5 100644 --- a/.gitlab/e2e/e2e.yml +++ b/.gitlab/e2e/e2e.yml @@ -176,7 +176,6 @@ new-e2e-agent-subcommands: - EXTRA_PARAMS: --run TestLinuxSecretSuite - EXTRA_PARAMS: --run TestWindowsSecretSuite - EXTRA_PARAMS: --run TestLinuxCheckSuite - allow_failure: true # TODO: To remove when the tests are stable new-e2e-language-detection: extends: .new_e2e_template From 8a71e55e62ea06d7466bb97ca2f17c203833bde9 Mon Sep 17 00:00:00 2001 From: Paul Cacheux Date: Tue, 12 Mar 2024 12:41:00 +0100 Subject: [PATCH 148/155] [CWS] e2e tests: run cws instrumentation as user 0 (#23667) --- test/new-e2e/tests/cws/fargate_test.go | 1 + 1 file changed, 1 insertion(+) diff --git a/test/new-e2e/tests/cws/fargate_test.go b/test/new-e2e/tests/cws/fargate_test.go index 524f7cccfa8d25..3f9896d2d483cc 100644 --- a/test/new-e2e/tests/cws/fargate_test.go +++ b/test/new-e2e/tests/cws/fargate_test.go @@ -200,6 +200,7 @@ func TestECSFargate(t *testing.T) { }, }, LogConfiguration: ecsResources.GetFirelensLogConfiguration(pulumi.String("cws-instrumentation-init"), pulumi.String(ecsFgHostnamePrefix), apiKeyParam.Name), + User: pulumi.StringPtr("0"), }, "log_router": *ecsResources.FargateFirelensContainerDefinition(), }, From 4bbda0e8fe12c76c2d3984dbb5febe8c5068489e Mon Sep 17 00:00:00 2001 From: AliDatadog <125997632+AliDatadog@users.noreply.github.com> Date: Tue, 12 Mar 2024 12:53:54 +0100 Subject: [PATCH 149/155] [CONTINT-3914] Add container id resolver from pod uid + container name in generic metrics provider (#23578) * Add the ContainerIDForPodUIDAndContNameRetriever and implement it in the MetaCollector, CacheCollector and mocks * add containerid resolution in the kubelet collector --- .../containers/metrics/kubelet/collector.go | 23 +++++ .../metrics/kubelet/collector_test.go | 88 +++++++++++++++++++ pkg/util/containers/metrics/mock/mock.go | 22 ++++- .../containers/metrics/provider/collector.go | 8 +- .../metrics/provider/collector_cache.go | 46 ++++++---- .../metrics/provider/collector_cache_test.go | 12 +++ .../metrics/provider/collector_types.go | 10 ++- .../metrics/provider/metacollector.go | 31 +++++-- pkg/util/containers/metrics/provider/mock.go | 14 +++ 9 files changed, 226 insertions(+), 28 deletions(-) diff --git a/pkg/util/containers/metrics/kubelet/collector.go b/pkg/util/containers/metrics/kubelet/collector.go index 0fab7098a18120..50c659cf9ac5a0 100644 --- a/pkg/util/containers/metrics/kubelet/collector.go +++ b/pkg/util/containers/metrics/kubelet/collector.go @@ -15,6 +15,7 @@ import ( "github.com/DataDog/datadog-agent/comp/core/workloadmeta" "github.com/DataDog/datadog-agent/pkg/config" + "github.com/DataDog/datadog-agent/pkg/errors" "github.com/DataDog/datadog-agent/pkg/util/containers/metrics/provider" kutil "github.com/DataDog/datadog-agent/pkg/util/kubernetes/kubelet" "github.com/DataDog/datadog-agent/pkg/util/log" @@ -86,6 +87,28 @@ func newKubeletCollector(*provider.Cache) (provider.CollectorMetadata, error) { }, nil } +// ContainerIDForPodUIDAndContName returns a container ID for the given pod uid +// and container name. Returns ("", nil) if the containerd ID was not found. +func (kc *kubeletCollector) ContainerIDForPodUIDAndContName(podUID, contName string, initCont bool, _ time.Duration) (string, error) { + pod, err := kc.metadataStore.GetKubernetesPod(podUID) + if err != nil { + if errors.IsNotFound(err) { + return "", nil + } + return "", err + } + containers := pod.Containers + if initCont { + containers = pod.InitContainers + } + for _, container := range containers { + if container.Name == contName { + return container.ID, nil + } + } + return "", nil +} + // GetContainerStats returns stats by container ID. func (kc *kubeletCollector) GetContainerStats(containerNS, containerID string, cacheValidity time.Duration) (*provider.ContainerStats, error) { //nolint:revive // TODO fix revive unused-parameter currentTime := time.Now() diff --git a/pkg/util/containers/metrics/kubelet/collector_test.go b/pkg/util/containers/metrics/kubelet/collector_test.go index 118b370352b9a1..979ace350ab559 100644 --- a/pkg/util/containers/metrics/kubelet/collector_test.go +++ b/pkg/util/containers/metrics/kubelet/collector_test.go @@ -209,6 +209,94 @@ func TestKubeletCollectorWindows(t *testing.T) { }, cID1Stats) } +func TestContainerIDForPodUIDAndContName(t *testing.T) { + for _, tt := range []struct { + name string + pod *workloadmeta.KubernetesPod + podUID string + contName string + initCont bool + expectedCid string + }{ + { + name: "pod with container", + pod: &workloadmeta.KubernetesPod{ + EntityID: workloadmeta.EntityID{ + Kind: workloadmeta.KindKubernetesPod, + ID: "c84eb7fb-09f2-11ea-abb1-42010a84017a", + }, + EntityMeta: workloadmeta.EntityMeta{ + Name: "kube-dns-5877696fb4-m6cvp", + Namespace: "kube-system", + }, + Containers: []workloadmeta.OrchestratorContainer{ + { + ID: "cID1", + Name: "kubedns", + }, + }, + }, + podUID: "c84eb7fb-09f2-11ea-abb1-42010a84017a", + contName: "kubedns", + initCont: false, + expectedCid: "cID1", + }, + { + name: "pod with init container", + pod: &workloadmeta.KubernetesPod{ + EntityID: workloadmeta.EntityID{ + Kind: workloadmeta.KindKubernetesPod, + ID: "c84eb7fb-09f2-11ea-abb1-42010a84017a", + }, + EntityMeta: workloadmeta.EntityMeta{ + Name: "kube-dns-5877696fb4-m6cvp", + Namespace: "kube-system", + }, + InitContainers: []workloadmeta.OrchestratorContainer{ + { + ID: "cID1", + Name: "kubedns", + }, + }, + }, + podUID: "c84eb7fb-09f2-11ea-abb1-42010a84017a", + contName: "kubedns", + initCont: true, + expectedCid: "cID1", + }, + { + name: "not found", + podUID: "poduid", + contName: "contname", + initCont: false, + expectedCid: "", + }, + } { + t.Run(tt.name, func(t *testing.T) { + metadataStore := fxutil.Test[workloadmeta.Mock](t, fx.Options( + core.MockBundle(), + fx.Supply(context.Background()), + fx.Supply(workloadmeta.NewParams()), + workloadmeta.MockModule(), + )) + + kubeletMock := mock.NewKubeletMock() + if tt.pod != nil { + metadataStore.Set(tt.pod) + } + + kubeletCollector := &kubeletCollector{ + kubeletClient: kubeletMock, + metadataStore: metadataStore, + } + + cid, err := kubeletCollector.ContainerIDForPodUIDAndContName(tt.podUID, tt.contName, tt.initCont, time.Minute) + assert.NoError(t, err) + assert.Equal(t, tt.expectedCid, cid) + }) + } +} + func setStatsSummaryFromFile(t *testing.T, filePath string, kubeletMock *mock.KubeletMock) { t.Helper() diff --git a/pkg/util/containers/metrics/mock/mock.go b/pkg/util/containers/metrics/mock/mock.go index e2970802603e63..e060c35535afdb 100644 --- a/pkg/util/containers/metrics/mock/mock.go +++ b/pkg/util/containers/metrics/mock/mock.go @@ -23,9 +23,10 @@ type MetricsProvider struct { // MetaCollector is a mocked provider.MetaCollector type MetaCollector struct { - ContainerID string - CIDFromPID map[int]string - CIDFromInode map[uint64]string + ContainerID string + CIDFromPID map[int]string + CIDFromInode map[uint64]string + CIDFromPodUIDContName map[string]string } // GetSelfContainerID returns the container ID for current container. @@ -41,7 +42,7 @@ func (mc *MetaCollector) GetContainerIDForPID(pid int, _ time.Duration) (string, return "", nil } -// GetContainerIDForInode returns a container ID for given inode. +// GetContainerIDForInode returns a container ID for the given inode. func (mc *MetaCollector) GetContainerIDForInode(inode uint64, _ time.Duration) (string, error) { if val, found := mc.CIDFromInode[inode]; found { return val, nil @@ -49,6 +50,19 @@ func (mc *MetaCollector) GetContainerIDForInode(inode uint64, _ time.Duration) ( return "", nil } +// ContainerIDForPodUIDAndContName returns a container ID for the given pod uid and container name. +func (mc *MetaCollector) ContainerIDForPodUIDAndContName(podUID, contName string, initCont bool, _ time.Duration) (string, error) { + initPrefix := "" + if initCont { + initPrefix = "i-" + } + cacheKey := initPrefix + podUID + "/" + contName + if val, found := mc.CIDFromPodUIDContName[cacheKey]; found { + return val, nil + } + return "", nil +} + // NewMetricsProvider creates a mock provider func NewMetricsProvider() *MetricsProvider { return &MetricsProvider{ diff --git a/pkg/util/containers/metrics/provider/collector.go b/pkg/util/containers/metrics/provider/collector.go index e7e3795fe677c3..e834ea075f5fc9 100644 --- a/pkg/util/containers/metrics/provider/collector.go +++ b/pkg/util/containers/metrics/provider/collector.go @@ -49,9 +49,10 @@ type Collectors struct { PIDs CollectorRef[ContainerPIDsGetter] // These collectors are used in the meta collector - ContainerIDForPID CollectorRef[ContainerIDForPIDRetriever] - ContainerIDForInode CollectorRef[ContainerIDForInodeRetriever] - SelfContainerID CollectorRef[SelfContainerIDRetriever] + ContainerIDForPID CollectorRef[ContainerIDForPIDRetriever] + ContainerIDForInode CollectorRef[ContainerIDForInodeRetriever] + SelfContainerID CollectorRef[SelfContainerIDRetriever] + ContainerIDForPodUIDAndContName CollectorRef[ContainerIDForPodUIDAndContNameRetriever] } func (c *Collectors) merge(runtime RuntimeMetadata, otherID string, oth *Collectors) { @@ -61,6 +62,7 @@ func (c *Collectors) merge(runtime RuntimeMetadata, otherID string, oth *Collect c.PIDs = c.PIDs.bestCollector(runtime, otherID, oth.PIDs) c.ContainerIDForPID = c.ContainerIDForPID.bestCollector(runtime, otherID, oth.ContainerIDForPID) c.ContainerIDForInode = c.ContainerIDForInode.bestCollector(runtime, otherID, oth.ContainerIDForInode) + c.ContainerIDForPodUIDAndContName = c.ContainerIDForPodUIDAndContName.bestCollector(runtime, otherID, oth.ContainerIDForPodUIDAndContName) c.SelfContainerID = c.SelfContainerID.bestCollector(runtime, otherID, oth.SelfContainerID) } diff --git a/pkg/util/containers/metrics/provider/collector_cache.go b/pkg/util/containers/metrics/provider/collector_cache.go index 103cd207c4c174..fcf7314aadb9bf 100644 --- a/pkg/util/containers/metrics/provider/collector_cache.go +++ b/pkg/util/containers/metrics/provider/collector_cache.go @@ -11,12 +11,13 @@ import ( ) const ( - contCoreStatsCachePrefix = "cs-" - contOpenFilesCachePrefix = "of-" - contNetStatsCachePrefix = "cns-" - contPidToCidCachePrefix = "pid-" - contInodeToCidCachePrefix = "in-" - contPidsCachePrefix = "pids-" + contCoreStatsCachePrefix = "cs-" + contOpenFilesCachePrefix = "of-" + contNetStatsCachePrefix = "cns-" + contPidToCidCachePrefix = "pid-" + contInodeToCidCachePrefix = "in-" + contPodUIDContNameToCidCachePrefix = "pc-" + contPidsCachePrefix = "pids-" ) // collectorCache is a wrapper handling cache for collectors. @@ -48,13 +49,14 @@ func MakeCached(providerID string, cache *Cache, collectors *Collectors) *Collec } return &Collectors{ - Stats: makeCached(collectors.Stats, ContainerStatsGetter(collectorCache)), - Network: makeCached(collectors.Network, ContainerNetworkStatsGetter(collectorCache)), - OpenFilesCount: makeCached(collectors.OpenFilesCount, ContainerOpenFilesCountGetter(collectorCache)), - PIDs: makeCached(collectors.PIDs, ContainerPIDsGetter(collectorCache)), - ContainerIDForPID: makeCached(collectors.ContainerIDForPID, ContainerIDForPIDRetriever(collectorCache)), - ContainerIDForInode: makeCached(collectors.ContainerIDForInode, ContainerIDForInodeRetriever(collectorCache)), - SelfContainerID: makeCached(collectors.SelfContainerID, SelfContainerIDRetriever(collectorCache)), + Stats: makeCached(collectors.Stats, ContainerStatsGetter(collectorCache)), + Network: makeCached(collectors.Network, ContainerNetworkStatsGetter(collectorCache)), + OpenFilesCount: makeCached(collectors.OpenFilesCount, ContainerOpenFilesCountGetter(collectorCache)), + PIDs: makeCached(collectors.PIDs, ContainerPIDsGetter(collectorCache)), + ContainerIDForPID: makeCached(collectors.ContainerIDForPID, ContainerIDForPIDRetriever(collectorCache)), + ContainerIDForInode: makeCached(collectors.ContainerIDForInode, ContainerIDForInodeRetriever(collectorCache)), + SelfContainerID: makeCached(collectors.SelfContainerID, SelfContainerIDRetriever(collectorCache)), + ContainerIDForPodUIDAndContName: makeCached(collectors.ContainerIDForPodUIDAndContName, ContainerIDForPodUIDAndContNameRetriever(collectorCache)), } } @@ -108,8 +110,8 @@ func (cc *collectorCache) GetContainerIDForPID(pid int, cacheValidity time.Durat }) } -// GetContainerIDForInode returns the container ID for given Inode -// errors are cached as well to avoid hammering underlying collector +// GetContainerIDForInode returns a container ID for the given inode. +// ("", nil) will be returned if no error but the containerd ID was not found. func (cc *collectorCache) GetContainerIDForInode(inode uint64, cacheValidity time.Duration) (string, error) { cacheKey := cc.providerID + "-" + contInodeToCidCachePrefix + strconv.FormatUint(inode, 10) @@ -118,6 +120,20 @@ func (cc *collectorCache) GetContainerIDForInode(inode uint64, cacheValidity tim }) } +// ContainerIDForPodUIDAndContName returns a container ID for the given pod uid +// and container name. Returns ("", nil) if the containerd ID was not found. +func (cc *collectorCache) ContainerIDForPodUIDAndContName(podUID, contName string, initCont bool, cacheValidity time.Duration) (string, error) { + initPrefix := "" + if initCont { + initPrefix = "i-" + } + cacheKey := cc.providerID + "-" + contPodUIDContNameToCidCachePrefix + podUID + "/" + initPrefix + contName + + return getOrFallback(cc.cache, cacheKey, cacheValidity, func() (string, error) { + return cc.collectors.ContainerIDForPodUIDAndContName.Collector.ContainerIDForPodUIDAndContName(podUID, contName, initCont, cacheValidity) + }) +} + // GetSelfContainerID returns current process container ID // No caching as it's not supposed to change func (cc *collectorCache) GetSelfContainerID() (string, error) { diff --git a/pkg/util/containers/metrics/provider/collector_cache_test.go b/pkg/util/containers/metrics/provider/collector_cache_test.go index b2142b00370677..bedcb05ee308ab 100644 --- a/pkg/util/containers/metrics/provider/collector_cache_test.go +++ b/pkg/util/containers/metrics/provider/collector_cache_test.go @@ -45,6 +45,10 @@ func TestCollectorCache(t *testing.T) { "cID1": {1, 2, 3, 0}, "cID2": {}, }, + cIDForPodCont: map[string]string{ + "pc-pod1/foo": "cID1", + "pc-pod1/i-foo": "cID2", + }, } actualCollectors := actualCollector.getCollectors(0) @@ -83,6 +87,14 @@ func TestCollectorCache(t *testing.T) { assert.NoError(t, err) assert.Equal(t, "cID1", cID1) + cIDForPodCont, err := cachedCollectors.ContainerIDForPodUIDAndContName.Collector.ContainerIDForPodUIDAndContName("pod1", "foo", false, time.Minute) + assert.NoError(t, err) + assert.Equal(t, "cID1", cIDForPodCont) + + cIDForPodCont, err = cachedCollectors.ContainerIDForPodUIDAndContName.Collector.ContainerIDForPodUIDAndContName("pod1", "foo", true, time.Minute) + assert.NoError(t, err) + assert.Equal(t, "cID2", cIDForPodCont) + // Changing underlying source actualCollector.cStats["cID1"] = &ContainerStats{ CPU: &ContainerCPUStats{ diff --git a/pkg/util/containers/metrics/provider/collector_types.go b/pkg/util/containers/metrics/provider/collector_types.go index 8a687bde2bb44f..8c5852602a3b7c 100644 --- a/pkg/util/containers/metrics/provider/collector_types.go +++ b/pkg/util/containers/metrics/provider/collector_types.go @@ -40,11 +40,18 @@ type ContainerIDForPIDRetriever interface { // ContainerIDForInodeRetriever interface type ContainerIDForInodeRetriever interface { - // GetContainerIDForInode ContainerIDForInode returns a container ID for given Inode. + // GetContainerIDForInode returns a container ID for the given inode. // ("", nil) will be returned if no error but the containerd ID was not found. GetContainerIDForInode(inode uint64, cacheValidity time.Duration) (string, error) } +// ContainerIDForPodUIDAndContNameRetriever interface +type ContainerIDForPodUIDAndContNameRetriever interface { + // ContainerIDForPodUIDAndContName returns a container ID for the given pod uid + // and container name. Returns ("", nil) if the containerd ID was not found. + ContainerIDForPodUIDAndContName(podUID, contName string, initCont bool, cacheValidity time.Duration) (string, error) +} + // SelfContainerIDRetriever interface type SelfContainerIDRetriever interface { // GetSelfContainerID returns the container ID for current container. @@ -65,4 +72,5 @@ type MetaCollector interface { ContainerIDForPIDRetriever ContainerIDForInodeRetriever SelfContainerIDRetriever + ContainerIDForPodUIDAndContNameRetriever } diff --git a/pkg/util/containers/metrics/provider/metacollector.go b/pkg/util/containers/metrics/provider/metacollector.go index dba72e2d754499..6a8f50d379b02e 100644 --- a/pkg/util/containers/metrics/provider/metacollector.go +++ b/pkg/util/containers/metrics/provider/metacollector.go @@ -13,10 +13,11 @@ import ( // MetaCollector is a special collector that uses all available collectors, by priority order. type metaCollector struct { - lock sync.RWMutex - selfContainerIDcollectors []CollectorRef[SelfContainerIDRetriever] - containerIDFromPIDcollectors []CollectorRef[ContainerIDForPIDRetriever] - containerIDFromInodeCollectors []CollectorRef[ContainerIDForInodeRetriever] + lock sync.RWMutex + selfContainerIDcollectors []CollectorRef[SelfContainerIDRetriever] + containerIDFromPIDcollectors []CollectorRef[ContainerIDForPIDRetriever] + containerIDFromInodeCollectors []CollectorRef[ContainerIDForInodeRetriever] + ContainerIDForPodUIDAndContNameCollectors []CollectorRef[ContainerIDForPodUIDAndContNameRetriever] } func newMetaCollector() *metaCollector { @@ -70,7 +71,7 @@ func (mc *metaCollector) GetContainerIDForPID(pid int, cacheValidity time.Durati return "", nil } -// GetContainerIDForInode returns a container ID for given Inode. +// GetContainerIDForInode returns a container ID for the given inode. // ("", nil) will be returned if no error but the containerd ID was not found. func (mc *metaCollector) GetContainerIDForInode(inode uint64, cacheValidity time.Duration) (string, error) { mc.lock.RLock() @@ -90,6 +91,26 @@ func (mc *metaCollector) GetContainerIDForInode(inode uint64, cacheValidity time return "", nil } +// ContainerIDForPodUIDAndContName returns a container ID for the given pod uid +// and container name. Returns ("", nil) if the containerd ID was not found. +func (mc *metaCollector) ContainerIDForPodUIDAndContName(podUID, contName string, initCont bool, cacheValidity time.Duration) (string, error) { + mc.lock.RLock() + defer mc.lock.RUnlock() + + for _, collectorRef := range mc.ContainerIDForPodUIDAndContNameCollectors { + val, err := collectorRef.Collector.ContainerIDForPodUIDAndContName(podUID, contName, initCont, cacheValidity) + if err != nil { + return "", err + } + + if val != "" { + return val, nil + } + } + + return "", nil +} + func buildUniqueCollectors[T comparable](collectorsCatalog CollectorCatalog, getter func(*Collectors) CollectorRef[T]) []CollectorRef[T] { // We don't need to optimize performances too much as this is called only a handful of times var zero T diff --git a/pkg/util/containers/metrics/provider/mock.go b/pkg/util/containers/metrics/provider/mock.go index 7e64806703d91f..f70ea573338ddc 100644 --- a/pkg/util/containers/metrics/provider/mock.go +++ b/pkg/util/containers/metrics/provider/mock.go @@ -21,6 +21,7 @@ type dummyCollector struct { cOpenFilesCount map[string]*uint64 cNetStats map[string]*ContainerNetworkStats cIDForPID map[int]string + cIDForPodCont map[string]string selfContainerID string err error } @@ -67,6 +68,15 @@ func (d *dummyCollector) GetSelfContainerID() (string, error) { return d.selfContainerID, nil } +func (d *dummyCollector) ContainerIDForPodUIDAndContName(podUID, contName string, initCont bool, _ time.Duration) (string, error) { + initPrefix := "" + if initCont { + initPrefix = "i-" + } + cacheKey := contPodUIDContNameToCidCachePrefix + podUID + "/" + initPrefix + contName + return d.cIDForPodCont[cacheKey], nil +} + // Helpers not part of Collector interface func (d *dummyCollector) getCollectors(priority uint8) *Collectors { return &Collectors{ @@ -94,5 +104,9 @@ func (d *dummyCollector) getCollectors(priority uint8) *Collectors { Collector: d, Priority: priority, }, + ContainerIDForPodUIDAndContName: CollectorRef[ContainerIDForPodUIDAndContNameRetriever]{ + Collector: d, + Priority: priority, + }, } } From bcceb0da807faa68c49135ddc71557f93ef12d72 Mon Sep 17 00:00:00 2001 From: Gustavo Caso Date: Tue, 12 Mar 2024 13:31:38 +0100 Subject: [PATCH 150/155] [ASCII-1281] Ensure host metadata information information is sent first (#23620) * add new priority provider * filter and get non optional providers in the constructor * fix linters * apply feedback * add test for the priority provider logic * ensure test consistency --- comp/metadata/host/hostimpl/host.go | 4 +- comp/metadata/runner/runnerimpl/runner.go | 76 +++++++++++++++---- .../metadata/runner/runnerimpl/runner_test.go | 75 +++++++++++++++--- 3 files changed, 129 insertions(+), 26 deletions(-) diff --git a/comp/metadata/host/hostimpl/host.go b/comp/metadata/host/hostimpl/host.go index 014ab6f0ac3955..d81429f44ef292 100644 --- a/comp/metadata/host/hostimpl/host.go +++ b/comp/metadata/host/hostimpl/host.go @@ -66,7 +66,7 @@ type provides struct { fx.Out Comp hostComp.Component - MetadataProvider runnerimpl.Provider + MetadataProvider runnerimpl.PriorityProvider FlareProvider flaretypes.Provider StatusHeaderProvider status.HeaderInformationProvider } @@ -102,7 +102,7 @@ func newHostProvider(deps dependencies) provides { } return provides{ Comp: &h, - MetadataProvider: runnerimpl.NewProvider(h.collect), + MetadataProvider: runnerimpl.NewPriorityProvider(h.collect), FlareProvider: flaretypes.NewProvider(h.fillFlare), StatusHeaderProvider: status.NewHeaderInformationProvider(StatusProvider{ Config: h.config, diff --git a/comp/metadata/runner/runnerimpl/runner.go b/comp/metadata/runner/runnerimpl/runner.go index c05a88a57a2e5f..f8bd7d72a64991 100644 --- a/comp/metadata/runner/runnerimpl/runner.go +++ b/comp/metadata/runner/runnerimpl/runner.go @@ -27,13 +27,18 @@ func Module() fxutil.Module { // MetadataProvider is the provider for metadata type MetadataProvider func(context.Context) time.Duration +// PriorityMetadataProvider is the provider for metadata that needs to be execute at start time of the agent. +// Right now the agent needs the host metadata provider to execute first to ensure host tags are being reported correctly. +// This is a temporary workaorund until we figure a more permanent solution in the backend +// If you need to use this provide please contact the agent-shared-components team +type PriorityMetadataProvider func(context.Context) time.Duration + type runnerImpl struct { log log.Component config config.Component - // providers are the metada providers to run. They're Optional because some of them can be disabled through the - // configuration - providers []optional.Option[MetadataProvider] + providers []MetadataProvider + priorityProviders []PriorityMetadataProvider wg sync.WaitGroup stopChan chan struct{} @@ -45,7 +50,8 @@ type dependencies struct { Log log.Component Config config.Component - Providers []optional.Option[MetadataProvider] `group:"metadata_provider"` + Providers []optional.Option[MetadataProvider] `group:"metadata_provider"` + PriorityProviders []optional.Option[PriorityMetadataProvider] `group:"metadata_priority_provider"` } // Provider represents the callback from a metada provider. This is returned by 'NewProvider' helper. @@ -55,6 +61,13 @@ type Provider struct { Callback optional.Option[MetadataProvider] `group:"metadata_provider"` } +// PriorityProvider represents the callback from a priority metada provider. This is returned by 'NewPriorityProvider' helper. +type PriorityProvider struct { + fx.Out + + Callback optional.Option[PriorityMetadataProvider] `group:"metadata_priority_provider"` +} + // NewProvider registers a new metadata provider by adding a callback to the runner. func NewProvider(callback MetadataProvider) Provider { return Provider{ @@ -62,6 +75,13 @@ func NewProvider(callback MetadataProvider) Provider { } } +// NewPriorityProvider registers a new metadata provider by adding a callback to the runner. +func NewPriorityProvider(callback PriorityMetadataProvider) PriorityProvider { + return PriorityProvider{ + Callback: optional.NewOption[PriorityMetadataProvider](callback), + } +} + // NewEmptyProvider returns a empty provider which is not going to register anything. This is useful for providers that // can be enabled/disabled through configuration. func NewEmptyProvider() Provider { @@ -72,11 +92,30 @@ func NewEmptyProvider() Provider { // createRunner instantiates a runner object func createRunner(deps dependencies) *runnerImpl { + providers := []MetadataProvider{} + priorityProviders := []PriorityMetadataProvider{} + + nonNilProviders := fxutil.GetAndFilterGroup(deps.Providers) + nonNilPriorityProviders := fxutil.GetAndFilterGroup(deps.PriorityProviders) + + for _, optionaP := range nonNilProviders { + if p, isSet := optionaP.Get(); isSet { + providers = append(providers, p) + } + } + + for _, optionaP := range nonNilPriorityProviders { + if p, isSet := optionaP.Get(); isSet { + priorityProviders = append(priorityProviders, p) + } + } + return &runnerImpl{ - log: deps.Log, - config: deps.Config, - providers: fxutil.GetAndFilterGroup(deps.Providers), - stopChan: make(chan struct{}), + log: deps.Log, + config: deps.Config, + providers: providers, + priorityProviders: priorityProviders, + stopChan: make(chan struct{}), } } @@ -100,7 +139,7 @@ func newRunner(lc fx.Lifecycle, deps dependencies) runner.Component { } // handleProvider runs a provider at regular interval until the runner is stopped -func (r *runnerImpl) handleProvider(p MetadataProvider) { +func (r *runnerImpl) handleProvider(p func(context.Context) time.Duration) { r.log.Debugf("Starting runner for MetadataProvider %#v", p) r.wg.Add(1) @@ -137,12 +176,21 @@ func (r *runnerImpl) handleProvider(p MetadataProvider) { // start is called by FX when the application starts. Lifecycle hooks are blocking and called sequencially. We should // not block here. func (r *runnerImpl) start() error { - r.log.Debugf("Starting metadata runner with %d providers", len(r.providers)) - for _, optionaP := range r.providers { - if p, isSet := optionaP.Get(); isSet { - go r.handleProvider(p) + r.log.Debugf("Starting metadata runner with %d priority providers and %d regular providers", len(r.priorityProviders), len(r.providers)) + + go func() { + for _, priorityProvider := range r.priorityProviders { + // Execute synchronously the priority provider + priorityProvider(context.Background()) + + go r.handleProvider(priorityProvider) } - } + + for _, provider := range r.providers { + go r.handleProvider(provider) + } + }() + return nil } diff --git a/comp/metadata/runner/runnerimpl/runner_test.go b/comp/metadata/runner/runnerimpl/runner_test.go index df7e9fc072eb8e..53ee2249e3389b 100644 --- a/comp/metadata/runner/runnerimpl/runner_test.go +++ b/comp/metadata/runner/runnerimpl/runner_test.go @@ -8,6 +8,7 @@ package runnerimpl import ( "context" + "sync" "testing" "time" @@ -21,12 +22,15 @@ import ( ) func TestHandleProvider(t *testing.T) { - called := make(chan struct{}) + wg := sync.WaitGroup{} + provider := func(context.Context) time.Duration { - called <- struct{}{} + wg.Done() return 1 * time.Minute // Long timeout to block } + wg.Add(1) + r := createRunner( fxutil.Test[dependencies]( t, @@ -36,18 +40,21 @@ func TestHandleProvider(t *testing.T) { )) r.start() - // either called receive a value or the test will fail as a timeout - <-called + // either the provider call wg.Done() or the test will fail as a timeout + wg.Wait() assert.NoError(t, r.stop()) } func TestRunnerCreation(t *testing.T) { - called := make(chan struct{}) - callback := func(context.Context) time.Duration { - called <- struct{}{} + wg := sync.WaitGroup{} + + provider := func(context.Context) time.Duration { + wg.Done() return 1 * time.Minute // Long timeout to block } + wg.Add(1) + lc := fxtest.NewLifecycle(t) fxutil.Test[runner.Component]( t, @@ -56,14 +63,62 @@ func TestRunnerCreation(t *testing.T) { config.MockModule(), Module(), // Supplying our provider by using the helper function - fx.Supply(NewProvider(callback)), + fx.Supply(NewProvider(provider)), ) ctx := context.Background() lc.Start(ctx) - // either called receive a value or the test will fail as a timeout - <-called + // either the provider call wg.Done() or the test will fail as a timeout + wg.Wait() + + assert.NoError(t, lc.Stop(ctx)) +} + +func TestPriorityProviderOrder(t *testing.T) { + wg := sync.WaitGroup{} + m := sync.Mutex{} + eventSequence := []string{} + + provider := func(context.Context) time.Duration { + m.Lock() + eventSequence = append(eventSequence, "provider") + m.Unlock() + wg.Done() + return 1 * time.Minute // Long timeout to block + } + + priorityProvider := func(context.Context) time.Duration { + m.Lock() + eventSequence = append(eventSequence, "priorityProvider") + m.Unlock() + wg.Done() + return 1 * time.Minute // Long timeout to block + } + + // We add 3 work unit because the priority provider are called twice at startup. One synchronousily and one asynchronosuly + wg.Add(3) + + lc := fxtest.NewLifecycle(t) + fxutil.Test[runner.Component]( + t, + fx.Supply(lc), + logimpl.MockModule(), + config.MockModule(), + Module(), + // Supplying our provider by using the helper function + fx.Supply(NewProvider(provider)), + fx.Supply(NewPriorityProvider(priorityProvider)), + ) + + ctx := context.Background() + lc.Start(ctx) + // either the provider call wg.Done() or the test will fail as a timeout + wg.Wait() + // it is expected to see three events. Priority providers are called twice at start up + assert.Equal(t, 3, len(eventSequence)) + // ensure priority provider is the first provider to be executed + assert.Equal(t, "priorityProvider", eventSequence[0]) assert.NoError(t, lc.Stop(ctx)) } From c97be68e15091e1c1a043783a0bdfe7010ba8efb Mon Sep 17 00:00:00 2001 From: Kevin Fairise <132568982+KevinFairise2@users.noreply.github.com> Date: Tue, 12 Mar 2024 13:31:43 +0100 Subject: [PATCH 151/155] Merge RUN_E2E_TESTS and RUN_KITCHEN_TESTS variables (#23613) * Merge RUN_E2E_TESTS and RUN_KITCHEN_TESTS variables * Rename more rules * Rename test var * Fix gitlab-ci file * Fix if_not_e2e * Rename if not e2e * Rename if not e2e * Fix yaml aliases * Update pipeline run task * Rename alias run_e2e_tests * fixI(CI): Replace test with false by off * fixI(CI): Condition to not trigger windows PR test * fix(invoke): change RUN_E2E_TESTS values * fix(CI): Fix variable name * Update .gitlab-ci.yml Co-authored-by: Nicolas Schweitzer * doc(CI): Explain behavior of auto --------- Co-authored-by: Nicolas Schweitzer --- .gitlab-ci.yml | 89 ++++++++++++++++-------------------- tasks/libs/pipeline_tools.py | 12 ++--- tasks/pipeline.py | 10 ++-- 3 files changed, 46 insertions(+), 65 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index baff9389b9a681..0a3dff6d3867b5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -209,7 +209,7 @@ variables: CLANG_LLVM_VER: 12.0.1 KERNEL_MATRIX_TESTING_X86_AMI_ID: "ami-0c54d42f8f4180b0c" KERNEL_MATRIX_TESTING_ARM_AMI_ID: "ami-021f04c00ecfa8590" - RUN_E2E_TESTS: "manual" # Should be "auto", "manual", "off" it will change the trigger condition for new-e2e tests on branch != main + RUN_E2E_TESTS: "auto" # Should be "off", "auto" or "on" it will change the trigger condition for new-e2e tests on branch != main # skip known flaky tests by default GO_TEST_SKIP_FLAKE: "true" @@ -282,31 +282,29 @@ variables: .if_not_run_all_builds: &if_not_run_all_builds if: $CI_COMMIT_BRANCH != "main" && $DEPLOY_AGENT != "true" && $RUN_ALL_BUILDS != "true" -# Rule to trigger test kitchen setup, run, and cleanup. +# Rule to trigger test setup, run, and cleanup. # By default: -# - on main and deploy pipelines, kitchen tests are run -# - on branch pipelines, kitchen tests are not run -# RUN_KITCHEN_TESTS can be set to true to force kitchen tests to be run on a branch pipeline. -# RUN_KITCHEN_TESTS can be set to false to force kitchen tests to not run on main/deploy pipelines. -.if_kitchen: &if_kitchen - if: ($CI_COMMIT_BRANCH == "main" || $DEPLOY_AGENT == "true" || $RUN_KITCHEN_TESTS == "true") && $RUN_KITCHEN_TESTS != "false" - -# Rules to trigger default kitchen tests. -# Some of the kitchen tests are run on all pipelines by default. They can only be disabled -# by setting RUN_KITCHEN_TESTS to false. -.if_default_kitchen: &if_default_kitchen - if: $RUN_KITCHEN_TESTS != "false" +# - on main and deploy pipelines, installer tests are run +# - on branch pipelines, installer tests are run on a subset of the OSes we test +# RUN_E2E_TESTS can be set to on to force all the installer tests to be run on a branch pipeline. +# RUN_E2E_TESTS can be set to false to force installer tests to not run on main/deploy pipelines. +.if_installer_tests: &if_installer_tests + if: ($CI_COMMIT_BRANCH == "main" || $DEPLOY_AGENT == "true" || $RUN_E2E_TESTS == "on") && $RUN_E2E_TESTS != "off" .if_testing_cleanup: &if_testing_cleanup if: $TESTING_CLEANUP == "true" -.if_not_e2e: &if_not_e2e - if: $RUN_KITCHEN_TESTS == "false" +.if_run_all_e2e_tests: &if_run_all_e2e_tests + if: $RUN_E2E_TESTS == "on" -.if_auto_e2e: &if_auto_e2e +# When RUN_E2E_TESTS is set to "auto". We do not enforce a behavior for the tests. +# The behavior of each test will be defined by its rules. +# For example for new-e2e tests created by each team, here is an example of such rules: https://github.com/DataDog/datadog-agent/blob/ba7079d92077ab5898378594dcafb9cd88a77e57/.gitlab-ci.yml#L1160-L1167 +# For the installer tests when RUN_E2E_TESTS is set to "auto", we run a subset of tests on branch pipelines and all the tests on main. +.if_auto_e2e_tests: &if_auto_e2e_tests if: $RUN_E2E_TESTS == "auto" -.if_disable_e2e: &if_disable_e2e +.if_disable_e2e_tests: &if_disable_e2e_tests if: $RUN_E2E_TESTS == "off" .if_deploy_on_beta_repo_branch: &if_deploy_on_beta_repo_branch @@ -797,7 +795,7 @@ workflow: - when: on_success .except_no_tests_no_deploy: - - if: $RUN_KITCHEN_TESTS == "false" && $DEPLOY_AGENT == "false" && $RUN_E2E_TESTS == "off" + - if: $DEPLOY_AGENT == "false" && $RUN_E2E_TESTS == "off" when: never .on_a6_except_deploy: @@ -864,12 +862,12 @@ workflow: .on_kitchen_tests_a6: - <<: *if_not_version_6 when: never - - <<: *if_kitchen + - <<: *if_installer_tests .on_kitchen_tests_a6_always: - <<: *if_not_version_6 when: never - - <<: *if_kitchen + - <<: *if_installer_tests when: always .on_all_kitchen_builds_a6: @@ -877,32 +875,26 @@ workflow: when: never - <<: *if_not_run_all_builds when: never - - <<: *if_kitchen + - <<: *if_installer_tests .on_kitchen_tests_a7: - <<: *if_not_version_7 when: never - - <<: *if_kitchen - -.on_kitchen_tests_a7_always: - - <<: *if_not_version_7 - when: never - - <<: *if_kitchen - when: always + - <<: *if_installer_tests .on_all_kitchen_builds_a7: - <<: *if_not_version_7 when: never - <<: *if_not_run_all_builds when: never - - <<: *if_kitchen + - <<: *if_installer_tests .on_all_new-e2e_tests_a7: - <<: *if_not_version_7 when: never - <<: *if_not_run_all_builds when: never - - <<: *if_kitchen + - <<: *if_installer_tests # Default kitchen tests are also run on dev branches # In that case, the target OS versions is a subset of the @@ -912,8 +904,8 @@ workflow: when: never - <<: *if_not_version_7 when: never - - <<: *if_kitchen - - <<: *if_default_kitchen + - <<: *if_installer_tests + - <<: *if_auto_e2e_tests variables: KITCHEN_OSVERS: $DEFAULT_KITCHEN_OSVERS @@ -922,8 +914,10 @@ workflow: when: never - <<: *if_not_version_7 when: never - - <<: *if_kitchen - - <<: *if_default_kitchen + - <<: *if_disable_e2e_tests + when: never + - <<: *if_installer_tests + - <<: *if_auto_e2e_tests variables: E2E_OSVERS: $E2E_BRANCH_OSVERS @@ -932,9 +926,9 @@ workflow: when: never - <<: *if_not_version_7 when: never - - <<: *if_kitchen + - <<: *if_installer_tests when: always - - <<: *if_default_kitchen + - <<: *if_auto_e2e_tests when: always variables: KITCHEN_OSVERS: $DEFAULT_KITCHEN_OSVERS @@ -986,7 +980,7 @@ workflow: compare_to: main # TODO: use a variable, when this is supported https://gitlab.com/gitlab-org/gitlab/-/issues/369916 .on_windows_installer_changes_or_manual: - - <<: *if_not_e2e + - <<: *if_disable_e2e_tests when: never - <<: *if_main_branch - <<: *if_mergequeue @@ -1049,11 +1043,11 @@ workflow: .on_e2e_main_release_or_rc: # This rule is used as a base for all new-e2e rules - - <<: *if_disable_e2e + - <<: *if_disable_e2e_tests when: never - <<: *if_mergequeue when: never - - <<: *if_auto_e2e + - <<: *if_run_all_e2e_tests when: on_success - <<: *if_main_branch when: on_success @@ -1068,11 +1062,11 @@ workflow: compare_to: main # TODO: use a variable, when this is supported https://gitlab.com/gitlab-org/gitlab/-/issues/369916 .always_on_container_or_e2e_changes_or_manual: - - <<: *if_disable_e2e + - <<: *if_disable_e2e_tests when: never - <<: *if_mergequeue when: never - - <<: *if_auto_e2e + - <<: *if_run_all_e2e_tests when: always - <<: *if_main_branch when: always @@ -1252,7 +1246,7 @@ workflow: when: never - <<: *if_not_main_branch when: never - - <<: *if_kitchen + - <<: *if_installer_tests when: manual allow_failure: true @@ -1271,7 +1265,7 @@ workflow: allow_failure: true .on_updater_or_e2e_changes_or_manual: - - <<: *if_disable_e2e + - <<: *if_disable_e2e_tests when: never - <<: *if_mergequeue when: never @@ -1310,7 +1304,7 @@ workflow: allow_failure: true .on_main_or_rc_and_no_skip_e2e: - - <<: *if_not_e2e + - <<: *if_disable_e2e_tests when: never - <<: *if_release_branch when: on_success @@ -1323,11 +1317,6 @@ workflow: - <<: *if_mergequeue when: never -.if_run_e2e_tests: - - <<: *if_disable_e2e - when: never - - <<: *if_auto_e2e - .on_packaging_change: - !reference [.except_mergequeue] # The prerequisites are not run in the mergequeue pipeline so we need to skip this rule - changes: diff --git a/tasks/libs/pipeline_tools.py b/tasks/libs/pipeline_tools.py index 9e0d027923a4f8..d026d61b5f6a65 100644 --- a/tasks/libs/pipeline_tools.py +++ b/tasks/libs/pipeline_tools.py @@ -87,7 +87,6 @@ def trigger_agent_pipeline( branch="nightly", deploy=False, all_builds=False, - kitchen_tests=False, e2e_tests=False, rc_build=False, rc_k8s_deployments=False, @@ -111,17 +110,12 @@ def trigger_agent_pipeline( if all_builds: args["RUN_ALL_BUILDS"] = "true" - # Kitchen tests can be selectively enabled, or disabled on pipelines where they're - # enabled by default (default branch and deploy pipelines). - if kitchen_tests: - args["RUN_KITCHEN_TESTS"] = "true" - else: - args["RUN_KITCHEN_TESTS"] = "false" - # End to end tests can be selectively enabled, or disabled on pipelines where they're # enabled by default (default branch and deploy pipelines). if e2e_tests: - args["RUN_E2E_TESTS"] = "true" + args["RUN_E2E_TESTS"] = "on" + else: + args["RUN_E2E_TESTS"] = "off" if release_version_6 is not None: args["RELEASE_VERSION_6"] = release_version_6 diff --git a/tasks/pipeline.py b/tasks/pipeline.py index 342f4a47ef057e..3080e534fff520 100644 --- a/tasks/pipeline.py +++ b/tasks/pipeline.py @@ -221,8 +221,7 @@ def run( repo_branch="dev", deploy=False, all_builds=True, - kitchen_tests=True, - e2e_tests=False, + e2e_tests=True, rc_build=False, rc_k8s_deployments=False, ): @@ -302,14 +301,14 @@ def run( ) ) all_builds = True - if not kitchen_tests: + if not e2e_tests: print( color_message( - "WARNING: ignoring --no-kitchen-tests option, RUN_KITCHEN_TESTS is automatically set to true on deploy pipelines", + "WARNING: ignoring --no-e2e-tests option, RUN_E2E_TESTS is automatically set to true on deploy pipelines", "orange", ) ) - kitchen_tests = True + e2e_tests = True pipelines = get_running_pipelines_on_same_ref(gitlab, git_ref) @@ -332,7 +331,6 @@ def run( repo_branch, deploy=deploy, all_builds=all_builds, - kitchen_tests=kitchen_tests, e2e_tests=e2e_tests, rc_build=rc_build, rc_k8s_deployments=rc_k8s_deployments, From aba4c185533f635fd13670160490be6844558920 Mon Sep 17 00:00:00 2001 From: AliDatadog <125997632+AliDatadog@users.noreply.github.com> Date: Tue, 12 Mar 2024 13:31:48 +0100 Subject: [PATCH 152/155] Revert "[CONTINT-3909] Add tests for dogstatsd origin detection on ECS (#23532)" (#23627) This reverts commit cef3d2c2b8ad38b09ac61714ebe91b6d93cfdb5e. --- test/new-e2e/tests/containers/ecs_test.go | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/test/new-e2e/tests/containers/ecs_test.go b/test/new-e2e/tests/containers/ecs_test.go index bdf279f50dfefd..c8ef3e53015955 100644 --- a/test/new-e2e/tests/containers/ecs_test.go +++ b/test/new-e2e/tests/containers/ecs_test.go @@ -402,27 +402,17 @@ func (suite *ecsSuite) TestCPU() { }) } -func (suite *ecsSuite) TestDogtstatsdUDS() { - suite.testDogstatsd("dogstatsd-uds") -} - -func (suite *ecsSuite) TestDogtstatsdUDP() { - suite.testDogstatsd("dogstatsd-udp") -} - -func (suite *ecsSuite) testDogstatsd(taskName string) { +func (suite *ecsSuite) TestDogstatsd() { + // Test dogstatsd origin detection with UDS suite.testMetric(&testMetricArgs{ Filter: testMetricFilterArgs{ Name: "custom.metric", - Tags: []string{ - `^task_name:.*-` + taskName + `-ec2$`, - }, }, Expect: testMetricExpectArgs{ Tags: &[]string{ `^cluster_name:` + regexp.QuoteMeta(suite.ecsClusterName) + `$`, `^container_id:`, - `^container_name:ecs-.*-` + taskName + `-ec2-`, + `^container_name:ecs-.*-dogstatsd-uds-ec2-`, `^docker_image:ghcr.io/datadog/apps-dogstatsd:main$`, `^ecs_cluster_name:` + regexp.QuoteMeta(suite.ecsClusterName) + `$`, `^ecs_container_name:dogstatsd$`, @@ -434,8 +424,8 @@ func (suite *ecsSuite) testDogstatsd(taskName string) { `^series:`, `^short_image:apps-dogstatsd$`, `^task_arn:`, - `^task_family:.*-` + taskName + `-ec2$`, - `^task_name:.*-` + taskName + `-ec2$`, + `^task_family:.*-dogstatsd-uds-ec2$`, + `^task_name:.*-dogstatsd-uds-ec2$`, `^task_version:[[:digit:]]+$`, }, }, From 84a8d2fa962f99a805a10dee4f10d765c1e1960d Mon Sep 17 00:00:00 2001 From: Marethyu <45374460+Pythyu@users.noreply.github.com> Date: Tue, 12 Mar 2024 13:39:13 +0100 Subject: [PATCH 153/155] feat(install_mac_os): release 1.4.0 (#23639) --- cmd/agent/install_mac_os.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/agent/install_mac_os.sh b/cmd/agent/install_mac_os.sh index 09ad26aa4c807c..904f3c123ea4e0 100755 --- a/cmd/agent/install_mac_os.sh +++ b/cmd/agent/install_mac_os.sh @@ -5,7 +5,7 @@ # Datadog Agent install script for macOS. set -e -install_script_version=1.3.1 +install_script_version=1.4.0 dmg_file=/tmp/datadog-agent.dmg dmg_base_url="https://s3.amazonaws.com/dd-agent" etc_dir=/opt/datadog-agent/etc From 34f0fcf2b8c31c2733320f266d03f078e5e827f0 Mon Sep 17 00:00:00 2001 From: Florian Veaux Date: Tue, 12 Mar 2024 13:45:49 +0100 Subject: [PATCH 154/155] SNMP Traps: Document multi-user support in the example config file (#23604) * SNMP Traps: Document multi-user support in the example config file * Fixup doc for traps username --- pkg/config/config_template.yaml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/pkg/config/config_template.yaml b/pkg/config/config_template.yaml index ff91f9fb8d5347..faa19b9a648bd6 100644 --- a/pkg/config/config_template.yaml +++ b/pkg/config/config_template.yaml @@ -3830,10 +3830,8 @@ api_key: ## @param users - list of custom objects - optional ## List of SNMPv3 users that can be used to listen for traps. - ## NOTE: Currently the Datadog Agent only supports having a - ## single user in this list. ## Each user can contain: - ## * username - string - The username used by devices when sending Traps to the Agent. + ## * user - string - The username used by devices when sending Traps to the Agent. ## * authKey - string - (Optional) The passphrase to use with the given user and authProtocol ## * authProtocol - string - (Optional) The authentication protocol to use when listening for traps from this user. ## Available options are: MD5, SHA, SHA224, SHA256, SHA384, SHA512. @@ -3844,7 +3842,7 @@ api_key: ## Defaults to DES when privKey is set. # # users: - # - username: + # - user: # authKey: # authProtocol: # privKey: From 39eea0d6bce393e259882133d83548563da0979e Mon Sep 17 00:00:00 2001 From: Alexandre Menasria <47357713+amenasria@users.noreply.github.com> Date: Tue, 12 Mar 2024 14:05:52 +0100 Subject: [PATCH 155/155] [CI] Add the `-no_warn_duplicate_libraries` ldflag when running inv test on `XCode >15` (#23628) * [CI] Add -no_warn_duplicate_libraries flag when running inv test on XCode >15 * Remove leftover flag * Create get_xcode_version function --- tasks/libs/common/utils.py | 40 +++++++++++++++++++++++++++++++++++--- 1 file changed, 37 insertions(+), 3 deletions(-) diff --git a/tasks/libs/common/utils.py b/tasks/libs/common/utils.py index 7e82cb03b65ccb..fe646495d9dfc9 100644 --- a/tasks/libs/common/utils.py +++ b/tasks/libs/common/utils.py @@ -135,6 +135,26 @@ def get_embedded_path(ctx): return embedded_path +def get_xcode_version(ctx): + """ + Get the version of XCode used depending on how it's installed. + """ + if sys.platform != "darwin": + raise ValueError("The get_xcode_version function is only available on macOS") + xcode_path = ctx.run("xcode-select -p", hide=True).stdout.strip() + if xcode_path == "/Library/Developer/CommandLineTools": + xcode_version = ctx.run("pkgutil --pkg-info=com.apple.pkg.CLTools_Executables", hide=True).stdout.strip() + xcode_version = re.search(r"version: ([0-9.]+)", xcode_version).group(1) + xcode_version = re.search(r"([0-9]+.[0-9]+)", xcode_version).group(1) + elif xcode_path.startswith("/Applications/Xcode.app"): + xcode_version = ctx.run( + "xcodebuild -version | grep -Eo 'Xcode [0-9.]+' | awk '{print $2}'", hide=True + ).stdout.strip() + else: + raise ValueError(f"Unknown XCode installation at {xcode_path}.") + return xcode_version + + def get_build_flags( ctx, static=False, @@ -228,10 +248,24 @@ def get_build_flags( elif os.environ.get("NO_GO_OPT"): gcflags = "-N -l" - # On macOS work around https://github.com/golang/go/issues/38824 - # as done in https://go-review.googlesource.com/c/go/+/372798 if sys.platform == "darwin": - extldflags += "-Wl,-bind_at_load " + # On macOS work around https://github.com/golang/go/issues/38824 + # as done in https://go-review.googlesource.com/c/go/+/372798 + extldflags += "-Wl,-bind_at_load" + + # On macOS when using XCode 15 the -no_warn_duplicate_libraries linker flag is needed to avoid getting ld warnings + # for duplicate libraries: `ld: warning: ignoring duplicate libraries: '-ldatadog-agent-rtloader', '-ldl'`. + # Gotestsum sees the ld warnings as errors, breaking the test invoke task, so we have to remove them. + # See https://indiestack.com/2023/10/xcode-15-duplicate-library-linker-warnings/ + try: + xcode_version = get_xcode_version(ctx) + if int(xcode_version.split('.')[0]) >= 15: + extldflags += ",-no_warn_duplicate_libraries " + except ValueError: + print( + "Could not determine XCode version, not adding -no_warn_duplicate_libraries to extldflags", + file=sys.stderr, + ) if extldflags: ldflags += f"'-extldflags={extldflags}' "