diff --git a/.circleci/config.yml b/.circleci/config.yml index ef67bcb8a766c..716b82715b5c5 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:v31694071-c6e811e7 + - image: gcr.io/datadoghq/agent-circleci-runner:v31802788-2dee8fe9 environment: USE_SYSTEM_LIBS: "1" working_directory: /go/src/github.com/DataDog/datadog-agent diff --git a/.ddqa/config.toml b/.ddqa/config.toml index a213f8ba2de9e..4f99fbc6095e7 100644 --- a/.ddqa/config.toml +++ b/.ddqa/config.toml @@ -103,11 +103,11 @@ github_labels = ["team/platform-integrations"] exclude_members = ["hithwen"] [teams."APM"] -jira_project = "AIT" +jira_project = "APMSP" jira_component = "Trace Agent" jira_issue_type = "Task" jira_statuses = ["Backlog", "In Progress", "Done"] -github_team = "apm-go" +github_team = "agent-apm" github_labels = ["team/agent-apm"] [teams."Remote Config"] diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index ce96c78527f45..ae5bc4f18232a 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -326,7 +326,6 @@ /pkg/collector/corechecks/ebpf/probe/ebpfcheck/ @DataDog/ebpf-platform /pkg/collector/corechecks/ebpf/c/runtime/ebpf* @DataDog/ebpf-platform /pkg/collector/corechecks/embed/ @Datadog/agent-ci-experience -/pkg/collector/corechecks/embed/jmx/ @Datadog/agent-metrics-logs /pkg/collector/corechecks/embed/apm/ @Datadog/agent-ci-experience @DataDog/agent-apm /pkg/collector/corechecks/embed/process/ @Datadog/agent-ci-experience @DataDog/processes /pkg/collector/corechecks/network-devices/ @DataDog/network-device-monitoring diff --git a/.github/workflows/serverless-integration.yml b/.github/workflows/serverless-integration.yml index 29c41bd6578a8..aa55c87fff7b9 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, trace, appsec, proxy] + suite: [metric, log, trace, appsec, proxy] name: ${{ matrix.suite }} on ${{ matrix.architecture }} steps: - name: Checkout datadog-agent repository diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2cbde3d8ea5e2..5834cc894f9fd 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,6 +1,7 @@ --- include: - .gitlab/.pre/cancel-prev-pipelines.yml + - .gitlab/.pre/test_gitlab_configuration.yml - .gitlab/benchmarks/include.yml - .gitlab/binary_build/include.yml - .gitlab/check_deploy/check_deploy.yml @@ -138,7 +139,7 @@ variables: WINDOWS_TESTING_S3_BUCKET_A7: pipelines/A7/$CI_PIPELINE_ID WINDOWS_BUILDS_S3_BUCKET: $WIN_S3_BUCKET/builds DEB_RPM_TESTING_BUCKET_BRANCH: testing # branch of the DEB_TESTING_S3_BUCKET and RPM_TESTING_S3_BUCKET repos to release to, 'testing' - S3_CP_OPTIONS: --only-show-errors --region us-east-1 --sse AES256 + S3_CP_OPTIONS: --no-progress --region us-east-1 --sse AES256 S3_CP_CMD: aws s3 cp $S3_CP_OPTIONS S3_ARTIFACTS_URI: s3://dd-ci-artefacts-build-stable/$CI_PROJECT_NAME/$CI_PIPELINE_ID S3_PERMANENT_ARTIFACTS_URI: s3://dd-ci-persistent-artefacts-build-stable/$CI_PROJECT_NAME @@ -162,19 +163,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: v31694071-c6e811e7 + DATADOG_AGENT_BUILDIMAGES: v31802788-2dee8fe9 DATADOG_AGENT_WINBUILDIMAGES_SUFFIX: "" - DATADOG_AGENT_WINBUILDIMAGES: v31694071-c6e811e7 + DATADOG_AGENT_WINBUILDIMAGES: v31802788-2dee8fe9 DATADOG_AGENT_ARMBUILDIMAGES_SUFFIX: "" - DATADOG_AGENT_ARMBUILDIMAGES: v31694071-c6e811e7 + DATADOG_AGENT_ARMBUILDIMAGES: v31802788-2dee8fe9 DATADOG_AGENT_SYSPROBE_BUILDIMAGES_SUFFIX: "" - DATADOG_AGENT_SYSPROBE_BUILDIMAGES: v31694071-c6e811e7 + DATADOG_AGENT_SYSPROBE_BUILDIMAGES: v31802788-2dee8fe9 DATADOG_AGENT_KERNEL_MATRIX_TESTING_BUILDIMAGES_SUFFIX: "" - DATADOG_AGENT_KERNEL_MATRIX_TESTING_BUILDIMAGES: v31694071-c6e811e7 + DATADOG_AGENT_KERNEL_MATRIX_TESTING_BUILDIMAGES: v31802788-2dee8fe9 DATADOG_AGENT_NIKOS_BUILDIMAGES_SUFFIX: "" - DATADOG_AGENT_NIKOS_BUILDIMAGES: v31694071-c6e811e7 + DATADOG_AGENT_NIKOS_BUILDIMAGES: v31802788-2dee8fe9 DATADOG_AGENT_BTF_GEN_BUILDIMAGES_SUFFIX: "" - DATADOG_AGENT_BTF_GEN_BUILDIMAGES: v31694071-c6e811e7 + DATADOG_AGENT_BTF_GEN_BUILDIMAGES: v31802788-2dee8fe9 DATADOG_AGENT_BUILDERS: v28719426-b6a4fd9 DATADOG_AGENT_EMBEDDED_PATH: /opt/datadog-agent/embedded @@ -1029,3 +1030,12 @@ workflow: FAST_TESTS: "false" - variables: FAST_TESTS: "true" + +.on_gitlab_changes: + - !reference [.except_mergequeue] + - changes: + paths: + - .gitlab-ci.yml + - .gitlab/**/* + compare_to: main # TODO: use a variable, when this is supported https://gitlab.com/gitlab-org/gitlab/-/issues/369916 + \ No newline at end of file diff --git a/.gitlab/.pre/test_gitlab_configuration.yml b/.gitlab/.pre/test_gitlab_configuration.yml new file mode 100644 index 0000000000000..b6bb238de0eb2 --- /dev/null +++ b/.gitlab/.pre/test_gitlab_configuration.yml @@ -0,0 +1,10 @@ +test_gitlab_configuration: + stage: .pre + 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"] + rules: + - !reference [.on_gitlab_changes] + script: + - source /root/.bashrc + - export GITLAB_TOKEN=$($CI_PROJECT_DIR/tools/ci/aws_ssm_get_wrapper.sh $GITLAB_SCHEDULER_TOKEN_SSM_NAME) + - inv linter.gitlab-ci diff --git a/.gitlab/common/test_infra_version.yml b/.gitlab/common/test_infra_version.yml index 1f6ec8dadb04b..bee1f6f6a952f 100644 --- a/.gitlab/common/test_infra_version.yml +++ b/.gitlab/common/test_infra_version.yml @@ -4,4 +4,4 @@ variables: # and check the job creating the image to make sure you have the right SHA prefix TEST_INFRA_DEFINITIONS_BUILDIMAGES_SUFFIX: "" # Make sure to update test-infra-definitions version in go.mod as well - TEST_INFRA_DEFINITIONS_BUILDIMAGES: e488596ad7f3 + TEST_INFRA_DEFINITIONS_BUILDIMAGES: e2e7d263e05c diff --git a/.gitlab/deploy_packages/deploy_common.yml b/.gitlab/deploy_packages/deploy_common.yml index 2a545537d5983..d6734fd6bb731 100644 --- a/.gitlab/deploy_packages/deploy_common.yml +++ b/.gitlab/deploy_packages/deploy_common.yml @@ -6,7 +6,7 @@ before_script: - ls $OMNIBUS_PACKAGE_DIR script: - - $S3_CP_CMD --recursive --exclude "*" --include "*_${MAJOR_VERSION}.*${PACKAGE_ARCH}.deb" "$OMNIBUS_PACKAGE_DIR" "$S3_RELEASE_ARTIFACTS_URI/deb/${PACKAGE_ARCH}/" || true + - $S3_CP_CMD --recursive --exclude "*" --include "*_${MAJOR_VERSION}.*${PACKAGE_ARCH}.deb" "$OMNIBUS_PACKAGE_DIR" "$S3_RELEASE_ARTIFACTS_URI/deb/${PACKAGE_ARCH}/" .deploy_packages_deb-6: extends: .deploy_packages_deb @@ -33,7 +33,7 @@ before_script: - ls $OMNIBUS_PACKAGE_DIR script: - - $S3_CP_CMD --recursive --exclude "*" --include "*-${MAJOR_VERSION}.*${PACKAGE_ARCH}.rpm" "$OMNIBUS_PACKAGE_DIR" "$S3_RELEASE_ARTIFACTS_URI/${ARTIFACTS_PREFIX}rpm/${PACKAGE_ARCH}/" || true + - $S3_CP_CMD --recursive --exclude "*" --include "*-${MAJOR_VERSION}.*${PACKAGE_ARCH}.rpm" "$OMNIBUS_PACKAGE_DIR" "$S3_RELEASE_ARTIFACTS_URI/${ARTIFACTS_PREFIX}rpm/${PACKAGE_ARCH}/" .deploy_packages_rpm-6: extends: .deploy_packages_rpm diff --git a/.gitlab/deploy_packages/nix.yml b/.gitlab/deploy_packages/nix.yml index c8e57a08c3bc9..a9d42d865f9db 100644 --- a/.gitlab/deploy_packages/nix.yml +++ b/.gitlab/deploy_packages/nix.yml @@ -190,7 +190,7 @@ deploy_packages_dmg-x64-a7: before_script: - ls $OMNIBUS_PACKAGE_DIR script: - - $S3_CP_CMD --recursive --exclude "*" --include "datadog-agent-7*.dmg" $OMNIBUS_PACKAGE_DIR $S3_RELEASE_ARTIFACTS_URI/dmg/x86_64/ || true + - $S3_CP_CMD --recursive --exclude "*" --include "datadog-agent-7*.dmg" $OMNIBUS_PACKAGE_DIR $S3_RELEASE_ARTIFACTS_URI/dmg/x86_64/ # deploy dogstatsd x64, non-static binary to staging bucket deploy_staging_dsd: diff --git a/.gitlab/deploy_packages/windows.yml b/.gitlab/deploy_packages/windows.yml index b462b38c4ef7c..56a4be72da7cd 100644 --- a/.gitlab/deploy_packages/windows.yml +++ b/.gitlab/deploy_packages/windows.yml @@ -17,7 +17,7 @@ deploy_packages_windows-x64-6: --exclude "*" --include "datadog-agent-6*.msi" --include "datadog-agent-6*.debug.zip" - $OMNIBUS_PACKAGE_DIR $S3_RELEASE_ARTIFACTS_URI/msi/x86_64/ || true + $OMNIBUS_PACKAGE_DIR $S3_RELEASE_ARTIFACTS_URI/msi/x86_64/ # # Agent v7 @@ -37,7 +37,7 @@ deploy_packages_windows-x64-7: --exclude "*" --include "datadog-agent-7*.msi" --include "datadog-agent-7*.debug.zip" - $OMNIBUS_PACKAGE_DIR $S3_RELEASE_ARTIFACTS_URI/msi/x86_64/ || true + $OMNIBUS_PACKAGE_DIR $S3_RELEASE_ARTIFACTS_URI/msi/x86_64/ deploy_staging_windows_tags-7: rules: diff --git a/.gitlab/e2e/e2e.yml b/.gitlab/e2e/e2e.yml index ff816246649d7..f2f5df82dd940 100644 --- a/.gitlab/e2e/e2e.yml +++ b/.gitlab/e2e/e2e.yml @@ -286,10 +286,10 @@ new-e2e-updater: rules: !reference [.on_updater_or_e2e_changes_or_manual] needs: - - deploy_deb_testing-u7_arm64 - - deploy_deb_testing-u7_amd64 - - deploy_rpm_testing-u7_arm64 - - deploy_rpm_testing-u7_x64 + - deploy_deb_testing-i7_arm64 + - deploy_deb_testing-i7_amd64 + - deploy_rpm_testing-i7_arm64 + - deploy_rpm_testing-i7_x64 variables: TARGETS: ./tests/updater TEAM: fleet diff --git a/.gitlab/internal_kubernetes_deploy/internal_kubernetes_deploy.yml b/.gitlab/internal_kubernetes_deploy/internal_kubernetes_deploy.yml index ee595d33bd81d..16e0f61494c47 100644 --- a/.gitlab/internal_kubernetes_deploy/internal_kubernetes_deploy.yml +++ b/.gitlab/internal_kubernetes_deploy/internal_kubernetes_deploy.yml @@ -29,7 +29,7 @@ internal_kubernetes_deploy_experimental: OPTION_AUTOMATIC_ROLLOUT: "true" OPTION_PRE_SCRIPT: "patch-cluster-images-operator.sh env=all-staging ${CI_COMMIT_REF_SLUG}-jmx-${CI_COMMIT_SHORT_SHA} ${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHORT_SHA}" SKIP_PLAN_CHECK: "true" - EXPLICIT_WORKFLOWS: "//workflows:beta_builds.agents_nightly.publish" + EXPLICIT_WORKFLOWS: "//workflows:beta_builds.agents_nightly.staging-deploy.publish,//workflows:beta_builds.agents_nightly.staging-validate.publish,//workflows:beta_builds.agents_nightly.prod-wait-business-hours.publish,//workflows:beta_builds.agents_nightly.prod-deploy.publish,//workflows:beta_builds.agents_nightly.prod-validate.publish,//workflows:beta_builds.agents_nightly.publish-image-confirmation.publish" BUNDLE_VERSION_OVERRIDE: "v${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}" script: - source /root/.bashrc diff --git a/.gitlab/kitchen_deploy/kitchen_deploy.yml b/.gitlab/kitchen_deploy/kitchen_deploy.yml index 9986b2c574151..246701370d1a5 100644 --- a/.gitlab/kitchen_deploy/kitchen_deploy.yml +++ b/.gitlab/kitchen_deploy/kitchen_deploy.yml @@ -40,8 +40,8 @@ .deploy_deb_resource_group-a7: &deploy_deb_resource_group-a7 resource_group: deploy_deb_a7 -.deploy_deb_resource_group-u7: &deploy_deb_resource_group-u7 - resource_group: deploy_deb_u7 +.deploy_deb_resource_group-i7: &deploy_deb_resource_group-i7 + resource_group: deploy_deb_i7 .deploy_deb_testing-a6: stage: kitchen_deploy @@ -54,13 +54,13 @@ - source /root/.bashrc - ls $OMNIBUS_PACKAGE_DIR -.deploy_deb_testing-u7: +.deploy_deb_testing-i7: stage: kitchen_deploy image: 486234852809.dkr.ecr.us-east-1.amazonaws.com/ci/datadog-agent-builders/gitlab_agent_deploy:$DATADOG_AGENT_BUILDERS tags: ["arch:amd64"] - <<: *deploy_deb_resource_group-u7 + <<: *deploy_deb_resource_group-i7 variables: - DD_PIPELINE_ID: $CI_PIPELINE_ID-u7 + DD_PIPELINE_ID: $CI_PIPELINE_ID-i7 before_script: - source /root/.bashrc - ls $OMNIBUS_PACKAGE_DIR @@ -151,13 +151,13 @@ deploy_deb_testing-a7_arm64: - echo "$APT_SIGNING_KEY_PASSPHRASE" | deb-s3 upload -c "pipeline-$DD_PIPELINE_ID-arm64" -m 7 -b $DEB_TESTING_S3_BUCKET -a arm64 --sign=$DEB_GPG_KEY_ID --gpg_options="--passphrase-fd 0 --batch --digest-algo SHA512" --preserve_versions --visibility public $OMNIBUS_PACKAGE_DIR/datadog-*_7*arm64.deb - echo "$APT_SIGNING_KEY_PASSPHRASE" | deb-s3 upload -c "pipeline-$DD_PIPELINE_ID-arm64" -m 7 -b $DEB_TESTING_S3_BUCKET -a arm64 --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-u7_amd64: +deploy_deb_testing-i7_amd64: rules: - !reference [.except_no_tests_no_deploy] - !reference [.except_mergequeue] - when: on_success extends: - - .deploy_deb_testing-u7 + - .deploy_deb_testing-i7 needs: ["installer_deb-amd64", "lint_linux-x64"] script: - *setup_apt_signing_key @@ -168,13 +168,13 @@ deploy_deb_testing-u7_amd64: - echo "$APT_SIGNING_KEY_PASSPHRASE" | deb-s3 upload -c "pipeline-$DD_PIPELINE_ID-x86_64" -m 7 -b $DEB_TESTING_S3_BUCKET -a amd64 --sign=$DEB_GPG_KEY_ID --gpg_options="--passphrase-fd 0 --batch --digest-algo SHA512" --preserve_versions --visibility public $OMNIBUS_PACKAGE_DIR/datadog-installer*amd64.deb - echo "$APT_SIGNING_KEY_PASSPHRASE" | deb-s3 upload -c "pipeline-$DD_PIPELINE_ID-x86_64" -m 7 -b $DEB_TESTING_S3_BUCKET -a amd64 --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-u7_arm64: +deploy_deb_testing-i7_arm64: rules: - !reference [.except_no_tests_no_deploy] - !reference [.except_mergequeue] - when: on_success extends: - - .deploy_deb_testing-u7 + - .deploy_deb_testing-i7 needs: ["installer_deb-arm64", "lint_linux-arm64"] script: - *setup_apt_signing_key @@ -262,7 +262,7 @@ deploy_rpm_testing-a7_arm64: - set +x - 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/7/aarch64/" -a "aarch64" --sign --metadata-signing-key $RPM_GPG_KEY_ID $OMNIBUS_PACKAGE_DIR/datadog-*-7.*aarch64.rpm -.deploy_rpm_testing-u7: +.deploy_rpm_testing-i7: stage: kitchen_deploy image: 486234852809.dkr.ecr.us-east-1.amazonaws.com/ci/datadog-agent-builders/gitlab_agent_deploy:$DATADOG_AGENT_BUILDERS tags: ["arch:amd64"] @@ -271,23 +271,23 @@ deploy_rpm_testing-a7_arm64: - !reference [.except_mergequeue] - when: on_success variables: - DD_PIPELINE_ID: $CI_PIPELINE_ID-u7 + DD_PIPELINE_ID: $CI_PIPELINE_ID-i7 before_script: - source /root/.bashrc - ls $OMNIBUS_PACKAGE_DIR -deploy_rpm_testing-u7_arm64: +deploy_rpm_testing-i7_arm64: extends: - - .deploy_rpm_testing-u7 + - .deploy_rpm_testing-i7 needs: ["installer_rpm-arm64", "lint_linux-arm64"] script: - *setup_rpm_signing_key - set +x # make sure we don't output the creds to the build log - 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/7/aarch64/" -a "aarch64" --sign --metadata-signing-key $RPM_GPG_KEY_ID $OMNIBUS_PACKAGE_DIR/datadog-*-7.*aarch64.rpm -deploy_rpm_testing-u7_x64: +deploy_rpm_testing-i7_x64: extends: - - .deploy_rpm_testing-u7 + - .deploy_rpm_testing-i7 needs: ["installer_rpm-amd64", "lint_linux-x64"] script: - *setup_rpm_signing_key diff --git a/.gitlab/kitchen_testing/new-e2e_testing/windows.yml b/.gitlab/kitchen_testing/new-e2e_testing/windows.yml index 2247d1940c838..f1858c02976b9 100644 --- a/.gitlab/kitchen_testing/new-e2e_testing/windows.yml +++ b/.gitlab/kitchen_testing/new-e2e_testing/windows.yml @@ -43,6 +43,7 @@ - E2E_MSI_TEST: TestSubServicesOpts/all-subservices - E2E_MSI_TEST: TestSubServicesOpts/no-subservices - E2E_MSI_TEST: TestInstallAltDir + - E2E_MSI_TEST: TestInstallFail # Agent 6 .new-e2e_windows_a6_x86_64: diff --git a/.gitlab/kitchen_testing/windows.yml b/.gitlab/kitchen_testing/windows.yml index 707d88f364b70..169042b8c218c 100644 --- a/.gitlab/kitchen_testing/windows.yml +++ b/.gitlab/kitchen_testing/windows.yml @@ -148,14 +148,6 @@ kitchen_windows_installer_npm_install_scenarios-a7: - .kitchen_scenario_windows_a7 - .kitchen_test_windows_installer_npm -kitchen_windows_installer_npm_driver-a7: - # Run NPM driver installer test on branches, on a reduced number of platforms - rules: - !reference [.on_default_kitchen_tests] - extends: - - .kitchen_scenario_windows_a7 - - .kitchen_test_windows_installer_driver - kitchen_windows_installer_agent-a6: extends: - .kitchen_scenario_windows_a6 diff --git a/.gitlab/package_build/deb.yml b/.gitlab/package_build/deb.yml index e12bb5a3b33d7..cc29e47fd1be2 100644 --- a/.gitlab/package_build/deb.yml +++ b/.gitlab/package_build/deb.yml @@ -207,7 +207,6 @@ dogstatsd_deb-x64: 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_dogstatsd-binary_x64", "go_deps"] - variables: before_script: - source /root/.bashrc - !reference [.retrieve_linux_go_deps] @@ -265,7 +264,6 @@ agentless_scanner_deb-x64: 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] diff --git a/.gitlab/package_build/rpm.yml b/.gitlab/package_build/rpm.yml index b1f871d228aca..50f0f34112868 100644 --- a/.gitlab/package_build/rpm.yml +++ b/.gitlab/package_build/rpm.yml @@ -232,7 +232,6 @@ agentless_scanner_rpm-x64: 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] @@ -264,7 +263,6 @@ agentless_scanner_rpm-arm64: 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] diff --git a/.gitlab/package_build/suse_rpm.yml b/.gitlab/package_build/suse_rpm.yml index 5cc28a0dfe181..fc17a75aba16f 100644 --- a/.gitlab/package_build/suse_rpm.yml +++ b/.gitlab/package_build/suse_rpm.yml @@ -152,7 +152,6 @@ dogstatsd_suse-x64: 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_dogstatsd-binary_x64", "go_deps"] - variables: before_script: - source /root/.bashrc - !reference [.retrieve_linux_go_deps] @@ -185,7 +184,6 @@ agentless_scanner_suse-x64: 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] diff --git a/.gitlab/source_test/linux.yml b/.gitlab/source_test/linux.yml index c7aee7ad70a95..6377e90f09362 100644 --- a/.gitlab/source_test/linux.yml +++ b/.gitlab/source_test/linux.yml @@ -16,7 +16,6 @@ stage: source_test needs: ["go_deps", "go_tools_deps"] rules: - - !reference [.except_mergequeue] - !reference [.except_disable_unit_tests] - !reference [.fast_on_dev_branch_only] variables: diff --git a/.gitlab/source_test/macos.yml b/.gitlab/source_test/macos.yml index 38b04775d30e6..43bb56155e525 100644 --- a/.gitlab/source_test/macos.yml +++ b/.gitlab/source_test/macos.yml @@ -23,7 +23,7 @@ tests_macos: - source /root/.bashrc # Upload generated junit files - export DATADOG_API_KEY=$($CI_PROJECT_DIR/tools/ci/aws_ssm_get_wrapper.sh ci.datadog-agent.datadog_api_key_org2) - - for f in junit-*.tgz; do inv -e junit-upload --tgz-path $f; done + - for f in junit-*-repacked.tgz; do inv -e junit-upload --tgz-path $f; done artifacts: expire_in: 2 weeks when: always diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 1c67f8cd72589..74b990fd46db0 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -104,8 +104,17 @@ repos: - id: shell-check-no-set-x name: shell-check-no-set-x description: check that no `set -x` is set within github / gitlab workflows - entry: bash ./tools/pre-commit/shell_check_no_set_x.sh + entry: inv pre-commit.shell-check-no-set-x language: system require_serial: true files: (\.yaml|\.yml|\.sh|Dockerfile)$ pass_filenames: false + - id: gitlab-configuration + name: gitlab-configuration + description: test the gitlab configuration on main + entry: 'inv linter.gitlab-ci -t main' + language: system + require_serial: true + files: .*gitlab.*\.yml$ + pass_filenames: false + stages: [pre-push] diff --git a/LICENSE-3rdparty.csv b/LICENSE-3rdparty.csv index 33d4200f7d0a9..b570500dded61 100644 --- a/LICENSE-3rdparty.csv +++ b/LICENSE-3rdparty.csv @@ -24,7 +24,6 @@ core,code.cloudfoundry.org/garden/routes,Apache-2.0,"Copyright (c) 2016-Present core,code.cloudfoundry.org/garden/transport,Apache-2.0,"Copyright (c) 2016-Present CloudFoundry.org Foundation, Inc. All Rights Reserved." core,code.cloudfoundry.org/lager,Apache-2.0,"Copyright (c) 2016-Present CloudFoundry.org Foundation, Inc. All Rights Reserved." core,code.cloudfoundry.org/tlsconfig,Apache-2.0,"Copyright (c) 2016-Present CloudFoundry.org Foundation, Inc. All Rights Reserved." -core,contrib.go.opencensus.io/exporter/prometheus,Apache-2.0,"Copyright 2020, OpenCensus Authors" core,dario.cat/mergo,BSD-3-Clause,Copyright (c) 2012 The Go Authors. All rights reserved | Copyright (c) 2013 Dario Castañé. All rights reserved core,github.com/AdaLogics/go-fuzz-headers,Apache-2.0,AdamKorcz <44787359+AdamKorcz@users.noreply.github.com>|AdamKorcz |Sebastiaan van Stijn |AdaLogics <48351493+AdaLogics@users.noreply.github.com>|Kazuyoshi Kato 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 @@ -871,8 +870,6 @@ core,github.com/go-git/go-git/v5/utils/merkletrie/noder,Apache-2.0,"Copyright 20 core,github.com/go-git/go-git/v5/utils/sync,Apache-2.0,"Copyright 2018 Sourced Technologies, S.L" core,github.com/go-git/go-git/v5/utils/trace,Apache-2.0,"Copyright 2018 Sourced Technologies, S.L" core,github.com/go-ini/ini,Apache-2.0,Copyright 2014 Unknwon -core,github.com/go-kit/log,MIT,Copyright (c) 2021 Go kit -core,github.com/go-kit/log/level,MIT,Copyright (c) 2021 Go kit core,github.com/go-logfmt/logfmt,MIT,Copyright (c) 2015 go-logfmt core,github.com/go-logr/logr,Apache-2.0,Copyright 2019 The logr Authors. | Copyright 2020 The logr Authors. core,github.com/go-logr/logr/funcr,Apache-2.0,Copyright 2019 The logr Authors. | Copyright 2020 The logr Authors. @@ -921,6 +918,7 @@ core,github.com/go-redis/redis/v9/internal/proto,BSD-2-Clause,Copyright (c) 2013 core,github.com/go-redis/redis/v9/internal/rand,BSD-2-Clause,Copyright (c) 2013 The github.com/go-redis/redis Authors core,github.com/go-redis/redis/v9/internal/util,BSD-2-Clause,Copyright (c) 2013 The github.com/go-redis/redis Authors core,github.com/go-sql-driver/mysql,MPL-2.0,"Aaron Hopkins | Achille Roussel | Alex Snast | Alexey Palazhchenko | Andrew Reid | Animesh Ray | Ariel Mashraki | Arne Hormann | Asta Xie | Barracuda Networks, Inc. | Bulat Gaifullin | Caine Jette | Carlos Nieto | Chris Kirkland | Chris Moos | Counting Ltd. | Craig Wilson | Daniel Montoya | Daniel Nichter | Daniël van Eeden | Dave Protasowski | DigitalOcean Inc. | DisposaBoy | Egor Smolyakov | Erwan Martin | Evan Shaw | Facebook Inc. | Frederick Mayle | GitHub Inc. | Google Inc. | Gustavo Kristic | Hajime Nakagami | Hanno Braun | Henri Yandell | Hirotaka Yamamoto | Huyiguang | ICHINOSE Shogo | INADA Naoki | Ilia Cimpoes | InfoSum Ltd. | Jacek Szwec | James Harr | Janek Vedock | Jeff Hodges | Jeffrey Charles | Jerome Meyer | Jiajia Zhong | Jian Zhen | Joshua Prunier | Julien Lefevre | Julien Schmidt | Justin Li | Justin Nuß | Kamil Dziedzic | Kei Kamikawa | Kevin Malachowski | Keybase Inc. | Kieron Woodhouse | Lance Tian | Lennart Rudolph | Leonardo YongUk Kim | Linh Tran Tuan | Lion Yang | Luca Looz | Lucas Liu | Luke Scott | Lunny Xiao | Maciej Zimnoch | Michael Woolnough | Multiplay Ltd. | Nathanial Murphy | Nicola Peduzzi | Olivier Mengué | Paul Bonser | Percona LLC | Peter Schultz | Phil Porada | Pivotal Inc. | Rebecca Chin | Reed Allman | Richard Wilkes | Robert Russell | Runrioter Wung | Samantha Frank | Santhosh Kumar Tekuri | Sho Iizuka | Sho Ikeda | Shuode Li | Simon J Mudd | Soroush Pour | Stan Putrya | Stanley Gunawan | Steven Hartland | Stripe Inc. | Tan Jinhua <312841925 at qq.com> | Thomas Wodarek | Tim Ruffles | Tom Jenkinson | Vladimir Kovpak | Vladyslav Zhelezniak | Xiangyu Hu | Xiaobing Jiang | Xiuming Chen | Xuehong Chan | Zendesk Inc. | Zhenye Xie | Zhixin Wen | Ziheng Lyu | copyright doctrines of fair use, fair dealing, or other | dyves labs AG | oscarzhao " +core,github.com/go-viper/mapstructure/v2,MIT,Copyright (c) 2013 Mitchell Hashimoto core,github.com/gobwas/glob,MIT,Copyright (c) 2016 Sergey Kamardin core,github.com/gobwas/glob/compiler,MIT,Copyright (c) 2016 Sergey Kamardin core,github.com/gobwas/glob/match,MIT,Copyright (c) 2016 Sergey Kamardin @@ -1169,6 +1167,7 @@ core,github.com/klauspost/compress/fse,BSD-3-Clause,Copyright (c) 2011 The Snapp core,github.com/klauspost/compress/gzip,BSD-3-Clause,Copyright (c) 2011 The Snappy-Go Authors. All rights reserved | Copyright (c) 2012 The Go Authors. All rights reserved | Copyright (c) 2015 Klaus Post | Copyright (c) 2019 Klaus Post. All rights reserved | Copyright 2016 The filepathx Authors | Copyright 2016-2017 The New York Times Company core,github.com/klauspost/compress/huff0,BSD-3-Clause,Copyright (c) 2011 The Snappy-Go Authors. All rights reserved | Copyright (c) 2012 The Go Authors. All rights reserved | Copyright (c) 2015 Klaus Post | Copyright (c) 2019 Klaus Post. All rights reserved | Copyright 2016 The filepathx Authors | Copyright 2016-2017 The New York Times Company core,github.com/klauspost/compress/internal/cpuinfo,BSD-3-Clause,Copyright (c) 2011 The Snappy-Go Authors. All rights reserved | Copyright (c) 2012 The Go Authors. All rights reserved | Copyright (c) 2015 Klaus Post | Copyright (c) 2019 Klaus Post. All rights reserved | Copyright 2016 The filepathx Authors | Copyright 2016-2017 The New York Times Company +core,github.com/klauspost/compress/internal/race,BSD-3-Clause,Copyright (c) 2011 The Snappy-Go Authors. All rights reserved | Copyright (c) 2012 The Go Authors. All rights reserved | Copyright (c) 2015 Klaus Post | Copyright (c) 2019 Klaus Post. All rights reserved | Copyright 2016 The filepathx Authors | Copyright 2016-2017 The New York Times Company core,github.com/klauspost/compress/internal/snapref,BSD-3-Clause,Copyright (c) 2011 The Snappy-Go Authors. All rights reserved | Copyright (c) 2012 The Go Authors. All rights reserved | Copyright (c) 2015 Klaus Post | Copyright (c) 2019 Klaus Post. All rights reserved | Copyright 2016 The filepathx Authors | Copyright 2016-2017 The New York Times Company core,github.com/klauspost/compress/s2,BSD-3-Clause,Copyright (c) 2011 The Snappy-Go Authors. All rights reserved. | Copyright (c) 2019 Klaus Post. All rights reserved. core,github.com/klauspost/compress/zip,BSD-3-Clause,Copyright (c) 2011 The Snappy-Go Authors. All rights reserved | Copyright (c) 2012 The Go Authors. All rights reserved | Copyright (c) 2015 Klaus Post | Copyright (c) 2019 Klaus Post. All rights reserved | Copyright 2016 The filepathx Authors | Copyright 2016-2017 The New York Times Company @@ -1418,9 +1417,6 @@ core,github.com/prometheus/common/version,Apache-2.0,Copyright 2012-2015 The Pro core,github.com/prometheus/procfs,Apache-2.0,Copyright 2012-2015 The Prometheus Authors core,github.com/prometheus/procfs/internal/fs,Apache-2.0,Copyright 2012-2015 The Prometheus Authors core,github.com/prometheus/procfs/internal/util,Apache-2.0,Copyright 2012-2015 The Prometheus Authors -core,github.com/prometheus/statsd_exporter/pkg/level,Apache-2.0,Copyright 2012-2015 The Prometheus Authors -core,github.com/prometheus/statsd_exporter/pkg/mapper,Apache-2.0,Copyright 2012-2015 The Prometheus Authors -core,github.com/prometheus/statsd_exporter/pkg/mapper/fsm,Apache-2.0,Copyright 2012-2015 The Prometheus Authors core,github.com/rcrowley/go-metrics,BSD-2-Clause-Views,Copyright 2012 Richard Crowley. All rights reserved core,github.com/remyoudompheng/bigfft,BSD-3-Clause,Copyright (c) 2012 The Go Authors. All rights reserved core,github.com/richardartoul/molecule,MIT,Copyright (c) 2020 Richard Artoul @@ -1721,7 +1717,6 @@ core,go.opencensus.io/internal,Apache-2.0,"Copyright 2018, OpenCensus Authors" core,go.opencensus.io/internal/tagencoding,Apache-2.0,"Copyright 2018, OpenCensus Authors" core,go.opencensus.io/metric,Apache-2.0,"Copyright 2018, OpenCensus Authors" core,go.opencensus.io/metric/metricdata,Apache-2.0,"Copyright 2018, OpenCensus Authors" -core,go.opencensus.io/metric/metricexport,Apache-2.0,"Copyright 2018, OpenCensus Authors" core,go.opencensus.io/metric/metricproducer,Apache-2.0,"Copyright 2018, OpenCensus Authors" core,go.opencensus.io/plugin/ocgrpc,Apache-2.0,"Copyright 2018, OpenCensus Authors" core,go.opencensus.io/plugin/ochttp,Apache-2.0,"Copyright 2018, OpenCensus Authors" @@ -1744,6 +1739,7 @@ core,go.opentelemetry.io/collector/config/configgrpc,Apache-2.0,Copyright The Op core,go.opentelemetry.io/collector/config/confighttp,Apache-2.0,Copyright The OpenTelemetry Authors core,go.opentelemetry.io/collector/config/confignet,Apache-2.0,Copyright The OpenTelemetry Authors core,go.opentelemetry.io/collector/config/configopaque,Apache-2.0,Copyright The OpenTelemetry Authors +core,go.opentelemetry.io/collector/config/configretry,Apache-2.0,Copyright The OpenTelemetry Authors core,go.opentelemetry.io/collector/config/configtelemetry,Apache-2.0,Copyright The OpenTelemetry Authors core,go.opentelemetry.io/collector/config/configtls,Apache-2.0,Copyright The OpenTelemetry Authors core,go.opentelemetry.io/collector/config/internal,Apache-2.0,Copyright The OpenTelemetry Authors @@ -1761,17 +1757,23 @@ core,go.opentelemetry.io/collector/connector,Apache-2.0,Copyright The OpenTeleme core,go.opentelemetry.io/collector/consumer,Apache-2.0,Copyright The OpenTelemetry Authors core,go.opentelemetry.io/collector/consumer/consumererror,Apache-2.0,Copyright The OpenTelemetry Authors core,go.opentelemetry.io/collector/exporter,Apache-2.0,Copyright The OpenTelemetry Authors +core,go.opentelemetry.io/collector/exporter/exporterbatcher,Apache-2.0,Copyright The OpenTelemetry Authors core,go.opentelemetry.io/collector/exporter/exporterhelper,Apache-2.0,Copyright The OpenTelemetry Authors -core,go.opentelemetry.io/collector/exporter/exporterhelper/internal,Apache-2.0,Copyright The OpenTelemetry Authors +core,go.opentelemetry.io/collector/exporter/exporterqueue,Apache-2.0,Copyright The OpenTelemetry Authors core,go.opentelemetry.io/collector/exporter/internal/common,Apache-2.0,Copyright The OpenTelemetry Authors +core,go.opentelemetry.io/collector/exporter/internal/experr,Apache-2.0,Copyright The OpenTelemetry Authors core,go.opentelemetry.io/collector/exporter/internal/otlptext,Apache-2.0,Copyright The OpenTelemetry Authors +core,go.opentelemetry.io/collector/exporter/internal/queue,Apache-2.0,Copyright The OpenTelemetry Authors core,go.opentelemetry.io/collector/exporter/loggingexporter,Apache-2.0,Copyright The OpenTelemetry Authors +core,go.opentelemetry.io/collector/exporter/loggingexporter/internal/metadata,Apache-2.0,Copyright The OpenTelemetry Authors core,go.opentelemetry.io/collector/exporter/otlpexporter,Apache-2.0,Copyright The OpenTelemetry Authors +core,go.opentelemetry.io/collector/exporter/otlpexporter/internal/metadata,Apache-2.0,Copyright The OpenTelemetry Authors core,go.opentelemetry.io/collector/extension,Apache-2.0,Copyright The OpenTelemetry Authors core,go.opentelemetry.io/collector/extension/auth,Apache-2.0,Copyright The OpenTelemetry Authors core,go.opentelemetry.io/collector/extension/experimental/storage,Apache-2.0,Copyright The OpenTelemetry Authors core,go.opentelemetry.io/collector/featuregate,Apache-2.0,Copyright The OpenTelemetry Authors core,go.opentelemetry.io/collector/internal/fanoutconsumer,Apache-2.0,Copyright The OpenTelemetry Authors +core,go.opentelemetry.io/collector/internal/localhostgate,Apache-2.0,Copyright The OpenTelemetry Authors core,go.opentelemetry.io/collector/internal/obsreportconfig,Apache-2.0,Copyright The OpenTelemetry Authors core,go.opentelemetry.io/collector/internal/obsreportconfig/obsmetrics,Apache-2.0,Copyright The OpenTelemetry Authors core,go.opentelemetry.io/collector/internal/sharedcomponent,Apache-2.0,Copyright The OpenTelemetry Authors @@ -1799,10 +1801,13 @@ core,go.opentelemetry.io/collector/pdata/ptrace,Apache-2.0,Copyright The OpenTel core,go.opentelemetry.io/collector/pdata/ptrace/ptraceotlp,Apache-2.0,Copyright The OpenTelemetry Authors core,go.opentelemetry.io/collector/processor,Apache-2.0,Copyright The OpenTelemetry Authors core,go.opentelemetry.io/collector/processor/batchprocessor,Apache-2.0,Copyright The OpenTelemetry Authors +core,go.opentelemetry.io/collector/processor/batchprocessor/internal/metadata,Apache-2.0,Copyright The OpenTelemetry Authors core,go.opentelemetry.io/collector/processor/processorhelper,Apache-2.0,Copyright The OpenTelemetry Authors core,go.opentelemetry.io/collector/receiver,Apache-2.0,Copyright The OpenTelemetry Authors core,go.opentelemetry.io/collector/receiver/otlpreceiver,Apache-2.0,Copyright The OpenTelemetry Authors +core,go.opentelemetry.io/collector/receiver/otlpreceiver/internal/errors,Apache-2.0,Copyright The OpenTelemetry Authors core,go.opentelemetry.io/collector/receiver/otlpreceiver/internal/logs,Apache-2.0,Copyright The OpenTelemetry Authors +core,go.opentelemetry.io/collector/receiver/otlpreceiver/internal/metadata,Apache-2.0,Copyright The OpenTelemetry Authors core,go.opentelemetry.io/collector/receiver/otlpreceiver/internal/metrics,Apache-2.0,Copyright The OpenTelemetry Authors core,go.opentelemetry.io/collector/receiver/otlpreceiver/internal/trace,Apache-2.0,Copyright The OpenTelemetry Authors core,go.opentelemetry.io/collector/receiver/receiverhelper,Apache-2.0,Copyright The OpenTelemetry Authors @@ -1815,6 +1820,7 @@ core,go.opentelemetry.io/collector/service/internal/capabilityconsumer,Apache-2. core,go.opentelemetry.io/collector/service/internal/components,Apache-2.0,Copyright The OpenTelemetry Authors core,go.opentelemetry.io/collector/service/internal/graph,Apache-2.0,Copyright The OpenTelemetry Authors core,go.opentelemetry.io/collector/service/internal/proctelemetry,Apache-2.0,Copyright The OpenTelemetry Authors +core,go.opentelemetry.io/collector/service/internal/resource,Apache-2.0,Copyright The OpenTelemetry Authors core,go.opentelemetry.io/collector/service/internal/servicetelemetry,Apache-2.0,Copyright The OpenTelemetry Authors core,go.opentelemetry.io/collector/service/internal/status,Apache-2.0,Copyright The OpenTelemetry Authors core,go.opentelemetry.io/collector/service/internal/zpages,Apache-2.0,Copyright The OpenTelemetry Authors @@ -1877,6 +1883,7 @@ core,go.opentelemetry.io/otel/sdk/internal/env,Apache-2.0,Copyright The OpenTele core,go.opentelemetry.io/otel/sdk/metric,Apache-2.0,Copyright The OpenTelemetry Authors core,go.opentelemetry.io/otel/sdk/metric/internal,Apache-2.0,Copyright The OpenTelemetry Authors core,go.opentelemetry.io/otel/sdk/metric/internal/aggregate,Apache-2.0,Copyright The OpenTelemetry Authors +core,go.opentelemetry.io/otel/sdk/metric/internal/exemplar,Apache-2.0,Copyright The OpenTelemetry Authors core,go.opentelemetry.io/otel/sdk/metric/internal/x,Apache-2.0,Copyright The OpenTelemetry Authors core,go.opentelemetry.io/otel/sdk/metric/metricdata,Apache-2.0,Copyright The OpenTelemetry Authors core,go.opentelemetry.io/otel/sdk/resource,Apache-2.0,Copyright The OpenTelemetry Authors @@ -2050,31 +2057,31 @@ core,golang.org/x/text/width,BSD-3-Clause,Copyright (c) 2009 The Go Authors. All core,golang.org/x/time/rate,BSD-3-Clause,Copyright (c) 2009 The Go Authors. All rights reserved core,golang/go,BSD-3-Clause,Copyright (c) 2009 The Go Authors. All rights reserved. core,gomodules.xyz/jsonpatch/v2,Apache-2.0,Copyright (c) 2015 The Authors -core,gonum.org/v1/gonum/blas,BSD-3-Clause,Alexander Egurnov | Andrei Blinnikov | Andrew Brampton | Bailey Lissington | Bill Gray | Bill Noon | Brendan Tracey | Brent Pedersen | Bulat Khasanov | Chad Kunde | Chan Kwan Yin | Chih-Wei Chang | Chong-Yeol Nah | Chris Tessum | Christophe Meessen | Christopher Waldon | Clayton Northey | Copyright ©2013 The Gonum Authors. All rights reserved | Dan Kortschak | Dan Lorenc | Daniel Fireman | Dario Heinisch | David Kleiven | David Samborski | Davor Kapsa | DeepMind Technologies | Delaney Gillilan | Dezmond Goff | Dong-hee Na | Dustin Spicuzza | Egon Elbre | Ekaterina Efimova | Ethan Burns | Evert Lammerts | Evgeny Savinov | Fabian Wickborn | Facundo Gaich | Fazlul Shahriar | Francesc Campoy | Google Inc | Gustaf Johansson | Hossein Zolfi | Iakov Davydov | Igor Mikushkin | Iskander Sharipov | Jalem Raj Rohit | James Bell | James Bowman | James Holmes <32bitkid@gmail.com> | Janne Snabb | Jeremy Atkinson | Jes Cok | Jinesi Yelizati | Jon Richards | Jonas Kahler | Jonas Schulze | Jonathan J Lawlor | Jonathan Reiter | Jonathan Schroeder | Joost van Amersfoort | Joseph Watson | Josh Wilson | Julien Roland | Kai Trukenmüller | Kent English | Kevin C. Zimmerman | Kirill Motkov | Konstantin Shaposhnikov | Leonid Kneller | Lyron Winderbaum | Marco Leogrande | Mark Canning | Mark Skilbeck | Martin Diz | Matthew Connelly | Matthieu Di Mercurio | Max Halford | Maxim Sergeev | Microsoft Corporation | MinJae Kwon | Nathan Edwards | Nick Potts | Nils Wogatzky | Olivier Wulveryck | Or Rikon | Patricio Whittingslow | Patrick DeVivo | Pontus Melke | Renee French | Rishi Desai | Robin Eklind | Roger Welin | Roman Werpachowski | Rondall Jones | Sam Zaydel | Samuel Kelemen | Saran Ahluwalia | Scott Holden | Scott Kiesel | Sebastien Binet | Shawn Smith | Sintela Ltd | Spencer Lyon | Steve McCoy | Taesu Pyo | Takeshi Yoneda | Tamir Hyman | The University of Adelaide | The University of Minnesota | The University of Washington | Thomas Berg | Tobin Harding | Valentin Deleplace | Vincent Thiery | Vladimír Chalupecký | Will Tekulve | Yasuhiro Matsumoto | Yevgeniy Vahlis | Yucheng Zhu | Yunomi | Zoe Juozapaitis | antichris | source{d} -core,gonum.org/v1/gonum/blas/blas64,BSD-3-Clause,Alexander Egurnov | Andrei Blinnikov | Andrew Brampton | Bailey Lissington | Bill Gray | Bill Noon | Brendan Tracey | Brent Pedersen | Bulat Khasanov | Chad Kunde | Chan Kwan Yin | Chih-Wei Chang | Chong-Yeol Nah | Chris Tessum | Christophe Meessen | Christopher Waldon | Clayton Northey | Copyright ©2013 The Gonum Authors. All rights reserved | Dan Kortschak | Dan Lorenc | Daniel Fireman | Dario Heinisch | David Kleiven | David Samborski | Davor Kapsa | DeepMind Technologies | Delaney Gillilan | Dezmond Goff | Dong-hee Na | Dustin Spicuzza | Egon Elbre | Ekaterina Efimova | Ethan Burns | Evert Lammerts | Evgeny Savinov | Fabian Wickborn | Facundo Gaich | Fazlul Shahriar | Francesc Campoy | Google Inc | Gustaf Johansson | Hossein Zolfi | Iakov Davydov | Igor Mikushkin | Iskander Sharipov | Jalem Raj Rohit | James Bell | James Bowman | James Holmes <32bitkid@gmail.com> | Janne Snabb | Jeremy Atkinson | Jes Cok | Jinesi Yelizati | Jon Richards | Jonas Kahler | Jonas Schulze | Jonathan J Lawlor | Jonathan Reiter | Jonathan Schroeder | Joost van Amersfoort | Joseph Watson | Josh Wilson | Julien Roland | Kai Trukenmüller | Kent English | Kevin C. Zimmerman | Kirill Motkov | Konstantin Shaposhnikov | Leonid Kneller | Lyron Winderbaum | Marco Leogrande | Mark Canning | Mark Skilbeck | Martin Diz | Matthew Connelly | Matthieu Di Mercurio | Max Halford | Maxim Sergeev | Microsoft Corporation | MinJae Kwon | Nathan Edwards | Nick Potts | Nils Wogatzky | Olivier Wulveryck | Or Rikon | Patricio Whittingslow | Patrick DeVivo | Pontus Melke | Renee French | Rishi Desai | Robin Eklind | Roger Welin | Roman Werpachowski | Rondall Jones | Sam Zaydel | Samuel Kelemen | Saran Ahluwalia | Scott Holden | Scott Kiesel | Sebastien Binet | Shawn Smith | Sintela Ltd | Spencer Lyon | Steve McCoy | Taesu Pyo | Takeshi Yoneda | Tamir Hyman | The University of Adelaide | The University of Minnesota | The University of Washington | Thomas Berg | Tobin Harding | Valentin Deleplace | Vincent Thiery | Vladimír Chalupecký | Will Tekulve | Yasuhiro Matsumoto | Yevgeniy Vahlis | Yucheng Zhu | Yunomi | Zoe Juozapaitis | antichris | source{d} -core,gonum.org/v1/gonum/blas/cblas128,BSD-3-Clause,Alexander Egurnov | Andrei Blinnikov | Andrew Brampton | Bailey Lissington | Bill Gray | Bill Noon | Brendan Tracey | Brent Pedersen | Bulat Khasanov | Chad Kunde | Chan Kwan Yin | Chih-Wei Chang | Chong-Yeol Nah | Chris Tessum | Christophe Meessen | Christopher Waldon | Clayton Northey | Copyright ©2013 The Gonum Authors. All rights reserved | Dan Kortschak | Dan Lorenc | Daniel Fireman | Dario Heinisch | David Kleiven | David Samborski | Davor Kapsa | DeepMind Technologies | Delaney Gillilan | Dezmond Goff | Dong-hee Na | Dustin Spicuzza | Egon Elbre | Ekaterina Efimova | Ethan Burns | Evert Lammerts | Evgeny Savinov | Fabian Wickborn | Facundo Gaich | Fazlul Shahriar | Francesc Campoy | Google Inc | Gustaf Johansson | Hossein Zolfi | Iakov Davydov | Igor Mikushkin | Iskander Sharipov | Jalem Raj Rohit | James Bell | James Bowman | James Holmes <32bitkid@gmail.com> | Janne Snabb | Jeremy Atkinson | Jes Cok | Jinesi Yelizati | Jon Richards | Jonas Kahler | Jonas Schulze | Jonathan J Lawlor | Jonathan Reiter | Jonathan Schroeder | Joost van Amersfoort | Joseph Watson | Josh Wilson | Julien Roland | Kai Trukenmüller | Kent English | Kevin C. Zimmerman | Kirill Motkov | Konstantin Shaposhnikov | Leonid Kneller | Lyron Winderbaum | Marco Leogrande | Mark Canning | Mark Skilbeck | Martin Diz | Matthew Connelly | Matthieu Di Mercurio | Max Halford | Maxim Sergeev | Microsoft Corporation | MinJae Kwon | Nathan Edwards | Nick Potts | Nils Wogatzky | Olivier Wulveryck | Or Rikon | Patricio Whittingslow | Patrick DeVivo | Pontus Melke | Renee French | Rishi Desai | Robin Eklind | Roger Welin | Roman Werpachowski | Rondall Jones | Sam Zaydel | Samuel Kelemen | Saran Ahluwalia | Scott Holden | Scott Kiesel | Sebastien Binet | Shawn Smith | Sintela Ltd | Spencer Lyon | Steve McCoy | Taesu Pyo | Takeshi Yoneda | Tamir Hyman | The University of Adelaide | The University of Minnesota | The University of Washington | Thomas Berg | Tobin Harding | Valentin Deleplace | Vincent Thiery | Vladimír Chalupecký | Will Tekulve | Yasuhiro Matsumoto | Yevgeniy Vahlis | Yucheng Zhu | Yunomi | Zoe Juozapaitis | antichris | source{d} -core,gonum.org/v1/gonum/blas/gonum,BSD-3-Clause,Alexander Egurnov | Andrei Blinnikov | Andrew Brampton | Bailey Lissington | Bill Gray | Bill Noon | Brendan Tracey | Brent Pedersen | Bulat Khasanov | Chad Kunde | Chan Kwan Yin | Chih-Wei Chang | Chong-Yeol Nah | Chris Tessum | Christophe Meessen | Christopher Waldon | Clayton Northey | Copyright ©2013 The Gonum Authors. All rights reserved | Dan Kortschak | Dan Lorenc | Daniel Fireman | Dario Heinisch | David Kleiven | David Samborski | Davor Kapsa | DeepMind Technologies | Delaney Gillilan | Dezmond Goff | Dong-hee Na | Dustin Spicuzza | Egon Elbre | Ekaterina Efimova | Ethan Burns | Evert Lammerts | Evgeny Savinov | Fabian Wickborn | Facundo Gaich | Fazlul Shahriar | Francesc Campoy | Google Inc | Gustaf Johansson | Hossein Zolfi | Iakov Davydov | Igor Mikushkin | Iskander Sharipov | Jalem Raj Rohit | James Bell | James Bowman | James Holmes <32bitkid@gmail.com> | Janne Snabb | Jeremy Atkinson | Jes Cok | Jinesi Yelizati | Jon Richards | Jonas Kahler | Jonas Schulze | Jonathan J Lawlor | Jonathan Reiter | Jonathan Schroeder | Joost van Amersfoort | Joseph Watson | Josh Wilson | Julien Roland | Kai Trukenmüller | Kent English | Kevin C. Zimmerman | Kirill Motkov | Konstantin Shaposhnikov | Leonid Kneller | Lyron Winderbaum | Marco Leogrande | Mark Canning | Mark Skilbeck | Martin Diz | Matthew Connelly | Matthieu Di Mercurio | Max Halford | Maxim Sergeev | Microsoft Corporation | MinJae Kwon | Nathan Edwards | Nick Potts | Nils Wogatzky | Olivier Wulveryck | Or Rikon | Patricio Whittingslow | Patrick DeVivo | Pontus Melke | Renee French | Rishi Desai | Robin Eklind | Roger Welin | Roman Werpachowski | Rondall Jones | Sam Zaydel | Samuel Kelemen | Saran Ahluwalia | Scott Holden | Scott Kiesel | Sebastien Binet | Shawn Smith | Sintela Ltd | Spencer Lyon | Steve McCoy | Taesu Pyo | Takeshi Yoneda | Tamir Hyman | The University of Adelaide | The University of Minnesota | The University of Washington | Thomas Berg | Tobin Harding | Valentin Deleplace | Vincent Thiery | Vladimír Chalupecký | Will Tekulve | Yasuhiro Matsumoto | Yevgeniy Vahlis | Yucheng Zhu | Yunomi | Zoe Juozapaitis | antichris | source{d} -core,gonum.org/v1/gonum/floats,BSD-3-Clause,Alexander Egurnov | Andrei Blinnikov | Andrew Brampton | Bailey Lissington | Bill Gray | Bill Noon | Brendan Tracey | Brent Pedersen | Bulat Khasanov | Chad Kunde | Chan Kwan Yin | Chih-Wei Chang | Chong-Yeol Nah | Chris Tessum | Christophe Meessen | Christopher Waldon | Clayton Northey | Copyright ©2013 The Gonum Authors. All rights reserved | Dan Kortschak | Dan Lorenc | Daniel Fireman | Dario Heinisch | David Kleiven | David Samborski | Davor Kapsa | DeepMind Technologies | Delaney Gillilan | Dezmond Goff | Dong-hee Na | Dustin Spicuzza | Egon Elbre | Ekaterina Efimova | Ethan Burns | Evert Lammerts | Evgeny Savinov | Fabian Wickborn | Facundo Gaich | Fazlul Shahriar | Francesc Campoy | Google Inc | Gustaf Johansson | Hossein Zolfi | Iakov Davydov | Igor Mikushkin | Iskander Sharipov | Jalem Raj Rohit | James Bell | James Bowman | James Holmes <32bitkid@gmail.com> | Janne Snabb | Jeremy Atkinson | Jes Cok | Jinesi Yelizati | Jon Richards | Jonas Kahler | Jonas Schulze | Jonathan J Lawlor | Jonathan Reiter | Jonathan Schroeder | Joost van Amersfoort | Joseph Watson | Josh Wilson | Julien Roland | Kai Trukenmüller | Kent English | Kevin C. Zimmerman | Kirill Motkov | Konstantin Shaposhnikov | Leonid Kneller | Lyron Winderbaum | Marco Leogrande | Mark Canning | Mark Skilbeck | Martin Diz | Matthew Connelly | Matthieu Di Mercurio | Max Halford | Maxim Sergeev | Microsoft Corporation | MinJae Kwon | Nathan Edwards | Nick Potts | Nils Wogatzky | Olivier Wulveryck | Or Rikon | Patricio Whittingslow | Patrick DeVivo | Pontus Melke | Renee French | Rishi Desai | Robin Eklind | Roger Welin | Roman Werpachowski | Rondall Jones | Sam Zaydel | Samuel Kelemen | Saran Ahluwalia | Scott Holden | Scott Kiesel | Sebastien Binet | Shawn Smith | Sintela Ltd | Spencer Lyon | Steve McCoy | Taesu Pyo | Takeshi Yoneda | Tamir Hyman | The University of Adelaide | The University of Minnesota | The University of Washington | Thomas Berg | Tobin Harding | Valentin Deleplace | Vincent Thiery | Vladimír Chalupecký | Will Tekulve | Yasuhiro Matsumoto | Yevgeniy Vahlis | Yucheng Zhu | Yunomi | Zoe Juozapaitis | antichris | source{d} -core,gonum.org/v1/gonum/floats/scalar,BSD-3-Clause,Alexander Egurnov | Andrei Blinnikov | Andrew Brampton | Bailey Lissington | Bill Gray | Bill Noon | Brendan Tracey | Brent Pedersen | Bulat Khasanov | Chad Kunde | Chan Kwan Yin | Chih-Wei Chang | Chong-Yeol Nah | Chris Tessum | Christophe Meessen | Christopher Waldon | Clayton Northey | Copyright ©2013 The Gonum Authors. All rights reserved | Dan Kortschak | Dan Lorenc | Daniel Fireman | Dario Heinisch | David Kleiven | David Samborski | Davor Kapsa | DeepMind Technologies | Delaney Gillilan | Dezmond Goff | Dong-hee Na | Dustin Spicuzza | Egon Elbre | Ekaterina Efimova | Ethan Burns | Evert Lammerts | Evgeny Savinov | Fabian Wickborn | Facundo Gaich | Fazlul Shahriar | Francesc Campoy | Google Inc | Gustaf Johansson | Hossein Zolfi | Iakov Davydov | Igor Mikushkin | Iskander Sharipov | Jalem Raj Rohit | James Bell | James Bowman | James Holmes <32bitkid@gmail.com> | Janne Snabb | Jeremy Atkinson | Jes Cok | Jinesi Yelizati | Jon Richards | Jonas Kahler | Jonas Schulze | Jonathan J Lawlor | Jonathan Reiter | Jonathan Schroeder | Joost van Amersfoort | Joseph Watson | Josh Wilson | Julien Roland | Kai Trukenmüller | Kent English | Kevin C. Zimmerman | Kirill Motkov | Konstantin Shaposhnikov | Leonid Kneller | Lyron Winderbaum | Marco Leogrande | Mark Canning | Mark Skilbeck | Martin Diz | Matthew Connelly | Matthieu Di Mercurio | Max Halford | Maxim Sergeev | Microsoft Corporation | MinJae Kwon | Nathan Edwards | Nick Potts | Nils Wogatzky | Olivier Wulveryck | Or Rikon | Patricio Whittingslow | Patrick DeVivo | Pontus Melke | Renee French | Rishi Desai | Robin Eklind | Roger Welin | Roman Werpachowski | Rondall Jones | Sam Zaydel | Samuel Kelemen | Saran Ahluwalia | Scott Holden | Scott Kiesel | Sebastien Binet | Shawn Smith | Sintela Ltd | Spencer Lyon | Steve McCoy | Taesu Pyo | Takeshi Yoneda | Tamir Hyman | The University of Adelaide | The University of Minnesota | The University of Washington | Thomas Berg | Tobin Harding | Valentin Deleplace | Vincent Thiery | Vladimír Chalupecký | Will Tekulve | Yasuhiro Matsumoto | Yevgeniy Vahlis | Yucheng Zhu | Yunomi | Zoe Juozapaitis | antichris | source{d} -core,gonum.org/v1/gonum/graph,BSD-3-Clause,Alexander Egurnov | Andrei Blinnikov | Andrew Brampton | Bailey Lissington | Bill Gray | Bill Noon | Brendan Tracey | Brent Pedersen | Bulat Khasanov | Chad Kunde | Chan Kwan Yin | Chih-Wei Chang | Chong-Yeol Nah | Chris Tessum | Christophe Meessen | Christopher Waldon | Clayton Northey | Copyright ©2013 The Gonum Authors. All rights reserved | Dan Kortschak | Dan Lorenc | Daniel Fireman | Dario Heinisch | David Kleiven | David Samborski | Davor Kapsa | DeepMind Technologies | Delaney Gillilan | Dezmond Goff | Dong-hee Na | Dustin Spicuzza | Egon Elbre | Ekaterina Efimova | Ethan Burns | Evert Lammerts | Evgeny Savinov | Fabian Wickborn | Facundo Gaich | Fazlul Shahriar | Francesc Campoy | Google Inc | Gustaf Johansson | Hossein Zolfi | Iakov Davydov | Igor Mikushkin | Iskander Sharipov | Jalem Raj Rohit | James Bell | James Bowman | James Holmes <32bitkid@gmail.com> | Janne Snabb | Jeremy Atkinson | Jes Cok | Jinesi Yelizati | Jon Richards | Jonas Kahler | Jonas Schulze | Jonathan J Lawlor | Jonathan Reiter | Jonathan Schroeder | Joost van Amersfoort | Joseph Watson | Josh Wilson | Julien Roland | Kai Trukenmüller | Kent English | Kevin C. Zimmerman | Kirill Motkov | Konstantin Shaposhnikov | Leonid Kneller | Lyron Winderbaum | Marco Leogrande | Mark Canning | Mark Skilbeck | Martin Diz | Matthew Connelly | Matthieu Di Mercurio | Max Halford | Maxim Sergeev | Microsoft Corporation | MinJae Kwon | Nathan Edwards | Nick Potts | Nils Wogatzky | Olivier Wulveryck | Or Rikon | Patricio Whittingslow | Patrick DeVivo | Pontus Melke | Renee French | Rishi Desai | Robin Eklind | Roger Welin | Roman Werpachowski | Rondall Jones | Sam Zaydel | Samuel Kelemen | Saran Ahluwalia | Scott Holden | Scott Kiesel | Sebastien Binet | Shawn Smith | Sintela Ltd | Spencer Lyon | Steve McCoy | Taesu Pyo | Takeshi Yoneda | Tamir Hyman | The University of Adelaide | The University of Minnesota | The University of Washington | Thomas Berg | Tobin Harding | Valentin Deleplace | Vincent Thiery | Vladimír Chalupecký | Will Tekulve | Yasuhiro Matsumoto | Yevgeniy Vahlis | Yucheng Zhu | Yunomi | Zoe Juozapaitis | antichris | source{d} -core,gonum.org/v1/gonum/graph/internal/linear,BSD-3-Clause,Alexander Egurnov | Andrei Blinnikov | Andrew Brampton | Bailey Lissington | Bill Gray | Bill Noon | Brendan Tracey | Brent Pedersen | Bulat Khasanov | Chad Kunde | Chan Kwan Yin | Chih-Wei Chang | Chong-Yeol Nah | Chris Tessum | Christophe Meessen | Christopher Waldon | Clayton Northey | Copyright ©2013 The Gonum Authors. All rights reserved | Dan Kortschak | Dan Lorenc | Daniel Fireman | Dario Heinisch | David Kleiven | David Samborski | Davor Kapsa | DeepMind Technologies | Delaney Gillilan | Dezmond Goff | Dong-hee Na | Dustin Spicuzza | Egon Elbre | Ekaterina Efimova | Ethan Burns | Evert Lammerts | Evgeny Savinov | Fabian Wickborn | Facundo Gaich | Fazlul Shahriar | Francesc Campoy | Google Inc | Gustaf Johansson | Hossein Zolfi | Iakov Davydov | Igor Mikushkin | Iskander Sharipov | Jalem Raj Rohit | James Bell | James Bowman | James Holmes <32bitkid@gmail.com> | Janne Snabb | Jeremy Atkinson | Jes Cok | Jinesi Yelizati | Jon Richards | Jonas Kahler | Jonas Schulze | Jonathan J Lawlor | Jonathan Reiter | Jonathan Schroeder | Joost van Amersfoort | Joseph Watson | Josh Wilson | Julien Roland | Kai Trukenmüller | Kent English | Kevin C. Zimmerman | Kirill Motkov | Konstantin Shaposhnikov | Leonid Kneller | Lyron Winderbaum | Marco Leogrande | Mark Canning | Mark Skilbeck | Martin Diz | Matthew Connelly | Matthieu Di Mercurio | Max Halford | Maxim Sergeev | Microsoft Corporation | MinJae Kwon | Nathan Edwards | Nick Potts | Nils Wogatzky | Olivier Wulveryck | Or Rikon | Patricio Whittingslow | Patrick DeVivo | Pontus Melke | Renee French | Rishi Desai | Robin Eklind | Roger Welin | Roman Werpachowski | Rondall Jones | Sam Zaydel | Samuel Kelemen | Saran Ahluwalia | Scott Holden | Scott Kiesel | Sebastien Binet | Shawn Smith | Sintela Ltd | Spencer Lyon | Steve McCoy | Taesu Pyo | Takeshi Yoneda | Tamir Hyman | The University of Adelaide | The University of Minnesota | The University of Washington | Thomas Berg | Tobin Harding | Valentin Deleplace | Vincent Thiery | Vladimír Chalupecký | Will Tekulve | Yasuhiro Matsumoto | Yevgeniy Vahlis | Yucheng Zhu | Yunomi | Zoe Juozapaitis | antichris | source{d} -core,gonum.org/v1/gonum/graph/internal/ordered,BSD-3-Clause,Alexander Egurnov | Andrei Blinnikov | Andrew Brampton | Bailey Lissington | Bill Gray | Bill Noon | Brendan Tracey | Brent Pedersen | Bulat Khasanov | Chad Kunde | Chan Kwan Yin | Chih-Wei Chang | Chong-Yeol Nah | Chris Tessum | Christophe Meessen | Christopher Waldon | Clayton Northey | Copyright ©2013 The Gonum Authors. All rights reserved | Dan Kortschak | Dan Lorenc | Daniel Fireman | Dario Heinisch | David Kleiven | David Samborski | Davor Kapsa | DeepMind Technologies | Delaney Gillilan | Dezmond Goff | Dong-hee Na | Dustin Spicuzza | Egon Elbre | Ekaterina Efimova | Ethan Burns | Evert Lammerts | Evgeny Savinov | Fabian Wickborn | Facundo Gaich | Fazlul Shahriar | Francesc Campoy | Google Inc | Gustaf Johansson | Hossein Zolfi | Iakov Davydov | Igor Mikushkin | Iskander Sharipov | Jalem Raj Rohit | James Bell | James Bowman | James Holmes <32bitkid@gmail.com> | Janne Snabb | Jeremy Atkinson | Jes Cok | Jinesi Yelizati | Jon Richards | Jonas Kahler | Jonas Schulze | Jonathan J Lawlor | Jonathan Reiter | Jonathan Schroeder | Joost van Amersfoort | Joseph Watson | Josh Wilson | Julien Roland | Kai Trukenmüller | Kent English | Kevin C. Zimmerman | Kirill Motkov | Konstantin Shaposhnikov | Leonid Kneller | Lyron Winderbaum | Marco Leogrande | Mark Canning | Mark Skilbeck | Martin Diz | Matthew Connelly | Matthieu Di Mercurio | Max Halford | Maxim Sergeev | Microsoft Corporation | MinJae Kwon | Nathan Edwards | Nick Potts | Nils Wogatzky | Olivier Wulveryck | Or Rikon | Patricio Whittingslow | Patrick DeVivo | Pontus Melke | Renee French | Rishi Desai | Robin Eklind | Roger Welin | Roman Werpachowski | Rondall Jones | Sam Zaydel | Samuel Kelemen | Saran Ahluwalia | Scott Holden | Scott Kiesel | Sebastien Binet | Shawn Smith | Sintela Ltd | Spencer Lyon | Steve McCoy | Taesu Pyo | Takeshi Yoneda | Tamir Hyman | The University of Adelaide | The University of Minnesota | The University of Washington | Thomas Berg | Tobin Harding | Valentin Deleplace | Vincent Thiery | Vladimír Chalupecký | Will Tekulve | Yasuhiro Matsumoto | Yevgeniy Vahlis | Yucheng Zhu | Yunomi | Zoe Juozapaitis | antichris | source{d} -core,gonum.org/v1/gonum/graph/internal/set,BSD-3-Clause,Alexander Egurnov | Andrei Blinnikov | Andrew Brampton | Bailey Lissington | Bill Gray | Bill Noon | Brendan Tracey | Brent Pedersen | Bulat Khasanov | Chad Kunde | Chan Kwan Yin | Chih-Wei Chang | Chong-Yeol Nah | Chris Tessum | Christophe Meessen | Christopher Waldon | Clayton Northey | Copyright ©2013 The Gonum Authors. All rights reserved | Dan Kortschak | Dan Lorenc | Daniel Fireman | Dario Heinisch | David Kleiven | David Samborski | Davor Kapsa | DeepMind Technologies | Delaney Gillilan | Dezmond Goff | Dong-hee Na | Dustin Spicuzza | Egon Elbre | Ekaterina Efimova | Ethan Burns | Evert Lammerts | Evgeny Savinov | Fabian Wickborn | Facundo Gaich | Fazlul Shahriar | Francesc Campoy | Google Inc | Gustaf Johansson | Hossein Zolfi | Iakov Davydov | Igor Mikushkin | Iskander Sharipov | Jalem Raj Rohit | James Bell | James Bowman | James Holmes <32bitkid@gmail.com> | Janne Snabb | Jeremy Atkinson | Jes Cok | Jinesi Yelizati | Jon Richards | Jonas Kahler | Jonas Schulze | Jonathan J Lawlor | Jonathan Reiter | Jonathan Schroeder | Joost van Amersfoort | Joseph Watson | Josh Wilson | Julien Roland | Kai Trukenmüller | Kent English | Kevin C. Zimmerman | Kirill Motkov | Konstantin Shaposhnikov | Leonid Kneller | Lyron Winderbaum | Marco Leogrande | Mark Canning | Mark Skilbeck | Martin Diz | Matthew Connelly | Matthieu Di Mercurio | Max Halford | Maxim Sergeev | Microsoft Corporation | MinJae Kwon | Nathan Edwards | Nick Potts | Nils Wogatzky | Olivier Wulveryck | Or Rikon | Patricio Whittingslow | Patrick DeVivo | Pontus Melke | Renee French | Rishi Desai | Robin Eklind | Roger Welin | Roman Werpachowski | Rondall Jones | Sam Zaydel | Samuel Kelemen | Saran Ahluwalia | Scott Holden | Scott Kiesel | Sebastien Binet | Shawn Smith | Sintela Ltd | Spencer Lyon | Steve McCoy | Taesu Pyo | Takeshi Yoneda | Tamir Hyman | The University of Adelaide | The University of Minnesota | The University of Washington | Thomas Berg | Tobin Harding | Valentin Deleplace | Vincent Thiery | Vladimír Chalupecký | Will Tekulve | Yasuhiro Matsumoto | Yevgeniy Vahlis | Yucheng Zhu | Yunomi | Zoe Juozapaitis | antichris | source{d} -core,gonum.org/v1/gonum/graph/iterator,BSD-3-Clause,Alexander Egurnov | Andrei Blinnikov | Andrew Brampton | Bailey Lissington | Bill Gray | Bill Noon | Brendan Tracey | Brent Pedersen | Bulat Khasanov | Chad Kunde | Chan Kwan Yin | Chih-Wei Chang | Chong-Yeol Nah | Chris Tessum | Christophe Meessen | Christopher Waldon | Clayton Northey | Copyright ©2013 The Gonum Authors. All rights reserved | Dan Kortschak | Dan Lorenc | Daniel Fireman | Dario Heinisch | David Kleiven | David Samborski | Davor Kapsa | DeepMind Technologies | Delaney Gillilan | Dezmond Goff | Dong-hee Na | Dustin Spicuzza | Egon Elbre | Ekaterina Efimova | Ethan Burns | Evert Lammerts | Evgeny Savinov | Fabian Wickborn | Facundo Gaich | Fazlul Shahriar | Francesc Campoy | Google Inc | Gustaf Johansson | Hossein Zolfi | Iakov Davydov | Igor Mikushkin | Iskander Sharipov | Jalem Raj Rohit | James Bell | James Bowman | James Holmes <32bitkid@gmail.com> | Janne Snabb | Jeremy Atkinson | Jes Cok | Jinesi Yelizati | Jon Richards | Jonas Kahler | Jonas Schulze | Jonathan J Lawlor | Jonathan Reiter | Jonathan Schroeder | Joost van Amersfoort | Joseph Watson | Josh Wilson | Julien Roland | Kai Trukenmüller | Kent English | Kevin C. Zimmerman | Kirill Motkov | Konstantin Shaposhnikov | Leonid Kneller | Lyron Winderbaum | Marco Leogrande | Mark Canning | Mark Skilbeck | Martin Diz | Matthew Connelly | Matthieu Di Mercurio | Max Halford | Maxim Sergeev | Microsoft Corporation | MinJae Kwon | Nathan Edwards | Nick Potts | Nils Wogatzky | Olivier Wulveryck | Or Rikon | Patricio Whittingslow | Patrick DeVivo | Pontus Melke | Renee French | Rishi Desai | Robin Eklind | Roger Welin | Roman Werpachowski | Rondall Jones | Sam Zaydel | Samuel Kelemen | Saran Ahluwalia | Scott Holden | Scott Kiesel | Sebastien Binet | Shawn Smith | Sintela Ltd | Spencer Lyon | Steve McCoy | Taesu Pyo | Takeshi Yoneda | Tamir Hyman | The University of Adelaide | The University of Minnesota | The University of Washington | Thomas Berg | Tobin Harding | Valentin Deleplace | Vincent Thiery | Vladimír Chalupecký | Will Tekulve | Yasuhiro Matsumoto | Yevgeniy Vahlis | Yucheng Zhu | Yunomi | Zoe Juozapaitis | antichris | source{d} -core,gonum.org/v1/gonum/graph/set/uid,BSD-3-Clause,Alexander Egurnov | Andrei Blinnikov | Andrew Brampton | Bailey Lissington | Bill Gray | Bill Noon | Brendan Tracey | Brent Pedersen | Bulat Khasanov | Chad Kunde | Chan Kwan Yin | Chih-Wei Chang | Chong-Yeol Nah | Chris Tessum | Christophe Meessen | Christopher Waldon | Clayton Northey | Copyright ©2013 The Gonum Authors. All rights reserved | Dan Kortschak | Dan Lorenc | Daniel Fireman | Dario Heinisch | David Kleiven | David Samborski | Davor Kapsa | DeepMind Technologies | Delaney Gillilan | Dezmond Goff | Dong-hee Na | Dustin Spicuzza | Egon Elbre | Ekaterina Efimova | Ethan Burns | Evert Lammerts | Evgeny Savinov | Fabian Wickborn | Facundo Gaich | Fazlul Shahriar | Francesc Campoy | Google Inc | Gustaf Johansson | Hossein Zolfi | Iakov Davydov | Igor Mikushkin | Iskander Sharipov | Jalem Raj Rohit | James Bell | James Bowman | James Holmes <32bitkid@gmail.com> | Janne Snabb | Jeremy Atkinson | Jes Cok | Jinesi Yelizati | Jon Richards | Jonas Kahler | Jonas Schulze | Jonathan J Lawlor | Jonathan Reiter | Jonathan Schroeder | Joost van Amersfoort | Joseph Watson | Josh Wilson | Julien Roland | Kai Trukenmüller | Kent English | Kevin C. Zimmerman | Kirill Motkov | Konstantin Shaposhnikov | Leonid Kneller | Lyron Winderbaum | Marco Leogrande | Mark Canning | Mark Skilbeck | Martin Diz | Matthew Connelly | Matthieu Di Mercurio | Max Halford | Maxim Sergeev | Microsoft Corporation | MinJae Kwon | Nathan Edwards | Nick Potts | Nils Wogatzky | Olivier Wulveryck | Or Rikon | Patricio Whittingslow | Patrick DeVivo | Pontus Melke | Renee French | Rishi Desai | Robin Eklind | Roger Welin | Roman Werpachowski | Rondall Jones | Sam Zaydel | Samuel Kelemen | Saran Ahluwalia | Scott Holden | Scott Kiesel | Sebastien Binet | Shawn Smith | Sintela Ltd | Spencer Lyon | Steve McCoy | Taesu Pyo | Takeshi Yoneda | Tamir Hyman | The University of Adelaide | The University of Minnesota | The University of Washington | Thomas Berg | Tobin Harding | Valentin Deleplace | Vincent Thiery | Vladimír Chalupecký | Will Tekulve | Yasuhiro Matsumoto | Yevgeniy Vahlis | Yucheng Zhu | Yunomi | Zoe Juozapaitis | antichris | source{d} -core,gonum.org/v1/gonum/graph/simple,BSD-3-Clause,Alexander Egurnov | Andrei Blinnikov | Andrew Brampton | Bailey Lissington | Bill Gray | Bill Noon | Brendan Tracey | Brent Pedersen | Bulat Khasanov | Chad Kunde | Chan Kwan Yin | Chih-Wei Chang | Chong-Yeol Nah | Chris Tessum | Christophe Meessen | Christopher Waldon | Clayton Northey | Copyright ©2013 The Gonum Authors. All rights reserved | Dan Kortschak | Dan Lorenc | Daniel Fireman | Dario Heinisch | David Kleiven | David Samborski | Davor Kapsa | DeepMind Technologies | Delaney Gillilan | Dezmond Goff | Dong-hee Na | Dustin Spicuzza | Egon Elbre | Ekaterina Efimova | Ethan Burns | Evert Lammerts | Evgeny Savinov | Fabian Wickborn | Facundo Gaich | Fazlul Shahriar | Francesc Campoy | Google Inc | Gustaf Johansson | Hossein Zolfi | Iakov Davydov | Igor Mikushkin | Iskander Sharipov | Jalem Raj Rohit | James Bell | James Bowman | James Holmes <32bitkid@gmail.com> | Janne Snabb | Jeremy Atkinson | Jes Cok | Jinesi Yelizati | Jon Richards | Jonas Kahler | Jonas Schulze | Jonathan J Lawlor | Jonathan Reiter | Jonathan Schroeder | Joost van Amersfoort | Joseph Watson | Josh Wilson | Julien Roland | Kai Trukenmüller | Kent English | Kevin C. Zimmerman | Kirill Motkov | Konstantin Shaposhnikov | Leonid Kneller | Lyron Winderbaum | Marco Leogrande | Mark Canning | Mark Skilbeck | Martin Diz | Matthew Connelly | Matthieu Di Mercurio | Max Halford | Maxim Sergeev | Microsoft Corporation | MinJae Kwon | Nathan Edwards | Nick Potts | Nils Wogatzky | Olivier Wulveryck | Or Rikon | Patricio Whittingslow | Patrick DeVivo | Pontus Melke | Renee French | Rishi Desai | Robin Eklind | Roger Welin | Roman Werpachowski | Rondall Jones | Sam Zaydel | Samuel Kelemen | Saran Ahluwalia | Scott Holden | Scott Kiesel | Sebastien Binet | Shawn Smith | Sintela Ltd | Spencer Lyon | Steve McCoy | Taesu Pyo | Takeshi Yoneda | Tamir Hyman | The University of Adelaide | The University of Minnesota | The University of Washington | Thomas Berg | Tobin Harding | Valentin Deleplace | Vincent Thiery | Vladimír Chalupecký | Will Tekulve | Yasuhiro Matsumoto | Yevgeniy Vahlis | Yucheng Zhu | Yunomi | Zoe Juozapaitis | antichris | source{d} -core,gonum.org/v1/gonum/graph/topo,BSD-3-Clause,Alexander Egurnov | Andrei Blinnikov | Andrew Brampton | Bailey Lissington | Bill Gray | Bill Noon | Brendan Tracey | Brent Pedersen | Bulat Khasanov | Chad Kunde | Chan Kwan Yin | Chih-Wei Chang | Chong-Yeol Nah | Chris Tessum | Christophe Meessen | Christopher Waldon | Clayton Northey | Copyright ©2013 The Gonum Authors. All rights reserved | Dan Kortschak | Dan Lorenc | Daniel Fireman | Dario Heinisch | David Kleiven | David Samborski | Davor Kapsa | DeepMind Technologies | Delaney Gillilan | Dezmond Goff | Dong-hee Na | Dustin Spicuzza | Egon Elbre | Ekaterina Efimova | Ethan Burns | Evert Lammerts | Evgeny Savinov | Fabian Wickborn | Facundo Gaich | Fazlul Shahriar | Francesc Campoy | Google Inc | Gustaf Johansson | Hossein Zolfi | Iakov Davydov | Igor Mikushkin | Iskander Sharipov | Jalem Raj Rohit | James Bell | James Bowman | James Holmes <32bitkid@gmail.com> | Janne Snabb | Jeremy Atkinson | Jes Cok | Jinesi Yelizati | Jon Richards | Jonas Kahler | Jonas Schulze | Jonathan J Lawlor | Jonathan Reiter | Jonathan Schroeder | Joost van Amersfoort | Joseph Watson | Josh Wilson | Julien Roland | Kai Trukenmüller | Kent English | Kevin C. Zimmerman | Kirill Motkov | Konstantin Shaposhnikov | Leonid Kneller | Lyron Winderbaum | Marco Leogrande | Mark Canning | Mark Skilbeck | Martin Diz | Matthew Connelly | Matthieu Di Mercurio | Max Halford | Maxim Sergeev | Microsoft Corporation | MinJae Kwon | Nathan Edwards | Nick Potts | Nils Wogatzky | Olivier Wulveryck | Or Rikon | Patricio Whittingslow | Patrick DeVivo | Pontus Melke | Renee French | Rishi Desai | Robin Eklind | Roger Welin | Roman Werpachowski | Rondall Jones | Sam Zaydel | Samuel Kelemen | Saran Ahluwalia | Scott Holden | Scott Kiesel | Sebastien Binet | Shawn Smith | Sintela Ltd | Spencer Lyon | Steve McCoy | Taesu Pyo | Takeshi Yoneda | Tamir Hyman | The University of Adelaide | The University of Minnesota | The University of Washington | Thomas Berg | Tobin Harding | Valentin Deleplace | Vincent Thiery | Vladimír Chalupecký | Will Tekulve | Yasuhiro Matsumoto | Yevgeniy Vahlis | Yucheng Zhu | Yunomi | Zoe Juozapaitis | antichris | source{d} -core,gonum.org/v1/gonum/graph/traverse,BSD-3-Clause,Alexander Egurnov | Andrei Blinnikov | Andrew Brampton | Bailey Lissington | Bill Gray | Bill Noon | Brendan Tracey | Brent Pedersen | Bulat Khasanov | Chad Kunde | Chan Kwan Yin | Chih-Wei Chang | Chong-Yeol Nah | Chris Tessum | Christophe Meessen | Christopher Waldon | Clayton Northey | Copyright ©2013 The Gonum Authors. All rights reserved | Dan Kortschak | Dan Lorenc | Daniel Fireman | Dario Heinisch | David Kleiven | David Samborski | Davor Kapsa | DeepMind Technologies | Delaney Gillilan | Dezmond Goff | Dong-hee Na | Dustin Spicuzza | Egon Elbre | Ekaterina Efimova | Ethan Burns | Evert Lammerts | Evgeny Savinov | Fabian Wickborn | Facundo Gaich | Fazlul Shahriar | Francesc Campoy | Google Inc | Gustaf Johansson | Hossein Zolfi | Iakov Davydov | Igor Mikushkin | Iskander Sharipov | Jalem Raj Rohit | James Bell | James Bowman | James Holmes <32bitkid@gmail.com> | Janne Snabb | Jeremy Atkinson | Jes Cok | Jinesi Yelizati | Jon Richards | Jonas Kahler | Jonas Schulze | Jonathan J Lawlor | Jonathan Reiter | Jonathan Schroeder | Joost van Amersfoort | Joseph Watson | Josh Wilson | Julien Roland | Kai Trukenmüller | Kent English | Kevin C. Zimmerman | Kirill Motkov | Konstantin Shaposhnikov | Leonid Kneller | Lyron Winderbaum | Marco Leogrande | Mark Canning | Mark Skilbeck | Martin Diz | Matthew Connelly | Matthieu Di Mercurio | Max Halford | Maxim Sergeev | Microsoft Corporation | MinJae Kwon | Nathan Edwards | Nick Potts | Nils Wogatzky | Olivier Wulveryck | Or Rikon | Patricio Whittingslow | Patrick DeVivo | Pontus Melke | Renee French | Rishi Desai | Robin Eklind | Roger Welin | Roman Werpachowski | Rondall Jones | Sam Zaydel | Samuel Kelemen | Saran Ahluwalia | Scott Holden | Scott Kiesel | Sebastien Binet | Shawn Smith | Sintela Ltd | Spencer Lyon | Steve McCoy | Taesu Pyo | Takeshi Yoneda | Tamir Hyman | The University of Adelaide | The University of Minnesota | The University of Washington | Thomas Berg | Tobin Harding | Valentin Deleplace | Vincent Thiery | Vladimír Chalupecký | Will Tekulve | Yasuhiro Matsumoto | Yevgeniy Vahlis | Yucheng Zhu | Yunomi | Zoe Juozapaitis | antichris | source{d} -core,gonum.org/v1/gonum/internal/asm/c128,BSD-3-Clause,Alexander Egurnov | Andrei Blinnikov | Andrew Brampton | Bailey Lissington | Bill Gray | Bill Noon | Brendan Tracey | Brent Pedersen | Bulat Khasanov | Chad Kunde | Chan Kwan Yin | Chih-Wei Chang | Chong-Yeol Nah | Chris Tessum | Christophe Meessen | Christopher Waldon | Clayton Northey | Copyright ©2013 The Gonum Authors. All rights reserved | Dan Kortschak | Dan Lorenc | Daniel Fireman | Dario Heinisch | David Kleiven | David Samborski | Davor Kapsa | DeepMind Technologies | Delaney Gillilan | Dezmond Goff | Dong-hee Na | Dustin Spicuzza | Egon Elbre | Ekaterina Efimova | Ethan Burns | Evert Lammerts | Evgeny Savinov | Fabian Wickborn | Facundo Gaich | Fazlul Shahriar | Francesc Campoy | Google Inc | Gustaf Johansson | Hossein Zolfi | Iakov Davydov | Igor Mikushkin | Iskander Sharipov | Jalem Raj Rohit | James Bell | James Bowman | James Holmes <32bitkid@gmail.com> | Janne Snabb | Jeremy Atkinson | Jes Cok | Jinesi Yelizati | Jon Richards | Jonas Kahler | Jonas Schulze | Jonathan J Lawlor | Jonathan Reiter | Jonathan Schroeder | Joost van Amersfoort | Joseph Watson | Josh Wilson | Julien Roland | Kai Trukenmüller | Kent English | Kevin C. Zimmerman | Kirill Motkov | Konstantin Shaposhnikov | Leonid Kneller | Lyron Winderbaum | Marco Leogrande | Mark Canning | Mark Skilbeck | Martin Diz | Matthew Connelly | Matthieu Di Mercurio | Max Halford | Maxim Sergeev | Microsoft Corporation | MinJae Kwon | Nathan Edwards | Nick Potts | Nils Wogatzky | Olivier Wulveryck | Or Rikon | Patricio Whittingslow | Patrick DeVivo | Pontus Melke | Renee French | Rishi Desai | Robin Eklind | Roger Welin | Roman Werpachowski | Rondall Jones | Sam Zaydel | Samuel Kelemen | Saran Ahluwalia | Scott Holden | Scott Kiesel | Sebastien Binet | Shawn Smith | Sintela Ltd | Spencer Lyon | Steve McCoy | Taesu Pyo | Takeshi Yoneda | Tamir Hyman | The University of Adelaide | The University of Minnesota | The University of Washington | Thomas Berg | Tobin Harding | Valentin Deleplace | Vincent Thiery | Vladimír Chalupecký | Will Tekulve | Yasuhiro Matsumoto | Yevgeniy Vahlis | Yucheng Zhu | Yunomi | Zoe Juozapaitis | antichris | source{d} -core,gonum.org/v1/gonum/internal/asm/c64,BSD-3-Clause,Alexander Egurnov | Andrei Blinnikov | Andrew Brampton | Bailey Lissington | Bill Gray | Bill Noon | Brendan Tracey | Brent Pedersen | Bulat Khasanov | Chad Kunde | Chan Kwan Yin | Chih-Wei Chang | Chong-Yeol Nah | Chris Tessum | Christophe Meessen | Christopher Waldon | Clayton Northey | Copyright ©2013 The Gonum Authors. All rights reserved | Dan Kortschak | Dan Lorenc | Daniel Fireman | Dario Heinisch | David Kleiven | David Samborski | Davor Kapsa | DeepMind Technologies | Delaney Gillilan | Dezmond Goff | Dong-hee Na | Dustin Spicuzza | Egon Elbre | Ekaterina Efimova | Ethan Burns | Evert Lammerts | Evgeny Savinov | Fabian Wickborn | Facundo Gaich | Fazlul Shahriar | Francesc Campoy | Google Inc | Gustaf Johansson | Hossein Zolfi | Iakov Davydov | Igor Mikushkin | Iskander Sharipov | Jalem Raj Rohit | James Bell | James Bowman | James Holmes <32bitkid@gmail.com> | Janne Snabb | Jeremy Atkinson | Jes Cok | Jinesi Yelizati | Jon Richards | Jonas Kahler | Jonas Schulze | Jonathan J Lawlor | Jonathan Reiter | Jonathan Schroeder | Joost van Amersfoort | Joseph Watson | Josh Wilson | Julien Roland | Kai Trukenmüller | Kent English | Kevin C. Zimmerman | Kirill Motkov | Konstantin Shaposhnikov | Leonid Kneller | Lyron Winderbaum | Marco Leogrande | Mark Canning | Mark Skilbeck | Martin Diz | Matthew Connelly | Matthieu Di Mercurio | Max Halford | Maxim Sergeev | Microsoft Corporation | MinJae Kwon | Nathan Edwards | Nick Potts | Nils Wogatzky | Olivier Wulveryck | Or Rikon | Patricio Whittingslow | Patrick DeVivo | Pontus Melke | Renee French | Rishi Desai | Robin Eklind | Roger Welin | Roman Werpachowski | Rondall Jones | Sam Zaydel | Samuel Kelemen | Saran Ahluwalia | Scott Holden | Scott Kiesel | Sebastien Binet | Shawn Smith | Sintela Ltd | Spencer Lyon | Steve McCoy | Taesu Pyo | Takeshi Yoneda | Tamir Hyman | The University of Adelaide | The University of Minnesota | The University of Washington | Thomas Berg | Tobin Harding | Valentin Deleplace | Vincent Thiery | Vladimír Chalupecký | Will Tekulve | Yasuhiro Matsumoto | Yevgeniy Vahlis | Yucheng Zhu | Yunomi | Zoe Juozapaitis | antichris | source{d} -core,gonum.org/v1/gonum/internal/asm/f32,BSD-3-Clause,Alexander Egurnov | Andrei Blinnikov | Andrew Brampton | Bailey Lissington | Bill Gray | Bill Noon | Brendan Tracey | Brent Pedersen | Bulat Khasanov | Chad Kunde | Chan Kwan Yin | Chih-Wei Chang | Chong-Yeol Nah | Chris Tessum | Christophe Meessen | Christopher Waldon | Clayton Northey | Copyright ©2013 The Gonum Authors. All rights reserved | Dan Kortschak | Dan Lorenc | Daniel Fireman | Dario Heinisch | David Kleiven | David Samborski | Davor Kapsa | DeepMind Technologies | Delaney Gillilan | Dezmond Goff | Dong-hee Na | Dustin Spicuzza | Egon Elbre | Ekaterina Efimova | Ethan Burns | Evert Lammerts | Evgeny Savinov | Fabian Wickborn | Facundo Gaich | Fazlul Shahriar | Francesc Campoy | Google Inc | Gustaf Johansson | Hossein Zolfi | Iakov Davydov | Igor Mikushkin | Iskander Sharipov | Jalem Raj Rohit | James Bell | James Bowman | James Holmes <32bitkid@gmail.com> | Janne Snabb | Jeremy Atkinson | Jes Cok | Jinesi Yelizati | Jon Richards | Jonas Kahler | Jonas Schulze | Jonathan J Lawlor | Jonathan Reiter | Jonathan Schroeder | Joost van Amersfoort | Joseph Watson | Josh Wilson | Julien Roland | Kai Trukenmüller | Kent English | Kevin C. Zimmerman | Kirill Motkov | Konstantin Shaposhnikov | Leonid Kneller | Lyron Winderbaum | Marco Leogrande | Mark Canning | Mark Skilbeck | Martin Diz | Matthew Connelly | Matthieu Di Mercurio | Max Halford | Maxim Sergeev | Microsoft Corporation | MinJae Kwon | Nathan Edwards | Nick Potts | Nils Wogatzky | Olivier Wulveryck | Or Rikon | Patricio Whittingslow | Patrick DeVivo | Pontus Melke | Renee French | Rishi Desai | Robin Eklind | Roger Welin | Roman Werpachowski | Rondall Jones | Sam Zaydel | Samuel Kelemen | Saran Ahluwalia | Scott Holden | Scott Kiesel | Sebastien Binet | Shawn Smith | Sintela Ltd | Spencer Lyon | Steve McCoy | Taesu Pyo | Takeshi Yoneda | Tamir Hyman | The University of Adelaide | The University of Minnesota | The University of Washington | Thomas Berg | Tobin Harding | Valentin Deleplace | Vincent Thiery | Vladimír Chalupecký | Will Tekulve | Yasuhiro Matsumoto | Yevgeniy Vahlis | Yucheng Zhu | Yunomi | Zoe Juozapaitis | antichris | source{d} -core,gonum.org/v1/gonum/internal/asm/f64,BSD-3-Clause,Alexander Egurnov | Andrei Blinnikov | Andrew Brampton | Bailey Lissington | Bill Gray | Bill Noon | Brendan Tracey | Brent Pedersen | Bulat Khasanov | Chad Kunde | Chan Kwan Yin | Chih-Wei Chang | Chong-Yeol Nah | Chris Tessum | Christophe Meessen | Christopher Waldon | Clayton Northey | Copyright ©2013 The Gonum Authors. All rights reserved | Dan Kortschak | Dan Lorenc | Daniel Fireman | Dario Heinisch | David Kleiven | David Samborski | Davor Kapsa | DeepMind Technologies | Delaney Gillilan | Dezmond Goff | Dong-hee Na | Dustin Spicuzza | Egon Elbre | Ekaterina Efimova | Ethan Burns | Evert Lammerts | Evgeny Savinov | Fabian Wickborn | Facundo Gaich | Fazlul Shahriar | Francesc Campoy | Google Inc | Gustaf Johansson | Hossein Zolfi | Iakov Davydov | Igor Mikushkin | Iskander Sharipov | Jalem Raj Rohit | James Bell | James Bowman | James Holmes <32bitkid@gmail.com> | Janne Snabb | Jeremy Atkinson | Jes Cok | Jinesi Yelizati | Jon Richards | Jonas Kahler | Jonas Schulze | Jonathan J Lawlor | Jonathan Reiter | Jonathan Schroeder | Joost van Amersfoort | Joseph Watson | Josh Wilson | Julien Roland | Kai Trukenmüller | Kent English | Kevin C. Zimmerman | Kirill Motkov | Konstantin Shaposhnikov | Leonid Kneller | Lyron Winderbaum | Marco Leogrande | Mark Canning | Mark Skilbeck | Martin Diz | Matthew Connelly | Matthieu Di Mercurio | Max Halford | Maxim Sergeev | Microsoft Corporation | MinJae Kwon | Nathan Edwards | Nick Potts | Nils Wogatzky | Olivier Wulveryck | Or Rikon | Patricio Whittingslow | Patrick DeVivo | Pontus Melke | Renee French | Rishi Desai | Robin Eklind | Roger Welin | Roman Werpachowski | Rondall Jones | Sam Zaydel | Samuel Kelemen | Saran Ahluwalia | Scott Holden | Scott Kiesel | Sebastien Binet | Shawn Smith | Sintela Ltd | Spencer Lyon | Steve McCoy | Taesu Pyo | Takeshi Yoneda | Tamir Hyman | The University of Adelaide | The University of Minnesota | The University of Washington | Thomas Berg | Tobin Harding | Valentin Deleplace | Vincent Thiery | Vladimír Chalupecký | Will Tekulve | Yasuhiro Matsumoto | Yevgeniy Vahlis | Yucheng Zhu | Yunomi | Zoe Juozapaitis | antichris | source{d} -core,gonum.org/v1/gonum/internal/cmplx64,BSD-3-Clause,Alexander Egurnov | Andrei Blinnikov | Andrew Brampton | Bailey Lissington | Bill Gray | Bill Noon | Brendan Tracey | Brent Pedersen | Bulat Khasanov | Chad Kunde | Chan Kwan Yin | Chih-Wei Chang | Chong-Yeol Nah | Chris Tessum | Christophe Meessen | Christopher Waldon | Clayton Northey | Copyright ©2013 The Gonum Authors. All rights reserved | Dan Kortschak | Dan Lorenc | Daniel Fireman | Dario Heinisch | David Kleiven | David Samborski | Davor Kapsa | DeepMind Technologies | Delaney Gillilan | Dezmond Goff | Dong-hee Na | Dustin Spicuzza | Egon Elbre | Ekaterina Efimova | Ethan Burns | Evert Lammerts | Evgeny Savinov | Fabian Wickborn | Facundo Gaich | Fazlul Shahriar | Francesc Campoy | Google Inc | Gustaf Johansson | Hossein Zolfi | Iakov Davydov | Igor Mikushkin | Iskander Sharipov | Jalem Raj Rohit | James Bell | James Bowman | James Holmes <32bitkid@gmail.com> | Janne Snabb | Jeremy Atkinson | Jes Cok | Jinesi Yelizati | Jon Richards | Jonas Kahler | Jonas Schulze | Jonathan J Lawlor | Jonathan Reiter | Jonathan Schroeder | Joost van Amersfoort | Joseph Watson | Josh Wilson | Julien Roland | Kai Trukenmüller | Kent English | Kevin C. Zimmerman | Kirill Motkov | Konstantin Shaposhnikov | Leonid Kneller | Lyron Winderbaum | Marco Leogrande | Mark Canning | Mark Skilbeck | Martin Diz | Matthew Connelly | Matthieu Di Mercurio | Max Halford | Maxim Sergeev | Microsoft Corporation | MinJae Kwon | Nathan Edwards | Nick Potts | Nils Wogatzky | Olivier Wulveryck | Or Rikon | Patricio Whittingslow | Patrick DeVivo | Pontus Melke | Renee French | Rishi Desai | Robin Eklind | Roger Welin | Roman Werpachowski | Rondall Jones | Sam Zaydel | Samuel Kelemen | Saran Ahluwalia | Scott Holden | Scott Kiesel | Sebastien Binet | Shawn Smith | Sintela Ltd | Spencer Lyon | Steve McCoy | Taesu Pyo | Takeshi Yoneda | Tamir Hyman | The University of Adelaide | The University of Minnesota | The University of Washington | Thomas Berg | Tobin Harding | Valentin Deleplace | Vincent Thiery | Vladimír Chalupecký | Will Tekulve | Yasuhiro Matsumoto | Yevgeniy Vahlis | Yucheng Zhu | Yunomi | Zoe Juozapaitis | antichris | source{d} -core,gonum.org/v1/gonum/internal/math32,BSD-3-Clause,Alexander Egurnov | Andrei Blinnikov | Andrew Brampton | Bailey Lissington | Bill Gray | Bill Noon | Brendan Tracey | Brent Pedersen | Bulat Khasanov | Chad Kunde | Chan Kwan Yin | Chih-Wei Chang | Chong-Yeol Nah | Chris Tessum | Christophe Meessen | Christopher Waldon | Clayton Northey | Copyright ©2013 The Gonum Authors. All rights reserved | Dan Kortschak | Dan Lorenc | Daniel Fireman | Dario Heinisch | David Kleiven | David Samborski | Davor Kapsa | DeepMind Technologies | Delaney Gillilan | Dezmond Goff | Dong-hee Na | Dustin Spicuzza | Egon Elbre | Ekaterina Efimova | Ethan Burns | Evert Lammerts | Evgeny Savinov | Fabian Wickborn | Facundo Gaich | Fazlul Shahriar | Francesc Campoy | Google Inc | Gustaf Johansson | Hossein Zolfi | Iakov Davydov | Igor Mikushkin | Iskander Sharipov | Jalem Raj Rohit | James Bell | James Bowman | James Holmes <32bitkid@gmail.com> | Janne Snabb | Jeremy Atkinson | Jes Cok | Jinesi Yelizati | Jon Richards | Jonas Kahler | Jonas Schulze | Jonathan J Lawlor | Jonathan Reiter | Jonathan Schroeder | Joost van Amersfoort | Joseph Watson | Josh Wilson | Julien Roland | Kai Trukenmüller | Kent English | Kevin C. Zimmerman | Kirill Motkov | Konstantin Shaposhnikov | Leonid Kneller | Lyron Winderbaum | Marco Leogrande | Mark Canning | Mark Skilbeck | Martin Diz | Matthew Connelly | Matthieu Di Mercurio | Max Halford | Maxim Sergeev | Microsoft Corporation | MinJae Kwon | Nathan Edwards | Nick Potts | Nils Wogatzky | Olivier Wulveryck | Or Rikon | Patricio Whittingslow | Patrick DeVivo | Pontus Melke | Renee French | Rishi Desai | Robin Eklind | Roger Welin | Roman Werpachowski | Rondall Jones | Sam Zaydel | Samuel Kelemen | Saran Ahluwalia | Scott Holden | Scott Kiesel | Sebastien Binet | Shawn Smith | Sintela Ltd | Spencer Lyon | Steve McCoy | Taesu Pyo | Takeshi Yoneda | Tamir Hyman | The University of Adelaide | The University of Minnesota | The University of Washington | Thomas Berg | Tobin Harding | Valentin Deleplace | Vincent Thiery | Vladimír Chalupecký | Will Tekulve | Yasuhiro Matsumoto | Yevgeniy Vahlis | Yucheng Zhu | Yunomi | Zoe Juozapaitis | antichris | source{d} -core,gonum.org/v1/gonum/lapack,BSD-3-Clause,Alexander Egurnov | Andrei Blinnikov | Andrew Brampton | Bailey Lissington | Bill Gray | Bill Noon | Brendan Tracey | Brent Pedersen | Bulat Khasanov | Chad Kunde | Chan Kwan Yin | Chih-Wei Chang | Chong-Yeol Nah | Chris Tessum | Christophe Meessen | Christopher Waldon | Clayton Northey | Copyright ©2013 The Gonum Authors. All rights reserved | Dan Kortschak | Dan Lorenc | Daniel Fireman | Dario Heinisch | David Kleiven | David Samborski | Davor Kapsa | DeepMind Technologies | Delaney Gillilan | Dezmond Goff | Dong-hee Na | Dustin Spicuzza | Egon Elbre | Ekaterina Efimova | Ethan Burns | Evert Lammerts | Evgeny Savinov | Fabian Wickborn | Facundo Gaich | Fazlul Shahriar | Francesc Campoy | Google Inc | Gustaf Johansson | Hossein Zolfi | Iakov Davydov | Igor Mikushkin | Iskander Sharipov | Jalem Raj Rohit | James Bell | James Bowman | James Holmes <32bitkid@gmail.com> | Janne Snabb | Jeremy Atkinson | Jes Cok | Jinesi Yelizati | Jon Richards | Jonas Kahler | Jonas Schulze | Jonathan J Lawlor | Jonathan Reiter | Jonathan Schroeder | Joost van Amersfoort | Joseph Watson | Josh Wilson | Julien Roland | Kai Trukenmüller | Kent English | Kevin C. Zimmerman | Kirill Motkov | Konstantin Shaposhnikov | Leonid Kneller | Lyron Winderbaum | Marco Leogrande | Mark Canning | Mark Skilbeck | Martin Diz | Matthew Connelly | Matthieu Di Mercurio | Max Halford | Maxim Sergeev | Microsoft Corporation | MinJae Kwon | Nathan Edwards | Nick Potts | Nils Wogatzky | Olivier Wulveryck | Or Rikon | Patricio Whittingslow | Patrick DeVivo | Pontus Melke | Renee French | Rishi Desai | Robin Eklind | Roger Welin | Roman Werpachowski | Rondall Jones | Sam Zaydel | Samuel Kelemen | Saran Ahluwalia | Scott Holden | Scott Kiesel | Sebastien Binet | Shawn Smith | Sintela Ltd | Spencer Lyon | Steve McCoy | Taesu Pyo | Takeshi Yoneda | Tamir Hyman | The University of Adelaide | The University of Minnesota | The University of Washington | Thomas Berg | Tobin Harding | Valentin Deleplace | Vincent Thiery | Vladimír Chalupecký | Will Tekulve | Yasuhiro Matsumoto | Yevgeniy Vahlis | Yucheng Zhu | Yunomi | Zoe Juozapaitis | antichris | source{d} -core,gonum.org/v1/gonum/lapack/gonum,BSD-3-Clause,Alexander Egurnov | Andrei Blinnikov | Andrew Brampton | Bailey Lissington | Bill Gray | Bill Noon | Brendan Tracey | Brent Pedersen | Bulat Khasanov | Chad Kunde | Chan Kwan Yin | Chih-Wei Chang | Chong-Yeol Nah | Chris Tessum | Christophe Meessen | Christopher Waldon | Clayton Northey | Copyright ©2013 The Gonum Authors. All rights reserved | Dan Kortschak | Dan Lorenc | Daniel Fireman | Dario Heinisch | David Kleiven | David Samborski | Davor Kapsa | DeepMind Technologies | Delaney Gillilan | Dezmond Goff | Dong-hee Na | Dustin Spicuzza | Egon Elbre | Ekaterina Efimova | Ethan Burns | Evert Lammerts | Evgeny Savinov | Fabian Wickborn | Facundo Gaich | Fazlul Shahriar | Francesc Campoy | Google Inc | Gustaf Johansson | Hossein Zolfi | Iakov Davydov | Igor Mikushkin | Iskander Sharipov | Jalem Raj Rohit | James Bell | James Bowman | James Holmes <32bitkid@gmail.com> | Janne Snabb | Jeremy Atkinson | Jes Cok | Jinesi Yelizati | Jon Richards | Jonas Kahler | Jonas Schulze | Jonathan J Lawlor | Jonathan Reiter | Jonathan Schroeder | Joost van Amersfoort | Joseph Watson | Josh Wilson | Julien Roland | Kai Trukenmüller | Kent English | Kevin C. Zimmerman | Kirill Motkov | Konstantin Shaposhnikov | Leonid Kneller | Lyron Winderbaum | Marco Leogrande | Mark Canning | Mark Skilbeck | Martin Diz | Matthew Connelly | Matthieu Di Mercurio | Max Halford | Maxim Sergeev | Microsoft Corporation | MinJae Kwon | Nathan Edwards | Nick Potts | Nils Wogatzky | Olivier Wulveryck | Or Rikon | Patricio Whittingslow | Patrick DeVivo | Pontus Melke | Renee French | Rishi Desai | Robin Eklind | Roger Welin | Roman Werpachowski | Rondall Jones | Sam Zaydel | Samuel Kelemen | Saran Ahluwalia | Scott Holden | Scott Kiesel | Sebastien Binet | Shawn Smith | Sintela Ltd | Spencer Lyon | Steve McCoy | Taesu Pyo | Takeshi Yoneda | Tamir Hyman | The University of Adelaide | The University of Minnesota | The University of Washington | Thomas Berg | Tobin Harding | Valentin Deleplace | Vincent Thiery | Vladimír Chalupecký | Will Tekulve | Yasuhiro Matsumoto | Yevgeniy Vahlis | Yucheng Zhu | Yunomi | Zoe Juozapaitis | antichris | source{d} -core,gonum.org/v1/gonum/lapack/lapack64,BSD-3-Clause,Alexander Egurnov | Andrei Blinnikov | Andrew Brampton | Bailey Lissington | Bill Gray | Bill Noon | Brendan Tracey | Brent Pedersen | Bulat Khasanov | Chad Kunde | Chan Kwan Yin | Chih-Wei Chang | Chong-Yeol Nah | Chris Tessum | Christophe Meessen | Christopher Waldon | Clayton Northey | Copyright ©2013 The Gonum Authors. All rights reserved | Dan Kortschak | Dan Lorenc | Daniel Fireman | Dario Heinisch | David Kleiven | David Samborski | Davor Kapsa | DeepMind Technologies | Delaney Gillilan | Dezmond Goff | Dong-hee Na | Dustin Spicuzza | Egon Elbre | Ekaterina Efimova | Ethan Burns | Evert Lammerts | Evgeny Savinov | Fabian Wickborn | Facundo Gaich | Fazlul Shahriar | Francesc Campoy | Google Inc | Gustaf Johansson | Hossein Zolfi | Iakov Davydov | Igor Mikushkin | Iskander Sharipov | Jalem Raj Rohit | James Bell | James Bowman | James Holmes <32bitkid@gmail.com> | Janne Snabb | Jeremy Atkinson | Jes Cok | Jinesi Yelizati | Jon Richards | Jonas Kahler | Jonas Schulze | Jonathan J Lawlor | Jonathan Reiter | Jonathan Schroeder | Joost van Amersfoort | Joseph Watson | Josh Wilson | Julien Roland | Kai Trukenmüller | Kent English | Kevin C. Zimmerman | Kirill Motkov | Konstantin Shaposhnikov | Leonid Kneller | Lyron Winderbaum | Marco Leogrande | Mark Canning | Mark Skilbeck | Martin Diz | Matthew Connelly | Matthieu Di Mercurio | Max Halford | Maxim Sergeev | Microsoft Corporation | MinJae Kwon | Nathan Edwards | Nick Potts | Nils Wogatzky | Olivier Wulveryck | Or Rikon | Patricio Whittingslow | Patrick DeVivo | Pontus Melke | Renee French | Rishi Desai | Robin Eklind | Roger Welin | Roman Werpachowski | Rondall Jones | Sam Zaydel | Samuel Kelemen | Saran Ahluwalia | Scott Holden | Scott Kiesel | Sebastien Binet | Shawn Smith | Sintela Ltd | Spencer Lyon | Steve McCoy | Taesu Pyo | Takeshi Yoneda | Tamir Hyman | The University of Adelaide | The University of Minnesota | The University of Washington | Thomas Berg | Tobin Harding | Valentin Deleplace | Vincent Thiery | Vladimír Chalupecký | Will Tekulve | Yasuhiro Matsumoto | Yevgeniy Vahlis | Yucheng Zhu | Yunomi | Zoe Juozapaitis | antichris | source{d} -core,gonum.org/v1/gonum/mat,BSD-3-Clause,Alexander Egurnov | Andrei Blinnikov | Andrew Brampton | Bailey Lissington | Bill Gray | Bill Noon | Brendan Tracey | Brent Pedersen | Bulat Khasanov | Chad Kunde | Chan Kwan Yin | Chih-Wei Chang | Chong-Yeol Nah | Chris Tessum | Christophe Meessen | Christopher Waldon | Clayton Northey | Copyright ©2013 The Gonum Authors. All rights reserved | Dan Kortschak | Dan Lorenc | Daniel Fireman | Dario Heinisch | David Kleiven | David Samborski | Davor Kapsa | DeepMind Technologies | Delaney Gillilan | Dezmond Goff | Dong-hee Na | Dustin Spicuzza | Egon Elbre | Ekaterina Efimova | Ethan Burns | Evert Lammerts | Evgeny Savinov | Fabian Wickborn | Facundo Gaich | Fazlul Shahriar | Francesc Campoy | Google Inc | Gustaf Johansson | Hossein Zolfi | Iakov Davydov | Igor Mikushkin | Iskander Sharipov | Jalem Raj Rohit | James Bell | James Bowman | James Holmes <32bitkid@gmail.com> | Janne Snabb | Jeremy Atkinson | Jes Cok | Jinesi Yelizati | Jon Richards | Jonas Kahler | Jonas Schulze | Jonathan J Lawlor | Jonathan Reiter | Jonathan Schroeder | Joost van Amersfoort | Joseph Watson | Josh Wilson | Julien Roland | Kai Trukenmüller | Kent English | Kevin C. Zimmerman | Kirill Motkov | Konstantin Shaposhnikov | Leonid Kneller | Lyron Winderbaum | Marco Leogrande | Mark Canning | Mark Skilbeck | Martin Diz | Matthew Connelly | Matthieu Di Mercurio | Max Halford | Maxim Sergeev | Microsoft Corporation | MinJae Kwon | Nathan Edwards | Nick Potts | Nils Wogatzky | Olivier Wulveryck | Or Rikon | Patricio Whittingslow | Patrick DeVivo | Pontus Melke | Renee French | Rishi Desai | Robin Eklind | Roger Welin | Roman Werpachowski | Rondall Jones | Sam Zaydel | Samuel Kelemen | Saran Ahluwalia | Scott Holden | Scott Kiesel | Sebastien Binet | Shawn Smith | Sintela Ltd | Spencer Lyon | Steve McCoy | Taesu Pyo | Takeshi Yoneda | Tamir Hyman | The University of Adelaide | The University of Minnesota | The University of Washington | Thomas Berg | Tobin Harding | Valentin Deleplace | Vincent Thiery | Vladimír Chalupecký | Will Tekulve | Yasuhiro Matsumoto | Yevgeniy Vahlis | Yucheng Zhu | Yunomi | Zoe Juozapaitis | antichris | source{d} +core,gonum.org/v1/gonum/blas,BSD-3-Clause,Alexander Egurnov | Andrei Blinnikov | Andrew Brampton | Bailey Lissington | Bill Gray | Bill Noon | Brendan Tracey | Brent Pedersen | Bulat Khasanov | Chad Kunde | Chan Kwan Yin | Chih-Wei Chang | Chong-Yeol Nah | Chris Tessum | Christophe Meessen | Christopher Waldon | Clayton Northey | Copyright ©2013 The Gonum Authors. All rights reserved | Dan Kortschak | Dan Lorenc | Daniel Fireman | Dario Heinisch | David Kleiven | David Samborski | Davor Kapsa | DeepMind Technologies | Delaney Gillilan | Dezmond Goff | Dong-hee Na | Dustin Spicuzza | Egon Elbre | Ekaterina Efimova | Eng Zer Jun | Ethan Burns | Ethan Reesor | Evert Lammerts | Evgeny Savinov | Fabian Wickborn | Facundo Gaich | Fazlul Shahriar | Francesc Campoy | Google Inc | Gustaf Johansson | Hossein Zolfi | Iakov Davydov | Igor Mikushkin | Iskander Sharipov | Jalem Raj Rohit | James Bell | James Bowman | James Holmes <32bitkid@gmail.com> | Janne Snabb | Jeremy Atkinson | Jes Cok | Jinesi Yelizati | Jon Richards | Jonas Kahler | Jonas Schulze | Jonathan Bluett-Duncan | Jonathan J Lawlor | Jonathan Reiter | Jonathan Schroeder | Joost van Amersfoort | Jordan Stoker | Joseph Watson | Josh Wilson | Julien Roland | Kai Trukenmüller | Kent English | Kevin C. Zimmerman | Kirill Motkov | Konstantin Shaposhnikov | Leonid Kneller | Lyron Winderbaum | Marco Leogrande | Mark Canning | Mark Skilbeck | Martin Diz | Matthew Connelly | Matthieu Di Mercurio | Max Halford | Maxim Sergeev | Microsoft Corporation | MinJae Kwon | Nathan Edwards | Nick Potts | Nils Wogatzky | Olivier Wulveryck | Or Rikon | Patricio Whittingslow | Patrick DeVivo | Pontus Melke | Renee French | Rishi Desai | Robin Eklind | Roger Welin | Roman Werpachowski | Rondall Jones | Sam Zaydel | Samuel Kelemen | Saran Ahluwalia | Scott Holden | Scott Kiesel | Sebastien Binet | Shawn Smith | Sintela Ltd | Spencer Lyon | Steve McCoy | Taesu Pyo | Takeshi Yoneda | Tamir Hyman | The University of Adelaide | The University of Minnesota | The University of Washington | Thomas Berg | Tobin Harding | Valentin Deleplace | Vincent Thiery | Vladimír Chalupecký | Will Tekulve | Yasuhiro Matsumoto | Yevgeniy Vahlis | Yucheng Zhu | Yunomi | Zoe Juozapaitis | antichris | source{d} +core,gonum.org/v1/gonum/blas/blas64,BSD-3-Clause,Alexander Egurnov | Andrei Blinnikov | Andrew Brampton | Bailey Lissington | Bill Gray | Bill Noon | Brendan Tracey | Brent Pedersen | Bulat Khasanov | Chad Kunde | Chan Kwan Yin | Chih-Wei Chang | Chong-Yeol Nah | Chris Tessum | Christophe Meessen | Christopher Waldon | Clayton Northey | Copyright ©2013 The Gonum Authors. All rights reserved | Dan Kortschak | Dan Lorenc | Daniel Fireman | Dario Heinisch | David Kleiven | David Samborski | Davor Kapsa | DeepMind Technologies | Delaney Gillilan | Dezmond Goff | Dong-hee Na | Dustin Spicuzza | Egon Elbre | Ekaterina Efimova | Eng Zer Jun | Ethan Burns | Ethan Reesor | Evert Lammerts | Evgeny Savinov | Fabian Wickborn | Facundo Gaich | Fazlul Shahriar | Francesc Campoy | Google Inc | Gustaf Johansson | Hossein Zolfi | Iakov Davydov | Igor Mikushkin | Iskander Sharipov | Jalem Raj Rohit | James Bell | James Bowman | James Holmes <32bitkid@gmail.com> | Janne Snabb | Jeremy Atkinson | Jes Cok | Jinesi Yelizati | Jon Richards | Jonas Kahler | Jonas Schulze | Jonathan Bluett-Duncan | Jonathan J Lawlor | Jonathan Reiter | Jonathan Schroeder | Joost van Amersfoort | Jordan Stoker | Joseph Watson | Josh Wilson | Julien Roland | Kai Trukenmüller | Kent English | Kevin C. Zimmerman | Kirill Motkov | Konstantin Shaposhnikov | Leonid Kneller | Lyron Winderbaum | Marco Leogrande | Mark Canning | Mark Skilbeck | Martin Diz | Matthew Connelly | Matthieu Di Mercurio | Max Halford | Maxim Sergeev | Microsoft Corporation | MinJae Kwon | Nathan Edwards | Nick Potts | Nils Wogatzky | Olivier Wulveryck | Or Rikon | Patricio Whittingslow | Patrick DeVivo | Pontus Melke | Renee French | Rishi Desai | Robin Eklind | Roger Welin | Roman Werpachowski | Rondall Jones | Sam Zaydel | Samuel Kelemen | Saran Ahluwalia | Scott Holden | Scott Kiesel | Sebastien Binet | Shawn Smith | Sintela Ltd | Spencer Lyon | Steve McCoy | Taesu Pyo | Takeshi Yoneda | Tamir Hyman | The University of Adelaide | The University of Minnesota | The University of Washington | Thomas Berg | Tobin Harding | Valentin Deleplace | Vincent Thiery | Vladimír Chalupecký | Will Tekulve | Yasuhiro Matsumoto | Yevgeniy Vahlis | Yucheng Zhu | Yunomi | Zoe Juozapaitis | antichris | source{d} +core,gonum.org/v1/gonum/blas/cblas128,BSD-3-Clause,Alexander Egurnov | Andrei Blinnikov | Andrew Brampton | Bailey Lissington | Bill Gray | Bill Noon | Brendan Tracey | Brent Pedersen | Bulat Khasanov | Chad Kunde | Chan Kwan Yin | Chih-Wei Chang | Chong-Yeol Nah | Chris Tessum | Christophe Meessen | Christopher Waldon | Clayton Northey | Copyright ©2013 The Gonum Authors. All rights reserved | Dan Kortschak | Dan Lorenc | Daniel Fireman | Dario Heinisch | David Kleiven | David Samborski | Davor Kapsa | DeepMind Technologies | Delaney Gillilan | Dezmond Goff | Dong-hee Na | Dustin Spicuzza | Egon Elbre | Ekaterina Efimova | Eng Zer Jun | Ethan Burns | Ethan Reesor | Evert Lammerts | Evgeny Savinov | Fabian Wickborn | Facundo Gaich | Fazlul Shahriar | Francesc Campoy | Google Inc | Gustaf Johansson | Hossein Zolfi | Iakov Davydov | Igor Mikushkin | Iskander Sharipov | Jalem Raj Rohit | James Bell | James Bowman | James Holmes <32bitkid@gmail.com> | Janne Snabb | Jeremy Atkinson | Jes Cok | Jinesi Yelizati | Jon Richards | Jonas Kahler | Jonas Schulze | Jonathan Bluett-Duncan | Jonathan J Lawlor | Jonathan Reiter | Jonathan Schroeder | Joost van Amersfoort | Jordan Stoker | Joseph Watson | Josh Wilson | Julien Roland | Kai Trukenmüller | Kent English | Kevin C. Zimmerman | Kirill Motkov | Konstantin Shaposhnikov | Leonid Kneller | Lyron Winderbaum | Marco Leogrande | Mark Canning | Mark Skilbeck | Martin Diz | Matthew Connelly | Matthieu Di Mercurio | Max Halford | Maxim Sergeev | Microsoft Corporation | MinJae Kwon | Nathan Edwards | Nick Potts | Nils Wogatzky | Olivier Wulveryck | Or Rikon | Patricio Whittingslow | Patrick DeVivo | Pontus Melke | Renee French | Rishi Desai | Robin Eklind | Roger Welin | Roman Werpachowski | Rondall Jones | Sam Zaydel | Samuel Kelemen | Saran Ahluwalia | Scott Holden | Scott Kiesel | Sebastien Binet | Shawn Smith | Sintela Ltd | Spencer Lyon | Steve McCoy | Taesu Pyo | Takeshi Yoneda | Tamir Hyman | The University of Adelaide | The University of Minnesota | The University of Washington | Thomas Berg | Tobin Harding | Valentin Deleplace | Vincent Thiery | Vladimír Chalupecký | Will Tekulve | Yasuhiro Matsumoto | Yevgeniy Vahlis | Yucheng Zhu | Yunomi | Zoe Juozapaitis | antichris | source{d} +core,gonum.org/v1/gonum/blas/gonum,BSD-3-Clause,Alexander Egurnov | Andrei Blinnikov | Andrew Brampton | Bailey Lissington | Bill Gray | Bill Noon | Brendan Tracey | Brent Pedersen | Bulat Khasanov | Chad Kunde | Chan Kwan Yin | Chih-Wei Chang | Chong-Yeol Nah | Chris Tessum | Christophe Meessen | Christopher Waldon | Clayton Northey | Copyright ©2013 The Gonum Authors. All rights reserved | Dan Kortschak | Dan Lorenc | Daniel Fireman | Dario Heinisch | David Kleiven | David Samborski | Davor Kapsa | DeepMind Technologies | Delaney Gillilan | Dezmond Goff | Dong-hee Na | Dustin Spicuzza | Egon Elbre | Ekaterina Efimova | Eng Zer Jun | Ethan Burns | Ethan Reesor | Evert Lammerts | Evgeny Savinov | Fabian Wickborn | Facundo Gaich | Fazlul Shahriar | Francesc Campoy | Google Inc | Gustaf Johansson | Hossein Zolfi | Iakov Davydov | Igor Mikushkin | Iskander Sharipov | Jalem Raj Rohit | James Bell | James Bowman | James Holmes <32bitkid@gmail.com> | Janne Snabb | Jeremy Atkinson | Jes Cok | Jinesi Yelizati | Jon Richards | Jonas Kahler | Jonas Schulze | Jonathan Bluett-Duncan | Jonathan J Lawlor | Jonathan Reiter | Jonathan Schroeder | Joost van Amersfoort | Jordan Stoker | Joseph Watson | Josh Wilson | Julien Roland | Kai Trukenmüller | Kent English | Kevin C. Zimmerman | Kirill Motkov | Konstantin Shaposhnikov | Leonid Kneller | Lyron Winderbaum | Marco Leogrande | Mark Canning | Mark Skilbeck | Martin Diz | Matthew Connelly | Matthieu Di Mercurio | Max Halford | Maxim Sergeev | Microsoft Corporation | MinJae Kwon | Nathan Edwards | Nick Potts | Nils Wogatzky | Olivier Wulveryck | Or Rikon | Patricio Whittingslow | Patrick DeVivo | Pontus Melke | Renee French | Rishi Desai | Robin Eklind | Roger Welin | Roman Werpachowski | Rondall Jones | Sam Zaydel | Samuel Kelemen | Saran Ahluwalia | Scott Holden | Scott Kiesel | Sebastien Binet | Shawn Smith | Sintela Ltd | Spencer Lyon | Steve McCoy | Taesu Pyo | Takeshi Yoneda | Tamir Hyman | The University of Adelaide | The University of Minnesota | The University of Washington | Thomas Berg | Tobin Harding | Valentin Deleplace | Vincent Thiery | Vladimír Chalupecký | Will Tekulve | Yasuhiro Matsumoto | Yevgeniy Vahlis | Yucheng Zhu | Yunomi | Zoe Juozapaitis | antichris | source{d} +core,gonum.org/v1/gonum/floats,BSD-3-Clause,Alexander Egurnov | Andrei Blinnikov | Andrew Brampton | Bailey Lissington | Bill Gray | Bill Noon | Brendan Tracey | Brent Pedersen | Bulat Khasanov | Chad Kunde | Chan Kwan Yin | Chih-Wei Chang | Chong-Yeol Nah | Chris Tessum | Christophe Meessen | Christopher Waldon | Clayton Northey | Copyright ©2013 The Gonum Authors. All rights reserved | Dan Kortschak | Dan Lorenc | Daniel Fireman | Dario Heinisch | David Kleiven | David Samborski | Davor Kapsa | DeepMind Technologies | Delaney Gillilan | Dezmond Goff | Dong-hee Na | Dustin Spicuzza | Egon Elbre | Ekaterina Efimova | Eng Zer Jun | Ethan Burns | Ethan Reesor | Evert Lammerts | Evgeny Savinov | Fabian Wickborn | Facundo Gaich | Fazlul Shahriar | Francesc Campoy | Google Inc | Gustaf Johansson | Hossein Zolfi | Iakov Davydov | Igor Mikushkin | Iskander Sharipov | Jalem Raj Rohit | James Bell | James Bowman | James Holmes <32bitkid@gmail.com> | Janne Snabb | Jeremy Atkinson | Jes Cok | Jinesi Yelizati | Jon Richards | Jonas Kahler | Jonas Schulze | Jonathan Bluett-Duncan | Jonathan J Lawlor | Jonathan Reiter | Jonathan Schroeder | Joost van Amersfoort | Jordan Stoker | Joseph Watson | Josh Wilson | Julien Roland | Kai Trukenmüller | Kent English | Kevin C. Zimmerman | Kirill Motkov | Konstantin Shaposhnikov | Leonid Kneller | Lyron Winderbaum | Marco Leogrande | Mark Canning | Mark Skilbeck | Martin Diz | Matthew Connelly | Matthieu Di Mercurio | Max Halford | Maxim Sergeev | Microsoft Corporation | MinJae Kwon | Nathan Edwards | Nick Potts | Nils Wogatzky | Olivier Wulveryck | Or Rikon | Patricio Whittingslow | Patrick DeVivo | Pontus Melke | Renee French | Rishi Desai | Robin Eklind | Roger Welin | Roman Werpachowski | Rondall Jones | Sam Zaydel | Samuel Kelemen | Saran Ahluwalia | Scott Holden | Scott Kiesel | Sebastien Binet | Shawn Smith | Sintela Ltd | Spencer Lyon | Steve McCoy | Taesu Pyo | Takeshi Yoneda | Tamir Hyman | The University of Adelaide | The University of Minnesota | The University of Washington | Thomas Berg | Tobin Harding | Valentin Deleplace | Vincent Thiery | Vladimír Chalupecký | Will Tekulve | Yasuhiro Matsumoto | Yevgeniy Vahlis | Yucheng Zhu | Yunomi | Zoe Juozapaitis | antichris | source{d} +core,gonum.org/v1/gonum/floats/scalar,BSD-3-Clause,Alexander Egurnov | Andrei Blinnikov | Andrew Brampton | Bailey Lissington | Bill Gray | Bill Noon | Brendan Tracey | Brent Pedersen | Bulat Khasanov | Chad Kunde | Chan Kwan Yin | Chih-Wei Chang | Chong-Yeol Nah | Chris Tessum | Christophe Meessen | Christopher Waldon | Clayton Northey | Copyright ©2013 The Gonum Authors. All rights reserved | Dan Kortschak | Dan Lorenc | Daniel Fireman | Dario Heinisch | David Kleiven | David Samborski | Davor Kapsa | DeepMind Technologies | Delaney Gillilan | Dezmond Goff | Dong-hee Na | Dustin Spicuzza | Egon Elbre | Ekaterina Efimova | Eng Zer Jun | Ethan Burns | Ethan Reesor | Evert Lammerts | Evgeny Savinov | Fabian Wickborn | Facundo Gaich | Fazlul Shahriar | Francesc Campoy | Google Inc | Gustaf Johansson | Hossein Zolfi | Iakov Davydov | Igor Mikushkin | Iskander Sharipov | Jalem Raj Rohit | James Bell | James Bowman | James Holmes <32bitkid@gmail.com> | Janne Snabb | Jeremy Atkinson | Jes Cok | Jinesi Yelizati | Jon Richards | Jonas Kahler | Jonas Schulze | Jonathan Bluett-Duncan | Jonathan J Lawlor | Jonathan Reiter | Jonathan Schroeder | Joost van Amersfoort | Jordan Stoker | Joseph Watson | Josh Wilson | Julien Roland | Kai Trukenmüller | Kent English | Kevin C. Zimmerman | Kirill Motkov | Konstantin Shaposhnikov | Leonid Kneller | Lyron Winderbaum | Marco Leogrande | Mark Canning | Mark Skilbeck | Martin Diz | Matthew Connelly | Matthieu Di Mercurio | Max Halford | Maxim Sergeev | Microsoft Corporation | MinJae Kwon | Nathan Edwards | Nick Potts | Nils Wogatzky | Olivier Wulveryck | Or Rikon | Patricio Whittingslow | Patrick DeVivo | Pontus Melke | Renee French | Rishi Desai | Robin Eklind | Roger Welin | Roman Werpachowski | Rondall Jones | Sam Zaydel | Samuel Kelemen | Saran Ahluwalia | Scott Holden | Scott Kiesel | Sebastien Binet | Shawn Smith | Sintela Ltd | Spencer Lyon | Steve McCoy | Taesu Pyo | Takeshi Yoneda | Tamir Hyman | The University of Adelaide | The University of Minnesota | The University of Washington | Thomas Berg | Tobin Harding | Valentin Deleplace | Vincent Thiery | Vladimír Chalupecký | Will Tekulve | Yasuhiro Matsumoto | Yevgeniy Vahlis | Yucheng Zhu | Yunomi | Zoe Juozapaitis | antichris | source{d} +core,gonum.org/v1/gonum/graph,BSD-3-Clause,Alexander Egurnov | Andrei Blinnikov | Andrew Brampton | Bailey Lissington | Bill Gray | Bill Noon | Brendan Tracey | Brent Pedersen | Bulat Khasanov | Chad Kunde | Chan Kwan Yin | Chih-Wei Chang | Chong-Yeol Nah | Chris Tessum | Christophe Meessen | Christopher Waldon | Clayton Northey | Copyright ©2013 The Gonum Authors. All rights reserved | Dan Kortschak | Dan Lorenc | Daniel Fireman | Dario Heinisch | David Kleiven | David Samborski | Davor Kapsa | DeepMind Technologies | Delaney Gillilan | Dezmond Goff | Dong-hee Na | Dustin Spicuzza | Egon Elbre | Ekaterina Efimova | Eng Zer Jun | Ethan Burns | Ethan Reesor | Evert Lammerts | Evgeny Savinov | Fabian Wickborn | Facundo Gaich | Fazlul Shahriar | Francesc Campoy | Google Inc | Gustaf Johansson | Hossein Zolfi | Iakov Davydov | Igor Mikushkin | Iskander Sharipov | Jalem Raj Rohit | James Bell | James Bowman | James Holmes <32bitkid@gmail.com> | Janne Snabb | Jeremy Atkinson | Jes Cok | Jinesi Yelizati | Jon Richards | Jonas Kahler | Jonas Schulze | Jonathan Bluett-Duncan | Jonathan J Lawlor | Jonathan Reiter | Jonathan Schroeder | Joost van Amersfoort | Jordan Stoker | Joseph Watson | Josh Wilson | Julien Roland | Kai Trukenmüller | Kent English | Kevin C. Zimmerman | Kirill Motkov | Konstantin Shaposhnikov | Leonid Kneller | Lyron Winderbaum | Marco Leogrande | Mark Canning | Mark Skilbeck | Martin Diz | Matthew Connelly | Matthieu Di Mercurio | Max Halford | Maxim Sergeev | Microsoft Corporation | MinJae Kwon | Nathan Edwards | Nick Potts | Nils Wogatzky | Olivier Wulveryck | Or Rikon | Patricio Whittingslow | Patrick DeVivo | Pontus Melke | Renee French | Rishi Desai | Robin Eklind | Roger Welin | Roman Werpachowski | Rondall Jones | Sam Zaydel | Samuel Kelemen | Saran Ahluwalia | Scott Holden | Scott Kiesel | Sebastien Binet | Shawn Smith | Sintela Ltd | Spencer Lyon | Steve McCoy | Taesu Pyo | Takeshi Yoneda | Tamir Hyman | The University of Adelaide | The University of Minnesota | The University of Washington | Thomas Berg | Tobin Harding | Valentin Deleplace | Vincent Thiery | Vladimír Chalupecký | Will Tekulve | Yasuhiro Matsumoto | Yevgeniy Vahlis | Yucheng Zhu | Yunomi | Zoe Juozapaitis | antichris | source{d} +core,gonum.org/v1/gonum/graph/internal/linear,BSD-3-Clause,Alexander Egurnov | Andrei Blinnikov | Andrew Brampton | Bailey Lissington | Bill Gray | Bill Noon | Brendan Tracey | Brent Pedersen | Bulat Khasanov | Chad Kunde | Chan Kwan Yin | Chih-Wei Chang | Chong-Yeol Nah | Chris Tessum | Christophe Meessen | Christopher Waldon | Clayton Northey | Copyright ©2013 The Gonum Authors. All rights reserved | Dan Kortschak | Dan Lorenc | Daniel Fireman | Dario Heinisch | David Kleiven | David Samborski | Davor Kapsa | DeepMind Technologies | Delaney Gillilan | Dezmond Goff | Dong-hee Na | Dustin Spicuzza | Egon Elbre | Ekaterina Efimova | Eng Zer Jun | Ethan Burns | Ethan Reesor | Evert Lammerts | Evgeny Savinov | Fabian Wickborn | Facundo Gaich | Fazlul Shahriar | Francesc Campoy | Google Inc | Gustaf Johansson | Hossein Zolfi | Iakov Davydov | Igor Mikushkin | Iskander Sharipov | Jalem Raj Rohit | James Bell | James Bowman | James Holmes <32bitkid@gmail.com> | Janne Snabb | Jeremy Atkinson | Jes Cok | Jinesi Yelizati | Jon Richards | Jonas Kahler | Jonas Schulze | Jonathan Bluett-Duncan | Jonathan J Lawlor | Jonathan Reiter | Jonathan Schroeder | Joost van Amersfoort | Jordan Stoker | Joseph Watson | Josh Wilson | Julien Roland | Kai Trukenmüller | Kent English | Kevin C. Zimmerman | Kirill Motkov | Konstantin Shaposhnikov | Leonid Kneller | Lyron Winderbaum | Marco Leogrande | Mark Canning | Mark Skilbeck | Martin Diz | Matthew Connelly | Matthieu Di Mercurio | Max Halford | Maxim Sergeev | Microsoft Corporation | MinJae Kwon | Nathan Edwards | Nick Potts | Nils Wogatzky | Olivier Wulveryck | Or Rikon | Patricio Whittingslow | Patrick DeVivo | Pontus Melke | Renee French | Rishi Desai | Robin Eklind | Roger Welin | Roman Werpachowski | Rondall Jones | Sam Zaydel | Samuel Kelemen | Saran Ahluwalia | Scott Holden | Scott Kiesel | Sebastien Binet | Shawn Smith | Sintela Ltd | Spencer Lyon | Steve McCoy | Taesu Pyo | Takeshi Yoneda | Tamir Hyman | The University of Adelaide | The University of Minnesota | The University of Washington | Thomas Berg | Tobin Harding | Valentin Deleplace | Vincent Thiery | Vladimír Chalupecký | Will Tekulve | Yasuhiro Matsumoto | Yevgeniy Vahlis | Yucheng Zhu | Yunomi | Zoe Juozapaitis | antichris | source{d} +core,gonum.org/v1/gonum/graph/internal/ordered,BSD-3-Clause,Alexander Egurnov | Andrei Blinnikov | Andrew Brampton | Bailey Lissington | Bill Gray | Bill Noon | Brendan Tracey | Brent Pedersen | Bulat Khasanov | Chad Kunde | Chan Kwan Yin | Chih-Wei Chang | Chong-Yeol Nah | Chris Tessum | Christophe Meessen | Christopher Waldon | Clayton Northey | Copyright ©2013 The Gonum Authors. All rights reserved | Dan Kortschak | Dan Lorenc | Daniel Fireman | Dario Heinisch | David Kleiven | David Samborski | Davor Kapsa | DeepMind Technologies | Delaney Gillilan | Dezmond Goff | Dong-hee Na | Dustin Spicuzza | Egon Elbre | Ekaterina Efimova | Eng Zer Jun | Ethan Burns | Ethan Reesor | Evert Lammerts | Evgeny Savinov | Fabian Wickborn | Facundo Gaich | Fazlul Shahriar | Francesc Campoy | Google Inc | Gustaf Johansson | Hossein Zolfi | Iakov Davydov | Igor Mikushkin | Iskander Sharipov | Jalem Raj Rohit | James Bell | James Bowman | James Holmes <32bitkid@gmail.com> | Janne Snabb | Jeremy Atkinson | Jes Cok | Jinesi Yelizati | Jon Richards | Jonas Kahler | Jonas Schulze | Jonathan Bluett-Duncan | Jonathan J Lawlor | Jonathan Reiter | Jonathan Schroeder | Joost van Amersfoort | Jordan Stoker | Joseph Watson | Josh Wilson | Julien Roland | Kai Trukenmüller | Kent English | Kevin C. Zimmerman | Kirill Motkov | Konstantin Shaposhnikov | Leonid Kneller | Lyron Winderbaum | Marco Leogrande | Mark Canning | Mark Skilbeck | Martin Diz | Matthew Connelly | Matthieu Di Mercurio | Max Halford | Maxim Sergeev | Microsoft Corporation | MinJae Kwon | Nathan Edwards | Nick Potts | Nils Wogatzky | Olivier Wulveryck | Or Rikon | Patricio Whittingslow | Patrick DeVivo | Pontus Melke | Renee French | Rishi Desai | Robin Eklind | Roger Welin | Roman Werpachowski | Rondall Jones | Sam Zaydel | Samuel Kelemen | Saran Ahluwalia | Scott Holden | Scott Kiesel | Sebastien Binet | Shawn Smith | Sintela Ltd | Spencer Lyon | Steve McCoy | Taesu Pyo | Takeshi Yoneda | Tamir Hyman | The University of Adelaide | The University of Minnesota | The University of Washington | Thomas Berg | Tobin Harding | Valentin Deleplace | Vincent Thiery | Vladimír Chalupecký | Will Tekulve | Yasuhiro Matsumoto | Yevgeniy Vahlis | Yucheng Zhu | Yunomi | Zoe Juozapaitis | antichris | source{d} +core,gonum.org/v1/gonum/graph/internal/set,BSD-3-Clause,Alexander Egurnov | Andrei Blinnikov | Andrew Brampton | Bailey Lissington | Bill Gray | Bill Noon | Brendan Tracey | Brent Pedersen | Bulat Khasanov | Chad Kunde | Chan Kwan Yin | Chih-Wei Chang | Chong-Yeol Nah | Chris Tessum | Christophe Meessen | Christopher Waldon | Clayton Northey | Copyright ©2013 The Gonum Authors. All rights reserved | Dan Kortschak | Dan Lorenc | Daniel Fireman | Dario Heinisch | David Kleiven | David Samborski | Davor Kapsa | DeepMind Technologies | Delaney Gillilan | Dezmond Goff | Dong-hee Na | Dustin Spicuzza | Egon Elbre | Ekaterina Efimova | Eng Zer Jun | Ethan Burns | Ethan Reesor | Evert Lammerts | Evgeny Savinov | Fabian Wickborn | Facundo Gaich | Fazlul Shahriar | Francesc Campoy | Google Inc | Gustaf Johansson | Hossein Zolfi | Iakov Davydov | Igor Mikushkin | Iskander Sharipov | Jalem Raj Rohit | James Bell | James Bowman | James Holmes <32bitkid@gmail.com> | Janne Snabb | Jeremy Atkinson | Jes Cok | Jinesi Yelizati | Jon Richards | Jonas Kahler | Jonas Schulze | Jonathan Bluett-Duncan | Jonathan J Lawlor | Jonathan Reiter | Jonathan Schroeder | Joost van Amersfoort | Jordan Stoker | Joseph Watson | Josh Wilson | Julien Roland | Kai Trukenmüller | Kent English | Kevin C. Zimmerman | Kirill Motkov | Konstantin Shaposhnikov | Leonid Kneller | Lyron Winderbaum | Marco Leogrande | Mark Canning | Mark Skilbeck | Martin Diz | Matthew Connelly | Matthieu Di Mercurio | Max Halford | Maxim Sergeev | Microsoft Corporation | MinJae Kwon | Nathan Edwards | Nick Potts | Nils Wogatzky | Olivier Wulveryck | Or Rikon | Patricio Whittingslow | Patrick DeVivo | Pontus Melke | Renee French | Rishi Desai | Robin Eklind | Roger Welin | Roman Werpachowski | Rondall Jones | Sam Zaydel | Samuel Kelemen | Saran Ahluwalia | Scott Holden | Scott Kiesel | Sebastien Binet | Shawn Smith | Sintela Ltd | Spencer Lyon | Steve McCoy | Taesu Pyo | Takeshi Yoneda | Tamir Hyman | The University of Adelaide | The University of Minnesota | The University of Washington | Thomas Berg | Tobin Harding | Valentin Deleplace | Vincent Thiery | Vladimír Chalupecký | Will Tekulve | Yasuhiro Matsumoto | Yevgeniy Vahlis | Yucheng Zhu | Yunomi | Zoe Juozapaitis | antichris | source{d} +core,gonum.org/v1/gonum/graph/iterator,BSD-3-Clause,Alexander Egurnov | Andrei Blinnikov | Andrew Brampton | Bailey Lissington | Bill Gray | Bill Noon | Brendan Tracey | Brent Pedersen | Bulat Khasanov | Chad Kunde | Chan Kwan Yin | Chih-Wei Chang | Chong-Yeol Nah | Chris Tessum | Christophe Meessen | Christopher Waldon | Clayton Northey | Copyright ©2013 The Gonum Authors. All rights reserved | Dan Kortschak | Dan Lorenc | Daniel Fireman | Dario Heinisch | David Kleiven | David Samborski | Davor Kapsa | DeepMind Technologies | Delaney Gillilan | Dezmond Goff | Dong-hee Na | Dustin Spicuzza | Egon Elbre | Ekaterina Efimova | Eng Zer Jun | Ethan Burns | Ethan Reesor | Evert Lammerts | Evgeny Savinov | Fabian Wickborn | Facundo Gaich | Fazlul Shahriar | Francesc Campoy | Google Inc | Gustaf Johansson | Hossein Zolfi | Iakov Davydov | Igor Mikushkin | Iskander Sharipov | Jalem Raj Rohit | James Bell | James Bowman | James Holmes <32bitkid@gmail.com> | Janne Snabb | Jeremy Atkinson | Jes Cok | Jinesi Yelizati | Jon Richards | Jonas Kahler | Jonas Schulze | Jonathan Bluett-Duncan | Jonathan J Lawlor | Jonathan Reiter | Jonathan Schroeder | Joost van Amersfoort | Jordan Stoker | Joseph Watson | Josh Wilson | Julien Roland | Kai Trukenmüller | Kent English | Kevin C. Zimmerman | Kirill Motkov | Konstantin Shaposhnikov | Leonid Kneller | Lyron Winderbaum | Marco Leogrande | Mark Canning | Mark Skilbeck | Martin Diz | Matthew Connelly | Matthieu Di Mercurio | Max Halford | Maxim Sergeev | Microsoft Corporation | MinJae Kwon | Nathan Edwards | Nick Potts | Nils Wogatzky | Olivier Wulveryck | Or Rikon | Patricio Whittingslow | Patrick DeVivo | Pontus Melke | Renee French | Rishi Desai | Robin Eklind | Roger Welin | Roman Werpachowski | Rondall Jones | Sam Zaydel | Samuel Kelemen | Saran Ahluwalia | Scott Holden | Scott Kiesel | Sebastien Binet | Shawn Smith | Sintela Ltd | Spencer Lyon | Steve McCoy | Taesu Pyo | Takeshi Yoneda | Tamir Hyman | The University of Adelaide | The University of Minnesota | The University of Washington | Thomas Berg | Tobin Harding | Valentin Deleplace | Vincent Thiery | Vladimír Chalupecký | Will Tekulve | Yasuhiro Matsumoto | Yevgeniy Vahlis | Yucheng Zhu | Yunomi | Zoe Juozapaitis | antichris | source{d} +core,gonum.org/v1/gonum/graph/set/uid,BSD-3-Clause,Alexander Egurnov | Andrei Blinnikov | Andrew Brampton | Bailey Lissington | Bill Gray | Bill Noon | Brendan Tracey | Brent Pedersen | Bulat Khasanov | Chad Kunde | Chan Kwan Yin | Chih-Wei Chang | Chong-Yeol Nah | Chris Tessum | Christophe Meessen | Christopher Waldon | Clayton Northey | Copyright ©2013 The Gonum Authors. All rights reserved | Dan Kortschak | Dan Lorenc | Daniel Fireman | Dario Heinisch | David Kleiven | David Samborski | Davor Kapsa | DeepMind Technologies | Delaney Gillilan | Dezmond Goff | Dong-hee Na | Dustin Spicuzza | Egon Elbre | Ekaterina Efimova | Eng Zer Jun | Ethan Burns | Ethan Reesor | Evert Lammerts | Evgeny Savinov | Fabian Wickborn | Facundo Gaich | Fazlul Shahriar | Francesc Campoy | Google Inc | Gustaf Johansson | Hossein Zolfi | Iakov Davydov | Igor Mikushkin | Iskander Sharipov | Jalem Raj Rohit | James Bell | James Bowman | James Holmes <32bitkid@gmail.com> | Janne Snabb | Jeremy Atkinson | Jes Cok | Jinesi Yelizati | Jon Richards | Jonas Kahler | Jonas Schulze | Jonathan Bluett-Duncan | Jonathan J Lawlor | Jonathan Reiter | Jonathan Schroeder | Joost van Amersfoort | Jordan Stoker | Joseph Watson | Josh Wilson | Julien Roland | Kai Trukenmüller | Kent English | Kevin C. Zimmerman | Kirill Motkov | Konstantin Shaposhnikov | Leonid Kneller | Lyron Winderbaum | Marco Leogrande | Mark Canning | Mark Skilbeck | Martin Diz | Matthew Connelly | Matthieu Di Mercurio | Max Halford | Maxim Sergeev | Microsoft Corporation | MinJae Kwon | Nathan Edwards | Nick Potts | Nils Wogatzky | Olivier Wulveryck | Or Rikon | Patricio Whittingslow | Patrick DeVivo | Pontus Melke | Renee French | Rishi Desai | Robin Eklind | Roger Welin | Roman Werpachowski | Rondall Jones | Sam Zaydel | Samuel Kelemen | Saran Ahluwalia | Scott Holden | Scott Kiesel | Sebastien Binet | Shawn Smith | Sintela Ltd | Spencer Lyon | Steve McCoy | Taesu Pyo | Takeshi Yoneda | Tamir Hyman | The University of Adelaide | The University of Minnesota | The University of Washington | Thomas Berg | Tobin Harding | Valentin Deleplace | Vincent Thiery | Vladimír Chalupecký | Will Tekulve | Yasuhiro Matsumoto | Yevgeniy Vahlis | Yucheng Zhu | Yunomi | Zoe Juozapaitis | antichris | source{d} +core,gonum.org/v1/gonum/graph/simple,BSD-3-Clause,Alexander Egurnov | Andrei Blinnikov | Andrew Brampton | Bailey Lissington | Bill Gray | Bill Noon | Brendan Tracey | Brent Pedersen | Bulat Khasanov | Chad Kunde | Chan Kwan Yin | Chih-Wei Chang | Chong-Yeol Nah | Chris Tessum | Christophe Meessen | Christopher Waldon | Clayton Northey | Copyright ©2013 The Gonum Authors. All rights reserved | Dan Kortschak | Dan Lorenc | Daniel Fireman | Dario Heinisch | David Kleiven | David Samborski | Davor Kapsa | DeepMind Technologies | Delaney Gillilan | Dezmond Goff | Dong-hee Na | Dustin Spicuzza | Egon Elbre | Ekaterina Efimova | Eng Zer Jun | Ethan Burns | Ethan Reesor | Evert Lammerts | Evgeny Savinov | Fabian Wickborn | Facundo Gaich | Fazlul Shahriar | Francesc Campoy | Google Inc | Gustaf Johansson | Hossein Zolfi | Iakov Davydov | Igor Mikushkin | Iskander Sharipov | Jalem Raj Rohit | James Bell | James Bowman | James Holmes <32bitkid@gmail.com> | Janne Snabb | Jeremy Atkinson | Jes Cok | Jinesi Yelizati | Jon Richards | Jonas Kahler | Jonas Schulze | Jonathan Bluett-Duncan | Jonathan J Lawlor | Jonathan Reiter | Jonathan Schroeder | Joost van Amersfoort | Jordan Stoker | Joseph Watson | Josh Wilson | Julien Roland | Kai Trukenmüller | Kent English | Kevin C. Zimmerman | Kirill Motkov | Konstantin Shaposhnikov | Leonid Kneller | Lyron Winderbaum | Marco Leogrande | Mark Canning | Mark Skilbeck | Martin Diz | Matthew Connelly | Matthieu Di Mercurio | Max Halford | Maxim Sergeev | Microsoft Corporation | MinJae Kwon | Nathan Edwards | Nick Potts | Nils Wogatzky | Olivier Wulveryck | Or Rikon | Patricio Whittingslow | Patrick DeVivo | Pontus Melke | Renee French | Rishi Desai | Robin Eklind | Roger Welin | Roman Werpachowski | Rondall Jones | Sam Zaydel | Samuel Kelemen | Saran Ahluwalia | Scott Holden | Scott Kiesel | Sebastien Binet | Shawn Smith | Sintela Ltd | Spencer Lyon | Steve McCoy | Taesu Pyo | Takeshi Yoneda | Tamir Hyman | The University of Adelaide | The University of Minnesota | The University of Washington | Thomas Berg | Tobin Harding | Valentin Deleplace | Vincent Thiery | Vladimír Chalupecký | Will Tekulve | Yasuhiro Matsumoto | Yevgeniy Vahlis | Yucheng Zhu | Yunomi | Zoe Juozapaitis | antichris | source{d} +core,gonum.org/v1/gonum/graph/topo,BSD-3-Clause,Alexander Egurnov | Andrei Blinnikov | Andrew Brampton | Bailey Lissington | Bill Gray | Bill Noon | Brendan Tracey | Brent Pedersen | Bulat Khasanov | Chad Kunde | Chan Kwan Yin | Chih-Wei Chang | Chong-Yeol Nah | Chris Tessum | Christophe Meessen | Christopher Waldon | Clayton Northey | Copyright ©2013 The Gonum Authors. All rights reserved | Dan Kortschak | Dan Lorenc | Daniel Fireman | Dario Heinisch | David Kleiven | David Samborski | Davor Kapsa | DeepMind Technologies | Delaney Gillilan | Dezmond Goff | Dong-hee Na | Dustin Spicuzza | Egon Elbre | Ekaterina Efimova | Eng Zer Jun | Ethan Burns | Ethan Reesor | Evert Lammerts | Evgeny Savinov | Fabian Wickborn | Facundo Gaich | Fazlul Shahriar | Francesc Campoy | Google Inc | Gustaf Johansson | Hossein Zolfi | Iakov Davydov | Igor Mikushkin | Iskander Sharipov | Jalem Raj Rohit | James Bell | James Bowman | James Holmes <32bitkid@gmail.com> | Janne Snabb | Jeremy Atkinson | Jes Cok | Jinesi Yelizati | Jon Richards | Jonas Kahler | Jonas Schulze | Jonathan Bluett-Duncan | Jonathan J Lawlor | Jonathan Reiter | Jonathan Schroeder | Joost van Amersfoort | Jordan Stoker | Joseph Watson | Josh Wilson | Julien Roland | Kai Trukenmüller | Kent English | Kevin C. Zimmerman | Kirill Motkov | Konstantin Shaposhnikov | Leonid Kneller | Lyron Winderbaum | Marco Leogrande | Mark Canning | Mark Skilbeck | Martin Diz | Matthew Connelly | Matthieu Di Mercurio | Max Halford | Maxim Sergeev | Microsoft Corporation | MinJae Kwon | Nathan Edwards | Nick Potts | Nils Wogatzky | Olivier Wulveryck | Or Rikon | Patricio Whittingslow | Patrick DeVivo | Pontus Melke | Renee French | Rishi Desai | Robin Eklind | Roger Welin | Roman Werpachowski | Rondall Jones | Sam Zaydel | Samuel Kelemen | Saran Ahluwalia | Scott Holden | Scott Kiesel | Sebastien Binet | Shawn Smith | Sintela Ltd | Spencer Lyon | Steve McCoy | Taesu Pyo | Takeshi Yoneda | Tamir Hyman | The University of Adelaide | The University of Minnesota | The University of Washington | Thomas Berg | Tobin Harding | Valentin Deleplace | Vincent Thiery | Vladimír Chalupecký | Will Tekulve | Yasuhiro Matsumoto | Yevgeniy Vahlis | Yucheng Zhu | Yunomi | Zoe Juozapaitis | antichris | source{d} +core,gonum.org/v1/gonum/graph/traverse,BSD-3-Clause,Alexander Egurnov | Andrei Blinnikov | Andrew Brampton | Bailey Lissington | Bill Gray | Bill Noon | Brendan Tracey | Brent Pedersen | Bulat Khasanov | Chad Kunde | Chan Kwan Yin | Chih-Wei Chang | Chong-Yeol Nah | Chris Tessum | Christophe Meessen | Christopher Waldon | Clayton Northey | Copyright ©2013 The Gonum Authors. All rights reserved | Dan Kortschak | Dan Lorenc | Daniel Fireman | Dario Heinisch | David Kleiven | David Samborski | Davor Kapsa | DeepMind Technologies | Delaney Gillilan | Dezmond Goff | Dong-hee Na | Dustin Spicuzza | Egon Elbre | Ekaterina Efimova | Eng Zer Jun | Ethan Burns | Ethan Reesor | Evert Lammerts | Evgeny Savinov | Fabian Wickborn | Facundo Gaich | Fazlul Shahriar | Francesc Campoy | Google Inc | Gustaf Johansson | Hossein Zolfi | Iakov Davydov | Igor Mikushkin | Iskander Sharipov | Jalem Raj Rohit | James Bell | James Bowman | James Holmes <32bitkid@gmail.com> | Janne Snabb | Jeremy Atkinson | Jes Cok | Jinesi Yelizati | Jon Richards | Jonas Kahler | Jonas Schulze | Jonathan Bluett-Duncan | Jonathan J Lawlor | Jonathan Reiter | Jonathan Schroeder | Joost van Amersfoort | Jordan Stoker | Joseph Watson | Josh Wilson | Julien Roland | Kai Trukenmüller | Kent English | Kevin C. Zimmerman | Kirill Motkov | Konstantin Shaposhnikov | Leonid Kneller | Lyron Winderbaum | Marco Leogrande | Mark Canning | Mark Skilbeck | Martin Diz | Matthew Connelly | Matthieu Di Mercurio | Max Halford | Maxim Sergeev | Microsoft Corporation | MinJae Kwon | Nathan Edwards | Nick Potts | Nils Wogatzky | Olivier Wulveryck | Or Rikon | Patricio Whittingslow | Patrick DeVivo | Pontus Melke | Renee French | Rishi Desai | Robin Eklind | Roger Welin | Roman Werpachowski | Rondall Jones | Sam Zaydel | Samuel Kelemen | Saran Ahluwalia | Scott Holden | Scott Kiesel | Sebastien Binet | Shawn Smith | Sintela Ltd | Spencer Lyon | Steve McCoy | Taesu Pyo | Takeshi Yoneda | Tamir Hyman | The University of Adelaide | The University of Minnesota | The University of Washington | Thomas Berg | Tobin Harding | Valentin Deleplace | Vincent Thiery | Vladimír Chalupecký | Will Tekulve | Yasuhiro Matsumoto | Yevgeniy Vahlis | Yucheng Zhu | Yunomi | Zoe Juozapaitis | antichris | source{d} +core,gonum.org/v1/gonum/internal/asm/c128,BSD-3-Clause,Alexander Egurnov | Andrei Blinnikov | Andrew Brampton | Bailey Lissington | Bill Gray | Bill Noon | Brendan Tracey | Brent Pedersen | Bulat Khasanov | Chad Kunde | Chan Kwan Yin | Chih-Wei Chang | Chong-Yeol Nah | Chris Tessum | Christophe Meessen | Christopher Waldon | Clayton Northey | Copyright ©2013 The Gonum Authors. All rights reserved | Dan Kortschak | Dan Lorenc | Daniel Fireman | Dario Heinisch | David Kleiven | David Samborski | Davor Kapsa | DeepMind Technologies | Delaney Gillilan | Dezmond Goff | Dong-hee Na | Dustin Spicuzza | Egon Elbre | Ekaterina Efimova | Eng Zer Jun | Ethan Burns | Ethan Reesor | Evert Lammerts | Evgeny Savinov | Fabian Wickborn | Facundo Gaich | Fazlul Shahriar | Francesc Campoy | Google Inc | Gustaf Johansson | Hossein Zolfi | Iakov Davydov | Igor Mikushkin | Iskander Sharipov | Jalem Raj Rohit | James Bell | James Bowman | James Holmes <32bitkid@gmail.com> | Janne Snabb | Jeremy Atkinson | Jes Cok | Jinesi Yelizati | Jon Richards | Jonas Kahler | Jonas Schulze | Jonathan Bluett-Duncan | Jonathan J Lawlor | Jonathan Reiter | Jonathan Schroeder | Joost van Amersfoort | Jordan Stoker | Joseph Watson | Josh Wilson | Julien Roland | Kai Trukenmüller | Kent English | Kevin C. Zimmerman | Kirill Motkov | Konstantin Shaposhnikov | Leonid Kneller | Lyron Winderbaum | Marco Leogrande | Mark Canning | Mark Skilbeck | Martin Diz | Matthew Connelly | Matthieu Di Mercurio | Max Halford | Maxim Sergeev | Microsoft Corporation | MinJae Kwon | Nathan Edwards | Nick Potts | Nils Wogatzky | Olivier Wulveryck | Or Rikon | Patricio Whittingslow | Patrick DeVivo | Pontus Melke | Renee French | Rishi Desai | Robin Eklind | Roger Welin | Roman Werpachowski | Rondall Jones | Sam Zaydel | Samuel Kelemen | Saran Ahluwalia | Scott Holden | Scott Kiesel | Sebastien Binet | Shawn Smith | Sintela Ltd | Spencer Lyon | Steve McCoy | Taesu Pyo | Takeshi Yoneda | Tamir Hyman | The University of Adelaide | The University of Minnesota | The University of Washington | Thomas Berg | Tobin Harding | Valentin Deleplace | Vincent Thiery | Vladimír Chalupecký | Will Tekulve | Yasuhiro Matsumoto | Yevgeniy Vahlis | Yucheng Zhu | Yunomi | Zoe Juozapaitis | antichris | source{d} +core,gonum.org/v1/gonum/internal/asm/c64,BSD-3-Clause,Alexander Egurnov | Andrei Blinnikov | Andrew Brampton | Bailey Lissington | Bill Gray | Bill Noon | Brendan Tracey | Brent Pedersen | Bulat Khasanov | Chad Kunde | Chan Kwan Yin | Chih-Wei Chang | Chong-Yeol Nah | Chris Tessum | Christophe Meessen | Christopher Waldon | Clayton Northey | Copyright ©2013 The Gonum Authors. All rights reserved | Dan Kortschak | Dan Lorenc | Daniel Fireman | Dario Heinisch | David Kleiven | David Samborski | Davor Kapsa | DeepMind Technologies | Delaney Gillilan | Dezmond Goff | Dong-hee Na | Dustin Spicuzza | Egon Elbre | Ekaterina Efimova | Eng Zer Jun | Ethan Burns | Ethan Reesor | Evert Lammerts | Evgeny Savinov | Fabian Wickborn | Facundo Gaich | Fazlul Shahriar | Francesc Campoy | Google Inc | Gustaf Johansson | Hossein Zolfi | Iakov Davydov | Igor Mikushkin | Iskander Sharipov | Jalem Raj Rohit | James Bell | James Bowman | James Holmes <32bitkid@gmail.com> | Janne Snabb | Jeremy Atkinson | Jes Cok | Jinesi Yelizati | Jon Richards | Jonas Kahler | Jonas Schulze | Jonathan Bluett-Duncan | Jonathan J Lawlor | Jonathan Reiter | Jonathan Schroeder | Joost van Amersfoort | Jordan Stoker | Joseph Watson | Josh Wilson | Julien Roland | Kai Trukenmüller | Kent English | Kevin C. Zimmerman | Kirill Motkov | Konstantin Shaposhnikov | Leonid Kneller | Lyron Winderbaum | Marco Leogrande | Mark Canning | Mark Skilbeck | Martin Diz | Matthew Connelly | Matthieu Di Mercurio | Max Halford | Maxim Sergeev | Microsoft Corporation | MinJae Kwon | Nathan Edwards | Nick Potts | Nils Wogatzky | Olivier Wulveryck | Or Rikon | Patricio Whittingslow | Patrick DeVivo | Pontus Melke | Renee French | Rishi Desai | Robin Eklind | Roger Welin | Roman Werpachowski | Rondall Jones | Sam Zaydel | Samuel Kelemen | Saran Ahluwalia | Scott Holden | Scott Kiesel | Sebastien Binet | Shawn Smith | Sintela Ltd | Spencer Lyon | Steve McCoy | Taesu Pyo | Takeshi Yoneda | Tamir Hyman | The University of Adelaide | The University of Minnesota | The University of Washington | Thomas Berg | Tobin Harding | Valentin Deleplace | Vincent Thiery | Vladimír Chalupecký | Will Tekulve | Yasuhiro Matsumoto | Yevgeniy Vahlis | Yucheng Zhu | Yunomi | Zoe Juozapaitis | antichris | source{d} +core,gonum.org/v1/gonum/internal/asm/f32,BSD-3-Clause,Alexander Egurnov | Andrei Blinnikov | Andrew Brampton | Bailey Lissington | Bill Gray | Bill Noon | Brendan Tracey | Brent Pedersen | Bulat Khasanov | Chad Kunde | Chan Kwan Yin | Chih-Wei Chang | Chong-Yeol Nah | Chris Tessum | Christophe Meessen | Christopher Waldon | Clayton Northey | Copyright ©2013 The Gonum Authors. All rights reserved | Dan Kortschak | Dan Lorenc | Daniel Fireman | Dario Heinisch | David Kleiven | David Samborski | Davor Kapsa | DeepMind Technologies | Delaney Gillilan | Dezmond Goff | Dong-hee Na | Dustin Spicuzza | Egon Elbre | Ekaterina Efimova | Eng Zer Jun | Ethan Burns | Ethan Reesor | Evert Lammerts | Evgeny Savinov | Fabian Wickborn | Facundo Gaich | Fazlul Shahriar | Francesc Campoy | Google Inc | Gustaf Johansson | Hossein Zolfi | Iakov Davydov | Igor Mikushkin | Iskander Sharipov | Jalem Raj Rohit | James Bell | James Bowman | James Holmes <32bitkid@gmail.com> | Janne Snabb | Jeremy Atkinson | Jes Cok | Jinesi Yelizati | Jon Richards | Jonas Kahler | Jonas Schulze | Jonathan Bluett-Duncan | Jonathan J Lawlor | Jonathan Reiter | Jonathan Schroeder | Joost van Amersfoort | Jordan Stoker | Joseph Watson | Josh Wilson | Julien Roland | Kai Trukenmüller | Kent English | Kevin C. Zimmerman | Kirill Motkov | Konstantin Shaposhnikov | Leonid Kneller | Lyron Winderbaum | Marco Leogrande | Mark Canning | Mark Skilbeck | Martin Diz | Matthew Connelly | Matthieu Di Mercurio | Max Halford | Maxim Sergeev | Microsoft Corporation | MinJae Kwon | Nathan Edwards | Nick Potts | Nils Wogatzky | Olivier Wulveryck | Or Rikon | Patricio Whittingslow | Patrick DeVivo | Pontus Melke | Renee French | Rishi Desai | Robin Eklind | Roger Welin | Roman Werpachowski | Rondall Jones | Sam Zaydel | Samuel Kelemen | Saran Ahluwalia | Scott Holden | Scott Kiesel | Sebastien Binet | Shawn Smith | Sintela Ltd | Spencer Lyon | Steve McCoy | Taesu Pyo | Takeshi Yoneda | Tamir Hyman | The University of Adelaide | The University of Minnesota | The University of Washington | Thomas Berg | Tobin Harding | Valentin Deleplace | Vincent Thiery | Vladimír Chalupecký | Will Tekulve | Yasuhiro Matsumoto | Yevgeniy Vahlis | Yucheng Zhu | Yunomi | Zoe Juozapaitis | antichris | source{d} +core,gonum.org/v1/gonum/internal/asm/f64,BSD-3-Clause,Alexander Egurnov | Andrei Blinnikov | Andrew Brampton | Bailey Lissington | Bill Gray | Bill Noon | Brendan Tracey | Brent Pedersen | Bulat Khasanov | Chad Kunde | Chan Kwan Yin | Chih-Wei Chang | Chong-Yeol Nah | Chris Tessum | Christophe Meessen | Christopher Waldon | Clayton Northey | Copyright ©2013 The Gonum Authors. All rights reserved | Dan Kortschak | Dan Lorenc | Daniel Fireman | Dario Heinisch | David Kleiven | David Samborski | Davor Kapsa | DeepMind Technologies | Delaney Gillilan | Dezmond Goff | Dong-hee Na | Dustin Spicuzza | Egon Elbre | Ekaterina Efimova | Eng Zer Jun | Ethan Burns | Ethan Reesor | Evert Lammerts | Evgeny Savinov | Fabian Wickborn | Facundo Gaich | Fazlul Shahriar | Francesc Campoy | Google Inc | Gustaf Johansson | Hossein Zolfi | Iakov Davydov | Igor Mikushkin | Iskander Sharipov | Jalem Raj Rohit | James Bell | James Bowman | James Holmes <32bitkid@gmail.com> | Janne Snabb | Jeremy Atkinson | Jes Cok | Jinesi Yelizati | Jon Richards | Jonas Kahler | Jonas Schulze | Jonathan Bluett-Duncan | Jonathan J Lawlor | Jonathan Reiter | Jonathan Schroeder | Joost van Amersfoort | Jordan Stoker | Joseph Watson | Josh Wilson | Julien Roland | Kai Trukenmüller | Kent English | Kevin C. Zimmerman | Kirill Motkov | Konstantin Shaposhnikov | Leonid Kneller | Lyron Winderbaum | Marco Leogrande | Mark Canning | Mark Skilbeck | Martin Diz | Matthew Connelly | Matthieu Di Mercurio | Max Halford | Maxim Sergeev | Microsoft Corporation | MinJae Kwon | Nathan Edwards | Nick Potts | Nils Wogatzky | Olivier Wulveryck | Or Rikon | Patricio Whittingslow | Patrick DeVivo | Pontus Melke | Renee French | Rishi Desai | Robin Eklind | Roger Welin | Roman Werpachowski | Rondall Jones | Sam Zaydel | Samuel Kelemen | Saran Ahluwalia | Scott Holden | Scott Kiesel | Sebastien Binet | Shawn Smith | Sintela Ltd | Spencer Lyon | Steve McCoy | Taesu Pyo | Takeshi Yoneda | Tamir Hyman | The University of Adelaide | The University of Minnesota | The University of Washington | Thomas Berg | Tobin Harding | Valentin Deleplace | Vincent Thiery | Vladimír Chalupecký | Will Tekulve | Yasuhiro Matsumoto | Yevgeniy Vahlis | Yucheng Zhu | Yunomi | Zoe Juozapaitis | antichris | source{d} +core,gonum.org/v1/gonum/internal/cmplx64,BSD-3-Clause,Alexander Egurnov | Andrei Blinnikov | Andrew Brampton | Bailey Lissington | Bill Gray | Bill Noon | Brendan Tracey | Brent Pedersen | Bulat Khasanov | Chad Kunde | Chan Kwan Yin | Chih-Wei Chang | Chong-Yeol Nah | Chris Tessum | Christophe Meessen | Christopher Waldon | Clayton Northey | Copyright ©2013 The Gonum Authors. All rights reserved | Dan Kortschak | Dan Lorenc | Daniel Fireman | Dario Heinisch | David Kleiven | David Samborski | Davor Kapsa | DeepMind Technologies | Delaney Gillilan | Dezmond Goff | Dong-hee Na | Dustin Spicuzza | Egon Elbre | Ekaterina Efimova | Eng Zer Jun | Ethan Burns | Ethan Reesor | Evert Lammerts | Evgeny Savinov | Fabian Wickborn | Facundo Gaich | Fazlul Shahriar | Francesc Campoy | Google Inc | Gustaf Johansson | Hossein Zolfi | Iakov Davydov | Igor Mikushkin | Iskander Sharipov | Jalem Raj Rohit | James Bell | James Bowman | James Holmes <32bitkid@gmail.com> | Janne Snabb | Jeremy Atkinson | Jes Cok | Jinesi Yelizati | Jon Richards | Jonas Kahler | Jonas Schulze | Jonathan Bluett-Duncan | Jonathan J Lawlor | Jonathan Reiter | Jonathan Schroeder | Joost van Amersfoort | Jordan Stoker | Joseph Watson | Josh Wilson | Julien Roland | Kai Trukenmüller | Kent English | Kevin C. Zimmerman | Kirill Motkov | Konstantin Shaposhnikov | Leonid Kneller | Lyron Winderbaum | Marco Leogrande | Mark Canning | Mark Skilbeck | Martin Diz | Matthew Connelly | Matthieu Di Mercurio | Max Halford | Maxim Sergeev | Microsoft Corporation | MinJae Kwon | Nathan Edwards | Nick Potts | Nils Wogatzky | Olivier Wulveryck | Or Rikon | Patricio Whittingslow | Patrick DeVivo | Pontus Melke | Renee French | Rishi Desai | Robin Eklind | Roger Welin | Roman Werpachowski | Rondall Jones | Sam Zaydel | Samuel Kelemen | Saran Ahluwalia | Scott Holden | Scott Kiesel | Sebastien Binet | Shawn Smith | Sintela Ltd | Spencer Lyon | Steve McCoy | Taesu Pyo | Takeshi Yoneda | Tamir Hyman | The University of Adelaide | The University of Minnesota | The University of Washington | Thomas Berg | Tobin Harding | Valentin Deleplace | Vincent Thiery | Vladimír Chalupecký | Will Tekulve | Yasuhiro Matsumoto | Yevgeniy Vahlis | Yucheng Zhu | Yunomi | Zoe Juozapaitis | antichris | source{d} +core,gonum.org/v1/gonum/internal/math32,BSD-3-Clause,Alexander Egurnov | Andrei Blinnikov | Andrew Brampton | Bailey Lissington | Bill Gray | Bill Noon | Brendan Tracey | Brent Pedersen | Bulat Khasanov | Chad Kunde | Chan Kwan Yin | Chih-Wei Chang | Chong-Yeol Nah | Chris Tessum | Christophe Meessen | Christopher Waldon | Clayton Northey | Copyright ©2013 The Gonum Authors. All rights reserved | Dan Kortschak | Dan Lorenc | Daniel Fireman | Dario Heinisch | David Kleiven | David Samborski | Davor Kapsa | DeepMind Technologies | Delaney Gillilan | Dezmond Goff | Dong-hee Na | Dustin Spicuzza | Egon Elbre | Ekaterina Efimova | Eng Zer Jun | Ethan Burns | Ethan Reesor | Evert Lammerts | Evgeny Savinov | Fabian Wickborn | Facundo Gaich | Fazlul Shahriar | Francesc Campoy | Google Inc | Gustaf Johansson | Hossein Zolfi | Iakov Davydov | Igor Mikushkin | Iskander Sharipov | Jalem Raj Rohit | James Bell | James Bowman | James Holmes <32bitkid@gmail.com> | Janne Snabb | Jeremy Atkinson | Jes Cok | Jinesi Yelizati | Jon Richards | Jonas Kahler | Jonas Schulze | Jonathan Bluett-Duncan | Jonathan J Lawlor | Jonathan Reiter | Jonathan Schroeder | Joost van Amersfoort | Jordan Stoker | Joseph Watson | Josh Wilson | Julien Roland | Kai Trukenmüller | Kent English | Kevin C. Zimmerman | Kirill Motkov | Konstantin Shaposhnikov | Leonid Kneller | Lyron Winderbaum | Marco Leogrande | Mark Canning | Mark Skilbeck | Martin Diz | Matthew Connelly | Matthieu Di Mercurio | Max Halford | Maxim Sergeev | Microsoft Corporation | MinJae Kwon | Nathan Edwards | Nick Potts | Nils Wogatzky | Olivier Wulveryck | Or Rikon | Patricio Whittingslow | Patrick DeVivo | Pontus Melke | Renee French | Rishi Desai | Robin Eklind | Roger Welin | Roman Werpachowski | Rondall Jones | Sam Zaydel | Samuel Kelemen | Saran Ahluwalia | Scott Holden | Scott Kiesel | Sebastien Binet | Shawn Smith | Sintela Ltd | Spencer Lyon | Steve McCoy | Taesu Pyo | Takeshi Yoneda | Tamir Hyman | The University of Adelaide | The University of Minnesota | The University of Washington | Thomas Berg | Tobin Harding | Valentin Deleplace | Vincent Thiery | Vladimír Chalupecký | Will Tekulve | Yasuhiro Matsumoto | Yevgeniy Vahlis | Yucheng Zhu | Yunomi | Zoe Juozapaitis | antichris | source{d} +core,gonum.org/v1/gonum/lapack,BSD-3-Clause,Alexander Egurnov | Andrei Blinnikov | Andrew Brampton | Bailey Lissington | Bill Gray | Bill Noon | Brendan Tracey | Brent Pedersen | Bulat Khasanov | Chad Kunde | Chan Kwan Yin | Chih-Wei Chang | Chong-Yeol Nah | Chris Tessum | Christophe Meessen | Christopher Waldon | Clayton Northey | Copyright ©2013 The Gonum Authors. All rights reserved | Dan Kortschak | Dan Lorenc | Daniel Fireman | Dario Heinisch | David Kleiven | David Samborski | Davor Kapsa | DeepMind Technologies | Delaney Gillilan | Dezmond Goff | Dong-hee Na | Dustin Spicuzza | Egon Elbre | Ekaterina Efimova | Eng Zer Jun | Ethan Burns | Ethan Reesor | Evert Lammerts | Evgeny Savinov | Fabian Wickborn | Facundo Gaich | Fazlul Shahriar | Francesc Campoy | Google Inc | Gustaf Johansson | Hossein Zolfi | Iakov Davydov | Igor Mikushkin | Iskander Sharipov | Jalem Raj Rohit | James Bell | James Bowman | James Holmes <32bitkid@gmail.com> | Janne Snabb | Jeremy Atkinson | Jes Cok | Jinesi Yelizati | Jon Richards | Jonas Kahler | Jonas Schulze | Jonathan Bluett-Duncan | Jonathan J Lawlor | Jonathan Reiter | Jonathan Schroeder | Joost van Amersfoort | Jordan Stoker | Joseph Watson | Josh Wilson | Julien Roland | Kai Trukenmüller | Kent English | Kevin C. Zimmerman | Kirill Motkov | Konstantin Shaposhnikov | Leonid Kneller | Lyron Winderbaum | Marco Leogrande | Mark Canning | Mark Skilbeck | Martin Diz | Matthew Connelly | Matthieu Di Mercurio | Max Halford | Maxim Sergeev | Microsoft Corporation | MinJae Kwon | Nathan Edwards | Nick Potts | Nils Wogatzky | Olivier Wulveryck | Or Rikon | Patricio Whittingslow | Patrick DeVivo | Pontus Melke | Renee French | Rishi Desai | Robin Eklind | Roger Welin | Roman Werpachowski | Rondall Jones | Sam Zaydel | Samuel Kelemen | Saran Ahluwalia | Scott Holden | Scott Kiesel | Sebastien Binet | Shawn Smith | Sintela Ltd | Spencer Lyon | Steve McCoy | Taesu Pyo | Takeshi Yoneda | Tamir Hyman | The University of Adelaide | The University of Minnesota | The University of Washington | Thomas Berg | Tobin Harding | Valentin Deleplace | Vincent Thiery | Vladimír Chalupecký | Will Tekulve | Yasuhiro Matsumoto | Yevgeniy Vahlis | Yucheng Zhu | Yunomi | Zoe Juozapaitis | antichris | source{d} +core,gonum.org/v1/gonum/lapack/gonum,BSD-3-Clause,Alexander Egurnov | Andrei Blinnikov | Andrew Brampton | Bailey Lissington | Bill Gray | Bill Noon | Brendan Tracey | Brent Pedersen | Bulat Khasanov | Chad Kunde | Chan Kwan Yin | Chih-Wei Chang | Chong-Yeol Nah | Chris Tessum | Christophe Meessen | Christopher Waldon | Clayton Northey | Copyright ©2013 The Gonum Authors. All rights reserved | Dan Kortschak | Dan Lorenc | Daniel Fireman | Dario Heinisch | David Kleiven | David Samborski | Davor Kapsa | DeepMind Technologies | Delaney Gillilan | Dezmond Goff | Dong-hee Na | Dustin Spicuzza | Egon Elbre | Ekaterina Efimova | Eng Zer Jun | Ethan Burns | Ethan Reesor | Evert Lammerts | Evgeny Savinov | Fabian Wickborn | Facundo Gaich | Fazlul Shahriar | Francesc Campoy | Google Inc | Gustaf Johansson | Hossein Zolfi | Iakov Davydov | Igor Mikushkin | Iskander Sharipov | Jalem Raj Rohit | James Bell | James Bowman | James Holmes <32bitkid@gmail.com> | Janne Snabb | Jeremy Atkinson | Jes Cok | Jinesi Yelizati | Jon Richards | Jonas Kahler | Jonas Schulze | Jonathan Bluett-Duncan | Jonathan J Lawlor | Jonathan Reiter | Jonathan Schroeder | Joost van Amersfoort | Jordan Stoker | Joseph Watson | Josh Wilson | Julien Roland | Kai Trukenmüller | Kent English | Kevin C. Zimmerman | Kirill Motkov | Konstantin Shaposhnikov | Leonid Kneller | Lyron Winderbaum | Marco Leogrande | Mark Canning | Mark Skilbeck | Martin Diz | Matthew Connelly | Matthieu Di Mercurio | Max Halford | Maxim Sergeev | Microsoft Corporation | MinJae Kwon | Nathan Edwards | Nick Potts | Nils Wogatzky | Olivier Wulveryck | Or Rikon | Patricio Whittingslow | Patrick DeVivo | Pontus Melke | Renee French | Rishi Desai | Robin Eklind | Roger Welin | Roman Werpachowski | Rondall Jones | Sam Zaydel | Samuel Kelemen | Saran Ahluwalia | Scott Holden | Scott Kiesel | Sebastien Binet | Shawn Smith | Sintela Ltd | Spencer Lyon | Steve McCoy | Taesu Pyo | Takeshi Yoneda | Tamir Hyman | The University of Adelaide | The University of Minnesota | The University of Washington | Thomas Berg | Tobin Harding | Valentin Deleplace | Vincent Thiery | Vladimír Chalupecký | Will Tekulve | Yasuhiro Matsumoto | Yevgeniy Vahlis | Yucheng Zhu | Yunomi | Zoe Juozapaitis | antichris | source{d} +core,gonum.org/v1/gonum/lapack/lapack64,BSD-3-Clause,Alexander Egurnov | Andrei Blinnikov | Andrew Brampton | Bailey Lissington | Bill Gray | Bill Noon | Brendan Tracey | Brent Pedersen | Bulat Khasanov | Chad Kunde | Chan Kwan Yin | Chih-Wei Chang | Chong-Yeol Nah | Chris Tessum | Christophe Meessen | Christopher Waldon | Clayton Northey | Copyright ©2013 The Gonum Authors. All rights reserved | Dan Kortschak | Dan Lorenc | Daniel Fireman | Dario Heinisch | David Kleiven | David Samborski | Davor Kapsa | DeepMind Technologies | Delaney Gillilan | Dezmond Goff | Dong-hee Na | Dustin Spicuzza | Egon Elbre | Ekaterina Efimova | Eng Zer Jun | Ethan Burns | Ethan Reesor | Evert Lammerts | Evgeny Savinov | Fabian Wickborn | Facundo Gaich | Fazlul Shahriar | Francesc Campoy | Google Inc | Gustaf Johansson | Hossein Zolfi | Iakov Davydov | Igor Mikushkin | Iskander Sharipov | Jalem Raj Rohit | James Bell | James Bowman | James Holmes <32bitkid@gmail.com> | Janne Snabb | Jeremy Atkinson | Jes Cok | Jinesi Yelizati | Jon Richards | Jonas Kahler | Jonas Schulze | Jonathan Bluett-Duncan | Jonathan J Lawlor | Jonathan Reiter | Jonathan Schroeder | Joost van Amersfoort | Jordan Stoker | Joseph Watson | Josh Wilson | Julien Roland | Kai Trukenmüller | Kent English | Kevin C. Zimmerman | Kirill Motkov | Konstantin Shaposhnikov | Leonid Kneller | Lyron Winderbaum | Marco Leogrande | Mark Canning | Mark Skilbeck | Martin Diz | Matthew Connelly | Matthieu Di Mercurio | Max Halford | Maxim Sergeev | Microsoft Corporation | MinJae Kwon | Nathan Edwards | Nick Potts | Nils Wogatzky | Olivier Wulveryck | Or Rikon | Patricio Whittingslow | Patrick DeVivo | Pontus Melke | Renee French | Rishi Desai | Robin Eklind | Roger Welin | Roman Werpachowski | Rondall Jones | Sam Zaydel | Samuel Kelemen | Saran Ahluwalia | Scott Holden | Scott Kiesel | Sebastien Binet | Shawn Smith | Sintela Ltd | Spencer Lyon | Steve McCoy | Taesu Pyo | Takeshi Yoneda | Tamir Hyman | The University of Adelaide | The University of Minnesota | The University of Washington | Thomas Berg | Tobin Harding | Valentin Deleplace | Vincent Thiery | Vladimír Chalupecký | Will Tekulve | Yasuhiro Matsumoto | Yevgeniy Vahlis | Yucheng Zhu | Yunomi | Zoe Juozapaitis | antichris | source{d} +core,gonum.org/v1/gonum/mat,BSD-3-Clause,Alexander Egurnov | Andrei Blinnikov | Andrew Brampton | Bailey Lissington | Bill Gray | Bill Noon | Brendan Tracey | Brent Pedersen | Bulat Khasanov | Chad Kunde | Chan Kwan Yin | Chih-Wei Chang | Chong-Yeol Nah | Chris Tessum | Christophe Meessen | Christopher Waldon | Clayton Northey | Copyright ©2013 The Gonum Authors. All rights reserved | Dan Kortschak | Dan Lorenc | Daniel Fireman | Dario Heinisch | David Kleiven | David Samborski | Davor Kapsa | DeepMind Technologies | Delaney Gillilan | Dezmond Goff | Dong-hee Na | Dustin Spicuzza | Egon Elbre | Ekaterina Efimova | Eng Zer Jun | Ethan Burns | Ethan Reesor | Evert Lammerts | Evgeny Savinov | Fabian Wickborn | Facundo Gaich | Fazlul Shahriar | Francesc Campoy | Google Inc | Gustaf Johansson | Hossein Zolfi | Iakov Davydov | Igor Mikushkin | Iskander Sharipov | Jalem Raj Rohit | James Bell | James Bowman | James Holmes <32bitkid@gmail.com> | Janne Snabb | Jeremy Atkinson | Jes Cok | Jinesi Yelizati | Jon Richards | Jonas Kahler | Jonas Schulze | Jonathan Bluett-Duncan | Jonathan J Lawlor | Jonathan Reiter | Jonathan Schroeder | Joost van Amersfoort | Jordan Stoker | Joseph Watson | Josh Wilson | Julien Roland | Kai Trukenmüller | Kent English | Kevin C. Zimmerman | Kirill Motkov | Konstantin Shaposhnikov | Leonid Kneller | Lyron Winderbaum | Marco Leogrande | Mark Canning | Mark Skilbeck | Martin Diz | Matthew Connelly | Matthieu Di Mercurio | Max Halford | Maxim Sergeev | Microsoft Corporation | MinJae Kwon | Nathan Edwards | Nick Potts | Nils Wogatzky | Olivier Wulveryck | Or Rikon | Patricio Whittingslow | Patrick DeVivo | Pontus Melke | Renee French | Rishi Desai | Robin Eklind | Roger Welin | Roman Werpachowski | Rondall Jones | Sam Zaydel | Samuel Kelemen | Saran Ahluwalia | Scott Holden | Scott Kiesel | Sebastien Binet | Shawn Smith | Sintela Ltd | Spencer Lyon | Steve McCoy | Taesu Pyo | Takeshi Yoneda | Tamir Hyman | The University of Adelaide | The University of Minnesota | The University of Washington | Thomas Berg | Tobin Harding | Valentin Deleplace | Vincent Thiery | Vladimír Chalupecký | Will Tekulve | Yasuhiro Matsumoto | Yevgeniy Vahlis | Yucheng Zhu | Yunomi | Zoe Juozapaitis | antichris | source{d} core,google.golang.org/api/googleapi,BSD-3-Clause,Copyright (c) 2011 Google Inc. All rights reserved. core,google.golang.org/api/googleapi/transport,BSD-3-Clause,Copyright (c) 2011 Google Inc. All rights reserved. core,google.golang.org/api/iamcredentials/v1,BSD-3-Clause,Copyright (c) 2011 Google Inc. All rights reserved. diff --git a/cmd/agent/common/helpers.go b/cmd/agent/common/helpers.go index 51f889c484e6d..023fb29c384ee 100644 --- a/cmd/agent/common/helpers.go +++ b/cmd/agent/common/helpers.go @@ -6,14 +6,14 @@ package common import ( + "github.com/DataDog/datadog-agent/comp/core/settings" "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/config/model" - "github.com/DataDog/datadog-agent/pkg/config/settings" "github.com/DataDog/datadog-agent/pkg/util/log" ) // SetupInternalProfiling is a common helper to configure runtime settings for internal profiling. -func SetupInternalProfiling(cfg config.Reader, configPrefix string) { +func SetupInternalProfiling(settings settings.Component, cfg config.Reader, configPrefix string) { if v := cfg.GetInt(configPrefix + "internal_profiling.block_profile_rate"); v > 0 { if err := settings.SetRuntimeSetting("runtime_block_profile_rate", v, model.SourceAgentRuntime); err != nil { log.Errorf("Error setting block profile rate: %v", err) diff --git a/cmd/agent/subcommands/jmx/command.go b/cmd/agent/subcommands/jmx/command.go index b68666edf363c..239e1ea7392d1 100644 --- a/cmd/agent/subcommands/jmx/command.go +++ b/cmd/agent/subcommands/jmx/command.go @@ -39,8 +39,10 @@ import ( "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/gui" "github.com/DataDog/datadog-agent/comp/core/log/logimpl" "github.com/DataDog/datadog-agent/comp/core/secrets" + "github.com/DataDog/datadog-agent/comp/core/settings" "github.com/DataDog/datadog-agent/comp/core/status" "github.com/DataDog/datadog-agent/comp/core/tagger" "github.com/DataDog/datadog-agent/comp/core/workloadmeta" @@ -151,6 +153,7 @@ func Commands(globalParams *command.GlobalParams) []*cobra.Command { fx.Provide(func() inventoryagent.Component { return nil }), fx.Provide(func() inventoryhost.Component { return nil }), fx.Provide(func() demultiplexer.Component { return nil }), + fx.Provide(func() settings.Component { return nil }), fx.Provide(func() inventorychecks.Component { return nil }), fx.Provide(func() packagesigning.Component { return nil }), fx.Provide(func() optional.Option[rcservice.Component] { return optional.NewNoneOption[rcservice.Component]() }), @@ -161,6 +164,7 @@ func Commands(globalParams *command.GlobalParams) []*cobra.Command { fx.Provide(tagger.NewTaggerParamsForCoreAgent), tagger.Module(), autodiscoveryimpl.Module(), + fx.Supply(optional.NewNoneOption[gui.Component]()), agent.Bundle(), fx.Supply(jmxloggerimpl.NewCliParams(cliParams.logFile)), ) diff --git a/cmd/agent/subcommands/run/command.go b/cmd/agent/subcommands/run/command.go index a1c72c07cf54e..412d88a604dfb 100644 --- a/cmd/agent/subcommands/run/command.go +++ b/cmd/agent/subcommands/run/command.go @@ -27,13 +27,13 @@ import ( "github.com/DataDog/datadog-agent/cmd/agent/common/misconfig" "github.com/DataDog/datadog-agent/cmd/agent/common/path" "github.com/DataDog/datadog-agent/cmd/agent/common/signals" - "github.com/DataDog/datadog-agent/cmd/agent/gui" "github.com/DataDog/datadog-agent/cmd/agent/subcommands/run/internal/clcrunnerapi" - "github.com/DataDog/datadog-agent/cmd/manager" + internalsettings "github.com/DataDog/datadog-agent/cmd/agent/subcommands/run/internal/settings" // checks implemented as components // core components + "github.com/DataDog/datadog-agent/comp/agent/autoexit" "github.com/DataDog/datadog-agent/comp/agent/expvarserver" "github.com/DataDog/datadog-agent/comp/agent/jmxlogger" @@ -51,6 +51,7 @@ import ( "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/gui/guiimpl" "github.com/DataDog/datadog-agent/comp/core/log" "github.com/DataDog/datadog-agent/comp/core/log/logimpl" "github.com/DataDog/datadog-agent/comp/core/pid" @@ -63,6 +64,8 @@ import ( "github.com/DataDog/datadog-agent/comp/core/healthprobe" "github.com/DataDog/datadog-agent/comp/core/healthprobe/healthprobeimpl" "github.com/DataDog/datadog-agent/comp/core/secrets" + "github.com/DataDog/datadog-agent/comp/core/settings" + "github.com/DataDog/datadog-agent/comp/core/settings/settingsimpl" "github.com/DataDog/datadog-agent/comp/core/status" "github.com/DataDog/datadog-agent/comp/core/status/statusimpl" "github.com/DataDog/datadog-agent/comp/core/sysprobeconfig" @@ -111,12 +114,13 @@ import ( "github.com/DataDog/datadog-agent/pkg/cloudfoundry/containertagger" pkgcollector "github.com/DataDog/datadog-agent/pkg/collector" "github.com/DataDog/datadog-agent/pkg/collector/check" - "github.com/DataDog/datadog-agent/pkg/collector/corechecks/embed/jmx" "github.com/DataDog/datadog-agent/pkg/collector/corechecks/net" "github.com/DataDog/datadog-agent/pkg/collector/python" "github.com/DataDog/datadog-agent/pkg/commonchecks" pkgconfig "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/config/remote/data" + commonsettings "github.com/DataDog/datadog-agent/pkg/config/settings" + "github.com/DataDog/datadog-agent/pkg/jmxfetch" adScheduler "github.com/DataDog/datadog-agent/pkg/logs/schedulers/ad" "github.com/DataDog/datadog-agent/pkg/serializer" clusteragentStatus "github.com/DataDog/datadog-agent/pkg/status/clusteragent" @@ -200,7 +204,6 @@ func run(log log.Component, sysprobeconfig sysprobeconfig.Component, server dogstatsdServer.Component, _ replay.Component, - serverDebug dogstatsddebug.Component, forwarder defaultforwarder.Component, wmeta workloadmeta.Component, taggerComp tagger.Component, @@ -229,6 +232,8 @@ func run(log log.Component, metadatascheduler metadatascheduler.Component, jmxlogger jmxlogger.Component, _ healthprobe.Component, + _ autoexit.Component, + settings settings.Component, ) error { defer func() { stopAgent(agentAPI) @@ -277,7 +282,6 @@ func run(log log.Component, telemetry, sysprobeconfig, server, - serverDebug, wmeta, taggerComp, ac, @@ -294,6 +298,7 @@ func run(log log.Component, collector, metadatascheduler, jmxlogger, + settings, ); err != nil { return err } @@ -380,7 +385,7 @@ func getSharedFxOption() fx.Option { // error prone. 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 { + OnStart: func(_ context.Context) error { // setup the AutoConfig instance common.LoadComponents(secretResolver, wmeta, ac, pkgconfig.Datadog.GetString("confd_path")) return nil @@ -413,6 +418,7 @@ func getSharedFxOption() fx.Option { snmptraps.Bundle(), collectorimpl.Module(), process.Bundle(), + guiimpl.Module(), agent.Bundle(), fx.Supply(jmxloggerimpl.NewDefaultParams()), fx.Provide(func(config config.Component) healthprobe.Options { @@ -422,17 +428,31 @@ func getSharedFxOption() fx.Option { } }), healthprobeimpl.Module(), + fx.Provide(func(serverDebug dogstatsddebug.Component) settings.Settings { + return settings.Settings{ + "log_level": commonsettings.NewLogLevelRuntimeSetting(), + "runtime_mutex_profile_fraction": commonsettings.NewRuntimeMutexProfileFraction(), + "runtime_block_profile_rate": commonsettings.NewRuntimeBlockProfileRate(), + "dogstatsd_stats": internalsettings.NewDsdStatsRuntimeSetting(serverDebug), + "dogstatsd_capture_duration": internalsettings.NewDsdCaptureDurationRuntimeSetting("dogstatsd_capture_duration"), + "log_payloads": commonsettings.NewLogPayloadsRuntimeSetting(), + "internal_profiling_goroutines": commonsettings.NewProfilingGoroutines(), + "ha.enabled": internalsettings.NewHighAvailabilityRuntimeSetting("ha.enabled", "Enable/disable High Availability support."), + "ha.failover": internalsettings.NewHighAvailabilityRuntimeSetting("ha.failover", "Enable/disable redirection of telemetry data to failover region."), + "internal_profiling": commonsettings.NewProfilingRuntimeSetting("internal_profiling", "datadog-agent"), + } + }), + settingsimpl.Module(), ) } // startAgent Initializes the agent process func startAgent( log log.Component, - flare flare.Component, + _ flare.Component, telemetry telemetry.Component, _ sysprobeconfig.Component, server dogstatsdServer.Component, - serverDebug dogstatsddebug.Component, wmeta workloadmeta.Component, taggerComp tagger.Component, ac autodiscovery.Component, @@ -445,10 +465,11 @@ func startAgent( demultiplexer demultiplexer.Component, agentAPI internalAPI.Component, invChecks inventorychecks.Component, - statusComponent status.Component, + _ status.Component, collector collector.Component, _ metadatascheduler.Component, jmxLogger jmxlogger.Component, + settings settings.Component, ) error { var err error @@ -468,13 +489,8 @@ func startAgent( log.Infof("MemProfileRate set to 1, capturing every single memory allocation!") } - // init settings that can be changed at runtime - if err := initRuntimeSettings(serverDebug); err != nil { - log.Warnf("Can't initiliaze the runtime settings: %v", err) - } - // Setup Internal Profiling - common.SetupInternalProfiling(pkgconfig.Datadog, "") + common.SetupInternalProfiling(settings, pkgconfig.Datadog, "") // Setup expvar server telemetryHandler := telemetry.Handler() @@ -483,11 +499,6 @@ func startAgent( ctx, _ := pkgcommon.GetMainCtxCancel() - err = manager.ConfigureAutoExit(ctx, pkgconfig.Datadog) - if err != nil { - return log.Errorf("Unable to configure auto-exit, err: %v", err) - } - hostnameDetected, err := hostname.Get(context.TODO()) if err != nil { return log.Errorf("Error while getting hostname, exiting: %v", err) @@ -553,14 +564,6 @@ func startAgent( leaderelection.CreateGlobalLeaderEngine(ctx) } - // start the GUI server - 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, ac); err != nil { - log.Errorf("Error while starting GUI: %v", err) - } - // Setup stats telemetry handler if sender, err := demultiplexer.GetDefaultSender(); err == nil { // TODO: to be removed when default telemetry is enabled. @@ -574,7 +577,8 @@ func startAgent( check.InitializeInventoryChecksContext(invChecks) // Init JMX runner and inject dogstatsd component - jmx.InitRunner(server, jmxLogger) + jmxfetch.InitRunner(server, jmxLogger) + jmxfetch.RegisterWith(ac) // Set up check collector commonchecks.RegisterChecks(wmeta) @@ -612,9 +616,8 @@ func stopAgent(agentAPI internalAPI.Component) { agentAPI.StopServer() clcrunnerapi.StopCLCRunnerServer() - jmx.StopJmxfetch() + jmxfetch.StopJmxfetch() - gui.StopGUIServer() profiler.Stop() // gracefully shut down any component diff --git a/cmd/agent/subcommands/run/command_windows.go b/cmd/agent/subcommands/run/command_windows.go index 5a9b1c4c1d1d1..9b61ecc2a8e4c 100644 --- a/cmd/agent/subcommands/run/command_windows.go +++ b/cmd/agent/subcommands/run/command_windows.go @@ -13,6 +13,7 @@ import ( _ "expvar" // Blank import used because this isn't directly used in this file _ "net/http/pprof" // Blank import used because this isn't directly used in this file + "github.com/DataDog/datadog-agent/comp/agent/autoexit" "github.com/DataDog/datadog-agent/comp/agent/expvarserver" "github.com/DataDog/datadog-agent/comp/agent/jmxlogger" "github.com/DataDog/datadog-agent/comp/agent/metadatascheduler" @@ -48,6 +49,7 @@ import ( "github.com/DataDog/datadog-agent/comp/core/log" "github.com/DataDog/datadog-agent/comp/core/log/logimpl" "github.com/DataDog/datadog-agent/comp/core/secrets" + "github.com/DataDog/datadog-agent/comp/core/settings" "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" @@ -56,7 +58,6 @@ import ( "github.com/DataDog/datadog-agent/comp/core/workloadmeta" "github.com/DataDog/datadog-agent/comp/dogstatsd/replay" dogstatsdServer "github.com/DataDog/datadog-agent/comp/dogstatsd/server" - dogstatsddebug "github.com/DataDog/datadog-agent/comp/dogstatsd/serverDebug" "github.com/DataDog/datadog-agent/comp/forwarder/defaultforwarder" logsAgent "github.com/DataDog/datadog-agent/comp/logs/agent" "github.com/DataDog/datadog-agent/comp/metadata/host" @@ -96,7 +97,6 @@ func StartAgentWithDefaults(ctxChan <-chan context.Context) (<-chan error, error sysprobeconfig sysprobeconfig.Component, server dogstatsdServer.Component, _ replay.Component, - serverDebug dogstatsddebug.Component, wmeta workloadmeta.Component, taggerComp tagger.Component, ac autodiscovery.Component, @@ -119,9 +119,11 @@ func StartAgentWithDefaults(ctxChan <-chan context.Context) (<-chan error, error pkgSigning packagesigning.Component, statusComponent status.Component, collector collector.Component, + _ autoexit.Component, _ expvarserver.Component, metadatascheduler metadatascheduler.Component, jmxlogger jmxlogger.Component, + settings settings.Component, ) error { defer StopAgentWithDefaults(agentAPI) @@ -132,7 +134,6 @@ func StartAgentWithDefaults(ctxChan <-chan context.Context) (<-chan error, error telemetry, sysprobeconfig, server, - serverDebug, wmeta, taggerComp, ac, @@ -149,6 +150,7 @@ func StartAgentWithDefaults(ctxChan <-chan context.Context) (<-chan error, error collector, metadatascheduler, jmxlogger, + settings, ) if err != nil { return err diff --git a/cmd/agent/subcommands/run/settings.go b/cmd/agent/subcommands/run/settings.go deleted file mode 100644 index ad67ed7f4de4b..0000000000000 --- a/cmd/agent/subcommands/run/settings.go +++ /dev/null @@ -1,49 +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 run - -import ( - "github.com/DataDog/datadog-agent/cmd/agent/subcommands/run/internal/settings" - dogstatsddebug "github.com/DataDog/datadog-agent/comp/dogstatsd/serverDebug" - commonsettings "github.com/DataDog/datadog-agent/pkg/config/settings" -) - -// initRuntimeSettings builds the map of runtime settings configurable at runtime. -func initRuntimeSettings(serverDebug dogstatsddebug.Component) error { - // Runtime-editable settings must be registered here to dynamically populate command-line information - if err := commonsettings.RegisterRuntimeSetting(commonsettings.NewLogLevelRuntimeSetting()); err != nil { - return err - } - if err := commonsettings.RegisterRuntimeSetting(commonsettings.NewRuntimeMutexProfileFraction()); err != nil { - return err - } - if err := commonsettings.RegisterRuntimeSetting(commonsettings.NewRuntimeBlockProfileRate()); err != nil { - return err - } - if err := commonsettings.RegisterRuntimeSetting(settings.NewDsdStatsRuntimeSetting(serverDebug)); err != nil { - return err - } - if err := commonsettings.RegisterRuntimeSetting(settings.NewDsdCaptureDurationRuntimeSetting("dogstatsd_capture_duration")); err != nil { - return err - } - if err := commonsettings.RegisterRuntimeSetting(commonsettings.NewLogPayloadsRuntimeSetting()); err != nil { - return err - } - if err := commonsettings.RegisterRuntimeSetting(commonsettings.NewProfilingGoroutines()); err != nil { - return err - } - if err := commonsettings.RegisterRuntimeSetting( - settings.NewHighAvailabilityRuntimeSetting("ha.enabled", "Enable/disable High Availability support."), - ); err != nil { - return err - } - if err := commonsettings.RegisterRuntimeSetting( - settings.NewHighAvailabilityRuntimeSetting("ha.failover", "Enable/disable redirection of telemetry data to failover region."), - ); err != nil { - return err - } - return commonsettings.RegisterRuntimeSetting(commonsettings.NewProfilingRuntimeSetting("internal_profiling", "datadog-agent")) -} diff --git a/cmd/cluster-agent-cloudfoundry/subcommands/run/command.go b/cmd/cluster-agent-cloudfoundry/subcommands/run/command.go index 3e280f28e6510..57b5ddae45906 100644 --- a/cmd/cluster-agent-cloudfoundry/subcommands/run/command.go +++ b/cmd/cluster-agent-cloudfoundry/subcommands/run/command.go @@ -38,6 +38,8 @@ import ( "github.com/DataDog/datadog-agent/comp/core/log" "github.com/DataDog/datadog-agent/comp/core/log/logimpl" "github.com/DataDog/datadog-agent/comp/core/secrets" + "github.com/DataDog/datadog-agent/comp/core/settings" + "github.com/DataDog/datadog-agent/comp/core/settings/settingsimpl" "github.com/DataDog/datadog-agent/comp/core/status" "github.com/DataDog/datadog-agent/comp/core/tagger" "github.com/DataDog/datadog-agent/comp/core/workloadmeta" @@ -100,6 +102,10 @@ 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 }), + // The cluster-agent-cloudfoundry agent do not have settings that change are runtime + // still, we need to pass it to ensure the API server is proprely initialized + settingsimpl.Module(), + fx.Supply(settings.Settings{}), autodiscoveryimpl.Module(), fx.Provide(func(config config.Component) healthprobe.Options { return healthprobe.Options{ @@ -124,6 +130,7 @@ func run(log log.Component, collector collector.Component, statusComponent status.Component, _ healthprobe.Component, + settings settings.Component, ) error { mainCtx, mainCtxCancel := context.WithCancel(context.Background()) defer mainCtxCancel() // Calling cancel twice is safe @@ -166,7 +173,7 @@ func run(log log.Component, // start the autoconfig, this will immediately run any configured check ac.LoadAndRun(mainCtx) - if err = api.StartServer(wmeta, taggerComp, ac, demultiplexer, optional.NewOption(collector), statusComponent, secretResolver); err != nil { + if err = api.StartServer(wmeta, taggerComp, ac, demultiplexer, optional.NewOption(collector), statusComponent, secretResolver, settings); err != nil { return log.Errorf("Error while starting agent API, exiting: %v", err) } diff --git a/cmd/cluster-agent/api/agent/agent.go b/cmd/cluster-agent/api/agent/agent.go index 553885e713fde..3093adcb259a7 100644 --- a/cmd/cluster-agent/api/agent/agent.go +++ b/cmd/cluster-agent/api/agent/agent.go @@ -23,13 +23,13 @@ import ( "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/settings" "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/config" - settingshttp "github.com/DataDog/datadog-agent/pkg/config/settings/http" "github.com/DataDog/datadog-agent/pkg/diagnose" "github.com/DataDog/datadog-agent/pkg/flare" "github.com/DataDog/datadog-agent/pkg/status/health" @@ -40,7 +40,7 @@ import ( ) // SetupHandlers adds the specific handlers for cluster agent endpoints -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) { +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, settings settings.Component) { r.HandleFunc("/version", getVersion).Methods("GET") r.HandleFunc("/hostname", getHostname).Methods("GET") r.HandleFunc("/flare", func(w http.ResponseWriter, r *http.Request) { @@ -52,10 +52,18 @@ func SetupHandlers(r *mux.Router, wmeta workloadmeta.Component, ac autodiscovery 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") - r.HandleFunc("/config/{setting}", settingshttp.Server.SetValue).Methods("POST") + r.HandleFunc("/config", settings.GetFullConfig(config.Datadog, "")).Methods("GET") + r.HandleFunc("/config/list-runtime", settings.ListConfigurable).Methods("GET") + r.HandleFunc("/config/{setting}", func(w http.ResponseWriter, r *http.Request) { + vars := mux.Vars(r) + setting := vars["setting"] + settings.GetValue(setting, w, r) + }).Methods("GET") + r.HandleFunc("/config/{setting}", func(w http.ResponseWriter, r *http.Request) { + vars := mux.Vars(r) + setting := vars["setting"] + settings.SetValue(setting, w, r) + }).Methods("POST") r.HandleFunc("/tagger-list", getTaggerList).Methods("GET") r.HandleFunc("/workload-list", func(w http.ResponseWriter, r *http.Request) { getWorkloadList(w, r, wmeta) diff --git a/cmd/cluster-agent/api/server.go b/cmd/cluster-agent/api/server.go index d5beb4528134f..bc75e55735d28 100644 --- a/cmd/cluster-agent/api/server.go +++ b/cmd/cluster-agent/api/server.go @@ -34,6 +34,7 @@ import ( "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/settings" "github.com/DataDog/datadog-agent/comp/core/status" "github.com/DataDog/datadog-agent/comp/core/tagger" taggerserver "github.com/DataDog/datadog-agent/comp/core/tagger/server" @@ -54,13 +55,13 @@ var ( ) // StartServer creates the router and starts the HTTP server -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 { +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, settings settings.Component) error { // create the root HTTP router router = mux.NewRouter() apiRouter = router.PathPrefix("/api/v1").Subrouter() // IPC REST API server - agent.SetupHandlers(router, w, ac, senderManager, collector, statusComponent, secretResolver) + agent.SetupHandlers(router, w, ac, senderManager, collector, statusComponent, secretResolver, settings) // API V1 Metadata APIs v1.InstallMetadataEndpoints(apiRouter, w) diff --git a/cmd/cluster-agent/subcommands/start/command.go b/cmd/cluster-agent/subcommands/start/command.go index f439e7e624868..f3ba00b1539d3 100644 --- a/cmd/cluster-agent/subcommands/start/command.go +++ b/cmd/cluster-agent/subcommands/start/command.go @@ -41,6 +41,8 @@ import ( "github.com/DataDog/datadog-agent/comp/core/log" "github.com/DataDog/datadog-agent/comp/core/log/logimpl" "github.com/DataDog/datadog-agent/comp/core/secrets" + "github.com/DataDog/datadog-agent/comp/core/settings" + "github.com/DataDog/datadog-agent/comp/core/settings/settingsimpl" "github.com/DataDog/datadog-agent/comp/core/status" "github.com/DataDog/datadog-agent/comp/core/status/statusimpl" "github.com/DataDog/datadog-agent/comp/core/tagger" @@ -177,6 +179,16 @@ func Commands(globalParams *command.GlobalParams) []*cobra.Command { } }), healthprobeimpl.Module(), + fx.Supply( + settings.Settings{ + "log_level": commonsettings.NewLogLevelRuntimeSetting(), + "runtime_mutex_profile_fraction": commonsettings.NewRuntimeMutexProfileFraction(), + "runtime_block_profile_rate": commonsettings.NewRuntimeBlockProfileRate(), + "internal_profiling_goroutines": commonsettings.NewProfilingGoroutines(), + "internal_profiling": commonsettings.NewProfilingRuntimeSetting("internal_profiling", "datadog-cluster-agent"), + }, + ), + settingsimpl.Module(), ) }, } @@ -196,6 +208,7 @@ func start(log log.Component, collector collector.Component, rcService optional.Option[rccomp.Component], _ healthprobe.Component, + settings settings.Component, ) error { stopCh := make(chan struct{}) @@ -212,13 +225,8 @@ func start(log log.Component, pkglog.Warnf("Can't setup core dumps: %v, core dumps might not be available after a crash", err) } - // Init settings that can be changed at runtime - if err := initRuntimeSettings(); err != nil { - pkglog.Warnf("Can't initiliaze the runtime settings: %v", err) - } - // Setup Internal Profiling - common.SetupInternalProfiling(config, "") + common.SetupInternalProfiling(settings, config, "") if !config.IsSet("api_key") { return fmt.Errorf("no API key configured, exiting") @@ -264,7 +272,7 @@ func start(log log.Component, } // Starting server early to ease investigations - if err := api.StartServer(wmeta, taggerComp, ac, demultiplexer, optional.NewOption(collector), statusComponent, secretResolver); err != nil { + if err := api.StartServer(wmeta, taggerComp, ac, demultiplexer, optional.NewOption(collector), statusComponent, secretResolver, settings); err != nil { return fmt.Errorf("Error while starting agent API, exiting: %v", err) } @@ -484,27 +492,6 @@ func start(log log.Component, return nil } -// initRuntimeSettings builds the map of runtime Cluster Agent settings configurable at runtime. -func initRuntimeSettings() error { - if err := commonsettings.RegisterRuntimeSetting(commonsettings.NewLogLevelRuntimeSetting()); err != nil { - return err - } - - if err := commonsettings.RegisterRuntimeSetting(commonsettings.NewRuntimeMutexProfileFraction()); err != nil { - return err - } - - if err := commonsettings.RegisterRuntimeSetting(commonsettings.NewRuntimeBlockProfileRate()); err != nil { - return err - } - - if err := commonsettings.RegisterRuntimeSetting(commonsettings.NewProfilingGoroutines()); err != nil { - return err - } - - return commonsettings.RegisterRuntimeSetting(commonsettings.NewProfilingRuntimeSetting("internal_profiling", "datadog-cluster-agent")) -} - func setupClusterCheck(ctx context.Context, ac autodiscovery.Component) (*clusterchecks.Handler, error) { handler, err := clusterchecks.NewHandler(ac) if err != nil { diff --git a/cmd/cws-instrumentation/subcommands/tracecmd/trace.go b/cmd/cws-instrumentation/subcommands/tracecmd/trace.go index 4741281d34196..f9fede9ce1910 100644 --- a/cmd/cws-instrumentation/subcommands/tracecmd/trace.go +++ b/cmd/cws-instrumentation/subcommands/tracecmd/trace.go @@ -24,7 +24,7 @@ const ( // envDisableStats defines the environment variable to set to disable avoidable stats envDisableStats = "DD_CWS_INSTRUMENTATION_DISABLE_STATS" // envDisableProcScan defines the environment variable to disable procfs scan - envDisableProcScan = "DD_CWS_INSTRUMENTATION_DISABLE_PROC_SCAN" + // envDisableProcScan = "DD_CWS_INSTRUMENTATION_DISABLE_PROC_SCAN" // envProcScanRate defines the rate of the prodfs scan envProcScanRate = "DD_CWS_INSTRUMENTATION_PROC_SCAN_RATE" ) @@ -103,7 +103,7 @@ func Command() []*cobra.Command { traceCmd.Flags().Int32Var(¶ms.GID, gid, -1, "gid used to start the tracee") traceCmd.Flags().BoolVar(¶ms.Async, async, false, "enable async GRPC connection") traceCmd.Flags().BoolVar(¶ms.DisableStats, disableStats, os.Getenv(envDisableStats) != "", "disable use of stats") - traceCmd.Flags().BoolVar(¶ms.DisableProcScan, disableProcScan, os.Getenv(envDisableProcScan) != "", "disable proc scan") + traceCmd.Flags().BoolVar(¶ms.DisableProcScan, disableProcScan, true, "disable proc scan") traceCmd.Flags().StringVar(¶ms.ScanProcEvery, scanProcEvery, os.Getenv(envProcScanRate), "proc scan rate") traceCmd.AddCommand(selftestscmd.Command()...) diff --git a/cmd/dogstatsd/subcommands/start/command.go b/cmd/dogstatsd/subcommands/start/command.go index ffee5757ae2bf..ae358002deafb 100644 --- a/cmd/dogstatsd/subcommands/start/command.go +++ b/cmd/dogstatsd/subcommands/start/command.go @@ -117,7 +117,9 @@ func RunDogstatsdFct(cliParams *CLIParams, defaultConfPath string, defaultLogFil config.WithConfigMissingOK(true), config.WithConfigName("dogstatsd")), ), - fx.Supply(optional.NewNoneOption[secrets.Component]()), + fx.Provide(func(comp secrets.Component) optional.Option[secrets.Component] { + return optional.NewOption[secrets.Component](comp) + }), fx.Supply(secrets.NewEnabledParams()), fx.Supply(logComponent.ForDaemon(string(loggerName), "log_file", params.DefaultLogFile)), config.Module(), diff --git a/cmd/process-agent/api/server.go b/cmd/process-agent/api/server.go index 68313a12f6087..7d4fb73c2f25b 100644 --- a/cmd/process-agent/api/server.go +++ b/cmd/process-agent/api/server.go @@ -13,9 +13,10 @@ import ( "github.com/DataDog/datadog-agent/comp/core/config" "github.com/DataDog/datadog-agent/comp/core/log" + "github.com/DataDog/datadog-agent/comp/core/settings" "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" + pkgconfig "github.com/DataDog/datadog-agent/pkg/config" ) //nolint:revive // TODO(PROC) Fix revive linter @@ -26,6 +27,7 @@ type APIServerDeps struct { Log log.Component WorkloadMeta workloadmeta.Component Status status.Component + Settings settings.Component } func injectDeps(deps APIServerDeps, handler func(APIServerDeps, http.ResponseWriter, *http.Request)) http.HandlerFunc { @@ -36,11 +38,20 @@ func injectDeps(deps APIServerDeps, handler func(APIServerDeps, http.ResponseWri //nolint:revive // TODO(PROC) Fix revive linter func SetupAPIServerHandlers(deps APIServerDeps, r *mux.Router) { - r.HandleFunc("/config", settingshttp.Server.GetFullDatadogConfig("process_config")).Methods("GET") // Get only settings in the process_config namespace - r.HandleFunc("/config/all", settingshttp.Server.GetFullDatadogConfig("")).Methods("GET") // Get all fields from process-agent Config object - r.HandleFunc("/config/list-runtime", settingshttp.Server.ListConfigurable).Methods("GET") - r.HandleFunc("/config/{setting}", settingshttp.Server.GetValue).Methods("GET") - r.HandleFunc("/config/{setting}", settingshttp.Server.SetValue).Methods("POST") + r.HandleFunc("/config", deps.Settings.GetFullConfig(pkgconfig.Datadog, "process_config")).Methods("GET") + r.HandleFunc("/config/all", deps.Settings.GetFullConfig(pkgconfig.Datadog, "")).Methods("GET") // Get all fields from process-agent Config object + r.HandleFunc("/config/list-runtime", deps.Settings.ListConfigurable).Methods("GET") + r.HandleFunc("/config/{setting}", func(w http.ResponseWriter, r *http.Request) { + vars := mux.Vars(r) + setting := vars["setting"] + deps.Settings.GetValue(setting, w, r) + }).Methods("GET") + r.HandleFunc("/config/{setting}", func(w http.ResponseWriter, r *http.Request) { + vars := mux.Vars(r) + setting := vars["setting"] + deps.Settings.SetValue(setting, w, r) + }).Methods("POST") + r.HandleFunc("/agent/status", injectDeps(deps, statusHandler)).Methods("GET") r.HandleFunc("/agent/tagger-list", injectDeps(deps, getTaggerList)).Methods("GET") r.HandleFunc("/agent/workload-list/short", func(w http.ResponseWriter, r *http.Request) { diff --git a/cmd/process-agent/command/command.go b/cmd/process-agent/command/command.go index 49723713c79ed..8f2b5750d347f 100644 --- a/cmd/process-agent/command/command.go +++ b/cmd/process-agent/command/command.go @@ -72,7 +72,7 @@ func MakeCommand(subcommandFactories []SubcommandFactory, winParams bool, rootCm globalParams := GlobalParams{} rootCmd := &cobra.Command{ - Run: func(cmd *cobra.Command, args []string) { + Run: func(_ *cobra.Command, _ []string) { rootCmdRun(&globalParams) }, SilenceUsage: true, diff --git a/cmd/process-agent/command/main_common.go b/cmd/process-agent/command/main_common.go index 0ef3f05e7a369..63c7d1b7801c6 100644 --- a/cmd/process-agent/command/main_common.go +++ b/cmd/process-agent/command/main_common.go @@ -14,7 +14,8 @@ import ( "go.uber.org/fx" "github.com/DataDog/datadog-agent/cmd/agent/common/misconfig" - "github.com/DataDog/datadog-agent/cmd/manager" + "github.com/DataDog/datadog-agent/comp/agent/autoexit" + "github.com/DataDog/datadog-agent/comp/agent/autoexit/autoexitimpl" "github.com/DataDog/datadog-agent/comp/api/authtoken/fetchonlyimpl" "github.com/DataDog/datadog-agent/comp/core" "github.com/DataDog/datadog-agent/comp/core/config" @@ -24,6 +25,8 @@ import ( "github.com/DataDog/datadog-agent/comp/core/pid" "github.com/DataDog/datadog-agent/comp/core/pid/pidimpl" "github.com/DataDog/datadog-agent/comp/core/secrets" + "github.com/DataDog/datadog-agent/comp/core/settings" + "github.com/DataDog/datadog-agent/comp/core/settings/settingsimpl" "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" @@ -45,6 +48,7 @@ import ( "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" + commonsettings "github.com/DataDog/datadog-agent/pkg/config/settings" "github.com/DataDog/datadog-agent/pkg/process/metadata/workloadmeta/collector" "github.com/DataDog/datadog-agent/pkg/process/statsd" "github.com/DataDog/datadog-agent/pkg/process/util" @@ -150,6 +154,9 @@ func runApp(ctx context.Context, globalParams *GlobalParams) error { // Provide configsync module configsyncimpl.OptionalModule(), + // Provide autoexit module + autoexitimpl.Module(), + // Provide the corresponding workloadmeta Params to configure the catalog collectors.GetCatalog(), fx.Provide(func(c config.Component) workloadmeta.Params { @@ -195,12 +202,23 @@ func runApp(ctx context.Context, globalParams *GlobalParams) error { _ tagger.Component, _ pid.Component, processAgent agent.Component, + _ autoexit.Component, ) error { if !processAgent.Enabled() { return errAgentDisabled } return nil }), + fx.Supply( + settings.Settings{ + "log_level": commonsettings.NewLogLevelRuntimeSetting(), + "runtime_mutex_profile_fraction": commonsettings.NewRuntimeMutexProfileFraction(), + "runtime_block_profile_rate": commonsettings.NewRuntimeBlockProfileRate(), + "internal_profiling_goroutines": commonsettings.NewProfilingGoroutines(), + "internal_profiling": commonsettings.NewProfilingRuntimeSetting("internal_profiling", "process-agent"), + }, + ), + settingsimpl.Module(), ) if err := app.Err(); err != nil { @@ -295,13 +313,7 @@ func initMisc(deps miscDeps) error { // appCtx is a context that cancels when the OnStop hook is called appCtx, stopApp := context.WithCancel(context.Background()) deps.Lc.Append(fx.Hook{ - OnStart: func(startCtx context.Context) error { - - err := manager.ConfigureAutoExit(startCtx, deps.Config) - if err != nil { - deps.Logger.Criticalf("Unable to configure auto-exit, err: %w", err) - return err - } + OnStart: func(_ context.Context) error { if collector.Enabled(deps.Config) { err := processCollectionServer.Start(appCtx, deps.WorkloadMeta) @@ -312,7 +324,7 @@ func initMisc(deps miscDeps) error { return nil }, - OnStop: func(ctx context.Context) error { + OnStop: func(_ context.Context) error { stopApp() return nil diff --git a/cmd/security-agent/api/agent/agent.go b/cmd/security-agent/api/agent/agent.go index d436421d572c3..f2548944c91b3 100644 --- a/cmd/security-agent/api/agent/agent.go +++ b/cmd/security-agent/api/agent/agent.go @@ -16,9 +16,9 @@ import ( "github.com/DataDog/datadog-agent/cmd/agent/common" "github.com/DataDog/datadog-agent/cmd/agent/common/signals" + "github.com/DataDog/datadog-agent/comp/core/settings" "github.com/DataDog/datadog-agent/comp/core/status" "github.com/DataDog/datadog-agent/pkg/config" - settingshttp "github.com/DataDog/datadog-agent/pkg/config/settings/http" "github.com/DataDog/datadog-agent/pkg/flare" "github.com/DataDog/datadog-agent/pkg/status/health" "github.com/DataDog/datadog-agent/pkg/util/hostname" @@ -28,12 +28,14 @@ import ( // Agent handles REST API calls type Agent struct { statusComponent status.Component + settings settings.Component } // NewAgent returns a new Agent -func NewAgent(statusComponent status.Component) *Agent { +func NewAgent(statusComponent status.Component, settings settings.Component) *Agent { return &Agent{ statusComponent: statusComponent, + settings: settings, } } @@ -45,10 +47,18 @@ func (a *Agent) SetupHandlers(r *mux.Router) { r.HandleFunc("/stop", a.stopAgent).Methods("POST") r.HandleFunc("/status", a.getStatus).Methods("GET") r.HandleFunc("/status/health", a.getHealth).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") - r.HandleFunc("/config/{setting}", settingshttp.Server.SetValue).Methods("POST") + r.HandleFunc("/config", a.settings.GetFullConfig(config.Datadog, "")).Methods("GET") + r.HandleFunc("/config/list-runtime", a.settings.ListConfigurable).Methods("GET") + r.HandleFunc("/config/{setting}", func(w http.ResponseWriter, r *http.Request) { + vars := mux.Vars(r) + setting := vars["setting"] + a.settings.GetValue(setting, w, r) + }).Methods("GET") + r.HandleFunc("/config/{setting}", func(w http.ResponseWriter, r *http.Request) { + vars := mux.Vars(r) + setting := vars["setting"] + a.settings.SetValue(setting, w, r) + }).Methods("POST") } func (a *Agent) stopAgent(w http.ResponseWriter, _ *http.Request) { diff --git a/cmd/security-agent/api/server.go b/cmd/security-agent/api/server.go index fa2224b3d7427..edde1d385c215 100644 --- a/cmd/security-agent/api/server.go +++ b/cmd/security-agent/api/server.go @@ -24,6 +24,7 @@ import ( "github.com/gorilla/mux" "github.com/DataDog/datadog-agent/cmd/security-agent/api/agent" + "github.com/DataDog/datadog-agent/comp/core/settings" "github.com/DataDog/datadog-agent/comp/core/status" "github.com/DataDog/datadog-agent/pkg/api/security" "github.com/DataDog/datadog-agent/pkg/api/util" @@ -37,14 +38,14 @@ type Server struct { } // NewServer creates a new Server instance -func NewServer(statusComponent status.Component) (*Server, error) { +func NewServer(statusComponent status.Component, settings settings.Component) (*Server, error) { listener, err := newListener() if err != nil { return nil, err } return &Server{ listener: listener, - agent: agent.NewAgent(statusComponent), + agent: agent.NewAgent(statusComponent, settings), }, nil } diff --git a/cmd/security-agent/main_windows.go b/cmd/security-agent/main_windows.go index 37c6c762829ef..9f78c5914adbb 100644 --- a/cmd/security-agent/main_windows.go +++ b/cmd/security-agent/main_windows.go @@ -22,6 +22,8 @@ import ( "github.com/DataDog/datadog-agent/cmd/security-agent/subcommands" "github.com/DataDog/datadog-agent/cmd/security-agent/subcommands/runtime" "github.com/DataDog/datadog-agent/cmd/security-agent/subcommands/start" + "github.com/DataDog/datadog-agent/comp/agent/autoexit" + "github.com/DataDog/datadog-agent/comp/agent/autoexit/autoexitimpl" "github.com/DataDog/datadog-agent/comp/api/authtoken/fetchonlyimpl" "github.com/DataDog/datadog-agent/comp/core" "github.com/DataDog/datadog-agent/comp/core/config" @@ -30,6 +32,8 @@ import ( "github.com/DataDog/datadog-agent/comp/core/log" "github.com/DataDog/datadog-agent/comp/core/log/logimpl" "github.com/DataDog/datadog-agent/comp/core/secrets" + "github.com/DataDog/datadog-agent/comp/core/settings" + "github.com/DataDog/datadog-agent/comp/core/settings/settingsimpl" "github.com/DataDog/datadog-agent/comp/core/status" "github.com/DataDog/datadog-agent/comp/core/status/statusimpl" "github.com/DataDog/datadog-agent/comp/core/sysprobeconfig" @@ -40,6 +44,7 @@ import ( "github.com/DataDog/datadog-agent/comp/dogstatsd" "github.com/DataDog/datadog-agent/comp/dogstatsd/statsd" "github.com/DataDog/datadog-agent/comp/metadata/host/hostimpl" + commonsettings "github.com/DataDog/datadog-agent/pkg/config/settings" "github.com/DataDog/datadog-agent/pkg/collector/python" "github.com/DataDog/datadog-agent/pkg/config/setup" @@ -84,11 +89,10 @@ func (s *service) Run(svcctx context.Context) error { params := &cliParams{} err := fxutil.OneShot( func(log log.Component, config config.Component, _ secrets.Component, statsd statsd.Component, sysprobeconfig sysprobeconfig.Component, - telemetry telemetry.Component, _ workloadmeta.Component, params *cliParams, statusComponent status.Component) error { - ctx, cancel := context.WithCancel(context.Background()) - defer start.StopAgent(cancel, log) + telemetry telemetry.Component, _ workloadmeta.Component, params *cliParams, statusComponent status.Component, _ autoexit.Component, settings settings.Component) error { + defer start.StopAgent(log) - err := start.RunAgent(ctx, log, config, telemetry, statusComponent) + err := start.RunAgent(log, config, telemetry, statusComponent, settings) if err != nil { return err } @@ -167,6 +171,13 @@ func (s *service) Run(svcctx context.Context) error { configsyncimpl.OptionalModule(), // Force the instantiation of the component fx.Invoke(func(_ optional.Option[configsync.Component]) {}), + autoexitimpl.Module(), + fx.Supply( + settings.Settings{ + "log_level": commonsettings.NewLogLevelRuntimeSetting(), + }, + ), + settingsimpl.Module(), ) return err diff --git a/cmd/security-agent/subcommands/start/command.go b/cmd/security-agent/subcommands/start/command.go index b9dac97fe07cc..df1f232ba40dc 100644 --- a/cmd/security-agent/subcommands/start/command.go +++ b/cmd/security-agent/subcommands/start/command.go @@ -23,11 +23,12 @@ import ( ddgostatsd "github.com/DataDog/datadog-go/v5/statsd" - "github.com/DataDog/datadog-agent/cmd/manager" "github.com/DataDog/datadog-agent/cmd/security-agent/api" "github.com/DataDog/datadog-agent/cmd/security-agent/command" "github.com/DataDog/datadog-agent/cmd/security-agent/subcommands/compliance" "github.com/DataDog/datadog-agent/cmd/security-agent/subcommands/runtime" + "github.com/DataDog/datadog-agent/comp/agent/autoexit" + "github.com/DataDog/datadog-agent/comp/agent/autoexit/autoexitimpl" "github.com/DataDog/datadog-agent/comp/api/authtoken/fetchonlyimpl" "github.com/DataDog/datadog-agent/comp/core" "github.com/DataDog/datadog-agent/comp/core/config" @@ -38,6 +39,8 @@ import ( "github.com/DataDog/datadog-agent/comp/core/pid" "github.com/DataDog/datadog-agent/comp/core/pid/pidimpl" "github.com/DataDog/datadog-agent/comp/core/secrets" + "github.com/DataDog/datadog-agent/comp/core/settings" + "github.com/DataDog/datadog-agent/comp/core/settings/settingsimpl" "github.com/DataDog/datadog-agent/comp/core/status" "github.com/DataDog/datadog-agent/comp/core/status/statusimpl" "github.com/DataDog/datadog-agent/comp/core/sysprobeconfig" @@ -53,7 +56,7 @@ import ( pkgCompliance "github.com/DataDog/datadog-agent/pkg/compliance" pkgconfig "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/config/model" - "github.com/DataDog/datadog-agent/pkg/config/settings" + commonsettings "github.com/DataDog/datadog-agent/pkg/config/settings" "github.com/DataDog/datadog-agent/pkg/config/setup" "github.com/DataDog/datadog-agent/pkg/security/agent" "github.com/DataDog/datadog-agent/pkg/security/utils" @@ -82,7 +85,7 @@ func Commands(globalParams *command.GlobalParams) []*cobra.Command { Use: "start", Short: "Start the Security Agent", Long: `Runs Datadog Security agent in the foreground`, - RunE: func(cmd *cobra.Command, args []string) error { + RunE: func(_ *cobra.Command, _ []string) error { // TODO: Similar to the agent itself, once the security agent is represented as a component, and not a function (start), // this will use `fxutil.Run` instead of `fxutil.OneShot`. @@ -174,7 +177,14 @@ func Commands(globalParams *command.GlobalParams) []*cobra.Command { configsyncimpl.OptionalModule(), // Force the instantiation of the component fx.Invoke(func(_ optional.Option[configsync.Component]) {}), + autoexitimpl.Module(), fx.Supply(pidimpl.NewParams(params.pidfilePath)), + fx.Supply( + settings.Settings{ + "log_level": commonsettings.NewLogLevelRuntimeSetting(), + }, + ), + settingsimpl.Module(), ) }, } @@ -189,11 +199,10 @@ func Commands(globalParams *command.GlobalParams) []*cobra.Command { // TODO(components): note how workloadmeta is passed anonymously, it is still required as it is used // as a global. This should eventually be fixed and all workloadmeta interactions should be via the // injected instance. -func start(log log.Component, config config.Component, _ secrets.Component, _ statsd.Component, _ sysprobeconfig.Component, telemetry telemetry.Component, statusComponent status.Component, _ pid.Component) error { - ctx, cancel := context.WithCancel(context.Background()) - defer StopAgent(cancel, log) +func start(log log.Component, config config.Component, _ secrets.Component, _ statsd.Component, _ sysprobeconfig.Component, telemetry telemetry.Component, statusComponent status.Component, _ pid.Component, _ autoexit.Component, settings settings.Component) error { + defer StopAgent(log) - err := RunAgent(ctx, log, config, telemetry, statusComponent) + err := RunAgent(log, config, telemetry, statusComponent, settings) if errors.Is(err, errAllComponentsDisabled) || errors.Is(err, errNoAPIKeyConfigured) { return nil } @@ -244,7 +253,7 @@ var errAllComponentsDisabled = errors.New("all security-agent component are disa var errNoAPIKeyConfigured = errors.New("no API key configured") // RunAgent initialized resources and starts API server -func RunAgent(ctx context.Context, log log.Component, config config.Component, telemetry telemetry.Component, statusComponent status.Component) (err error) { +func RunAgent(log log.Component, config config.Component, telemetry telemetry.Component, statusComponent status.Component, settings settings.Component) (err error) { if err := util.SetupCoreDump(config); err != nil { log.Warnf("Can't setup core dumps: %v, core dumps might not be available after a crash", err) } @@ -270,12 +279,6 @@ func RunAgent(ctx context.Context, log log.Component, config config.Component, t return errNoAPIKeyConfigured } - err = manager.ConfigureAutoExit(ctx, config) - if err != nil { - log.Criticalf("Unable to configure auto-exit, err: %w", err) - return nil - } - // Setup expvar server port := config.GetString("security_agent.expvar_port") pkgconfig.Datadog.Set("expvar_port", port, model.SourceAgentRuntime) @@ -293,11 +296,7 @@ func RunAgent(ctx context.Context, log log.Component, config config.Component, t } }() - if err = initRuntimeSettings(); err != nil { - return err - } - - srv, err = api.NewServer(statusComponent) + srv, err = api.NewServer(statusComponent, settings) if err != nil { return log.Errorf("Error while creating api server, exiting: %v", err) } @@ -315,12 +314,8 @@ func RunAgent(ctx context.Context, log log.Component, config config.Component, t return } -func initRuntimeSettings() error { - return settings.RegisterRuntimeSetting(settings.NewLogLevelRuntimeSetting()) -} - // StopAgent stops the API server and clean up resources -func StopAgent(cancel context.CancelFunc, log log.Component) { +func StopAgent(log log.Component) { // retrieve the agent health before stopping the components // GetReadyNonBlocking has a 100ms timeout to avoid blocking healthStatus, err := health.GetReadyNonBlocking() @@ -330,9 +325,6 @@ func StopAgent(cancel context.CancelFunc, log log.Component) { log.Warnf("Some components were unhealthy: %v", healthStatus.Unhealthy) } - // gracefully shut down any component - cancel() - // stop metaScheduler and statsd if they are instantiated if stopper != nil { stopper.Stop() diff --git a/cmd/serverless-init/cloudservice/containerapp.go b/cmd/serverless-init/cloudservice/containerapp.go index e453680162886..dba7e62282f6b 100644 --- a/cmd/serverless-init/cloudservice/containerapp.go +++ b/cmd/serverless-init/cloudservice/containerapp.go @@ -27,6 +27,8 @@ const ( ContainerAppDNSSuffix = "CONTAINER_APP_ENV_DNS_SUFFIX" //nolint:revive // TODO(SERV) Fix revive linter ContainerAppRevision = "CONTAINER_APP_REVISION" + //nolint:revive // TODO(SERV) Fix revive linter + ContainerAppReplicaName = "CONTAINER_APP_REPLICA_NAME" //nolint:revive // TODO(SERV) Fix revive linter AzureSubscriptionIdEnvVar = "DD_AZURE_SUBSCRIPTION_ID" @@ -43,13 +45,15 @@ func (c *ContainerApp) GetTags() map[string]string { region := appDNSSuffixTokens[len(appDNSSuffixTokens)-3] revision := os.Getenv(ContainerAppRevision) + replica := os.Getenv(ContainerAppReplicaName) tags := map[string]string{ - "app_name": appName, - "region": region, - "revision": revision, - "origin": c.GetOrigin(), - "_dd.origin": c.GetOrigin(), + "app_name": appName, + "region": region, + "revision": revision, + "replica_name": replica, + "origin": c.GetOrigin(), + "_dd.origin": c.GetOrigin(), } if c.SubscriptionId != "" { diff --git a/cmd/serverless-init/cloudservice/containerapp_test.go b/cmd/serverless-init/cloudservice/containerapp_test.go index a30edf412c509..7da872f0c4faa 100644 --- a/cmd/serverless-init/cloudservice/containerapp_test.go +++ b/cmd/serverless-init/cloudservice/containerapp_test.go @@ -19,6 +19,7 @@ func TestGetContainerAppTags(t *testing.T) { t.Setenv("CONTAINER_APP_NAME", "test_app_name") t.Setenv("CONTAINER_APP_ENV_DNS_SUFFIX", "test.bluebeach.eastus.azurecontainerapps.io") t.Setenv("CONTAINER_APP_REVISION", "test_revision") + t.Setenv("CONTAINER_APP_REPLICA_NAME", "test--6nyz8z7-b845f7667-m7hlv") t.Setenv("DD_AZURE_SUBSCRIPTION_ID", "test_subscription_id") t.Setenv("DD_AZURE_RESOURCE_GROUP", "test_resource_group") @@ -26,11 +27,12 @@ func TestGetContainerAppTags(t *testing.T) { tags := service.GetTags() assert.Equal(t, map[string]string{ - "app_name": "test_app_name", - "origin": "containerapp", - "region": "eastus", - "revision": "test_revision", - "_dd.origin": "containerapp", + "app_name": "test_app_name", + "origin": "containerapp", + "region": "eastus", + "revision": "test_revision", + "replica_name": "test--6nyz8z7-b845f7667-m7hlv", + "_dd.origin": "containerapp", }, tags) } @@ -40,6 +42,7 @@ func TestGetContainerAppTagsWithOptionalEnvVars(t *testing.T) { t.Setenv("CONTAINER_APP_NAME", "test_app_name") t.Setenv("CONTAINER_APP_ENV_DNS_SUFFIX", "test.bluebeach.eastus.azurecontainerapps.io") t.Setenv("CONTAINER_APP_REVISION", "test_revision") + t.Setenv("CONTAINER_APP_REPLICA_NAME", "test--6nyz8z7-b845f7667-m7hlv") t.Setenv("DD_AZURE_SUBSCRIPTION_ID", "test_subscription_id") t.Setenv("DD_AZURE_RESOURCE_GROUP", "test_resource_group") @@ -54,6 +57,7 @@ func TestGetContainerAppTagsWithOptionalEnvVars(t *testing.T) { "origin": "containerapp", "region": "eastus", "revision": "test_revision", + "replica_name": "test--6nyz8z7-b845f7667-m7hlv", "_dd.origin": "containerapp", "subscription_id": "test_subscription_id", "resource_id": "/subscriptions/test_subscription_id/resourcegroups/test_resource_group/providers/microsoft.app/containerapps/test_app_name", @@ -69,6 +73,7 @@ func TestInitHasErrorsWhenMissingSubscriptionId(t *testing.T) { t.Setenv("CONTAINER_APP_NAME", "test_app_name") t.Setenv("CONTAINER_APP_ENV_DNS_SUFFIX", "test.bluebeach.eastus.azurecontainerapps.io") t.Setenv("CONTAINER_APP_REVISION", "test_revision") + t.Setenv("CONTAINER_APP_REPLICA_NAME", "test--6nyz8z7-b845f7667-m7hlv") t.Setenv("DD_AZURE_RESOURCE_GROUP", "test_resource_group") @@ -93,6 +98,7 @@ func TestInitHasErrorsWhenMissingResourceGroup(t *testing.T) { t.Setenv("CONTAINER_APP_NAME", "test_app_name") t.Setenv("CONTAINER_APP_ENV_DNS_SUFFIX", "test.bluebeach.eastus.azurecontainerapps.io") t.Setenv("CONTAINER_APP_REVISION", "test_revision") + t.Setenv("CONTAINER_APP_REPLICA_NAME", "test--6nyz8z7-b845f7667-m7hlv") t.Setenv("DD_AZURE_SUBSCRIPTION_ID", "test_subscription_id") diff --git a/cmd/system-probe/api/config.go b/cmd/system-probe/api/config.go index 22834b4a7bf03..e6712687b943d 100644 --- a/cmd/system-probe/api/config.go +++ b/cmd/system-probe/api/config.go @@ -6,19 +6,30 @@ package api import ( + "net/http" + "github.com/gorilla/mux" "github.com/DataDog/datadog-agent/cmd/system-probe/config" "github.com/DataDog/datadog-agent/cmd/system-probe/modules" - settingshttp "github.com/DataDog/datadog-agent/pkg/config/settings/http" + "github.com/DataDog/datadog-agent/comp/core/settings" + pkgconfig "github.com/DataDog/datadog-agent/pkg/config" ) // setupConfigHandlers adds the specific handlers for /config endpoints -func setupConfigHandlers(r *mux.Router) { - r.HandleFunc("/config", settingshttp.Server.GetFullSystemProbeConfig(getAggregatedNamespaces()...)).Methods("GET") - r.HandleFunc("/config/list-runtime", settingshttp.Server.ListConfigurable).Methods("GET") - r.HandleFunc("/config/{setting}", settingshttp.Server.GetValue).Methods("GET") - r.HandleFunc("/config/{setting}", settingshttp.Server.SetValue).Methods("POST") +func setupConfigHandlers(r *mux.Router, settings settings.Component) { + r.HandleFunc("/config", settings.GetFullConfig(pkgconfig.SystemProbe, getAggregatedNamespaces()...)).Methods("GET") + r.HandleFunc("/config/list-runtime", settings.ListConfigurable).Methods("GET") + r.HandleFunc("/config/{setting}", func(w http.ResponseWriter, r *http.Request) { + vars := mux.Vars(r) + setting := vars["setting"] + settings.GetValue(setting, w, r) + }).Methods("GET") + r.HandleFunc("/config/{setting}", func(w http.ResponseWriter, r *http.Request) { + vars := mux.Vars(r) + setting := vars["setting"] + settings.SetValue(setting, w, r) + }).Methods("POST") } func getAggregatedNamespaces() []string { diff --git a/cmd/system-probe/api/server.go b/cmd/system-probe/api/server.go index 24c4549d2833f..c71946f3ac9c1 100644 --- a/cmd/system-probe/api/server.go +++ b/cmd/system-probe/api/server.go @@ -18,6 +18,7 @@ import ( sysconfigtypes "github.com/DataDog/datadog-agent/cmd/system-probe/config/types" "github.com/DataDog/datadog-agent/cmd/system-probe/modules" "github.com/DataDog/datadog-agent/cmd/system-probe/utils" + "github.com/DataDog/datadog-agent/comp/core/settings" "github.com/DataDog/datadog-agent/comp/core/telemetry" "github.com/DataDog/datadog-agent/comp/core/workloadmeta" "github.com/DataDog/datadog-agent/pkg/process/net" @@ -26,7 +27,7 @@ import ( ) // 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, wmeta optional.Option[workloadmeta.Component]) error { +func StartServer(cfg *sysconfigtypes.Config, telemetry telemetry.Component, wmeta optional.Option[workloadmeta.Component], settings settings.Component) error { conn, err := net.NewListener(cfg.SocketAddress) if err != nil { return fmt.Errorf("error creating IPC socket: %s", err) @@ -44,7 +45,7 @@ func StartServer(cfg *sysconfigtypes.Config, telemetry telemetry.Component, wmet utils.WriteAsJSON(w, module.GetStats()) })) - setupConfigHandlers(mux) + setupConfigHandlers(mux, settings) // Module-restart handler mux.HandleFunc("/module-restart/{module-name}", func(w http.ResponseWriter, r *http.Request) { restartModuleHandler(w, r, wmeta) }).Methods("POST") diff --git a/cmd/system-probe/common/common.go b/cmd/system-probe/common/common.go index 60e55c9e71896..af05b69639b84 100644 --- a/cmd/system-probe/common/common.go +++ b/cmd/system-probe/common/common.go @@ -7,7 +7,6 @@ package common import ( - "context" "net/http" "github.com/DataDog/datadog-agent/cmd/system-probe/utils" @@ -19,7 +18,4 @@ var ( // ExpvarServer is the global expvar server ExpvarServer *http.Server - - // MainCtxCancel cancels the main system-probe context - MainCtxCancel context.CancelFunc ) diff --git a/cmd/system-probe/subcommands/run/command.go b/cmd/system-probe/subcommands/run/command.go index d2bb7c302ec1e..996b6cfe267fa 100644 --- a/cmd/system-probe/subcommands/run/command.go +++ b/cmd/system-probe/subcommands/run/command.go @@ -22,12 +22,14 @@ import ( "go.uber.org/fx" "github.com/DataDog/datadog-agent/cmd/agent/common/signals" - "github.com/DataDog/datadog-agent/cmd/manager" "github.com/DataDog/datadog-agent/cmd/system-probe/api" "github.com/DataDog/datadog-agent/cmd/system-probe/api/module" "github.com/DataDog/datadog-agent/cmd/system-probe/command" "github.com/DataDog/datadog-agent/cmd/system-probe/common" + systemprobeconfig "github.com/DataDog/datadog-agent/cmd/system-probe/config" "github.com/DataDog/datadog-agent/cmd/system-probe/utils" + "github.com/DataDog/datadog-agent/comp/agent/autoexit" + "github.com/DataDog/datadog-agent/comp/agent/autoexit/autoexitimpl" "github.com/DataDog/datadog-agent/comp/core/config" "github.com/DataDog/datadog-agent/comp/core/healthprobe" "github.com/DataDog/datadog-agent/comp/core/healthprobe/healthprobeimpl" @@ -36,6 +38,8 @@ import ( "github.com/DataDog/datadog-agent/comp/core/pid" "github.com/DataDog/datadog-agent/comp/core/pid/pidimpl" "github.com/DataDog/datadog-agent/comp/core/secrets" + "github.com/DataDog/datadog-agent/comp/core/settings" + "github.com/DataDog/datadog-agent/comp/core/settings/settingsimpl" "github.com/DataDog/datadog-agent/comp/core/sysprobeconfig" "github.com/DataDog/datadog-agent/comp/core/sysprobeconfig/sysprobeconfigimpl" "github.com/DataDog/datadog-agent/comp/core/telemetry" @@ -45,7 +49,7 @@ import ( "github.com/DataDog/datadog-agent/comp/remote-config/rcclient/rcclientimpl" ddconfig "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/config/model" - "github.com/DataDog/datadog-agent/pkg/config/settings" + commonsettings "github.com/DataDog/datadog-agent/pkg/config/settings" ebpftelemetry "github.com/DataDog/datadog-agent/pkg/ebpf/telemetry" processstatsd "github.com/DataDog/datadog-agent/pkg/process/statsd" ddruntime "github.com/DataDog/datadog-agent/pkg/runtime" @@ -60,6 +64,8 @@ import ( // ErrNotEnabled represents the case in which system-probe is not enabled var ErrNotEnabled = errors.New("system-probe not enabled") +const configPrefix = systemprobeconfig.Namespace + "." + type cliParams struct { *command.GlobalParams @@ -76,7 +82,7 @@ func Commands(globalParams *command.GlobalParams) []*cobra.Command { Use: "run", Short: "Run the System Probe", Long: `Runs the system-probe in the foreground`, - RunE: func(cmd *cobra.Command, args []string) error { + RunE: func(_ *cobra.Command, _ []string) error { return fxutil.OneShot(run, fx.Supply(config.NewAgentParams("", config.WithConfigMissingOK(true))), fx.Supply(sysprobeconfigimpl.NewParams(sysprobeconfigimpl.WithSysProbeConfFilePath(globalParams.ConfFilePath))), @@ -100,8 +106,24 @@ func Commands(globalParams *command.GlobalParams) []*cobra.Command { return logimpl.NewLogger(lc, params, sysprobeconfig) }), fx.Supply(optional.NewNoneOption[workloadmeta.Component]()), + autoexitimpl.Module(), pidimpl.Module(), fx.Supply(pidimpl.NewParams(cliParams.pidfilePath)), + fx.Provide(func() settings.Settings { + profilingGoRoutines := commonsettings.NewProfilingGoroutines() + profilingGoRoutines.Config = ddconfig.SystemProbe + profilingGoRoutines.ConfigPrefix = configPrefix + + return settings.Settings{ + "log_level": &commonsettings.LogLevelRuntimeSetting{ConfigKey: configPrefix + "log_level", Config: ddconfig.SystemProbe}, + "runtime_mutex_profile_fraction": &commonsettings.RuntimeMutexProfileFraction{ConfigPrefix: configPrefix, Config: ddconfig.SystemProbe}, + "runtime_block_profile_rate": &commonsettings.RuntimeBlockProfileRate{ConfigPrefix: configPrefix, Config: ddconfig.SystemProbe}, + "internal_profiling_goroutines": profilingGoRoutines, + commonsettings.MaxDumpSizeConfKey: &commonsettings.ActivityDumpRuntimeSetting{ConfigKey: commonsettings.MaxDumpSizeConfKey}, + "internal_profiling": &commonsettings.ProfilingRuntimeSetting{SettingName: "internal_profiling", Service: "system-probe", ConfigPrefix: configPrefix, Config: ddconfig.SystemProbe}, + } + }), + settingsimpl.Module(), ) }, } @@ -111,7 +133,7 @@ func Commands(globalParams *command.GlobalParams) []*cobra.Command { } // run starts the main loop. -func run(log log.Component, _ config.Component, statsd compstatsd.Component, telemetry telemetry.Component, sysprobeconfig sysprobeconfig.Component, rcclient rcclient.Component, wmeta optional.Option[workloadmeta.Component], _ pid.Component, _ healthprobe.Component) error { +func run(log log.Component, _ config.Component, statsd compstatsd.Component, telemetry telemetry.Component, sysprobeconfig sysprobeconfig.Component, rcclient rcclient.Component, wmeta optional.Option[workloadmeta.Component], _ pid.Component, _ healthprobe.Component, _ autoexit.Component, settings settings.Component) error { defer func() { stopSystemProbe() }() @@ -153,7 +175,7 @@ func run(log log.Component, _ config.Component, statsd compstatsd.Component, tel } }() - if err := startSystemProbe(log, statsd, telemetry, sysprobeconfig, rcclient, wmeta); err != nil { + if err := startSystemProbe(log, statsd, telemetry, sysprobeconfig, rcclient, wmeta, settings); err != nil { if errors.Is(err, ErrNotEnabled) { // A sleep is necessary to ensure that supervisor registers this process as "STARTED" // If the exit is "too quick", we enter a BACKOFF->FATAL loop even though this is an expected exit @@ -197,9 +219,9 @@ func StartSystemProbeWithDefaults(ctxChan <-chan context.Context) (<-chan error, func runSystemProbe(ctxChan <-chan context.Context, errChan chan error) error { return fxutil.OneShot( - func(log log.Component, config config.Component, statsd compstatsd.Component, telemetry telemetry.Component, sysprobeconfig sysprobeconfig.Component, rcclient rcclient.Component, wmeta optional.Option[workloadmeta.Component], _ healthprobe.Component) error { + func(log log.Component, config config.Component, statsd compstatsd.Component, telemetry telemetry.Component, sysprobeconfig sysprobeconfig.Component, rcclient rcclient.Component, wmeta optional.Option[workloadmeta.Component], _ healthprobe.Component, settings settings.Component) error { defer StopSystemProbeWithDefaults() - err := startSystemProbe(log, statsd, telemetry, sysprobeconfig, rcclient, wmeta) + err := startSystemProbe(log, statsd, telemetry, sysprobeconfig, rcclient, wmeta, settings) if err != nil { return err } @@ -244,6 +266,21 @@ func runSystemProbe(ctxChan <-chan context.Context, errChan chan error) error { fx.Provide(func(lc fx.Lifecycle, params logimpl.Params, sysprobeconfig sysprobeconfig.Component) (log.Component, error) { return logimpl.NewLogger(lc, params, sysprobeconfig) }), + fx.Provide(func() settings.Settings { + profilingGoRoutines := commonsettings.NewProfilingGoroutines() + profilingGoRoutines.Config = ddconfig.SystemProbe + profilingGoRoutines.ConfigPrefix = configPrefix + + return settings.Settings{ + "log_level": &commonsettings.LogLevelRuntimeSetting{ConfigKey: configPrefix + "log_level", Config: ddconfig.SystemProbe}, + "runtime_mutex_profile_fraction": &commonsettings.RuntimeMutexProfileFraction{ConfigPrefix: configPrefix, Config: ddconfig.SystemProbe}, + "runtime_block_profile_rate": &commonsettings.RuntimeBlockProfileRate{ConfigPrefix: configPrefix, Config: ddconfig.SystemProbe}, + "internal_profiling_goroutines": profilingGoRoutines, + commonsettings.MaxDumpSizeConfKey: &commonsettings.ActivityDumpRuntimeSetting{ConfigKey: commonsettings.MaxDumpSizeConfKey}, + "internal_profiling": &commonsettings.ProfilingRuntimeSetting{SettingName: "internal_profiling", Service: "system-probe", ConfigPrefix: configPrefix, Config: ddconfig.SystemProbe}, + } + }), + settingsimpl.Module(), ) } @@ -253,10 +290,8 @@ func StopSystemProbeWithDefaults() { } // startSystemProbe Initializes the system-probe process -func startSystemProbe(log log.Component, statsd compstatsd.Component, telemetry telemetry.Component, sysprobeconfig sysprobeconfig.Component, _ rcclient.Component, wmeta optional.Option[workloadmeta.Component]) error { +func startSystemProbe(log log.Component, statsd compstatsd.Component, telemetry telemetry.Component, sysprobeconfig sysprobeconfig.Component, _ rcclient.Component, wmeta optional.Option[workloadmeta.Component], settings settings.Component) error { var err error - var ctx context.Context - ctx, common.MainCtxCancel = context.WithCancel(context.Background()) cfg := sysprobeconfig.SysProbeObject() log.Infof("starting system-probe v%v", version.AgentVersion) @@ -284,16 +319,7 @@ func startSystemProbe(log log.Component, statsd compstatsd.Component, telemetry } } - if err := initRuntimeSettings(); err != nil { - log.Warnf("cannot initialize the runtime settings: %s", err) - } - - setupInternalProfiling(sysprobeconfig, configPrefix, log) - - err = manager.ConfigureAutoExit(ctx, sysprobeconfig) - if err != nil { - return log.Criticalf("unable to configure auto-exit: %s", err) - } + setupInternalProfiling(settings, sysprobeconfig, configPrefix, log) if err := processstatsd.Configure(cfg.StatsdHost, cfg.StatsdPort, statsd.CreateForHostPort); err != nil { return log.Criticalf("error configuring statsd: %s", err) @@ -318,7 +344,7 @@ func startSystemProbe(log log.Component, statsd compstatsd.Component, telemetry }() } - if err = api.StartServer(cfg, telemetry, wmeta); err != nil { + if err = api.StartServer(cfg, telemetry, wmeta, settings); err != nil { return log.Criticalf("error while starting api server, exiting: %v", err) } return nil @@ -337,13 +363,11 @@ func stopSystemProbe() { common.MemoryMonitor.Stop() } - // gracefully shut down any component - common.MainCtxCancel() pkglog.Flush() } // setupInternalProfiling is a common helper to configure runtime settings for internal profiling. -func setupInternalProfiling(cfg ddconfig.Reader, configPrefix string, log log.Component) { +func setupInternalProfiling(settings settings.Component, cfg ddconfig.Reader, configPrefix string, log log.Component) { if v := cfg.GetInt(configPrefix + "internal_profiling.block_profile_rate"); v > 0 { if err := settings.SetRuntimeSetting("runtime_block_profile_rate", v, model.SourceAgentRuntime); err != nil { log.Errorf("Error setting block profile rate: %v", err) diff --git a/cmd/system-probe/subcommands/run/settings.go b/cmd/system-probe/subcommands/run/settings.go deleted file mode 100644 index 70d7dccfb2e4c..0000000000000 --- a/cmd/system-probe/subcommands/run/settings.go +++ /dev/null @@ -1,41 +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 run - -import ( - "github.com/DataDog/datadog-agent/cmd/system-probe/config" - pkgconfig "github.com/DataDog/datadog-agent/pkg/config" - commonsettings "github.com/DataDog/datadog-agent/pkg/config/settings" -) - -const configPrefix = config.Namespace + "." - -// initRuntimeSettings builds the map of runtime settings configurable at runtime. -func initRuntimeSettings() error { - // Runtime-editable settings must be registered here to dynamically populate command-line information - if err := commonsettings.RegisterRuntimeSetting(&commonsettings.LogLevelRuntimeSetting{ConfigKey: configPrefix + "log_level", Config: pkgconfig.SystemProbe}); err != nil { - return err - } - if err := commonsettings.RegisterRuntimeSetting(&commonsettings.RuntimeMutexProfileFraction{ConfigPrefix: configPrefix, Config: pkgconfig.SystemProbe}); err != nil { - return err - } - if err := commonsettings.RegisterRuntimeSetting(&commonsettings.RuntimeBlockProfileRate{ConfigPrefix: configPrefix, Config: pkgconfig.SystemProbe}); err != nil { - return err - } - profilingGoRoutines := commonsettings.NewProfilingGoroutines() - profilingGoRoutines.Config = pkgconfig.SystemProbe - profilingGoRoutines.ConfigPrefix = configPrefix - if err := commonsettings.RegisterRuntimeSetting(profilingGoRoutines); err != nil { - return err - } - if err := commonsettings.RegisterRuntimeSetting(&commonsettings.ProfilingRuntimeSetting{SettingName: "internal_profiling", Service: "system-probe", ConfigPrefix: configPrefix, Config: pkgconfig.SystemProbe}); err != nil { - return err - } - if err := commonsettings.RegisterRuntimeSetting(&commonsettings.ActivityDumpRuntimeSetting{ConfigKey: commonsettings.MaxDumpSizeConfKey}); err != nil { - return err - } - return nil -} diff --git a/cmd/trace-agent/subcommands/run/command.go b/cmd/trace-agent/subcommands/run/command.go index 6c9787f6b7c76..e584c23352233 100644 --- a/cmd/trace-agent/subcommands/run/command.go +++ b/cmd/trace-agent/subcommands/run/command.go @@ -74,7 +74,9 @@ func runTraceAgentProcess(ctx context.Context, cliParams *Params, defaultConfPat fx.Provide(func() context.Context { return ctx }), // fx.Supply(ctx) fails with a missing type error. fx.Supply(coreconfig.NewAgentParams(cliParams.ConfPath)), secretsimpl.Module(), - fx.Supply(optional.NewNoneOption[secrets.Component]()), + fx.Provide(func(comp secrets.Component) optional.Option[secrets.Component] { + return optional.NewOption[secrets.Component](comp) + }), fx.Supply(secrets.NewEnabledParams()), coreconfig.Module(), fx.Provide(func() corelogimpl.Params { diff --git a/comp/README.md b/comp/README.md index 269140aa1fb16..a20c6fe22ca41 100644 --- a/comp/README.md +++ b/comp/README.md @@ -10,6 +10,10 @@ Click the links for more documentation. Package agent implements the "agent" bundle, +### [comp/agent/autoexit](https://pkg.go.dev/github.com/DataDog/datadog-agent/comp/agent/autoexit) + +Package autoexit lets setup automatic shutdown mechanism if necessary + ### [comp/agent/expvarserver](https://pkg.go.dev/github.com/DataDog/datadog-agent/comp/agent/expvarserver) Package expvarserver contains the component type for the expVar server. @@ -116,6 +120,10 @@ Package configsync implements synchronizing the configuration using the core age Package flare implements a component to generate flares from the agent. +### [comp/core/gui](https://pkg.go.dev/github.com/DataDog/datadog-agent/comp/core/gui) + +Package gui provides the GUI server component for the Datadog Agent. + ### [comp/core/healthprobe](https://pkg.go.dev/github.com/DataDog/datadog-agent/comp/core/healthprobe) Package healthprobe implements the health check server diff --git a/comp/agent/autoexit/autoexitimpl/autoexit.go b/comp/agent/autoexit/autoexitimpl/autoexit.go new file mode 100644 index 0000000000000..0102caa7e5ac4 --- /dev/null +++ b/comp/agent/autoexit/autoexitimpl/autoexit.go @@ -0,0 +1,39 @@ +// 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. + +// Package autoexitimpl implements autoexit.Component +package autoexitimpl + +import ( + "go.uber.org/fx" + + "github.com/DataDog/datadog-agent/cmd/manager" + "github.com/DataDog/datadog-agent/comp/agent/autoexit" + "github.com/DataDog/datadog-agent/comp/core/config" + pkgcommon "github.com/DataDog/datadog-agent/pkg/util/common" + "github.com/DataDog/datadog-agent/pkg/util/fxutil" +) + +// Module defines the fx options for this component. +func Module() fxutil.Module { + return fxutil.Component( + fx.Provide(newAutoExit), + ) +} + +type dependencies struct { + fx.In + + Config config.Component +} + +// ConfigureAutoExit starts automatic shutdown mechanism if necessary +func newAutoExit(deps dependencies) (autoexit.Component, error) { + + ctx, _ := pkgcommon.GetMainCtxCancel() + err := manager.ConfigureAutoExit(ctx, deps.Config) + + return struct{}{}, err +} diff --git a/comp/agent/autoexit/autoexitimpl/autoexit_mock.go b/comp/agent/autoexit/autoexitimpl/autoexit_mock.go new file mode 100644 index 0000000000000..a71ebece11c34 --- /dev/null +++ b/comp/agent/autoexit/autoexitimpl/autoexit_mock.go @@ -0,0 +1,28 @@ +// 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 test + +package autoexitimpl + +import ( + "go.uber.org/fx" + + "github.com/DataDog/datadog-agent/comp/agent/autoexit" + "github.com/DataDog/datadog-agent/pkg/util/fxutil" +) + +// MockModule defines the fx options for the mock component. +func MockModule() fxutil.Module { + return fxutil.Component( + fx.Provide(newMock), + ) +} + +type mock struct{} + +func newMock() autoexit.Component { + return mock{} +} diff --git a/comp/agent/autoexit/component.go b/comp/agent/autoexit/component.go new file mode 100644 index 0000000000000..1a5210767511e --- /dev/null +++ b/comp/agent/autoexit/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 2024-present Datadog, Inc. + +// Package autoexit lets setup automatic shutdown mechanism if necessary +package autoexit + +// team: agent-shared-components + +// Component is the component type. +type Component interface { +} diff --git a/comp/agent/autoexit/component_mock.go b/comp/agent/autoexit/component_mock.go new file mode 100644 index 0000000000000..cb89c997ed271 --- /dev/null +++ b/comp/agent/autoexit/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 2024-present Datadog, Inc. + +//go:build test + +package autoexit + +// Mock implements mock-specific methods. +type Mock interface { + Component +} diff --git a/comp/agent/bundle.go b/comp/agent/bundle.go index 287b3fb3a158f..05b0aa6485a29 100644 --- a/comp/agent/bundle.go +++ b/comp/agent/bundle.go @@ -7,6 +7,7 @@ package agent import ( + "github.com/DataDog/datadog-agent/comp/agent/autoexit/autoexitimpl" "github.com/DataDog/datadog-agent/comp/agent/expvarserver/expvarserverimpl" "github.com/DataDog/datadog-agent/comp/agent/jmxlogger/jmxloggerimpl" "github.com/DataDog/datadog-agent/comp/agent/metadatascheduler/metadataschedulerimpl" @@ -18,6 +19,7 @@ import ( // Bundle defines the fx options for this bundle. func Bundle() fxutil.BundleOptions { return fxutil.Bundle( + autoexitimpl.Module(), metadataschedulerimpl.Module(), jmxloggerimpl.Module(), expvarserverimpl.Module(), diff --git a/comp/agent/bundle_test.go b/comp/agent/bundle_test.go index 296bc2e7f0bfb..6a20c7ec6a9d8 100644 --- a/comp/agent/bundle_test.go +++ b/comp/agent/bundle_test.go @@ -30,5 +30,6 @@ func TestBundleDependencies(t *testing.T) { eventplatformimpl.MockModule(), demultiplexerimpl.Module(), fx.Supply(demultiplexerimpl.NewDefaultParams()), - fx.Supply(jmxloggerimpl.NewDefaultParams())) + fx.Supply(jmxloggerimpl.NewDefaultParams()), + ) } diff --git a/comp/api/api/apiimpl/api.go b/comp/api/api/apiimpl/api.go index d83f86861f5f6..e0cf622365696 100644 --- a/comp/api/api/apiimpl/api.go +++ b/comp/api/api/apiimpl/api.go @@ -16,8 +16,9 @@ import ( "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/gui" "github.com/DataDog/datadog-agent/comp/core/secrets" + "github.com/DataDog/datadog-agent/comp/core/settings" "github.com/DataDog/datadog-agent/comp/core/status" "github.com/DataDog/datadog-agent/comp/core/tagger" "github.com/DataDog/datadog-agent/comp/core/workloadmeta" @@ -46,7 +47,6 @@ func Module() fxutil.Module { } type apiServer struct { - flare flare.Component dogstatsdServer dogstatsdServer.Component capture replay.Component pidMap pidmap.Component @@ -63,12 +63,14 @@ type apiServer struct { rcService optional.Option[rcservice.Component] rcServiceHA optional.Option[rcserviceha.Component] authToken authtoken.Component + gui optional.Option[gui.Component] + settings settings.Component + endpointProviders []api.EndpointProvider } type dependencies struct { fx.In - Flare flare.Component DogstatsdServer dogstatsdServer.Component Capture replay.Component PidMap pidmap.Component @@ -85,13 +87,15 @@ type dependencies struct { RcService optional.Option[rcservice.Component] RcServiceHA optional.Option[rcserviceha.Component] AuthToken authtoken.Component + Gui optional.Option[gui.Component] + Settings settings.Component + EndpointProviders []api.EndpointProvider `group:"agent_endpoint"` } var _ api.Component = (*apiServer)(nil) func newAPIServer(deps dependencies) api.Component { return &apiServer{ - flare: deps.Flare, dogstatsdServer: deps.DogstatsdServer, capture: deps.Capture, pidMap: deps.PidMap, @@ -108,6 +112,9 @@ func newAPIServer(deps dependencies) api.Component { rcService: deps.RcService, rcServiceHA: deps.RcServiceHA, authToken: deps.AuthToken, + gui: deps.Gui, + settings: deps.Settings, + endpointProviders: deps.EndpointProviders, } } @@ -122,7 +129,6 @@ func (server *apiServer) StartServer( ) error { return StartServers(server.rcService, server.rcServiceHA, - server.flare, server.dogstatsdServer, server.capture, server.pidMap, @@ -142,6 +148,9 @@ func (server *apiServer) StartServer( collector, server.eventPlatformReceiver, ac, + server.gui, + server.settings, + server.endpointProviders, ) } diff --git a/comp/api/api/apiimpl/api_test.go b/comp/api/api/apiimpl/api_test.go index b3af9e581d6f8..931c8737223b9 100644 --- a/comp/api/api/apiimpl/api_test.go +++ b/comp/api/api/apiimpl/api_test.go @@ -12,15 +12,17 @@ import ( // component dependencies "github.com/DataDog/datadog-agent/comp/aggregator/demultiplexer" "github.com/DataDog/datadog-agent/comp/aggregator/demultiplexer/demultiplexerimpl" + "github.com/DataDog/datadog-agent/comp/api/api" "github.com/DataDog/datadog-agent/comp/api/authtoken" "github.com/DataDog/datadog-agent/comp/api/authtoken/fetchonlyimpl" "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/flare/flareimpl" "github.com/DataDog/datadog-agent/comp/core/secrets" "github.com/DataDog/datadog-agent/comp/core/secrets/secretsimpl" + "github.com/DataDog/datadog-agent/comp/core/settings" + "github.com/DataDog/datadog-agent/comp/core/settings/settingsimpl" "github.com/DataDog/datadog-agent/comp/core/status" "github.com/DataDog/datadog-agent/comp/core/status/statusimpl" "github.com/DataDog/datadog-agent/comp/core/tagger" @@ -58,7 +60,10 @@ import ( type testdeps struct { fx.In - Flare flare.Component + // additional StartServer arguments + // + // TODO: remove these in the next PR once StartServer component arguments + // are part of the api component dependency struct DogstatsdServer dogstatsdServer.Component Capture replay.Component ServerDebug dogstatsddebug.Component @@ -79,9 +84,12 @@ type testdeps struct { Autodiscovery autodiscovery.Mock Logs optional.Option[logsAgent.Component] Collector optional.Option[collector.Component] + Settings settings.Component + EndpointProviders []api.EndpointProvider `group:"agent_endpoint"` } func getComponentDependencies(t *testing.T) testdeps { + // TODO: this fxutil.Test[T] can take a component and return the component return fxutil.Test[testdeps]( t, flareimpl.MockModule(), @@ -118,12 +126,12 @@ func getComponentDependencies(t *testing.T) testdeps { fx.Provide(func() optional.Option[collector.Component] { return optional.NewNoneOption[collector.Component]() }), + settingsimpl.MockModule(), ) } -func getTestAPIServer(deps testdeps) *apiServer { +func getTestAPIServer(deps testdeps) api.Component { apideps := dependencies{ - Flare: deps.Flare, DogstatsdServer: deps.DogstatsdServer, Capture: deps.Capture, ServerDebug: deps.ServerDebug, @@ -139,9 +147,10 @@ func getTestAPIServer(deps testdeps) *apiServer { RcService: deps.RcService, RcServiceHA: deps.RcServiceHA, AuthToken: deps.AuthToken, + Settings: deps.Settings, + EndpointProviders: deps.EndpointProviders, } - api := newAPIServer(apideps) - return api.(*apiServer) + return newAPIServer(apideps) } func TestStartServer(t *testing.T) { diff --git a/comp/api/api/apiimpl/internal/agent/agent.go b/comp/api/api/apiimpl/internal/agent/agent.go index ecfc4b74a6fa5..da22dd3e792c8 100644 --- a/comp/api/api/apiimpl/internal/agent/agent.go +++ b/comp/api/api/apiimpl/internal/agent/agent.go @@ -26,14 +26,16 @@ import ( "github.com/DataDog/datadog-agent/cmd/agent/common" "github.com/DataDog/datadog-agent/cmd/agent/common/signals" - "github.com/DataDog/datadog-agent/cmd/agent/gui" + "github.com/DataDog/datadog-agent/comp/aggregator/demultiplexer" + "github.com/DataDog/datadog-agent/comp/api/api" "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/gui" "github.com/DataDog/datadog-agent/comp/core/secrets" + "github.com/DataDog/datadog-agent/comp/core/settings" "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" @@ -49,7 +51,6 @@ import ( "github.com/DataDog/datadog-agent/comp/metadata/packagesigning" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" "github.com/DataDog/datadog-agent/pkg/config" - settingshttp "github.com/DataDog/datadog-agent/pkg/config/settings/http" "github.com/DataDog/datadog-agent/pkg/diagnose" "github.com/DataDog/datadog-agent/pkg/diagnose/diagnosis" "github.com/DataDog/datadog-agent/pkg/gohai" @@ -70,7 +71,6 @@ var mimeTypeMap = map[string]string{ // SetupHandlers adds the specific handlers for /agent endpoints func SetupHandlers( r *mux.Router, - flareComp flare.Component, server dogstatsdServer.Component, serverDebug dogstatsddebug.Component, wmeta workloadmeta.Component, @@ -87,11 +87,17 @@ func SetupHandlers( collector optional.Option[collector.Component], eventPlatformReceiver eventplatformreceiver.Component, ac autodiscovery.Component, + gui optional.Option[gui.Component], + settings settings.Component, + providers []api.EndpointProvider, ) *mux.Router { + // TODO: move these to a component that is registerable + for _, p := range providers { + r.Handle(p.Route, p.Handler).Methods(p.Methods...) + } r.HandleFunc("/version", common.GetVersion).Methods("GET") r.HandleFunc("/hostname", getHostname).Methods("GET") - r.HandleFunc("/flare", func(w http.ResponseWriter, r *http.Request) { makeFlare(w, r, flareComp) }).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("/stream-event-platform", streamEventPlatform(eventPlatformReceiver)).Methods("POST") @@ -99,14 +105,22 @@ func SetupHandlers( r.HandleFunc("/{component}/status", componentStatusGetterHandler).Methods("GET") r.HandleFunc("/{component}/status", componentStatusHandler).Methods("POST") r.HandleFunc("/{component}/configs", componentConfigHandler).Methods("GET") - r.HandleFunc("/gui/csrf-token", getCSRFToken).Methods("GET") + r.HandleFunc("/gui/csrf-token", func(w http.ResponseWriter, _ *http.Request) { getCSRFToken(w, gui) }).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") - r.HandleFunc("/config/{setting}", settingshttp.Server.SetValue).Methods("POST") + r.HandleFunc("/config", settings.GetFullConfig(config.Datadog, "")).Methods("GET") + r.HandleFunc("/config/list-runtime", settings.ListConfigurable).Methods("GET") + r.HandleFunc("/config/{setting}", func(w http.ResponseWriter, r *http.Request) { + vars := mux.Vars(r) + setting := vars["setting"] + settings.GetValue(setting, w, r) + }).Methods("GET") + r.HandleFunc("/config/{setting}", func(w http.ResponseWriter, r *http.Request) { + vars := mux.Vars(r) + setting := vars["setting"] + settings.SetValue(setting, w, r) + }).Methods("POST") r.HandleFunc("/tagger-list", getTaggerList).Methods("GET") r.HandleFunc("/workload-list", func(w http.ResponseWriter, r *http.Request) { getWorkloadList(w, r, wmeta) @@ -161,42 +175,6 @@ func getHostname(w http.ResponseWriter, r *http.Request) { w.Write(j) } -func makeFlare(w http.ResponseWriter, r *http.Request, flareComp flare.Component) { - var profile flare.ProfileData - - if r.Body != http.NoBody { - body, err := io.ReadAll(r.Body) - if err != nil { - http.Error(w, log.Errorf("Error while reading HTTP request body: %s", err).Error(), 500) - return - } - - if err := json.Unmarshal(body, &profile); err != nil { - http.Error(w, log.Errorf("Error while unmarshaling JSON from request body: %s", err).Error(), 500) - return - } - } - - // Reset the `server_timeout` deadline for this connection as creating a flare can take some time - conn := GetConnection(r) - _ = conn.SetDeadline(time.Time{}) - - var filePath string - var err error - log.Infof("Making a flare") - filePath, err = flareComp.Create(profile, nil) - - if err != nil || filePath == "" { - if err != nil { - log.Errorf("The flare failed to be created: %s", err) - } else { - log.Warnf("The flare failed to be created") - } - http.Error(w, err.Error(), 500) - } - w.Write([]byte(filePath)) -} - func componentConfigHandler(w http.ResponseWriter, r *http.Request) { vars := mux.Vars(r) component := vars["component"] @@ -401,8 +379,13 @@ func getHealth(w http.ResponseWriter, _ *http.Request) { w.Write(jsonHealth) } -func getCSRFToken(w http.ResponseWriter, _ *http.Request) { - w.Write([]byte(gui.CsrfToken)) +func getCSRFToken(w http.ResponseWriter, optGui optional.Option[gui.Component]) { + // WARNING: GUI comp currently not provided to JMX + gui, guiExist := optGui.Get() + if !guiExist { + return + } + w.Write([]byte(gui.GetCSRFToken())) } func getConfigCheck(w http.ResponseWriter, _ *http.Request, ac autodiscovery.Component) { diff --git a/comp/api/api/apiimpl/internal/agent/agent_jmx.go b/comp/api/api/apiimpl/internal/agent/agent_jmx.go index 0fcdef0a52a7b..2c9cc45954393 100644 --- a/comp/api/api/apiimpl/internal/agent/agent_jmx.go +++ b/comp/api/api/apiimpl/internal/agent/agent_jmx.go @@ -20,7 +20,7 @@ import ( "github.com/DataDog/datadog-agent/pkg/util/log" "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" - "github.com/DataDog/datadog-agent/pkg/collector/corechecks/embed/jmx" + "github.com/DataDog/datadog-agent/pkg/jmxfetch" jmxStatus "github.com/DataDog/datadog-agent/pkg/status/jmx" "github.com/DataDog/datadog-agent/pkg/util" @@ -34,7 +34,7 @@ func getJMXConfigs(w http.ResponseWriter, r *http.Request) { ts, _ = strconv.Atoi(timestamps[0]) } - if int64(ts) > jmx.GetScheduledConfigsModificationTimestamp() { + if int64(ts) > jmxfetch.GetScheduledConfigsModificationTimestamp() { w.WriteHeader(http.StatusNoContent) return } @@ -45,7 +45,7 @@ func getJMXConfigs(w http.ResponseWriter, r *http.Request) { j := map[string]interface{}{} configs := map[string]integration.JSONMap{} - for name, config := range jmx.GetScheduledConfigs() { + for name, config := range jmxfetch.GetScheduledConfigs() { var rawInitConfig integration.RawMap err := yaml.Unmarshal(config.InitConfig, &rawInitConfig) if err != nil { diff --git a/comp/api/api/apiimpl/internal/agent/agent_test.go b/comp/api/api/apiimpl/internal/agent/agent_test.go index 9c3e4412e3487..78bc0f0b2c6bc 100644 --- a/comp/api/api/apiimpl/internal/agent/agent_test.go +++ b/comp/api/api/apiimpl/internal/agent/agent_test.go @@ -7,25 +7,30 @@ package agent import ( "context" - "encoding/json" "io" "net/http" "net/http/httptest" "testing" // component dependencies + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "github.com/DataDog/datadog-agent/comp/aggregator/demultiplexer" "github.com/DataDog/datadog-agent/comp/aggregator/demultiplexer/demultiplexerimpl" + "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/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/flareimpl" + "github.com/DataDog/datadog-agent/comp/core/gui" "github.com/DataDog/datadog-agent/comp/core/hostname/hostnameinterface" "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/comp/core/settings" + "github.com/DataDog/datadog-agent/comp/core/settings/settingsimpl" "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" @@ -45,14 +50,11 @@ import ( "github.com/DataDog/datadog-agent/comp/metadata/inventoryhost/inventoryhostimpl" "github.com/DataDog/datadog-agent/comp/metadata/packagesigning" "github.com/DataDog/datadog-agent/comp/metadata/packagesigning/packagesigningimpl" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" // package dependencies "github.com/DataDog/datadog-agent/pkg/aggregator" "github.com/DataDog/datadog-agent/pkg/util/fxutil" "github.com/DataDog/datadog-agent/pkg/util/optional" - "github.com/DataDog/datadog-agent/pkg/version" // third-party dependencies "github.com/gorilla/mux" @@ -62,7 +64,6 @@ import ( type handlerdeps struct { fx.In - FlareComp flare.Component Server dogstatsdServer.Component ServerDebug dogstatsddebug.Component Wmeta workloadmeta.Component @@ -78,6 +79,9 @@ type handlerdeps struct { Collector optional.Option[collector.Component] EventPlatformReceiver eventplatformreceiver.Component Ac autodiscovery.Mock + Gui optional.Option[gui.Component] + Settings settings.Component + EndpointProviders []api.EndpointProvider `group:"agent_endpoint"` } func getComponentDeps(t *testing.T) handlerdeps { @@ -115,6 +119,8 @@ func getComponentDeps(t *testing.T) handlerdeps { fx.Supply(autodiscoveryimpl.MockParams{Scheduler: nil}), autodiscoveryimpl.MockModule(), ), + fx.Supply(optional.NewNoneOption[gui.Component]()), + settingsimpl.MockModule(), ) } @@ -125,7 +131,6 @@ func setupRoutes(t *testing.T) *mux.Router { router := mux.NewRouter() SetupHandlers( router, - deps.FlareComp, deps.Server, deps.ServerDebug, deps.Wmeta, @@ -142,27 +147,44 @@ func setupRoutes(t *testing.T) *mux.Router { deps.Collector, deps.EventPlatformReceiver, deps.Ac, + deps.Gui, + deps.Settings, + deps.EndpointProviders, ) return router } func TestSetupHandlers(t *testing.T) { + testcases := []struct { + route string + method string + wantCode int + }{ + { + route: "/version", + method: "GET", + wantCode: 200, + }, + { + route: "/flare", + method: "POST", + wantCode: 200, + }, + } router := setupRoutes(t) ts := httptest.NewServer(router) defer ts.Close() - res, err := http.Get(ts.URL + "/version") - require.NoError(t, err) - - want, err := version.Agent() - require.NoError(t, err) - - defer res.Body.Close() - body, err := io.ReadAll(res.Body) - require.NoError(t, err) + for _, tc := range testcases { + req, err := http.NewRequest(tc.method, ts.URL+tc.route, nil) + require.NoError(t, err) - wantjson, _ := json.Marshal(want) + resp, err := ts.Client().Do(req) + require.NoError(t, err) + io.Copy(io.Discard, resp.Body) + resp.Body.Close() - assert.Equal(t, string(wantjson), string(body)) + assert.Equal(t, tc.wantCode, resp.StatusCode) + } } diff --git a/comp/api/api/apiimpl/server.go b/comp/api/api/apiimpl/server.go index 0bc48b0da9e3c..4eb7941368b75 100644 --- a/comp/api/api/apiimpl/server.go +++ b/comp/api/api/apiimpl/server.go @@ -15,10 +15,12 @@ import ( "github.com/cihub/seelog" "github.com/DataDog/datadog-agent/comp/aggregator/demultiplexer" + "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/flare" + "github.com/DataDog/datadog-agent/comp/core/gui" "github.com/DataDog/datadog-agent/comp/core/secrets" + "github.com/DataDog/datadog-agent/comp/core/settings" "github.com/DataDog/datadog-agent/comp/core/status" "github.com/DataDog/datadog-agent/comp/core/tagger" "github.com/DataDog/datadog-agent/comp/core/workloadmeta" @@ -68,7 +70,6 @@ func stopServer(listener net.Listener, name string) { func StartServers( configService optional.Option[rcservice.Component], configServiceHA optional.Option[rcserviceha.Component], - flare flare.Component, dogstatsdServer dogstatsdServer.Component, capture replay.Component, pidMap pidmap.Component, @@ -88,6 +89,9 @@ func StartServers( collector optional.Option[collector.Component], eventPlatformReceiver eventplatformreceiver.Component, ac autodiscovery.Component, + gui optional.Option[gui.Component], + settings settings.Component, + providers []api.EndpointProvider, ) error { apiAddr, err := getIPCAddressPort() if err != nil { @@ -119,7 +123,6 @@ func StartServers( tlsCertPool, configService, configServiceHA, - flare, dogstatsdServer, capture, pidMap, @@ -139,6 +142,9 @@ func StartServers( collector, eventPlatformReceiver, ac, + gui, + settings, + providers, ); 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 c854b9cc2f97b..95224ed6f7a38 100644 --- a/comp/api/api/apiimpl/server_cmd.go +++ b/comp/api/api/apiimpl/server_cmd.go @@ -21,13 +21,15 @@ import ( "google.golang.org/grpc/credentials" "github.com/DataDog/datadog-agent/comp/aggregator/demultiplexer" + "github.com/DataDog/datadog-agent/comp/api/api" "github.com/DataDog/datadog-agent/comp/api/api/apiimpl/internal/agent" "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/gui" "github.com/DataDog/datadog-agent/comp/core/secrets" + "github.com/DataDog/datadog-agent/comp/core/settings" "github.com/DataDog/datadog-agent/comp/core/status" "github.com/DataDog/datadog-agent/comp/core/tagger" taggerserver "github.com/DataDog/datadog-agent/comp/core/tagger/server" @@ -63,7 +65,6 @@ func startCMDServer( tlsCertPool *x509.CertPool, configService optional.Option[rcservice.Component], configServiceHA optional.Option[rcserviceha.Component], - flare flare.Component, dogstatsdServer dogstatsdServer.Component, capture replay.Component, pidMap pidmap.Component, @@ -83,6 +84,9 @@ func startCMDServer( collector optional.Option[collector.Component], eventPlatformReceiver eventplatformreceiver.Component, ac autodiscovery.Component, + gui optional.Option[gui.Component], + settings settings.Component, + providers []api.EndpointProvider, ) (err error) { // get the transport we're going to use under HTTP cmdListener, err = getListener(cmdAddr) @@ -149,7 +153,6 @@ func startCMDServer( http.StripPrefix("/agent", agent.SetupHandlers( agentMux, - flare, dogstatsdServer, serverDebug, wmeta, @@ -166,6 +169,9 @@ func startCMDServer( collector, eventPlatformReceiver, ac, + gui, + settings, + providers, ))) 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 4e8c93d6332eb..c0f1316a78d9d 100644 --- a/comp/api/api/component.go +++ b/comp/api/api/component.go @@ -8,6 +8,7 @@ package api import ( "net" + "net/http" "github.com/DataDog/datadog-agent/comp/collector/collector" "github.com/DataDog/datadog-agent/comp/core/autodiscovery" @@ -16,6 +17,8 @@ import ( logsAgent "github.com/DataDog/datadog-agent/comp/logs/agent" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" "github.com/DataDog/datadog-agent/pkg/util/optional" + + "go.uber.org/fx" ) // team: agent-shared-components @@ -38,3 +41,29 @@ type Component interface { StopServer() ServerAddress() *net.TCPAddr } + +// EndpointProvider is an interface to register api endpoints +type EndpointProvider struct { + Handler http.Handler + + Methods []string + Route string +} + +// AgentEndpointProvider is the provider for registering endpoints to the internal agent api server +type AgentEndpointProvider struct { + fx.Out + + Provider EndpointProvider `group:"agent_endpoint"` +} + +// NewAgentEndpointProvider returns a AgentEndpointProvider to register the endpoint provided to the internal agent api server +func NewAgentEndpointProvider(handler http.Handler, route string, methods ...string) AgentEndpointProvider { + return AgentEndpointProvider{ + Provider: EndpointProvider{ + Handler: handler, + Route: route, + Methods: methods, + }, + } +} diff --git a/comp/core/flare/endpoint.go b/comp/core/flare/endpoint.go new file mode 100644 index 0000000000000..d1cc9c707f09d --- /dev/null +++ b/comp/core/flare/endpoint.go @@ -0,0 +1,63 @@ +// 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 flare + +import ( + "encoding/json" + "io" + "net" + "net/http" + "time" + + "github.com/DataDog/datadog-agent/pkg/util/grpc" +) + +// EndpointProvider wraps the flare component with a http.Handler interface +type EndpointProvider struct { + flareComp *flare +} + +// ServeHTTP implements the http.Handler interface for the provided endpoint creating a flare +func (e EndpointProvider) ServeHTTP(w http.ResponseWriter, r *http.Request) { + var profile ProfileData + + if r.Body != http.NoBody { + body, err := io.ReadAll(r.Body) + if err != nil { + http.Error(w, e.flareComp.log.Errorf("Error while reading HTTP request body: %s", err).Error(), 500) + return + } + + if err := json.Unmarshal(body, &profile); err != nil { + http.Error(w, e.flareComp.log.Errorf("Error while unmarshaling JSON from request body: %s", err).Error(), 500) + return + } + } + + // Reset the `server_timeout` deadline for this connection as creating a flare can take some time + conn := GetConnection(r) + _ = conn.SetDeadline(time.Time{}) + + var filePath string + var err error + e.flareComp.log.Infof("Making a flare") + filePath, err = e.flareComp.Create(profile, nil) + + if err != nil || filePath == "" { + if err != nil { + e.flareComp.log.Errorf("The flare failed to be created: %s", err) + } else { + e.flareComp.log.Warnf("The flare failed to be created") + } + http.Error(w, err.Error(), 500) + } + w.Write([]byte(filePath)) +} + +// GetConnection returns the connection for the request +func GetConnection(r *http.Request) net.Conn { + return r.Context().Value(grpc.ConnContextKey).(net.Conn) +} diff --git a/comp/core/flare/flare.go b/comp/core/flare/flare.go index f9198c29ef709..8a6c23b305b7a 100644 --- a/comp/core/flare/flare.go +++ b/comp/core/flare/flare.go @@ -14,6 +14,7 @@ import ( "go.uber.org/fx" "github.com/DataDog/datadog-agent/comp/aggregator/diagnosesendermanager" + "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/config" @@ -47,6 +48,13 @@ type dependencies struct { AC optional.Option[autodiscovery.Component] } +type provides struct { + fx.Out + + Comp Component + Endpoint api.AgentEndpointProvider +} + type flare struct { log log.Component config config.Component @@ -55,7 +63,7 @@ type flare struct { diagnoseDeps diagnose.SuitesDeps } -func newFlare(deps dependencies) (Component, rcclienttypes.TaskListenerProvider) { +func newFlare(deps dependencies) (provides, rcclienttypes.TaskListenerProvider) { diagnoseDeps := diagnose.NewSuitesDeps(deps.Diagnosesendermanager, deps.Collector, deps.Secrets, deps.WMeta, deps.AC) f := &flare{ log: deps.Log, @@ -65,7 +73,14 @@ func newFlare(deps dependencies) (Component, rcclienttypes.TaskListenerProvider) diagnoseDeps: diagnoseDeps, } - return f, rcclienttypes.NewTaskListener(f.onAgentTaskEvent) + endpoint := EndpointProvider{flareComp: f} + + p := provides{ + Comp: f, + Endpoint: api.NewAgentEndpointProvider(endpoint, "/flare", "POST"), + } + + return p, rcclienttypes.NewTaskListener(f.onAgentTaskEvent) } func (f *flare) onAgentTaskEvent(taskType rcclienttypes.TaskType, task rcclienttypes.AgentTaskConfig) (bool, error) { diff --git a/comp/core/flare/flare_test.go b/comp/core/flare/flare_test.go index 9a1c5e0d5e732..42295c0895cc8 100644 --- a/comp/core/flare/flare_test.go +++ b/comp/core/flare/flare_test.go @@ -54,6 +54,6 @@ func TestFlareCreation(t *testing.T) { ), ) - assert.Len(t, f.(*flare).providers, 1) - assert.NotNil(t, f.(*flare).providers[0]) + assert.Len(t, f.Comp.(*flare).providers, 1) + assert.NotNil(t, f.Comp.(*flare).providers[0]) } diff --git a/comp/core/flare/flareimpl/mock.go b/comp/core/flare/flareimpl/mock.go index 59a0369f89fee..1e95e228d1e49 100644 --- a/comp/core/flare/flareimpl/mock.go +++ b/comp/core/flare/flareimpl/mock.go @@ -9,6 +9,9 @@ package flareimpl import ( + "net/http" + + "github.com/DataDog/datadog-agent/comp/api/api" "github.com/DataDog/datadog-agent/comp/core/flare" "github.com/DataDog/datadog-agent/comp/core/flare/helpers" "github.com/DataDog/datadog-agent/pkg/util/fxutil" @@ -22,9 +25,27 @@ func MockModule() fxutil.Module { ) } +// MockProvides is the mock component output +type MockProvides struct { + fx.Out + + Comp flare.Component + Endpoint api.AgentEndpointProvider +} + // MockFlare is a mock of the type MockFlare struct{} +// MockEndpoint wraps the flare mock with the http.Handler interface +type MockEndpoint struct { + Comp *MockFlare +} + +// ServeHTTP is a simple mocked http.Handler function +func (e MockEndpoint) ServeHTTP(w http.ResponseWriter, _ *http.Request) { + w.Write([]byte("OK")) +} + // Create mocks the flare create function func (fc *MockFlare) Create(_ flare.ProfileData, _ error) (string, error) { return "a string", nil @@ -36,6 +57,12 @@ func (fc *MockFlare) Send(_ string, _ string, _ string, _ helpers.FlareSource) ( } // NewMock returns a new flare provider -func NewMock() flare.Component { - return &MockFlare{} +func NewMock() MockProvides { + m := &MockFlare{} + e := api.NewAgentEndpointProvider(MockEndpoint{Comp: m}, "/flare", "POST") + + return MockProvides{ + Comp: m, + Endpoint: e, + } } diff --git a/comp/core/gui/component.go b/comp/core/gui/component.go new file mode 100644 index 0000000000000..432c62ffa2b33 --- /dev/null +++ b/comp/core/gui/component.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 2024-present Datadog, Inc. + +// Package gui provides the GUI server component for the Datadog Agent. +package gui + +// team: agent-shared-components + +// Component is the component type. +type Component interface { + GetCSRFToken() string +} diff --git a/comp/core/gui/component_mock.go b/comp/core/gui/component_mock.go new file mode 100644 index 0000000000000..34c4a0affca67 --- /dev/null +++ b/comp/core/gui/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 2024-present Datadog, Inc. + +//go:build test + +package gui + +// Mock implements mock-specific methods. +type Mock interface { + Component +} diff --git a/cmd/agent/gui/agent.go b/comp/core/gui/guiimpl/agent.go similarity index 82% rename from cmd/agent/gui/agent.go rename to comp/core/gui/guiimpl/agent.go index ccab014bb5ff5..20f214533b370 100644 --- a/cmd/agent/gui/agent.go +++ b/comp/core/gui/guiimpl/agent.go @@ -3,8 +3,8 @@ // This product includes software developed at Datadog (https://www.datadoghq.com/). // Copyright 2016-present Datadog, Inc. -// Package gui contains the gui subcommand -package gui +// Package guiimpl implements the component gui +package guiimpl import ( "encoding/json" @@ -20,31 +20,33 @@ import ( yaml "gopkg.in/yaml.v2" "github.com/DataDog/datadog-agent/cmd/agent/common/path" + "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" "github.com/DataDog/datadog-agent/comp/core/status" - "github.com/DataDog/datadog-agent/pkg/config" + + configmodel "github.com/DataDog/datadog-agent/pkg/config/model" "github.com/DataDog/datadog-agent/pkg/util/hostname" "github.com/DataDog/datadog-agent/pkg/util/log" "github.com/DataDog/datadog-agent/pkg/version" ) // Adds the specific handlers for /agent/ endpoints -func agentHandler(r *mux.Router, flare flare.Component, statusComponent status.Component) { - r.HandleFunc("/ping", http.HandlerFunc(ping)).Methods("POST") +func agentHandler(r *mux.Router, flare flare.Component, statusComponent status.Component, config config.Component, startTimestamp int64) { + r.HandleFunc("/ping", func(w http.ResponseWriter, _ *http.Request) { ping(w, startTimestamp) }).Methods("POST") r.HandleFunc("/status/{type}", func(w http.ResponseWriter, r *http.Request) { getStatus(w, r, statusComponent) }).Methods("POST") r.HandleFunc("/version", http.HandlerFunc(getVersion)).Methods("POST") r.HandleFunc("/hostname", http.HandlerFunc(getHostname)).Methods("POST") - r.HandleFunc("/log/{flip}", http.HandlerFunc(getLog)).Methods("POST") + r.HandleFunc("/log/{flip}", func(w http.ResponseWriter, r *http.Request) { getLog(w, r, config) }).Methods("POST") r.HandleFunc("/flare", func(w http.ResponseWriter, r *http.Request) { makeFlare(w, r, flare) }).Methods("POST") r.HandleFunc("/restart", http.HandlerFunc(restartAgent)).Methods("POST") - r.HandleFunc("/getConfig", http.HandlerFunc(getConfigFile)).Methods("POST") - r.HandleFunc("/getConfig/{setting}", http.HandlerFunc(getConfigSetting)).Methods("GET") - r.HandleFunc("/setConfig", http.HandlerFunc(setConfigFile)).Methods("POST") + r.HandleFunc("/getConfig", func(w http.ResponseWriter, _ *http.Request) { getConfigFile(w, config) }).Methods("POST") + r.HandleFunc("/getConfig/{setting}", func(w http.ResponseWriter, r *http.Request) { getConfigSetting(w, r, config) }).Methods("GET") + r.HandleFunc("/setConfig", func(w http.ResponseWriter, r *http.Request) { setConfigFile(w, r, config) }).Methods("POST") } // Sends a simple reply (for checking connection to server) -func ping(w http.ResponseWriter, _ *http.Request) { +func ping(w http.ResponseWriter, startTimestamp int64) { elapsed := time.Now().Unix() - startTimestamp w.Write([]byte(strconv.FormatInt(elapsed, 10))) } @@ -104,10 +106,10 @@ func getHostname(w http.ResponseWriter, r *http.Request) { } // Sends the log file (agent.log) -func getLog(w http.ResponseWriter, r *http.Request) { +func getLog(w http.ResponseWriter, r *http.Request, config configmodel.Reader) { flip, _ := strconv.ParseBool(mux.Vars(r)["flip"]) - logFile := config.Datadog.GetString("log_file") + logFile := config.GetString("log_file") if logFile == "" { logFile = path.DefaultLogFile } @@ -179,7 +181,7 @@ func restartAgent(w http.ResponseWriter, _ *http.Request) { w.Write([]byte("Success")) } -func getConfigSetting(w http.ResponseWriter, r *http.Request) { +func getConfigSetting(w http.ResponseWriter, r *http.Request, config configmodel.Reader) { w.Header().Set("Content-Type", "application/json") setting := mux.Vars(r)["setting"] if _, ok := map[string]bool{ @@ -191,7 +193,7 @@ func getConfigSetting(w http.ResponseWriter, r *http.Request) { return } if err := json.NewEncoder(w).Encode(map[string]interface{}{ - setting: config.Datadog.Get(setting), + setting: config.Get(setting), }); err != nil { w.WriteHeader(http.StatusInternalServerError) fmt.Fprintf(w, `"error": "%v"`, err) @@ -199,8 +201,8 @@ func getConfigSetting(w http.ResponseWriter, r *http.Request) { } // Sends the configuration (aka datadog.yaml) file -func getConfigFile(w http.ResponseWriter, _ *http.Request) { - path := config.Datadog.ConfigFileUsed() +func getConfigFile(w http.ResponseWriter, config configmodel.Reader) { + path := config.ConfigFileUsed() settings, e := os.ReadFile(path) if e != nil { w.Write([]byte("Error: " + e.Error())) @@ -212,7 +214,7 @@ func getConfigFile(w http.ResponseWriter, _ *http.Request) { } // Overwrites the main config file (datadog.yaml) with new data -func setConfigFile(w http.ResponseWriter, r *http.Request) { +func setConfigFile(w http.ResponseWriter, r *http.Request, config configmodel.Reader) { payload, e := parseBody(r) if e != nil { w.Write([]byte(e.Error())) @@ -228,7 +230,7 @@ func setConfigFile(w http.ResponseWriter, r *http.Request) { return } - path := config.Datadog.ConfigFileUsed() + path := config.ConfigFileUsed() e = os.WriteFile(path, data, 0644) if e != nil { w.Write([]byte("Error: " + e.Error())) diff --git a/cmd/agent/gui/agent_test.go b/comp/core/gui/guiimpl/agent_test.go similarity index 81% rename from cmd/agent/gui/agent_test.go rename to comp/core/gui/guiimpl/agent_test.go index 8823627c2a75c..1232db2cc871f 100644 --- a/cmd/agent/gui/agent_test.go +++ b/comp/core/gui/guiimpl/agent_test.go @@ -3,7 +3,7 @@ // This product includes software developed at Datadog (https://www.datadoghq.com/). // Copyright 2022-present Datadog, Inc. -package gui +package guiimpl import ( "fmt" @@ -12,10 +12,14 @@ import ( "net/http/httptest" "strings" "testing" + "time" "github.com/gorilla/mux" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + + "github.com/DataDog/datadog-agent/comp/core/config" + "github.com/DataDog/datadog-agent/pkg/util/fxutil" ) func Test_makeFlare(t *testing.T) { @@ -46,6 +50,8 @@ func Test_makeFlare(t *testing.T) { }, } + fakeGuiStartTimestamp := time.Now().Unix() + for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { req, err := http.NewRequest("POST", "/flare", strings.NewReader(tt.payload)) @@ -54,7 +60,7 @@ func Test_makeFlare(t *testing.T) { rr := httptest.NewRecorder() router := mux.NewRouter() - agentHandler(router, nil, nil) + agentHandler(router, nil, nil, nil, fakeGuiStartTimestamp) router.ServeHTTP(rr, req) resp := rr.Result() @@ -69,22 +75,35 @@ func Test_getConfigSetting(t *testing.T) { tests := []struct { name string configSetting string + configValue string expectedBody string }{ { name: "Allowed setting", configSetting: "apm_config.receiver_port", + configValue: "8126", expectedBody: "{\"apm_config.receiver_port\":8126}\n", }, { name: "Not allowed setting", configSetting: "api_key", + configValue: "", expectedBody: "\"error\": \"requested setting is not whitelisted\"", }, } + fakeGuiStartTimestamp := time.Now().Unix() + + c := fxutil.Test[config.Component](t, + config.MockModule(), + ) + for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { + if tt.configValue != "" { + c.SetWithoutSource(tt.configSetting, tt.configValue) + } + path := fmt.Sprintf("/getConfig/%s", tt.configSetting) req, err := http.NewRequest("GET", path, nil) require.NoError(t, err) @@ -92,7 +111,7 @@ func Test_getConfigSetting(t *testing.T) { rr := httptest.NewRecorder() router := mux.NewRouter() - agentHandler(router, nil, nil) + agentHandler(router, nil, nil, c, fakeGuiStartTimestamp) router.ServeHTTP(rr, req) resp := rr.Result() diff --git a/cmd/agent/gui/checks.go b/comp/core/gui/guiimpl/checks.go similarity index 99% rename from cmd/agent/gui/checks.go rename to comp/core/gui/guiimpl/checks.go index 7476b0e5bc4b7..fb451535665f4 100644 --- a/cmd/agent/gui/checks.go +++ b/comp/core/gui/guiimpl/checks.go @@ -3,7 +3,7 @@ // This product includes software developed at Datadog (https://www.datadoghq.com/). // Copyright 2016-present Datadog, Inc. -package gui +package guiimpl import ( "encoding/json" @@ -75,7 +75,7 @@ func sendRunningChecks(w http.ResponseWriter, _ *http.Request) { // Schedules a specific check func runCheckHandler(collector collector.Component, ac autodiscovery.Component) func(_ http.ResponseWriter, r *http.Request) { - return func(w http.ResponseWriter, r *http.Request) { + return func(_ http.ResponseWriter, r *http.Request) { // Fetch the desired check name := mux.Vars(r)["name"] instances := pkgcollector.GetChecksByNameForConfigs(name, ac.GetAllConfigs()) diff --git a/cmd/agent/gui/checks_nopy.go b/comp/core/gui/guiimpl/checks_nopy.go similarity index 95% rename from cmd/agent/gui/checks_nopy.go rename to comp/core/gui/guiimpl/checks_nopy.go index 04df5a0caf5fd..3b5b7ccb6cc28 100644 --- a/cmd/agent/gui/checks_nopy.go +++ b/comp/core/gui/guiimpl/checks_nopy.go @@ -5,7 +5,7 @@ //go:build !python -package gui +package guiimpl // stub: no python interprter func getPythonChecks() ([]string, error) { diff --git a/cmd/agent/gui/checks_python.go b/comp/core/gui/guiimpl/checks_python.go similarity index 96% rename from cmd/agent/gui/checks_python.go rename to comp/core/gui/guiimpl/checks_python.go index 46f3e86c7d45d..f90f2768a173d 100644 --- a/cmd/agent/gui/checks_python.go +++ b/comp/core/gui/guiimpl/checks_python.go @@ -5,7 +5,7 @@ //go:build python -package gui +package guiimpl import ( "github.com/DataDog/datadog-agent/pkg/collector/python" diff --git a/cmd/agent/gui/checks_test.go b/comp/core/gui/guiimpl/checks_test.go similarity index 99% rename from cmd/agent/gui/checks_test.go rename to comp/core/gui/guiimpl/checks_test.go index a680bc8bb5d76..e92e4be2044e1 100644 --- a/cmd/agent/gui/checks_test.go +++ b/comp/core/gui/guiimpl/checks_test.go @@ -3,7 +3,7 @@ // This product includes software developed at Datadog (https://www.datadoghq.com/). // Copyright 2016-present Datadog, Inc. -package gui +package guiimpl import ( "sort" diff --git a/cmd/agent/gui/gui.go b/comp/core/gui/guiimpl/gui.go similarity index 60% rename from cmd/agent/gui/gui.go rename to comp/core/gui/guiimpl/gui.go index ebf28737e967f..c789827e99d82 100644 --- a/cmd/agent/gui/gui.go +++ b/comp/core/gui/guiimpl/gui.go @@ -1,17 +1,17 @@ // 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. +// Copyright 2024-present Datadog, Inc. -package gui +package guiimpl import ( + "context" "crypto/rand" "embed" "encoding/hex" "encoding/json" "fmt" - "html/template" "io" "mime" "net" @@ -21,22 +21,40 @@ import ( "path/filepath" "strconv" "strings" + "text/template" "time" + "go.uber.org/fx" + "github.com/gorilla/mux" "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/config" "github.com/DataDog/datadog-agent/comp/core/flare" + guicomp "github.com/DataDog/datadog-agent/comp/core/gui" + "github.com/DataDog/datadog-agent/comp/core/log" "github.com/DataDog/datadog-agent/comp/core/status" "github.com/DataDog/datadog-agent/pkg/api/security" - pkgconfig "github.com/DataDog/datadog-agent/pkg/config" - "github.com/DataDog/datadog-agent/pkg/util/log" + + "github.com/DataDog/datadog-agent/pkg/util/fxutil" + "github.com/DataDog/datadog-agent/pkg/util/optional" ) -var ( +// Module defines the fx options for this component. +func Module() fxutil.Module { + return fxutil.Component( + fx.Provide(newGui), + ) +} + +type gui struct { + logger log.Component + + port string listener net.Listener + router *mux.Router authToken string // CsrfToken is a session-specific token passed to the GUI's authentication endpoint by app.launchGui @@ -44,7 +62,7 @@ var ( // To compute uptime startTimestamp int64 -) +} //go:embed views var viewsFS embed.FS @@ -56,74 +74,111 @@ type Payload struct { CaseID string `json:"caseID"` } -// StopGUIServer closes the connection to the HTTP server & removes the authentication token file we created -func StopGUIServer() { - if listener != nil { - listener.Close() - } +type dependencies struct { + fx.In + + Log log.Component + Config config.Component + Flare flare.Component + Status status.Component + Collector collector.Component + Ac autodiscovery.Component + Lc fx.Lifecycle } -// 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, - ac autodiscovery.Component) error { - // Set start time... - startTimestamp = time.Now().Unix() +// GUI component implementation constructor +// @param deps dependencies needed to construct the gui, bundled in a struct +// @return an optional, depending of "GUI_port" configuration value +func newGui(deps dependencies) optional.Option[guicomp.Component] { + + guiPort := deps.Config.GetString("GUI_port") + + if guiPort == "-1" { + deps.Log.Infof("GUI server port -1 specified: not starting the GUI.") + return optional.NewNoneOption[guicomp.Component]() + } + + g := gui{ + port: guiPort, + logger: deps.Log, + } + + // Create a CSRF token (unique to each session) + e := g.createCSRFToken() + if e != nil { + g.logger.Errorf("GUI server initialization failed (unable to create CSRF token): ", e) + return optional.NewNoneOption[guicomp.Component]() + } + + // Fetch the authentication token (persists across sessions) + g.authToken, e = security.FetchAuthToken(deps.Config) + if e != nil { + g.logger.Errorf("GUI server initialization failed (unable to get the AuthToken): ", e) + return optional.NewNoneOption[guicomp.Component]() + } // Instantiate the gorilla/mux router router := mux.NewRouter() // Serve the only public file at the authentication endpoint - router.HandleFunc("/authenticate", generateAuthEndpoint) + router.HandleFunc("/authenticate", g.generateAuthEndpoint) // Serve the (secured) index page on the default endpoint - router.Handle("/", authorizeAccess(http.HandlerFunc(generateIndex))) + router.Handle("/", g.authorizeAccess(http.HandlerFunc(generateIndex))) // Mount our (secured) filesystem at the view/{path} route - router.PathPrefix("/view/").Handler(http.StripPrefix("/view/", authorizeAccess(http.HandlerFunc(serveAssets)))) + router.PathPrefix("/view/").Handler(http.StripPrefix("/view/", g.authorizeAccess(http.HandlerFunc(serveAssets)))) // Set up handlers for the API agentRouter := mux.NewRouter().PathPrefix("/agent").Subrouter().StrictSlash(true) - agentHandler(agentRouter, flare, statusComponent) + agentHandler(agentRouter, deps.Flare, deps.Status, deps.Config, g.startTimestamp) checkRouter := mux.NewRouter().PathPrefix("/checks").Subrouter().StrictSlash(true) - checkHandler(checkRouter, collector, ac) + checkHandler(checkRouter, deps.Collector, deps.Ac) // Add authorization middleware to all the API endpoints - router.PathPrefix("/agent").Handler(negroni.New(negroni.HandlerFunc(authorizePOST), negroni.Wrap(agentRouter))) - router.PathPrefix("/checks").Handler(negroni.New(negroni.HandlerFunc(authorizePOST), negroni.Wrap(checkRouter))) + router.PathPrefix("/agent").Handler(negroni.New(negroni.HandlerFunc(g.authorizePOST), negroni.Wrap(agentRouter))) + router.PathPrefix("/checks").Handler(negroni.New(negroni.HandlerFunc(g.authorizePOST), negroni.Wrap(checkRouter))) - // Listen & serve - listener, e := net.Listen("tcp", "127.0.0.1:"+port) - if e != nil { - return e - } - go http.Serve(listener, router) //nolint:errcheck - log.Infof("GUI server is listening at 127.0.0.1:" + port) + g.router = router - // Create a CSRF token (unique to each session) - e = createCSRFToken() + deps.Lc.Append(fx.Hook{ + OnStart: g.start, + OnStop: g.stop}) + + return optional.NewOption[guicomp.Component](g) +} + +// start function is provided to fx as OnStart lifecycle hook, it run the GUI server +func (g *gui) start(_ context.Context) error { + var e error + + // Set start time... + g.startTimestamp = time.Now().Unix() + + g.listener, e = net.Listen("tcp", "127.0.0.1:"+g.port) if e != nil { - return e + g.logger.Errorf("GUI server didn't achieved to start: ", e) + return nil } + go http.Serve(g.listener, g.router) //nolint:errcheck + g.logger.Infof("GUI server is listening at 127.0.0.1:" + g.port) + return nil +} - // Fetch the authentication token (persists across sessions) - authToken, e = security.FetchAuthToken(pkgconfig.Datadog) - if e != nil { - listener.Close() - listener = nil +func (g *gui) stop(_ context.Context) error { + if g.listener != nil { + g.listener.Close() } - return e + return nil } -func createCSRFToken() error { +func (g *gui) createCSRFToken() error { key := make([]byte, 32) _, e := rand.Read(key) if e != nil { return fmt.Errorf("error creating CSRF token: " + e.Error()) } - CsrfToken = hex.EncodeToString(key) + g.CsrfToken = hex.EncodeToString(key) return nil } @@ -146,7 +201,7 @@ func generateIndex(w http.ResponseWriter, _ *http.Request) { } } -func generateAuthEndpoint(w http.ResponseWriter, _ *http.Request) { +func (g *gui) generateAuthEndpoint(w http.ResponseWriter, _ *http.Request) { data, err := viewsFS.ReadFile("views/templates/auth.tmpl") if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) @@ -158,7 +213,7 @@ func generateAuthEndpoint(w http.ResponseWriter, _ *http.Request) { return } - e = t.Execute(w, map[string]interface{}{"csrf": CsrfToken}) + e = t.Execute(w, map[string]interface{}{"csrf": g.CsrfToken}) if e != nil { http.Error(w, e.Error(), http.StatusInternalServerError) return @@ -186,7 +241,7 @@ func serveAssets(w http.ResponseWriter, req *http.Request) { } // Middleware which blocks access to secured files from unauthorized clients -func authorizeAccess(h http.Handler) http.Handler { +func (g *gui) authorizeAccess(h http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { // Disable caching w.Header().Set("Cache-Control", "no-cache, no-store, must-revalidate") @@ -198,7 +253,7 @@ func authorizeAccess(h http.Handler) http.Handler { return } - if cookie.Value != authToken { + if cookie.Value != g.authToken { w.WriteHeader(http.StatusUnauthorized) http.Error(w, "invalid authorization token", 401) return @@ -210,7 +265,7 @@ func authorizeAccess(h http.Handler) http.Handler { } // Middleware which blocks POST requests from unauthorized clients -func authorizePOST(w http.ResponseWriter, r *http.Request, next http.HandlerFunc) { +func (g *gui) authorizePOST(w http.ResponseWriter, r *http.Request, next http.HandlerFunc) { authHeader := r.Header["Authorization"] if len(authHeader) == 0 || authHeader[0] == "" || strings.Split(authHeader[0], " ")[0] != "Bearer" { w.WriteHeader(http.StatusUnauthorized) @@ -219,7 +274,7 @@ func authorizePOST(w http.ResponseWriter, r *http.Request, next http.HandlerFunc } token := strings.Split(authHeader[0], " ")[1] - if token != authToken { + if token != g.authToken { w.WriteHeader(http.StatusUnauthorized) http.Error(w, "invalid authorization token", 401) return @@ -243,3 +298,7 @@ func parseBody(r *http.Request) (Payload, error) { return p, nil } + +func (g gui) GetCSRFToken() string { + return g.CsrfToken +} diff --git a/cmd/agent/gui/platform_darwin.go b/comp/core/gui/guiimpl/platform_darwin.go similarity index 96% rename from cmd/agent/gui/platform_darwin.go rename to comp/core/gui/guiimpl/platform_darwin.go index 45f701d121fbb..f7d5728950ef5 100644 --- a/cmd/agent/gui/platform_darwin.go +++ b/comp/core/gui/guiimpl/platform_darwin.go @@ -3,7 +3,7 @@ // This product includes software developed at Datadog (https://www.datadoghq.com/). // Copyright 2016-present Datadog, Inc. -package gui +package guiimpl import ( "fmt" diff --git a/cmd/agent/gui/platform_nix.go b/comp/core/gui/guiimpl/platform_nix.go similarity index 96% rename from cmd/agent/gui/platform_nix.go rename to comp/core/gui/guiimpl/platform_nix.go index 8f2c01b24d5bc..e3b61db44beb6 100644 --- a/cmd/agent/gui/platform_nix.go +++ b/comp/core/gui/guiimpl/platform_nix.go @@ -5,7 +5,7 @@ //go:build freebsd || netbsd || openbsd || solaris || dragonfly || linux -package gui +package guiimpl import ( "fmt" diff --git a/cmd/agent/gui/platform_windows.go b/comp/core/gui/guiimpl/platform_windows.go similarity index 97% rename from cmd/agent/gui/platform_windows.go rename to comp/core/gui/guiimpl/platform_windows.go index e1bc0e046fd51..91f012061cbcb 100644 --- a/cmd/agent/gui/platform_windows.go +++ b/comp/core/gui/guiimpl/platform_windows.go @@ -3,7 +3,7 @@ // This product includes software developed at Datadog (https://www.datadoghq.com/). // Copyright 2016-present Datadog, Inc. -package gui +package guiimpl import ( "fmt" diff --git a/cmd/agent/gui/render.go b/comp/core/gui/guiimpl/render.go similarity index 99% rename from cmd/agent/gui/render.go rename to comp/core/gui/guiimpl/render.go index b35a10eb17427..b22cd883a7dbe 100644 --- a/cmd/agent/gui/render.go +++ b/comp/core/gui/guiimpl/render.go @@ -3,7 +3,7 @@ // This product includes software developed at Datadog (https://www.datadoghq.com/). // Copyright 2016-present Datadog, Inc. -package gui +package guiimpl import ( "bytes" diff --git a/cmd/agent/gui/systray/.gitignore b/comp/core/gui/guiimpl/systray/.gitignore similarity index 100% rename from cmd/agent/gui/systray/.gitignore rename to comp/core/gui/guiimpl/systray/.gitignore diff --git a/cmd/agent/gui/systray/Package.swift b/comp/core/gui/guiimpl/systray/Package.swift similarity index 100% rename from cmd/agent/gui/systray/Package.swift rename to comp/core/gui/guiimpl/systray/Package.swift diff --git a/cmd/agent/gui/systray/README.md b/comp/core/gui/guiimpl/systray/README.md similarity index 100% rename from cmd/agent/gui/systray/README.md rename to comp/core/gui/guiimpl/systray/README.md diff --git a/cmd/agent/gui/systray/Sources/gui.swift b/comp/core/gui/guiimpl/systray/Sources/gui.swift similarity index 100% rename from cmd/agent/gui/systray/Sources/gui.swift rename to comp/core/gui/guiimpl/systray/Sources/gui.swift diff --git a/cmd/agent/gui/systray/Sources/main.swift b/comp/core/gui/guiimpl/systray/Sources/main.swift similarity index 100% rename from cmd/agent/gui/systray/Sources/main.swift rename to comp/core/gui/guiimpl/systray/Sources/main.swift diff --git a/cmd/agent/gui/systray/agent.png b/comp/core/gui/guiimpl/systray/agent.png similarity index 100% rename from cmd/agent/gui/systray/agent.png rename to comp/core/gui/guiimpl/systray/agent.png diff --git a/cmd/agent/gui/testdata/check.bad.default b/comp/core/gui/guiimpl/testdata/check.bad.default similarity index 100% rename from cmd/agent/gui/testdata/check.bad.default rename to comp/core/gui/guiimpl/testdata/check.bad.default diff --git a/cmd/agent/gui/testdata/check.yaml b/comp/core/gui/guiimpl/testdata/check.yaml similarity index 100% rename from cmd/agent/gui/testdata/check.yaml rename to comp/core/gui/guiimpl/testdata/check.yaml diff --git a/cmd/agent/gui/testdata/check.yaml.bad b/comp/core/gui/guiimpl/testdata/check.yaml.bad similarity index 100% rename from cmd/agent/gui/testdata/check.yaml.bad rename to comp/core/gui/guiimpl/testdata/check.yaml.bad diff --git a/cmd/agent/gui/testdata/check.yaml.default b/comp/core/gui/guiimpl/testdata/check.yaml.default similarity index 100% rename from cmd/agent/gui/testdata/check.yaml.default rename to comp/core/gui/guiimpl/testdata/check.yaml.default diff --git a/cmd/agent/gui/testdata/check.yaml.example b/comp/core/gui/guiimpl/testdata/check.yaml.example similarity index 100% rename from cmd/agent/gui/testdata/check.yaml.example rename to comp/core/gui/guiimpl/testdata/check.yaml.example diff --git a/cmd/agent/gui/testdata/foo.d/conf.yaml b/comp/core/gui/guiimpl/testdata/foo.d/conf.yaml similarity index 100% rename from cmd/agent/gui/testdata/foo.d/conf.yaml rename to comp/core/gui/guiimpl/testdata/foo.d/conf.yaml diff --git a/cmd/agent/gui/testdata/foo.d/conf.yaml.default b/comp/core/gui/guiimpl/testdata/foo.d/conf.yaml.default similarity index 100% rename from cmd/agent/gui/testdata/foo.d/conf.yaml.default rename to comp/core/gui/guiimpl/testdata/foo.d/conf.yaml.default diff --git a/cmd/agent/gui/testdata/foo.d/conf.yaml.example b/comp/core/gui/guiimpl/testdata/foo.d/conf.yaml.example similarity index 100% rename from cmd/agent/gui/testdata/foo.d/conf.yaml.example rename to comp/core/gui/guiimpl/testdata/foo.d/conf.yaml.example diff --git a/cmd/agent/gui/testdata/foo.d/metrics.yaml b/comp/core/gui/guiimpl/testdata/foo.d/metrics.yaml similarity index 100% rename from cmd/agent/gui/testdata/foo.d/metrics.yaml rename to comp/core/gui/guiimpl/testdata/foo.d/metrics.yaml diff --git a/cmd/agent/gui/testdata/ignored/ignored.yaml b/comp/core/gui/guiimpl/testdata/ignored/ignored.yaml similarity index 100% rename from cmd/agent/gui/testdata/ignored/ignored.yaml rename to comp/core/gui/guiimpl/testdata/ignored/ignored.yaml diff --git a/cmd/agent/gui/views/private/css/codemirror.css b/comp/core/gui/guiimpl/views/private/css/codemirror.css similarity index 100% rename from cmd/agent/gui/views/private/css/codemirror.css rename to comp/core/gui/guiimpl/views/private/css/codemirror.css diff --git a/cmd/agent/gui/views/private/css/font-awesome.min.css b/comp/core/gui/guiimpl/views/private/css/font-awesome.min.css similarity index 100% rename from cmd/agent/gui/views/private/css/font-awesome.min.css rename to comp/core/gui/guiimpl/views/private/css/font-awesome.min.css diff --git a/cmd/agent/gui/views/private/css/stylesheet.css b/comp/core/gui/guiimpl/views/private/css/stylesheet.css similarity index 100% rename from cmd/agent/gui/views/private/css/stylesheet.css rename to comp/core/gui/guiimpl/views/private/css/stylesheet.css diff --git a/cmd/agent/gui/views/private/css/stylesheet.scss b/comp/core/gui/guiimpl/views/private/css/stylesheet.scss similarity index 100% rename from cmd/agent/gui/views/private/css/stylesheet.scss rename to comp/core/gui/guiimpl/views/private/css/stylesheet.scss diff --git a/cmd/agent/gui/views/private/fonts/FontAwesome.otf b/comp/core/gui/guiimpl/views/private/fonts/FontAwesome.otf similarity index 100% rename from cmd/agent/gui/views/private/fonts/FontAwesome.otf rename to comp/core/gui/guiimpl/views/private/fonts/FontAwesome.otf diff --git a/cmd/agent/gui/views/private/fonts/fontawesome-webfont.eot b/comp/core/gui/guiimpl/views/private/fonts/fontawesome-webfont.eot similarity index 100% rename from cmd/agent/gui/views/private/fonts/fontawesome-webfont.eot rename to comp/core/gui/guiimpl/views/private/fonts/fontawesome-webfont.eot diff --git a/cmd/agent/gui/views/private/fonts/fontawesome-webfont.svg b/comp/core/gui/guiimpl/views/private/fonts/fontawesome-webfont.svg similarity index 100% rename from cmd/agent/gui/views/private/fonts/fontawesome-webfont.svg rename to comp/core/gui/guiimpl/views/private/fonts/fontawesome-webfont.svg diff --git a/cmd/agent/gui/views/private/fonts/fontawesome-webfont.ttf b/comp/core/gui/guiimpl/views/private/fonts/fontawesome-webfont.ttf similarity index 100% rename from cmd/agent/gui/views/private/fonts/fontawesome-webfont.ttf rename to comp/core/gui/guiimpl/views/private/fonts/fontawesome-webfont.ttf diff --git a/cmd/agent/gui/views/private/fonts/fontawesome-webfont.woff b/comp/core/gui/guiimpl/views/private/fonts/fontawesome-webfont.woff similarity index 100% rename from cmd/agent/gui/views/private/fonts/fontawesome-webfont.woff rename to comp/core/gui/guiimpl/views/private/fonts/fontawesome-webfont.woff diff --git a/cmd/agent/gui/views/private/fonts/fontawesome-webfont.woff2 b/comp/core/gui/guiimpl/views/private/fonts/fontawesome-webfont.woff2 similarity index 100% rename from cmd/agent/gui/views/private/fonts/fontawesome-webfont.woff2 rename to comp/core/gui/guiimpl/views/private/fonts/fontawesome-webfont.woff2 diff --git a/cmd/agent/gui/views/private/images/datadog_icon_white.svg b/comp/core/gui/guiimpl/views/private/images/datadog_icon_white.svg similarity index 100% rename from cmd/agent/gui/views/private/images/datadog_icon_white.svg rename to comp/core/gui/guiimpl/views/private/images/datadog_icon_white.svg diff --git a/cmd/agent/gui/views/private/images/dd_bkgrnd.png b/comp/core/gui/guiimpl/views/private/images/dd_bkgrnd.png similarity index 100% rename from cmd/agent/gui/views/private/images/dd_bkgrnd.png rename to comp/core/gui/guiimpl/views/private/images/dd_bkgrnd.png diff --git a/cmd/agent/gui/views/private/js/codemirror.js b/comp/core/gui/guiimpl/views/private/js/codemirror.js similarity index 100% rename from cmd/agent/gui/views/private/js/codemirror.js rename to comp/core/gui/guiimpl/views/private/js/codemirror.js diff --git a/cmd/agent/gui/views/private/js/javascript.js b/comp/core/gui/guiimpl/views/private/js/javascript.js similarity index 100% rename from cmd/agent/gui/views/private/js/javascript.js rename to comp/core/gui/guiimpl/views/private/js/javascript.js diff --git a/cmd/agent/gui/views/private/js/jquery-3.5.1.min.js b/comp/core/gui/guiimpl/views/private/js/jquery-3.5.1.min.js similarity index 100% rename from cmd/agent/gui/views/private/js/jquery-3.5.1.min.js rename to comp/core/gui/guiimpl/views/private/js/jquery-3.5.1.min.js diff --git a/cmd/agent/gui/views/private/js/polyfills.js b/comp/core/gui/guiimpl/views/private/js/polyfills.js similarity index 100% rename from cmd/agent/gui/views/private/js/polyfills.js rename to comp/core/gui/guiimpl/views/private/js/polyfills.js diff --git a/cmd/agent/gui/views/private/js/purify.min.js b/comp/core/gui/guiimpl/views/private/js/purify.min.js similarity index 100% rename from cmd/agent/gui/views/private/js/purify.min.js rename to comp/core/gui/guiimpl/views/private/js/purify.min.js diff --git a/cmd/agent/gui/views/private/js/yaml.js b/comp/core/gui/guiimpl/views/private/js/yaml.js similarity index 100% rename from cmd/agent/gui/views/private/js/yaml.js rename to comp/core/gui/guiimpl/views/private/js/yaml.js diff --git a/cmd/agent/gui/views/templates/auth.tmpl b/comp/core/gui/guiimpl/views/templates/auth.tmpl similarity index 100% rename from cmd/agent/gui/views/templates/auth.tmpl rename to comp/core/gui/guiimpl/views/templates/auth.tmpl diff --git a/cmd/agent/gui/views/templates/index.tmpl b/comp/core/gui/guiimpl/views/templates/index.tmpl similarity index 100% rename from cmd/agent/gui/views/templates/index.tmpl rename to comp/core/gui/guiimpl/views/templates/index.tmpl diff --git a/cmd/agent/gui/views/templates/loaderErr.tmpl b/comp/core/gui/guiimpl/views/templates/loaderErr.tmpl similarity index 100% rename from cmd/agent/gui/views/templates/loaderErr.tmpl rename to comp/core/gui/guiimpl/views/templates/loaderErr.tmpl diff --git a/cmd/agent/gui/views/templates/runningChecks.tmpl b/comp/core/gui/guiimpl/views/templates/runningChecks.tmpl similarity index 100% rename from cmd/agent/gui/views/templates/runningChecks.tmpl rename to comp/core/gui/guiimpl/views/templates/runningChecks.tmpl diff --git a/cmd/agent/gui/views/templates/singleCheck.tmpl b/comp/core/gui/guiimpl/views/templates/singleCheck.tmpl similarity index 100% rename from cmd/agent/gui/views/templates/singleCheck.tmpl rename to comp/core/gui/guiimpl/views/templates/singleCheck.tmpl diff --git a/comp/core/log/go.mod b/comp/core/log/go.mod index f528db9d261e5..1e857e4610f17 100644 --- a/comp/core/log/go.mod +++ b/comp/core/log/go.mod @@ -72,9 +72,9 @@ require ( github.com/dustin/go-humanize v1.0.1 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/go-ole/go-ole v1.2.6 // indirect + github.com/go-viper/mapstructure/v2 v2.0.0-alpha.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.3 // indirect - github.com/hashicorp/go-version v1.6.0 // 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 @@ -82,7 +82,7 @@ require ( 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/knadh/koanf/v2 v2.1.0 // indirect github.com/lufia/plan9stats v0.0.0-20220913051719-115f729f3c8c // indirect github.com/magiconair/properties v1.8.1 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect @@ -108,28 +108,27 @@ require ( 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/metric v1.22.0 // indirect - go.opentelemetry.io/otel/trace v1.22.0 // indirect + go.opentelemetry.io/collector/component v0.97.0 // indirect + go.opentelemetry.io/collector/config/configtelemetry v0.97.0 // indirect + go.opentelemetry.io/collector/confmap v0.97.0 // indirect + go.opentelemetry.io/collector/pdata v1.4.0 // indirect + go.opentelemetry.io/collector/semconv v0.97.0 // indirect + go.opentelemetry.io/otel v1.24.0 // indirect + go.opentelemetry.io/otel/metric v1.24.0 // indirect + go.opentelemetry.io/otel/trace v1.24.0 // indirect go.uber.org/atomic v1.11.0 // indirect go.uber.org/dig v1.17.0 // indirect go.uber.org/multierr v1.11.0 // indirect - go.uber.org/zap v1.26.0 // indirect + go.uber.org/zap v1.27.0 // indirect golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect golang.org/x/mod v0.17.0 // indirect golang.org/x/net v0.24.0 // indirect golang.org/x/sys v0.19.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-20231106174013-bbf56f31fb17 // indirect - google.golang.org/grpc v1.60.1 // indirect - google.golang.org/protobuf v1.32.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 // indirect + google.golang.org/grpc v1.62.1 // indirect + google.golang.org/protobuf v1.33.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/comp/core/log/go.sum b/comp/core/log/go.sum index 074b4a8313b0b..feb309c1c863b 100644 --- a/comp/core/log/go.sum +++ b/comp/core/log/go.sum @@ -1,6 +1,4 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -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= 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.5.0 h1:G5KHeB8pWBNXT4Jtw0zAkhdxEAWSpWH00geHI6LDrKU= @@ -67,12 +65,8 @@ github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyT 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-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.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= @@ -80,6 +74,8 @@ github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre 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/go-viper/mapstructure/v2 v2.0.0-alpha.1 h1:TQcrn6Wq+sKGkpyPvppOz99zsMBaUOKXq6HSv655U1c= +github.com/go-viper/mapstructure/v2 v2.0.0-alpha.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= 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= @@ -88,8 +84,6 @@ github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69 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/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.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -119,8 +113,6 @@ github.com/grpc-ecosystem/go-grpc-middleware v1.2.0/go.mod h1:mJzapYve32yjrKlk9G 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/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= -github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= 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= @@ -144,8 +136,8 @@ github.com/knadh/koanf/maps v0.1.1 h1:G5TjmUh2D7G2YWf5SQQqSiHRJEjaicvU0KpypqB3NI 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/knadh/koanf/v2 v2.1.0 h1:eh4QmHHBuU8BybfIJ8mB8K8gsGCD/AUQTdwGq/GzId8= +github.com/knadh/koanf/v2 v2.1.0/go.mod h1:4mnTRbZCK+ALuBXHZMjDfG9y714L7TykVnZkXbMU3Es= 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= @@ -197,28 +189,26 @@ github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXP 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.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= -github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= +github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= +github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= 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/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos= +github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8= 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.46.0 h1:doXzt5ybi1HBKpsZOL0sSkaNHJJqkyfEWZGGqqScV0Y= -github.com/prometheus/common v0.46.0/go.mod h1:Tp0qkxpb9Jsg54QMe+EAmqXkSV7Evdy1BTn+g2pa/hQ= +github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= +github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= 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.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= @@ -295,32 +285,28 @@ github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5t 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.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= -go.opentelemetry.io/otel/exporters/prometheus v0.45.0/go.mod h1:UVJZPLnfDSvHj+eJuZE+E1GjIBD267mEMfAAHJdghWg= -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/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/collector/component v0.97.0 h1:vanKhXl5nptN8igRH4PqVYHOILif653vaPIKv6LCZCI= +go.opentelemetry.io/collector/component v0.97.0/go.mod h1:F/m3HMlkb16RKI7wJjgbECK1IZkAcmB8bu7yD8XOkwM= +go.opentelemetry.io/collector/config/configtelemetry v0.97.0 h1:JS/WxK09A9m39D5OqsAWaoRe4tG7ESMnzDNIbZ5bD6c= +go.opentelemetry.io/collector/config/configtelemetry v0.97.0/go.mod h1:YV5PaOdtnU1xRomPcYqoHmyCr48tnaAREeGO96EZw8o= +go.opentelemetry.io/collector/confmap v0.97.0 h1:0CGSk7YW9rPc6jCwJteJzHzN96HRoHTfuqI7J/EmZsg= +go.opentelemetry.io/collector/confmap v0.97.0/go.mod h1:AnJmZcZoOLuykSXGiAf3shi11ZZk5ei4tZd9dDTTpWE= +go.opentelemetry.io/collector/pdata v1.4.0 h1:cA6Pr7Z2V7mE+i7FmYpavX7nefzd6H4CICgW0T9aJX0= +go.opentelemetry.io/collector/pdata v1.4.0/go.mod h1:0Ttp4wQinhV5oJTd9MjyvUegmZBO9O0nrlh/+EDLw+Q= +go.opentelemetry.io/collector/semconv v0.97.0 h1:iF3nTfThbiOwz7o5Pocn0dDnDoffd18ijDuf6Mwzi1s= +go.opentelemetry.io/collector/semconv v0.97.0/go.mod h1:8ElcRZ8Cdw5JnvhTOQOdYizkJaQ10Z2fS+R6djOnj6A= +go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo= +go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo= +go.opentelemetry.io/otel/exporters/prometheus v0.46.0 h1:I8WIFXR351FoLJYuloU4EgXbtNX2URfU/85pUPheIEQ= +go.opentelemetry.io/otel/exporters/prometheus v0.46.0/go.mod h1:ztwVUHe5DTR/1v7PeuGRnU5Bbd4QKYwApWmuutKsJSs= +go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI= +go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= +go.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw= +go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg= +go.opentelemetry.io/otel/sdk/metric v1.24.0 h1:yyMQrPzF+k88/DbH7o4FMAs80puqd+9osbiBrJrz/w8= +go.opentelemetry.io/otel/sdk/metric v1.24.0/go.mod h1:I6Y5FjH6rvEnTTAYQz3Mmv2kl6Ek5IIrmwTLqMrrOE0= +go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI= +go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= 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= @@ -339,8 +325,8 @@ go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN8 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.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= -go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= +go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= +go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= 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= @@ -464,19 +450,19 @@ google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJ 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/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17 h1:Jyp0Hsi0bmHXG6k9eATXoYtjd6e2UzZ1SCn/wIupY14= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:oQ5rr10WTTMvP4A36n8JpR1OrO1BEiV4f78CneXZxkA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 h1:AjyfHzEPEFp/NpvfN5g+KDla3EMojjhRVZc1i7cj+oM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80/go.mod h1:PAREbraiVEVGVdTZsVWjSbbTtSyGbAgIIvni8a8CD5s= 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/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.62.1 h1:B4n+nfKzOICUXMgyrNd19h/I9oH0L1pizfk1d4zSgTk= +google.golang.org/grpc v1.62.1/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE= 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.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I= -google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +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/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= diff --git a/comp/forwarder/defaultforwarder/go.mod b/comp/forwarder/defaultforwarder/go.mod index eaa7c6e1761d3..4ed2dbed75b22 100644 --- a/comp/forwarder/defaultforwarder/go.mod +++ b/comp/forwarder/defaultforwarder/go.mod @@ -123,22 +123,21 @@ require ( github.com/tklauser/go-sysconf v0.3.12 // indirect github.com/tklauser/numcpus v0.6.1 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect - go.opentelemetry.io/otel v1.23.1 // indirect + go.opentelemetry.io/otel v1.24.0 // indirect go.opentelemetry.io/otel/exporters/prometheus v0.45.0 // indirect - go.opentelemetry.io/otel/metric v1.23.1 // indirect + go.opentelemetry.io/otel/metric v1.24.0 // indirect go.opentelemetry.io/otel/sdk v1.23.1 // indirect go.opentelemetry.io/otel/sdk/metric v1.22.0 // indirect - go.opentelemetry.io/otel/trace v1.23.1 // indirect + go.opentelemetry.io/otel/trace v1.24.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 + go.uber.org/zap v1.27.0 // indirect golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect golang.org/x/mod v0.17.0 // indirect golang.org/x/net v0.24.0 // indirect golang.org/x/sys v0.19.0 // indirect golang.org/x/tools v0.19.0 // indirect - google.golang.org/protobuf v1.32.0 // indirect + google.golang.org/protobuf v1.33.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 e6b752b4eea63..8a0e53f75f425 100644 --- a/comp/forwarder/defaultforwarder/go.sum +++ b/comp/forwarder/defaultforwarder/go.sum @@ -249,18 +249,18 @@ github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1: github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -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 v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo= +go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo= 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/metric v1.23.1 h1:PQJmqJ9u2QaJLBOELl1cxIdPcpbwzbkjfEyelTl2rlo= -go.opentelemetry.io/otel/metric v1.23.1/go.mod h1:mpG2QPlAfnK8yNhNJAxDZruU9Y1/HubbC+KyH8FaCWI= +go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI= +go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= 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.23.1 h1:4LrmmEd8AU2rFvU1zegmvqW7+kWarxtNOPyeL6HmYY8= -go.opentelemetry.io/otel/trace v1.23.1/go.mod h1:4IpnpJFwr1mo/6HL8XIPJaE9y0+u1KcVmuW7dwFSVrI= +go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI= +go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= 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= @@ -278,8 +278,8 @@ go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN8 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.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= -go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= +go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= +go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= 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= @@ -365,8 +365,8 @@ google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRn 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.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I= -google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +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/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= diff --git a/comp/forwarder/orchestrator/orchestratorinterface/go.mod b/comp/forwarder/orchestrator/orchestratorinterface/go.mod index 7671e1ce07a0a..820401b2ef372 100644 --- a/comp/forwarder/orchestrator/orchestratorinterface/go.mod +++ b/comp/forwarder/orchestrator/orchestratorinterface/go.mod @@ -129,24 +129,24 @@ require ( github.com/tklauser/go-sysconf v0.3.12 // indirect github.com/tklauser/numcpus v0.6.1 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect - go.opentelemetry.io/otel v1.23.1 // indirect + go.opentelemetry.io/otel v1.24.0 // indirect go.opentelemetry.io/otel/exporters/prometheus v0.45.0 // indirect - go.opentelemetry.io/otel/metric v1.23.1 // indirect + go.opentelemetry.io/otel/metric v1.24.0 // indirect go.opentelemetry.io/otel/sdk v1.23.1 // indirect go.opentelemetry.io/otel/sdk/metric v1.22.0 // indirect - go.opentelemetry.io/otel/trace v1.23.1 // indirect + go.opentelemetry.io/otel/trace v1.24.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.11.0 // indirect - go.uber.org/zap v1.26.0 // indirect + go.uber.org/zap v1.27.0 // indirect golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect golang.org/x/mod v0.17.0 // indirect golang.org/x/net v0.24.0 // indirect golang.org/x/sys v0.19.0 // indirect golang.org/x/text v0.14.0 // indirect golang.org/x/tools v0.19.0 // indirect - google.golang.org/protobuf v1.32.0 // indirect + google.golang.org/protobuf v1.33.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 8caacc1d81e47..1338f18c67be6 100644 --- a/comp/forwarder/orchestrator/orchestratorinterface/go.sum +++ b/comp/forwarder/orchestrator/orchestratorinterface/go.sum @@ -245,18 +245,18 @@ github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1: github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -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 v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo= +go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo= 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/metric v1.23.1 h1:PQJmqJ9u2QaJLBOELl1cxIdPcpbwzbkjfEyelTl2rlo= -go.opentelemetry.io/otel/metric v1.23.1/go.mod h1:mpG2QPlAfnK8yNhNJAxDZruU9Y1/HubbC+KyH8FaCWI= +go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI= +go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= 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.23.1 h1:4LrmmEd8AU2rFvU1zegmvqW7+kWarxtNOPyeL6HmYY8= -go.opentelemetry.io/otel/trace v1.23.1/go.mod h1:4IpnpJFwr1mo/6HL8XIPJaE9y0+u1KcVmuW7dwFSVrI= +go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI= +go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= 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= @@ -274,8 +274,8 @@ go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN8 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.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= -go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= +go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= +go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= 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= @@ -361,8 +361,8 @@ google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRn 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.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I= -google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +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/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= diff --git a/comp/metadata/internal/util/inventory_payload.go b/comp/metadata/internal/util/inventory_payload.go index faf7796948703..7acaab1dbf187 100644 --- a/comp/metadata/internal/util/inventory_payload.go +++ b/comp/metadata/internal/util/inventory_payload.go @@ -142,7 +142,7 @@ func (i *InventoryPayload) MetadataProvider() runnerimpl.Provider { if i.Enabled { return runnerimpl.NewProvider(i.collect) } - return runnerimpl.NewEmptyProvider() + return runnerimpl.NewProvider(nil) } // collect is the callback expected by the metadata runner.Provider. It will send a new payload and return the next diff --git a/comp/metadata/internal/util/inventory_payload_test.go b/comp/metadata/internal/util/inventory_payload_test.go index c7013e68d2fe4..2f9fc163d34fa 100644 --- a/comp/metadata/internal/util/inventory_payload_test.go +++ b/comp/metadata/internal/util/inventory_payload_test.go @@ -83,14 +83,10 @@ func TestMetadataProvider(t *testing.T) { i := getTestInventoryPayload(t, nil) i.Enabled = true - cb := i.MetadataProvider().Callback - _, ok := cb.Get() - assert.True(t, ok) + assert.NotNil(t, i.MetadataProvider().Callback) i.Enabled = false - cb = i.MetadataProvider().Callback - _, ok = cb.Get() - assert.False(t, ok) + assert.Nil(t, i.MetadataProvider().Callback) } func TestFlareProvider(t *testing.T) { diff --git a/comp/metadata/inventoryagent/inventoryagentimpl/inventoryagent.go b/comp/metadata/inventoryagent/inventoryagentimpl/inventoryagent.go index 7d3810f575150..3eb0e0f814197 100644 --- a/comp/metadata/inventoryagent/inventoryagentimpl/inventoryagent.go +++ b/comp/metadata/inventoryagent/inventoryagentimpl/inventoryagent.go @@ -181,12 +181,18 @@ type configGetter interface { GetString(string) string } +type zeroConfigGetter struct{} + +func (z *zeroConfigGetter) GetBool(string) bool { return false } +func (z *zeroConfigGetter) GetInt(string) int { return 0 } +func (z *zeroConfigGetter) GetString(string) string { return "" } + // getCorrectConfig tries to fetch the configuration from another process. It returns a new -// configuration object on success and the fallback upon failure. -func (ia *inventoryagent) getCorrectConfig(name string, conf model.Reader, configFetcher func(config model.Reader) (string, error), fallback configGetter) configGetter { +// configuration object on success and the local config upon failure. +func (ia *inventoryagent) getCorrectConfig(name string, localConf model.Reader, configFetcher func(config model.Reader) (string, error)) configGetter { // We query the configuration from another agent itself to have accurate data. If the other process isn't // available we fallback on the current configuration. - if remoteConfig, err := configFetcher(conf); err == nil { + if remoteConfig, err := configFetcher(localConf); err == nil { cfg := viper.New() cfg.SetConfigType("yaml") if err = cfg.ReadConfig(strings.NewReader(remoteConfig)); err != nil { @@ -194,10 +200,8 @@ func (ia *inventoryagent) getCorrectConfig(name string, conf model.Reader, confi } else { return cfg } - } else { - ia.log.Infof("could not fetch %s process configuration: %s", name, err) } - return fallback + return localConf } func (ia *inventoryagent) fetchCoreAgentMetadata() { @@ -232,21 +236,21 @@ func (ia *inventoryagent) fetchCoreAgentMetadata() { } func (ia *inventoryagent) fetchSecurityAgentMetadata() { - securityCfg := ia.getCorrectConfig("security-agent", ia.conf, fetchSecurityConfig, ia.conf) + securityCfg := ia.getCorrectConfig("security-agent", ia.conf, fetchSecurityConfig) ia.data["feature_cspm_enabled"] = securityCfg.GetBool("compliance_config.enabled") ia.data["feature_cspm_host_benchmarks_enabled"] = securityCfg.GetBool("compliance_config.enabled") && securityCfg.GetBool("compliance_config.host_benchmarks.enabled") } func (ia *inventoryagent) fetchTraceAgentMetadata() { - traceCfg := ia.getCorrectConfig("trace-agent", ia.conf, fetchTraceConfig, ia.conf) + traceCfg := ia.getCorrectConfig("trace-agent", ia.conf, fetchTraceConfig) ia.data["config_apm_dd_url"] = scrub(traceCfg.GetString("apm_config.apm_dd_url")) ia.data["feature_apm_enabled"] = traceCfg.GetBool("apm_config.enabled") } func (ia *inventoryagent) fetchProcessAgentMetadata() { - processCfg := ia.getCorrectConfig("process-agent", ia.conf, fetchProcessConfig, ia.conf) + processCfg := ia.getCorrectConfig("process-agent", ia.conf, fetchProcessConfig) ia.data["feature_process_enabled"] = processCfg.GetBool("process_config.process_collection.enabled") ia.data["feature_processes_container_enabled"] = processCfg.GetBool("process_config.container_collection.enabled") @@ -254,63 +258,60 @@ func (ia *inventoryagent) fetchProcessAgentMetadata() { } func (ia *inventoryagent) fetchSystemProbeMetadata() { - // If the system-probe configuration is not loaded we fallback on zero value for all metadata - getBoolSysProbe := func(_ string) bool { return false } - getIntSysProbe := func(_ string) int { return 0 } - + var sysProbeConf configGetter localSysProbeConf, isSet := ia.sysprobeConf.Get() if isSet { // If we can fetch the configuration from the system-probe process, we use it. If not we fallback on the // local instance. - sysProbeConf := ia.getCorrectConfig("system-probe", localSysProbeConf, fetchSystemProbeConfig, localSysProbeConf) - - getBoolSysProbe = sysProbeConf.GetBool - getIntSysProbe = sysProbeConf.GetInt + sysProbeConf = ia.getCorrectConfig("system-probe", localSysProbeConf, fetchSystemProbeConfig) + } else { + // If the system-probe configuration is not loaded we fallback on zero value for all metadata + sysProbeConf = &zeroConfigGetter{} } // Cloud Workload Security / system-probe - ia.data["feature_cws_enabled"] = getBoolSysProbe("runtime_security_config.enabled") - ia.data["feature_cws_security_profiles_enabled"] = getBoolSysProbe("runtime_security_config.activity_dump.enabled") - ia.data["feature_cws_remote_config_enabled"] = getBoolSysProbe("runtime_security_config.remote_configuration.enabled") - ia.data["feature_cws_network_enabled"] = getBoolSysProbe("event_monitoring_config.network.enabled") + ia.data["feature_cws_enabled"] = sysProbeConf.GetBool("runtime_security_config.enabled") + ia.data["feature_cws_security_profiles_enabled"] = sysProbeConf.GetBool("runtime_security_config.activity_dump.enabled") + ia.data["feature_cws_remote_config_enabled"] = sysProbeConf.GetBool("runtime_security_config.remote_configuration.enabled") + ia.data["feature_cws_network_enabled"] = sysProbeConf.GetBool("event_monitoring_config.network.enabled") // Service monitoring / system-probe - ia.data["feature_networks_enabled"] = getBoolSysProbe("network_config.enabled") - ia.data["feature_networks_http_enabled"] = getBoolSysProbe("service_monitoring_config.enable_http_monitoring") - ia.data["feature_networks_https_enabled"] = getBoolSysProbe("service_monitoring_config.tls.native.enabled") + ia.data["feature_networks_enabled"] = sysProbeConf.GetBool("network_config.enabled") + ia.data["feature_networks_http_enabled"] = sysProbeConf.GetBool("service_monitoring_config.enable_http_monitoring") + ia.data["feature_networks_https_enabled"] = sysProbeConf.GetBool("service_monitoring_config.tls.native.enabled") - ia.data["feature_usm_enabled"] = getBoolSysProbe("service_monitoring_config.enabled") - ia.data["feature_usm_kafka_enabled"] = getBoolSysProbe("service_monitoring_config.enable_kafka_monitoring") - ia.data["feature_usm_java_tls_enabled"] = getBoolSysProbe("service_monitoring_config.tls.java.enabled") - ia.data["feature_usm_http2_enabled"] = getBoolSysProbe("service_monitoring_config.enable_http2_monitoring") - ia.data["feature_usm_istio_enabled"] = getBoolSysProbe("service_monitoring_config.tls.istio.enabled") - ia.data["feature_usm_http_by_status_code_enabled"] = getBoolSysProbe("service_monitoring_config.enable_http_stats_by_status_code") - ia.data["feature_usm_go_tls_enabled"] = getBoolSysProbe("service_monitoring_config.tls.go.enabled") + ia.data["feature_usm_enabled"] = sysProbeConf.GetBool("service_monitoring_config.enabled") + ia.data["feature_usm_kafka_enabled"] = sysProbeConf.GetBool("service_monitoring_config.enable_kafka_monitoring") + ia.data["feature_usm_java_tls_enabled"] = sysProbeConf.GetBool("service_monitoring_config.tls.java.enabled") + ia.data["feature_usm_http2_enabled"] = sysProbeConf.GetBool("service_monitoring_config.enable_http2_monitoring") + ia.data["feature_usm_istio_enabled"] = sysProbeConf.GetBool("service_monitoring_config.tls.istio.enabled") + ia.data["feature_usm_http_by_status_code_enabled"] = sysProbeConf.GetBool("service_monitoring_config.enable_http_stats_by_status_code") + ia.data["feature_usm_go_tls_enabled"] = sysProbeConf.GetBool("service_monitoring_config.tls.go.enabled") // miscellaneous / system-probe - ia.data["feature_tcp_queue_length_enabled"] = getBoolSysProbe("system_probe_config.enable_tcp_queue_length") - ia.data["feature_oom_kill_enabled"] = getBoolSysProbe("system_probe_config.enable_oom_kill") - ia.data["feature_windows_crash_detection_enabled"] = getBoolSysProbe("windows_crash_detection.enabled") - ia.data["feature_dynamic_instrumentation_enabled"] = getBoolSysProbe("dynamic_instrumentation.enabled") - - ia.data["system_probe_core_enabled"] = getBoolSysProbe("system_probe_config.enable_co_re") - ia.data["system_probe_runtime_compilation_enabled"] = getBoolSysProbe("system_probe_config.enable_runtime_compiler") - ia.data["system_probe_kernel_headers_download_enabled"] = getBoolSysProbe("system_probe_config.enable_kernel_header_download") - ia.data["system_probe_prebuilt_fallback_enabled"] = getBoolSysProbe("system_probe_config.allow_precompiled_fallback") - ia.data["system_probe_telemetry_enabled"] = getBoolSysProbe("system_probe_config.telemetry_enabled") - ia.data["system_probe_max_connections_per_message"] = getIntSysProbe("system_probe_config.max_conns_per_message") - ia.data["system_probe_track_tcp_4_connections"] = getBoolSysProbe("network_config.collect_tcp_v4") - ia.data["system_probe_track_tcp_6_connections"] = getBoolSysProbe("network_config.collect_tcp_v6") - ia.data["system_probe_track_udp_4_connections"] = getBoolSysProbe("network_config.collect_udp_v4") - ia.data["system_probe_track_udp_6_connections"] = getBoolSysProbe("network_config.collect_udp_v6") - ia.data["system_probe_protocol_classification_enabled"] = getBoolSysProbe("network_config.enable_protocol_classification") - ia.data["system_probe_gateway_lookup_enabled"] = getBoolSysProbe("network_config.enable_gateway_lookup") - ia.data["system_probe_root_namespace_enabled"] = getBoolSysProbe("network_config.enable_root_netns") - - ia.data["feature_dynamic_instrumentation_enabled"] = getBoolSysProbe("dynamic_instrumentation.enabled") + ia.data["feature_tcp_queue_length_enabled"] = sysProbeConf.GetBool("system_probe_config.enable_tcp_queue_length") + ia.data["feature_oom_kill_enabled"] = sysProbeConf.GetBool("system_probe_config.enable_oom_kill") + ia.data["feature_windows_crash_detection_enabled"] = sysProbeConf.GetBool("windows_crash_detection.enabled") + ia.data["feature_dynamic_instrumentation_enabled"] = sysProbeConf.GetBool("dynamic_instrumentation.enabled") + + ia.data["system_probe_core_enabled"] = sysProbeConf.GetBool("system_probe_config.enable_co_re") + ia.data["system_probe_runtime_compilation_enabled"] = sysProbeConf.GetBool("system_probe_config.enable_runtime_compiler") + ia.data["system_probe_kernel_headers_download_enabled"] = sysProbeConf.GetBool("system_probe_config.enable_kernel_header_download") + ia.data["system_probe_prebuilt_fallback_enabled"] = sysProbeConf.GetBool("system_probe_config.allow_precompiled_fallback") + ia.data["system_probe_telemetry_enabled"] = sysProbeConf.GetBool("system_probe_config.telemetry_enabled") + ia.data["system_probe_max_connections_per_message"] = sysProbeConf.GetInt("system_probe_config.max_conns_per_message") + ia.data["system_probe_track_tcp_4_connections"] = sysProbeConf.GetBool("network_config.collect_tcp_v4") + ia.data["system_probe_track_tcp_6_connections"] = sysProbeConf.GetBool("network_config.collect_tcp_v6") + ia.data["system_probe_track_udp_4_connections"] = sysProbeConf.GetBool("network_config.collect_udp_v4") + ia.data["system_probe_track_udp_6_connections"] = sysProbeConf.GetBool("network_config.collect_udp_v6") + ia.data["system_probe_protocol_classification_enabled"] = sysProbeConf.GetBool("network_config.enable_protocol_classification") + ia.data["system_probe_gateway_lookup_enabled"] = sysProbeConf.GetBool("network_config.enable_gateway_lookup") + ia.data["system_probe_root_namespace_enabled"] = sysProbeConf.GetBool("network_config.enable_root_netns") + + ia.data["feature_dynamic_instrumentation_enabled"] = sysProbeConf.GetBool("dynamic_instrumentation.enabled") // ECS Fargate ia.fetchECSFargateAgentMetadata() diff --git a/comp/metadata/resources/resourcesimpl/resources_test.go b/comp/metadata/resources/resourcesimpl/resources_test.go index 75e60cbe7ac3f..fc1ef367749bf 100644 --- a/comp/metadata/resources/resourcesimpl/resources_test.go +++ b/comp/metadata/resources/resourcesimpl/resources_test.go @@ -47,9 +47,8 @@ func TestConfDisabled(t *testing.T) { ), ) - // When interval is 0 the resource Provider should be an empty Optional[T] - _, isSet := ret.Provider.Callback.Get() - assert.False(t, isSet) + // When interval is 0 the resource Provider should be nil + assert.Nil(t, ret.Provider.Callback) } func TestConfInterval(t *testing.T) { @@ -72,6 +71,8 @@ func TestConfInterval(t *testing.T) { ), ) + assert.NotNil(t, ret.Provider.Callback) + assert.Equal(t, 21*time.Second, ret.Comp.(*resourcesImpl).collectInterval) } diff --git a/comp/metadata/runner/runnerimpl/runner.go b/comp/metadata/runner/runnerimpl/runner.go index 21438ac45ab2f..041ac23ef6b62 100644 --- a/comp/metadata/runner/runnerimpl/runner.go +++ b/comp/metadata/runner/runnerimpl/runner.go @@ -14,14 +14,12 @@ import ( "github.com/DataDog/datadog-agent/comp/core/log" "github.com/DataDog/datadog-agent/comp/metadata/runner" "github.com/DataDog/datadog-agent/pkg/util/fxutil" - "github.com/DataDog/datadog-agent/pkg/util/optional" "go.uber.org/fx" ) // Module defines the fx options for this component. func Module() fxutil.Module { - return fxutil.Component( - fx.Provide(newRunner)) + return fxutil.Component(fx.Provide(newRunner)) } // MetadataProvider is the provider for metadata @@ -43,46 +41,29 @@ type dependencies struct { Log log.Component Config config.Component - Providers []optional.Option[MetadataProvider] `group:"metadata_provider"` + Providers []MetadataProvider `group:"metadata_provider"` } // Provider represents the callback from a metada provider. This is returned by 'NewProvider' helper. type Provider struct { fx.Out - Callback optional.Option[MetadataProvider] `group:"metadata_provider"` + Callback MetadataProvider `group:"metadata_provider"` } // NewProvider registers a new metadata provider by adding a callback to the runner. func NewProvider(callback MetadataProvider) Provider { return Provider{ - Callback: optional.NewOption[MetadataProvider](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 { - return Provider{ - Callback: optional.NewNoneOption[MetadataProvider](), + Callback: callback, } } // createRunner instantiates a runner object func createRunner(deps dependencies) *runnerImpl { - providers := []MetadataProvider{} - nonNilProviders := fxutil.GetAndFilterGroup(deps.Providers) - - for _, optionaP := range nonNilProviders { - if p, isSet := optionaP.Get(); isSet { - providers = append(providers, p) - } - } - return &runnerImpl{ log: deps.Log, config: deps.Config, - providers: providers, + providers: fxutil.GetAndFilterGroup(deps.Providers), stopChan: make(chan struct{}), } } @@ -107,7 +88,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 func(context.Context) time.Duration) { +func (r *runnerImpl) handleProvider(p MetadataProvider) { r.log.Debugf("Starting runner for MetadataProvider %#v", p) r.wg.Add(1) diff --git a/comp/otelcol/otlp/components/exporter/logsagentexporter/factory.go b/comp/otelcol/otlp/components/exporter/logsagentexporter/factory.go index 32bc7f76cad63..c6abdbe1b5897 100644 --- a/comp/otelcol/otlp/components/exporter/logsagentexporter/factory.go +++ b/comp/otelcol/otlp/components/exporter/logsagentexporter/factory.go @@ -33,9 +33,10 @@ type factory struct { // NewFactory creates a new logsagentexporter factory. func NewFactory(logsAgentChannel chan *message.Message) exp.Factory { f := &factory{logsAgentChannel: logsAgentChannel} + cfgType, _ := component.NewType(TypeStr) return exp.NewFactory( - TypeStr, + cfgType, func() component.Config { return &struct{}{} }, exp.WithLogs(f.createLogsExporter, stability), ) diff --git a/comp/otelcol/otlp/components/exporter/logsagentexporter/go.mod b/comp/otelcol/otlp/components/exporter/logsagentexporter/go.mod index 24c7ef27863bd..c42f10cf5bc42 100644 --- a/comp/otelcol/otlp/components/exporter/logsagentexporter/go.mod +++ b/comp/otelcol/otlp/components/exporter/logsagentexporter/go.mod @@ -44,13 +44,12 @@ require ( github.com/DataDog/opentelemetry-mapping-go/pkg/otlp/logs v0.13.3 github.com/stormcat24/protodep v0.1.8 github.com/stretchr/testify v1.9.0 - go.opentelemetry.io/collector/component v0.93.0 - go.opentelemetry.io/collector/exporter v0.91.0 - go.opentelemetry.io/collector/pdata v1.0.1 + go.opentelemetry.io/collector/component v0.97.0 + go.opentelemetry.io/collector/exporter v0.97.0 + go.opentelemetry.io/collector/pdata v1.4.0 ) require ( - contrib.go.opencensus.io/exporter/prometheus v0.4.2 // indirect github.com/DataDog/datadog-agent/comp/core/secrets v0.53.0-rc.2 // indirect github.com/DataDog/datadog-agent/pkg/collector/check/defaults v0.53.0-rc.2 // indirect github.com/DataDog/datadog-agent/pkg/config/env v0.53.0-rc.2 // indirect @@ -81,22 +80,20 @@ require ( github.com/davecgh/go-spew v1.1.1 // indirect github.com/fatih/color v1.15.0 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect - github.com/go-kit/log v0.2.1 // indirect - 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-ole/go-ole v1.2.6 // indirect + github.com/go-viper/mapstructure/v2 v2.0.0-alpha.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.3 // indirect - github.com/hashicorp/go-version v1.6.0 // indirect + github.com/google/uuid v1.6.0 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/hectane/go-acl v0.0.0-20190604041725-da78bae5fc95 // indirect github.com/json-iterator/go v1.1.12 // 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/knadh/koanf/v2 v2.1.0 // indirect github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect github.com/magiconair/properties v1.8.1 // indirect github.com/mattn/go-colorable v0.1.13 // indirect @@ -109,12 +106,11 @@ require ( 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.18.0 // indirect - github.com/prometheus/client_model v0.5.0 // indirect - github.com/prometheus/common v0.46.0 // indirect + github.com/prometheus/client_golang v1.19.0 // indirect + github.com/prometheus/client_model v0.6.0 // indirect + github.com/prometheus/common v0.48.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect - github.com/prometheus/statsd_exporter v0.22.7 // indirect - github.com/shirou/gopsutil/v3 v3.24.1 // indirect + github.com/shirou/gopsutil/v3 v3.24.2 // 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 @@ -122,25 +118,24 @@ require ( 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.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/collector v0.91.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/consumer v0.91.0 // indirect - go.opentelemetry.io/collector/extension v0.91.0 // indirect - go.opentelemetry.io/collector/featuregate v1.0.1 // indirect - go.opentelemetry.io/collector/receiver v0.91.0 // indirect - go.opentelemetry.io/collector/semconv v0.93.0 // indirect + github.com/yusufpapurcu/wmi v1.2.4 // indirect + go.opentelemetry.io/collector v0.97.0 // indirect + go.opentelemetry.io/collector/config/configretry v0.97.0 // indirect + go.opentelemetry.io/collector/config/configtelemetry v0.97.0 // indirect + go.opentelemetry.io/collector/confmap v0.97.0 // indirect + go.opentelemetry.io/collector/consumer v0.97.0 // indirect + go.opentelemetry.io/collector/extension v0.97.0 // indirect + go.opentelemetry.io/collector/receiver v0.97.0 // indirect + go.opentelemetry.io/collector/semconv v0.97.0 // indirect go.opentelemetry.io/otel v1.24.0 // indirect - go.opentelemetry.io/otel/exporters/prometheus v0.45.0 // indirect + go.opentelemetry.io/otel/exporters/prometheus v0.46.0 // indirect go.opentelemetry.io/otel/metric v1.24.0 // indirect - go.opentelemetry.io/otel/sdk v1.23.1 // indirect - go.opentelemetry.io/otel/sdk/metric v1.22.0 // indirect + go.opentelemetry.io/otel/sdk v1.24.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.24.0 // indirect go.opentelemetry.io/otel/trace v1.24.0 // indirect go.uber.org/atomic v1.11.0 // indirect go.uber.org/multierr v1.11.0 // indirect - go.uber.org/zap v1.26.0 // indirect + go.uber.org/zap v1.27.0 // indirect golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect golang.org/x/mod v0.17.0 // indirect golang.org/x/net v0.24.0 // indirect @@ -151,8 +146,8 @@ require ( golang.org/x/tools v0.18.0 // indirect google.golang.org/appengine v1.6.8 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 // indirect - google.golang.org/grpc v1.62.0 // indirect - google.golang.org/protobuf v1.32.0 // indirect + google.golang.org/grpc v1.62.1 // indirect + google.golang.org/protobuf v1.33.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/comp/otelcol/otlp/components/exporter/logsagentexporter/go.sum b/comp/otelcol/otlp/components/exporter/logsagentexporter/go.sum index 9e192d43cb7f4..e407c57a02f38 100644 --- a/comp/otelcol/otlp/components/exporter/logsagentexporter/go.sum +++ b/comp/otelcol/otlp/components/exporter/logsagentexporter/go.sum @@ -1,42 +1,7 @@ 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.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/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= -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/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/DataDog/datadog-api-client-go/v2 v2.13.0 h1:2c1dXSyUfum2YIVoYlqnBhV5JOG1cLSW+4jB3RrKjLc= github.com/DataDog/datadog-api-client-go/v2 v2.13.0/go.mod h1:kntOqXEh1SmjwSDzW/eJkr9kS7EqttvEkelglWtJRbg= github.com/DataDog/opentelemetry-mapping-go/pkg/otlp/attributes v0.13.3 h1:hcYZMgGDMUz8Dz6PcOhgk6FF0yG4N7KErS5J3O/MpeU= @@ -54,8 +19,6 @@ github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuy 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/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= -github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= 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= @@ -69,16 +32,11 @@ github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyY 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.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/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/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= @@ -92,9 +50,7 @@ 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/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= @@ -104,20 +60,10 @@ github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMo 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-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= -github.com/go-kit/log v0.2.0/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= -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.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= -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= @@ -126,6 +72,8 @@ github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre 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/go-viper/mapstructure/v2 v2.0.0-alpha.1 h1:TQcrn6Wq+sKGkpyPvppOz99zsMBaUOKXq6HSv655U1c= +github.com/go-viper/mapstructure/v2 v2.0.0-alpha.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= 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= @@ -133,67 +81,29 @@ 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= -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.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/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.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.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.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= 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/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/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/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/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= @@ -201,30 +111,19 @@ github.com/grpc-ecosystem/go-grpc-middleware v1.2.0/go.mod h1:mJzapYve32yjrKlk9G 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/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 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/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/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= -github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= 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/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/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= 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= @@ -235,10 +134,9 @@ github.com/knadh/koanf/maps v0.1.1 h1:G5TjmUh2D7G2YWf5SQQqSiHRJEjaicvU0KpypqB3NI 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/knadh/koanf/v2 v2.1.0 h1:eh4QmHHBuU8BybfIJ8mB8K8gsGCD/AUQTdwGq/GzId8= +github.com/knadh/koanf/v2 v2.1.0/go.mod h1:4mnTRbZCK+ALuBXHZMjDfG9y714L7TykVnZkXbMU3Es= 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.3/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= @@ -272,14 +170,12 @@ github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3Rllmb github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/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/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= @@ -288,57 +184,40 @@ github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXP 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.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= -github.com/prometheus/client_golang v1.12.2/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= -github.com/prometheus/client_golang v1.13.0/go.mod h1:vTeo+zgvILHsnnj/39Ou/1fPN5nJFOEMgftOUOmlvYQ= -github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= -github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= +github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= +github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= 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/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos= +github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8= 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.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= -github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= -github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= -github.com/prometheus/common v0.35.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= -github.com/prometheus/common v0.37.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= -github.com/prometheus/common v0.46.0 h1:doXzt5ybi1HBKpsZOL0sSkaNHJJqkyfEWZGGqqScV0Y= -github.com/prometheus/common v0.46.0/go.mod h1:Tp0qkxpb9Jsg54QMe+EAmqXkSV7Evdy1BTn+g2pa/hQ= +github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= +github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= 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.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4= 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= 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/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/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/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= 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= @@ -365,14 +244,11 @@ github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpE 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.6.1/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= -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/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= @@ -385,54 +261,44 @@ github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVM 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/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= +github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= +github.com/yusufpapurcu/wmi v1.2.4/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.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= -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 v0.91.0 h1:C7sGUJDJ5nwm+CkWpAaVP3lNsuYpwSRbkmLncFjkmO8= -go.opentelemetry.io/collector v0.91.0/go.mod h1:YhQpIDZsn+bICAAqgBwXk9wqK8GKZDv+aogfG52zUuE= -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/consumer v0.91.0 h1:0nU1lUe2S0b8iOmF3w3R/9Dt24n413thRTbXz/nJgrM= -go.opentelemetry.io/collector/consumer v0.91.0/go.mod h1:phTUQmr7hpYfwXyDXo4mFHVjYrlSbZE+nZYlKlbVxGs= -go.opentelemetry.io/collector/exporter v0.91.0 h1:guWcGflFjaenp3BMxAmAKjb8RQG80jQQKjuUFouS+z8= -go.opentelemetry.io/collector/exporter v0.91.0/go.mod h1:hkOBunNNWu6CaTtkRsCJ/OJ509REJZg+DDElevFIQCQ= -go.opentelemetry.io/collector/extension v0.91.0 h1:bkoSLgnWm4g6n+RLmyKG6Up7dr8KmJy68quonoLZnr0= -go.opentelemetry.io/collector/extension v0.91.0/go.mod h1:F3r0fVTTh4sYR0GVv51Qez8lk8v77kTDPdyMOp6A2kg= -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/receiver v0.91.0 h1:0TZF/0OXoJtxgm+mvOinRRXo9LgVyOsOgCQfWkNGXJA= -go.opentelemetry.io/collector/receiver v0.91.0/go.mod h1:d5qo2mpovqKoi47hrMxj5BLdLzOXM0mUHL5CKrjfWNM= -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/collector v0.97.0 h1:qyOju13byHIKEK/JehmTiGMj4pFLa4kDyrOCtTmjHU0= +go.opentelemetry.io/collector v0.97.0/go.mod h1:V6xquYAaO2VHVu4DBK28JYuikRdZajh7DH5Vl/Y8NiA= +go.opentelemetry.io/collector/component v0.97.0 h1:vanKhXl5nptN8igRH4PqVYHOILif653vaPIKv6LCZCI= +go.opentelemetry.io/collector/component v0.97.0/go.mod h1:F/m3HMlkb16RKI7wJjgbECK1IZkAcmB8bu7yD8XOkwM= +go.opentelemetry.io/collector/config/configretry v0.97.0 h1:k7VwQ5H0oBLm6Fgm0ltfDDbmQVsiqSIY9ojijF0hiR0= +go.opentelemetry.io/collector/config/configretry v0.97.0/go.mod h1:s7A6ZGxK8bxqidFzwbr2pITzbsB2qf+aeHEDQDcanV8= +go.opentelemetry.io/collector/config/configtelemetry v0.97.0 h1:JS/WxK09A9m39D5OqsAWaoRe4tG7ESMnzDNIbZ5bD6c= +go.opentelemetry.io/collector/config/configtelemetry v0.97.0/go.mod h1:YV5PaOdtnU1xRomPcYqoHmyCr48tnaAREeGO96EZw8o= +go.opentelemetry.io/collector/confmap v0.97.0 h1:0CGSk7YW9rPc6jCwJteJzHzN96HRoHTfuqI7J/EmZsg= +go.opentelemetry.io/collector/confmap v0.97.0/go.mod h1:AnJmZcZoOLuykSXGiAf3shi11ZZk5ei4tZd9dDTTpWE= +go.opentelemetry.io/collector/consumer v0.97.0 h1:S0BZQtJQxSHT156S8a5rLt3TeWYP8Rq+jn8QEyWQUYk= +go.opentelemetry.io/collector/consumer v0.97.0/go.mod h1:1D06LURiZ/1KA2OnuKNeSn9bvFmJ5ZWe6L8kLu0osSY= +go.opentelemetry.io/collector/exporter v0.97.0 h1:kw/fQrpkhTz0/3I/Z0maRj0S8Mi0NK50/WwFuWrRYPc= +go.opentelemetry.io/collector/exporter v0.97.0/go.mod h1:EJYc4biKWxq3kD4Xh4SUSFbZ2lMsxjzwiCozikEDMjk= +go.opentelemetry.io/collector/extension v0.97.0 h1:LpjZ4KQgnhLG/u3l69QgWkX8qMqeS8IFKWMoDtbPIeE= +go.opentelemetry.io/collector/extension v0.97.0/go.mod h1:jWNG0Npi7AxiqwCclToskDfCQuNKHYHlBPJNnIKHp84= +go.opentelemetry.io/collector/pdata v1.4.0 h1:cA6Pr7Z2V7mE+i7FmYpavX7nefzd6H4CICgW0T9aJX0= +go.opentelemetry.io/collector/pdata v1.4.0/go.mod h1:0Ttp4wQinhV5oJTd9MjyvUegmZBO9O0nrlh/+EDLw+Q= +go.opentelemetry.io/collector/receiver v0.97.0 h1:ozzE5MhIPtfnYA/UKB/NCcgxSmeLqdwErboi6B/IpLQ= +go.opentelemetry.io/collector/receiver v0.97.0/go.mod h1:1TCN9DRuB45+xKqlwv4BMQR6qXgaJeSSNezFTJhmDUo= +go.opentelemetry.io/collector/semconv v0.97.0 h1:iF3nTfThbiOwz7o5Pocn0dDnDoffd18ijDuf6Mwzi1s= +go.opentelemetry.io/collector/semconv v0.97.0/go.mod h1:8ElcRZ8Cdw5JnvhTOQOdYizkJaQ10Z2fS+R6djOnj6A= go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo= go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo= -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/prometheus v0.46.0 h1:I8WIFXR351FoLJYuloU4EgXbtNX2URfU/85pUPheIEQ= +go.opentelemetry.io/otel/exporters/prometheus v0.46.0/go.mod h1:ztwVUHe5DTR/1v7PeuGRnU5Bbd4QKYwApWmuutKsJSs= go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI= go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= -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/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw= +go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg= +go.opentelemetry.io/otel/sdk/metric v1.24.0 h1:yyMQrPzF+k88/DbH7o4FMAs80puqd+9osbiBrJrz/w8= +go.opentelemetry.io/otel/sdk/metric v1.24.0/go.mod h1:I6Y5FjH6rvEnTTAYQz3Mmv2kl6Ek5IIrmwTLqMrrOE0= go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI= go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= @@ -452,45 +318,22 @@ go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN8 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.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= -go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= +go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= +go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= 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-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= 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/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.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= @@ -500,62 +343,28 @@ golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73r 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-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210525063256-abc453219eb5/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-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w= golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= 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-20210514164344-f6687ab2804c/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.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-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.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.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= @@ -564,70 +373,35 @@ golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5h 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-20200106162015-b016eb3dc98e/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-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/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-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/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-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-20220520151302-bc2c85ada10a/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-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.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= -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.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o= golang.org/x/sys v0.19.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.19.0 h1:+ThwsDv+tYfnJFhF4L8jITxu1tdTWRTZpdsWgEgjL6Q= golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk= -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.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.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= @@ -636,46 +410,13 @@ golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGm 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-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.18.0 h1:k8NLag8AGHnn+PHbl7g43CtqZAwG60vZkLqgyZgIHgQ= @@ -684,95 +425,26 @@ 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= -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/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.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= -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/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 h1:AjyfHzEPEFp/NpvfN5g+KDla3EMojjhRVZc1i7cj+oM= google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80/go.mod h1:PAREbraiVEVGVdTZsVWjSbbTtSyGbAgIIvni8a8CD5s= 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.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.62.0 h1:HQKZ/fa1bXkX1oFOvSjmZEUL8wLSaZTjCcLAlmZRtdk= -google.golang.org/grpc v1.62.0/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/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 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.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I= -google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +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/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= @@ -788,19 +460,11 @@ 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.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.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/comp/otelcol/otlp/components/exporter/serializerexporter/factory.go b/comp/otelcol/otlp/components/exporter/serializerexporter/factory.go index 582d02c258d62..cb720c606f033 100644 --- a/comp/otelcol/otlp/components/exporter/serializerexporter/factory.go +++ b/comp/otelcol/otlp/components/exporter/serializerexporter/factory.go @@ -43,9 +43,10 @@ func NewFactory(s serializer.MetricSerializer, enricher tagenricher, hostGetter enricher: enricher, hostGetter: hostGetter, } + cfgType, _ := component.NewType(TypeStr) return exp.NewFactory( - TypeStr, + cfgType, newDefaultConfig, exp.WithMetrics(f.createMetricExporter, stability), ) diff --git a/comp/otelcol/otlp/components/exporter/serializerexporter/go.mod b/comp/otelcol/otlp/components/exporter/serializerexporter/go.mod index ade865f531030..23b52d869b02e 100644 --- a/comp/otelcol/otlp/components/exporter/serializerexporter/go.mod +++ b/comp/otelcol/otlp/components/exporter/serializerexporter/go.mod @@ -64,25 +64,23 @@ require ( github.com/DataDog/opentelemetry-mapping-go/pkg/otlp/metrics v0.13.3 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/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.97.0 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 - go.opentelemetry.io/collector/config/configtelemetry v0.93.0 // indirect - go.opentelemetry.io/collector/confmap v0.93.0 - go.opentelemetry.io/collector/consumer v0.91.0 - go.opentelemetry.io/collector/exporter v0.91.0 - go.opentelemetry.io/collector/extension v0.91.0 // indirect - go.opentelemetry.io/collector/featuregate v1.0.1 // indirect - go.opentelemetry.io/collector/pdata v1.0.1 - go.opentelemetry.io/collector/receiver v0.91.0 // indirect - go.opentelemetry.io/collector/semconv v0.93.0 // indirect + go.opentelemetry.io/collector v0.97.0 // indirect + go.opentelemetry.io/collector/component v0.97.0 + go.opentelemetry.io/collector/config/configtelemetry v0.97.0 // indirect + go.opentelemetry.io/collector/confmap v0.97.0 + go.opentelemetry.io/collector/consumer v0.97.0 + go.opentelemetry.io/collector/exporter v0.97.0 + go.opentelemetry.io/collector/extension v0.97.0 // indirect + go.opentelemetry.io/collector/pdata v1.4.0 + go.opentelemetry.io/collector/receiver v0.97.0 // indirect + go.opentelemetry.io/collector/semconv v0.97.0 // indirect go.uber.org/multierr v1.11.0 ) require ( - contrib.go.opencensus.io/exporter/prometheus v0.4.2 // indirect github.com/DataDog/agent-payload/v5 v5.0.106 // indirect github.com/DataDog/datadog-agent/comp/core/config v0.53.0-rc.2 // indirect github.com/DataDog/datadog-agent/comp/core/log v0.53.0-rc.2 // indirect @@ -135,17 +133,15 @@ require ( github.com/dustin/go-humanize v1.0.1 // indirect github.com/fatih/color v1.16.0 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect - github.com/go-kit/log v0.2.1 // indirect - 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-ole/go-ole v1.2.6 // indirect + github.com/go-viper/mapstructure/v2 v2.0.0-alpha.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.3 // indirect + github.com/google/uuid v1.6.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-multierror v1.1.1 // 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 @@ -153,7 +149,7 @@ require ( 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/knadh/koanf/v2 v2.1.0 // 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 @@ -167,11 +163,10 @@ require ( github.com/philhofer/fwd v1.1.2 // 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/client_golang v1.19.0 // indirect + github.com/prometheus/client_model v0.6.0 // indirect + github.com/prometheus/common v0.48.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect - github.com/prometheus/statsd_exporter v0.22.7 // indirect github.com/richardartoul/molecule v1.0.1-0.20221107223329-32cfee06a052 // indirect github.com/shirou/gopsutil/v3 v3.24.2 // indirect github.com/shoenig/go-m1cpu v0.1.6 // indirect @@ -185,26 +180,26 @@ require ( github.com/tklauser/numcpus v0.6.1 // indirect github.com/twmb/murmur3 v1.1.8 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect - go.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/otel v1.23.1 // indirect - go.opentelemetry.io/otel/exporters/prometheus v0.45.0 // indirect - go.opentelemetry.io/otel/metric v1.23.1 // indirect - go.opentelemetry.io/otel/sdk v1.23.1 // indirect - go.opentelemetry.io/otel/sdk/metric v1.22.0 // indirect - go.opentelemetry.io/otel/trace v1.23.1 // indirect + go.opentelemetry.io/collector/config/configretry v0.97.0 // indirect + go.opentelemetry.io/otel v1.24.0 // indirect + go.opentelemetry.io/otel/exporters/prometheus v0.46.0 // indirect + go.opentelemetry.io/otel/metric v1.24.0 // indirect + go.opentelemetry.io/otel/sdk v1.24.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.24.0 // indirect + go.opentelemetry.io/otel/trace v1.24.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/zap v1.26.0 // indirect + go.uber.org/zap v1.27.0 // indirect golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect golang.org/x/mod v0.17.0 // indirect golang.org/x/net v0.24.0 // indirect golang.org/x/sys v0.19.0 // indirect golang.org/x/text v0.14.0 // indirect golang.org/x/tools v0.19.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 + google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 // indirect + google.golang.org/grpc v1.62.1 // indirect + google.golang.org/protobuf v1.33.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/comp/otelcol/otlp/components/exporter/serializerexporter/go.sum b/comp/otelcol/otlp/components/exporter/serializerexporter/go.sum index 21506042889af..8e2af8993eb06 100644 --- a/comp/otelcol/otlp/components/exporter/serializerexporter/go.sum +++ b/comp/otelcol/otlp/components/exporter/serializerexporter/go.sum @@ -1,40 +1,5 @@ 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.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/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= -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/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/mmh3 v0.0.0-20210722141835-012dc69a9e49 h1:EbzDX8HPk5uE2FsJYxD74QmMw0/3CqSKhEr6teh0ncQ= @@ -62,8 +27,6 @@ github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuy 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/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= -github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= 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= @@ -77,16 +40,11 @@ github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyY 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.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/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/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= @@ -104,9 +62,7 @@ github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZm github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= 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= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= @@ -116,20 +72,10 @@ github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMo 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-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= -github.com/go-kit/log v0.2.0/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= -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.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= -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= @@ -138,6 +84,8 @@ github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre 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/go-viper/mapstructure/v2 v2.0.0-alpha.1 h1:TQcrn6Wq+sKGkpyPvppOz99zsMBaUOKXq6HSv655U1c= +github.com/go-viper/mapstructure/v2 v2.0.0-alpha.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= 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= @@ -145,50 +93,21 @@ 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= -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.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/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.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.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.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= 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= @@ -196,19 +115,9 @@ github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/ github.com/google/gofuzz v1.1.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/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/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/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/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= @@ -221,31 +130,20 @@ 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= 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/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/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/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= -github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= 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/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/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= 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= @@ -256,10 +154,9 @@ github.com/knadh/koanf/maps v0.1.1 h1:G5TjmUh2D7G2YWf5SQQqSiHRJEjaicvU0KpypqB3NI 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/knadh/koanf/v2 v2.1.0 h1:eh4QmHHBuU8BybfIJ8mB8K8gsGCD/AUQTdwGq/GzId8= +github.com/knadh/koanf/v2 v2.1.0/go.mod h1:4mnTRbZCK+ALuBXHZMjDfG9y714L7TykVnZkXbMU3Es= 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.3/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= @@ -297,16 +194,15 @@ github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3Rllmb github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= -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/internal/coreinternal v0.97.0 h1:vX/BkTfd7/cvydXJ7FmUy5iSviQeNGAgTCoXcLu7/Ww= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.97.0/go.mod h1:yrlbvRlLeny1kFmj4Ac9BSqv/pOr2h7sOIvDE6OMCKk= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.93.0 h1:R0GGB09OWAP1bSVps2brDOOln8pgSgzHU658bdzIb+g= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.93.0/go.mod h1:7SXQW+a9kZ1T1WH9tKwFqfGGefGv8mZxRG/lTsa65uo= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.93.0 h1:2AKT1xw2KNenv/nfRoWueYxQiLJe76Axhb5++4jdgiA= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.93.0/go.mod h1:VmP4/AOAPwtpAG4TYHtWha603iLbLRmO7k0d0WbRqrM= -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/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.97.0 h1:82EcF0nmspeVCZmUpwrMuVAXnMYDOF4gai9eK6fHAwk= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.97.0/go.mod h1:7rCj4V2dKJVsaMNBzY81m4fek1AD2yWCFwzrM3PjSNo= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= 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= @@ -328,42 +224,26 @@ github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXP 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.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= -github.com/prometheus/client_golang v1.12.2/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= -github.com/prometheus/client_golang v1.13.0/go.mod h1:vTeo+zgvILHsnnj/39Ou/1fPN5nJFOEMgftOUOmlvYQ= -github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= -github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= +github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= +github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= 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/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos= +github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8= 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.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= -github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= -github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= -github.com/prometheus/common v0.35.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= -github.com/prometheus/common v0.37.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= -github.com/prometheus/common v0.46.0 h1:doXzt5ybi1HBKpsZOL0sSkaNHJJqkyfEWZGGqqScV0Y= -github.com/prometheus/common v0.46.0/go.mod h1:Tp0qkxpb9Jsg54QMe+EAmqXkSV7Evdy1BTn+g2pa/hQ= +github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= +github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= 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.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4= 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/protocolbuffers/protoscope v0.0.0-20221109213918-8e7a6aafa2c9 h1:arwj11zP0yJIxIRiDn22E0H8PxfF7TsTrc2wIPFIsf4= github.com/protocolbuffers/protoscope v0.0.0-20221109213918-8e7a6aafa2c9/go.mod h1:SKZx6stCn03JN3BOWTwvVIO2ajMkb/zQdTceXYhKw/4= @@ -383,7 +263,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.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= 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= @@ -416,11 +295,9 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5 github.com/stretchr/testify v1.6.1/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= -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= github.com/tinylib/msgp v1.1.8/go.mod h1:qkpG+2ldGg4xRFmx+jfTvZPxfGFhi64BcnL9vkCm/Tw= @@ -441,56 +318,46 @@ github.com/vmihailenco/tagparser v0.1.1 h1:quXMXlA39OCbd2wAdTsGDlK9RkOk6Wuw+x37w github.com/vmihailenco/tagparser v0.1.1/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.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/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.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= -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 v0.91.0 h1:C7sGUJDJ5nwm+CkWpAaVP3lNsuYpwSRbkmLncFjkmO8= -go.opentelemetry.io/collector v0.91.0/go.mod h1:YhQpIDZsn+bICAAqgBwXk9wqK8GKZDv+aogfG52zUuE= -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/consumer v0.91.0 h1:0nU1lUe2S0b8iOmF3w3R/9Dt24n413thRTbXz/nJgrM= -go.opentelemetry.io/collector/consumer v0.91.0/go.mod h1:phTUQmr7hpYfwXyDXo4mFHVjYrlSbZE+nZYlKlbVxGs= -go.opentelemetry.io/collector/exporter v0.91.0 h1:guWcGflFjaenp3BMxAmAKjb8RQG80jQQKjuUFouS+z8= -go.opentelemetry.io/collector/exporter v0.91.0/go.mod h1:hkOBunNNWu6CaTtkRsCJ/OJ509REJZg+DDElevFIQCQ= -go.opentelemetry.io/collector/extension v0.91.0 h1:bkoSLgnWm4g6n+RLmyKG6Up7dr8KmJy68quonoLZnr0= -go.opentelemetry.io/collector/extension v0.91.0/go.mod h1:F3r0fVTTh4sYR0GVv51Qez8lk8v77kTDPdyMOp6A2kg= -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/receiver v0.91.0 h1:0TZF/0OXoJtxgm+mvOinRRXo9LgVyOsOgCQfWkNGXJA= -go.opentelemetry.io/collector/receiver v0.91.0/go.mod h1:d5qo2mpovqKoi47hrMxj5BLdLzOXM0mUHL5CKrjfWNM= -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.23.1 h1:Za4UzOqJYS+MUczKI320AtqZHZb7EqxO00jAHE0jmQY= -go.opentelemetry.io/otel v1.23.1/go.mod h1:Td0134eafDLcTS4y+zQ26GE8u3dEuRBiBCTUIRHaikA= -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/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.23.1 h1:4LrmmEd8AU2rFvU1zegmvqW7+kWarxtNOPyeL6HmYY8= -go.opentelemetry.io/otel/trace v1.23.1/go.mod h1:4IpnpJFwr1mo/6HL8XIPJaE9y0+u1KcVmuW7dwFSVrI= +go.opentelemetry.io/collector v0.97.0 h1:qyOju13byHIKEK/JehmTiGMj4pFLa4kDyrOCtTmjHU0= +go.opentelemetry.io/collector v0.97.0/go.mod h1:V6xquYAaO2VHVu4DBK28JYuikRdZajh7DH5Vl/Y8NiA= +go.opentelemetry.io/collector/component v0.97.0 h1:vanKhXl5nptN8igRH4PqVYHOILif653vaPIKv6LCZCI= +go.opentelemetry.io/collector/component v0.97.0/go.mod h1:F/m3HMlkb16RKI7wJjgbECK1IZkAcmB8bu7yD8XOkwM= +go.opentelemetry.io/collector/config/configretry v0.97.0 h1:k7VwQ5H0oBLm6Fgm0ltfDDbmQVsiqSIY9ojijF0hiR0= +go.opentelemetry.io/collector/config/configretry v0.97.0/go.mod h1:s7A6ZGxK8bxqidFzwbr2pITzbsB2qf+aeHEDQDcanV8= +go.opentelemetry.io/collector/config/configtelemetry v0.97.0 h1:JS/WxK09A9m39D5OqsAWaoRe4tG7ESMnzDNIbZ5bD6c= +go.opentelemetry.io/collector/config/configtelemetry v0.97.0/go.mod h1:YV5PaOdtnU1xRomPcYqoHmyCr48tnaAREeGO96EZw8o= +go.opentelemetry.io/collector/confmap v0.97.0 h1:0CGSk7YW9rPc6jCwJteJzHzN96HRoHTfuqI7J/EmZsg= +go.opentelemetry.io/collector/confmap v0.97.0/go.mod h1:AnJmZcZoOLuykSXGiAf3shi11ZZk5ei4tZd9dDTTpWE= +go.opentelemetry.io/collector/consumer v0.97.0 h1:S0BZQtJQxSHT156S8a5rLt3TeWYP8Rq+jn8QEyWQUYk= +go.opentelemetry.io/collector/consumer v0.97.0/go.mod h1:1D06LURiZ/1KA2OnuKNeSn9bvFmJ5ZWe6L8kLu0osSY= +go.opentelemetry.io/collector/exporter v0.97.0 h1:kw/fQrpkhTz0/3I/Z0maRj0S8Mi0NK50/WwFuWrRYPc= +go.opentelemetry.io/collector/exporter v0.97.0/go.mod h1:EJYc4biKWxq3kD4Xh4SUSFbZ2lMsxjzwiCozikEDMjk= +go.opentelemetry.io/collector/extension v0.97.0 h1:LpjZ4KQgnhLG/u3l69QgWkX8qMqeS8IFKWMoDtbPIeE= +go.opentelemetry.io/collector/extension v0.97.0/go.mod h1:jWNG0Npi7AxiqwCclToskDfCQuNKHYHlBPJNnIKHp84= +go.opentelemetry.io/collector/pdata v1.4.0 h1:cA6Pr7Z2V7mE+i7FmYpavX7nefzd6H4CICgW0T9aJX0= +go.opentelemetry.io/collector/pdata v1.4.0/go.mod h1:0Ttp4wQinhV5oJTd9MjyvUegmZBO9O0nrlh/+EDLw+Q= +go.opentelemetry.io/collector/receiver v0.97.0 h1:ozzE5MhIPtfnYA/UKB/NCcgxSmeLqdwErboi6B/IpLQ= +go.opentelemetry.io/collector/receiver v0.97.0/go.mod h1:1TCN9DRuB45+xKqlwv4BMQR6qXgaJeSSNezFTJhmDUo= +go.opentelemetry.io/collector/semconv v0.97.0 h1:iF3nTfThbiOwz7o5Pocn0dDnDoffd18ijDuf6Mwzi1s= +go.opentelemetry.io/collector/semconv v0.97.0/go.mod h1:8ElcRZ8Cdw5JnvhTOQOdYizkJaQ10Z2fS+R6djOnj6A= +go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo= +go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo= +go.opentelemetry.io/otel/exporters/prometheus v0.46.0 h1:I8WIFXR351FoLJYuloU4EgXbtNX2URfU/85pUPheIEQ= +go.opentelemetry.io/otel/exporters/prometheus v0.46.0/go.mod h1:ztwVUHe5DTR/1v7PeuGRnU5Bbd4QKYwApWmuutKsJSs= +go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI= +go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= +go.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw= +go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg= +go.opentelemetry.io/otel/sdk/metric v1.24.0 h1:yyMQrPzF+k88/DbH7o4FMAs80puqd+9osbiBrJrz/w8= +go.opentelemetry.io/otel/sdk/metric v1.24.0/go.mod h1:I6Y5FjH6rvEnTTAYQz3Mmv2kl6Ek5IIrmwTLqMrrOE0= +go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI= +go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= 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= @@ -508,45 +375,22 @@ go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN8 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.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= -go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= +go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= +go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= 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-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= 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/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.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= @@ -557,61 +401,27 @@ golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73r 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-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210525063256-abc453219eb5/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-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.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w= golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= 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-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= 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.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.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= @@ -621,46 +431,16 @@ golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5h 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-20200106162015-b016eb3dc98e/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-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/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-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/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-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-20220520151302-bc2c85ada10a/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-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= @@ -674,17 +454,12 @@ golang.org/x/sys v0.19.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= -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.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= 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= @@ -693,46 +468,13 @@ golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGm 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-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= @@ -742,96 +484,28 @@ 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= -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/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.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= -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/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/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 h1:AjyfHzEPEFp/NpvfN5g+KDla3EMojjhRVZc1i7cj+oM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80/go.mod h1:PAREbraiVEVGVdTZsVWjSbbTtSyGbAgIIvni8a8CD5s= 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.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -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= -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/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 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.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I= -google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +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/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= @@ -847,7 +521,6 @@ 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.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= @@ -855,12 +528,5 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= 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/comp/otelcol/otlp/internal/configutils/utils_test.go b/comp/otelcol/otlp/internal/configutils/utils_test.go index 0a05ceddd20b1..ce4eb50ecc2fa 100644 --- a/comp/otelcol/otlp/internal/configutils/utils_test.go +++ b/comp/otelcol/otlp/internal/configutils/utils_test.go @@ -58,9 +58,12 @@ func TestNewConfigProviderFromMap(t *testing.T) { // build default provider from same data settings := otelcol.ConfigProviderSettings{ ResolverSettings: confmap.ResolverSettings{ - URIs: []string{fmt.Sprintf("file:%s", testPath)}, - Providers: makeConfigMapProviderMap(fileprovider.New(), envprovider.New(), yamlprovider.New()), - Converters: []confmap.Converter{expandconverter.New()}, + URIs: []string{fmt.Sprintf("file:%s", testPath)}, + Providers: makeConfigMapProviderMap( + fileprovider.NewWithSettings(confmap.ProviderSettings{}), + envprovider.NewWithSettings(confmap.ProviderSettings{}), + yamlprovider.NewWithSettings(confmap.ProviderSettings{})), + Converters: []confmap.Converter{expandconverter.New(confmap.ConverterSettings{})}, }, } defaultProvider, err := otelcol.NewConfigProvider(settings) diff --git a/comp/otelcol/otlp/testutil/go.mod b/comp/otelcol/otlp/testutil/go.mod index bc43f85fc542e..db00bbeb4719e 100644 --- a/comp/otelcol/otlp/testutil/go.mod +++ b/comp/otelcol/otlp/testutil/go.mod @@ -28,7 +28,7 @@ replace ( require ( github.com/DataDog/datadog-agent/pkg/config/model v0.53.0-rc.2 github.com/DataDog/datadog-agent/pkg/config/setup v0.0.0-00010101000000-000000000000 - go.opentelemetry.io/collector/pdata v1.0.1 + go.opentelemetry.io/collector/pdata v1.4.0 ) require ( @@ -81,7 +81,7 @@ require ( 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-20240123012728-ef4313101c80 // indirect - google.golang.org/grpc v1.62.0 // indirect - google.golang.org/protobuf v1.32.0 // indirect + google.golang.org/grpc v1.62.1 // indirect + google.golang.org/protobuf v1.33.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect ) diff --git a/comp/otelcol/otlp/testutil/go.sum b/comp/otelcol/otlp/testutil/go.sum index 598a24f2da13f..548a167da57d9 100644 --- a/comp/otelcol/otlp/testutil/go.sum +++ b/comp/otelcol/otlp/testutil/go.sum @@ -230,8 +230,8 @@ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9dec 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/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/pdata v1.4.0 h1:cA6Pr7Z2V7mE+i7FmYpavX7nefzd6H4CICgW0T9aJX0= +go.opentelemetry.io/collector/pdata v1.4.0/go.mod h1:0Ttp4wQinhV5oJTd9MjyvUegmZBO9O0nrlh/+EDLw+Q= 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= @@ -360,12 +360,12 @@ google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ij 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/grpc v1.62.0 h1:HQKZ/fa1bXkX1oFOvSjmZEUL8wLSaZTjCcLAlmZRtdk= -google.golang.org/grpc v1.62.0/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE= +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 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.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I= -google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +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/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= diff --git a/comp/process/apiserver/apiserver.go b/comp/process/apiserver/apiserver.go index 09247498fafe4..8df557676a0a3 100644 --- a/comp/process/apiserver/apiserver.go +++ b/comp/process/apiserver/apiserver.go @@ -17,7 +17,6 @@ import ( "github.com/DataDog/datadog-agent/cmd/process-agent/api" "github.com/DataDog/datadog-agent/comp/core/log" ddconfig "github.com/DataDog/datadog-agent/pkg/config" - "github.com/DataDog/datadog-agent/pkg/config/settings" ) var _ Component = (*apiserver)(nil) @@ -38,8 +37,6 @@ type dependencies struct { //nolint:revive // TODO(PROC) Fix revive linter func newApiServer(deps dependencies) Component { - initRuntimeSettings(deps.Log) - r := mux.NewRouter() api.SetupAPIServerHandlers(deps.APIServerDeps, r) // Set up routes @@ -83,23 +80,3 @@ func newApiServer(deps dependencies) Component { return apiserver } - -// initRuntimeSettings registers settings to be added to the runtime config. -func initRuntimeSettings(logger log.Component) { - // NOTE: Any settings you want to register should simply be added here - processRuntimeSettings := []settings.RuntimeSetting{ - settings.NewLogLevelRuntimeSetting(), - settings.NewRuntimeMutexProfileFraction(), - settings.NewRuntimeBlockProfileRate(), - settings.NewProfilingGoroutines(), - settings.NewProfilingRuntimeSetting("internal_profiling", "process-agent"), - } - - // Before we begin listening, register runtime settings - for _, setting := range processRuntimeSettings { - err := settings.RegisterRuntimeSetting(setting) - if err != nil { - _ = logger.Warnf("Cannot initialize the runtime setting %s: %v", setting.Name(), err) - } - } -} diff --git a/comp/process/apiserver/apiserver_test.go b/comp/process/apiserver/apiserver_test.go index 82aefdea837e8..f8295e8a6f3cc 100644 --- a/comp/process/apiserver/apiserver_test.go +++ b/comp/process/apiserver/apiserver_test.go @@ -14,6 +14,7 @@ import ( "go.uber.org/fx" "github.com/DataDog/datadog-agent/comp/core" + "github.com/DataDog/datadog-agent/comp/core/settings/settingsimpl" "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" @@ -32,6 +33,7 @@ func TestLifecycle(t *testing.T) { }, ), statusimpl.Module(), + settingsimpl.MockModule(), )) assert.Eventually(t, func() bool { diff --git a/comp/process/bundle_test.go b/comp/process/bundle_test.go index aee6706250141..1c7d673041f09 100644 --- a/comp/process/bundle_test.go +++ b/comp/process/bundle_test.go @@ -15,6 +15,7 @@ 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/settings/settingsimpl" "github.com/DataDog/datadog-agent/comp/core/status" "github.com/DataDog/datadog-agent/comp/core/tagger" "github.com/DataDog/datadog-agent/comp/core/workloadmeta" @@ -40,6 +41,7 @@ func TestBundleDependencies(t *testing.T) { core.MockBundle(), workloadmeta.Module(), coreStatusImpl.Module(), + settingsimpl.MockModule(), statusimpl.Module(), fx.Supply(tagger.NewFakeTaggerParams()), fx.Supply( diff --git a/comp/remote-config/bundle_test.go b/comp/remote-config/bundle_test.go index 5244c3600afee..561e1fd89810f 100644 --- a/comp/remote-config/bundle_test.go +++ b/comp/remote-config/bundle_test.go @@ -9,9 +9,10 @@ import ( "testing" "github.com/DataDog/datadog-agent/comp/core" + "github.com/DataDog/datadog-agent/comp/core/settings/settingsimpl" "github.com/DataDog/datadog-agent/pkg/util/fxutil" ) func TestBundleDependencies(t *testing.T) { - fxutil.TestBundle(t, Bundle(), core.MockBundle()) + fxutil.TestBundle(t, Bundle(), core.MockBundle(), settingsimpl.MockModule()) } diff --git a/comp/remote-config/rcclient/rcclientimpl/rcclient.go b/comp/remote-config/rcclient/rcclientimpl/rcclient.go index 65a63ae0c1f2b..1ef4fe4ba8cad 100644 --- a/comp/remote-config/rcclient/rcclientimpl/rcclient.go +++ b/comp/remote-config/rcclient/rcclientimpl/rcclient.go @@ -17,6 +17,7 @@ import ( "go.uber.org/fx" "github.com/DataDog/datadog-agent/comp/core/log" + "github.com/DataDog/datadog-agent/comp/core/settings" "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" @@ -24,7 +25,6 @@ import ( "github.com/DataDog/datadog-agent/pkg/config/model" "github.com/DataDog/datadog-agent/pkg/config/remote/client" "github.com/DataDog/datadog-agent/pkg/config/remote/data" - "github.com/DataDog/datadog-agent/pkg/config/settings" "github.com/DataDog/datadog-agent/pkg/remoteconfig/state" "github.com/DataDog/datadog-agent/pkg/util/fxutil" pkglog "github.com/DataDog/datadog-agent/pkg/util/log" @@ -53,7 +53,8 @@ type rcClient struct { listeners []types.RCListener // Tasks are separated from the other products, because they must be executed once - taskListeners []types.RCAgentTaskListener + taskListeners []types.RCAgentTaskListener + settingsComponent settings.Component } type dependencies struct { @@ -62,9 +63,10 @@ type dependencies struct { Log log.Component Lc fx.Lifecycle - Params rcclient.Params `optional:"true"` - Listeners []types.RCListener `group:"rCListener"` // <-- Fill automatically by Fx - TaskListeners []types.RCAgentTaskListener `group:"rCAgentTaskListener"` // <-- Fill automatically by Fx + Params rcclient.Params `optional:"true"` + Listeners []types.RCListener `group:"rCListener"` // <-- Fill automatically by Fx + TaskListeners []types.RCAgentTaskListener `group:"rCAgentTaskListener"` // <-- Fill automatically by Fx + SettingsComponent settings.Component } // newRemoteConfigClient must not populate any Fx groups or return any types that would be consumed as dependencies by @@ -112,11 +114,12 @@ func newRemoteConfigClient(deps dependencies) (rcclient.Component, error) { } rc := rcClient{ - listeners: fxutil.GetAndFilterGroup(deps.Listeners), - taskListeners: fxutil.GetAndFilterGroup(deps.TaskListeners), - m: &sync.Mutex{}, - client: c, - clientHA: clientHA, + listeners: fxutil.GetAndFilterGroup(deps.Listeners), + taskListeners: fxutil.GetAndFilterGroup(deps.TaskListeners), + m: &sync.Mutex{}, + client: c, + clientHA: clientHA, + settingsComponent: deps.SettingsComponent, } if config.IsRemoteConfigEnabled(config.Datadog) { @@ -173,7 +176,7 @@ func (rc rcClient) haUpdateCallback(updates map[string]state.RawConfig, applySta } failover = haUpdate.Failover pkglog.Infof("Setting `ha.failover: %t` through remote config", *failover) - err = settings.SetRuntimeSetting("ha.failover", *failover, model.SourceRC) + err = rc.settingsComponent.SetRuntimeSetting("ha.failover", *failover, model.SourceRC) if err != nil { pkglog.Errorf("HA failover update failed: %s", err) applyStateCallback(cfgPath, state.ApplyStatus{ @@ -235,7 +238,7 @@ func (rc rcClient) agentConfigUpdateCallback(updates map[string]state.RawConfig, } else { newLevel := mergedConfig.LogLevel pkglog.Infof("Changing log level to '%s' through remote config", newLevel) - err = settings.SetRuntimeSetting("log_level", newLevel, model.SourceRC) + err = rc.settingsComponent.SetRuntimeSetting("log_level", newLevel, model.SourceRC) } case model.SourceCLI: @@ -252,7 +255,7 @@ func (rc rcClient) agentConfigUpdateCallback(updates map[string]state.RawConfig, // Need to update the log level even if the level stays the same because we need to update the source // Might be possible to add a check in deeper functions to avoid unnecessary work - err = settings.SetRuntimeSetting("log_level", mergedConfig.LogLevel, model.SourceRC) + err = rc.settingsComponent.SetRuntimeSetting("log_level", mergedConfig.LogLevel, model.SourceRC) } // Apply the new status to all configs diff --git a/comp/remote-config/rcclient/rcclientimpl/rcclient_test.go b/comp/remote-config/rcclient/rcclientimpl/rcclient_test.go index ae3903d55c413..e1bf968dde5cc 100644 --- a/comp/remote-config/rcclient/rcclientimpl/rcclient_test.go +++ b/comp/remote-config/rcclient/rcclientimpl/rcclient_test.go @@ -10,12 +10,13 @@ import ( "time" "github.com/DataDog/datadog-agent/comp/core/log/logimpl" + "github.com/DataDog/datadog-agent/comp/core/settings" + "github.com/DataDog/datadog-agent/comp/core/settings/settingsimpl" "github.com/DataDog/datadog-agent/comp/remote-config/rcclient" "github.com/DataDog/datadog-agent/pkg/api/security" "github.com/DataDog/datadog-agent/pkg/config" "github.com/DataDog/datadog-agent/pkg/config/model" "github.com/DataDog/datadog-agent/pkg/config/remote/client" - "github.com/DataDog/datadog-agent/pkg/config/settings" "github.com/DataDog/datadog-agent/pkg/remoteconfig/state" "github.com/DataDog/datadog-agent/pkg/util/fxutil" pkglog "github.com/DataDog/datadog-agent/pkg/util/log" @@ -62,6 +63,7 @@ func TestRCClientCreate(t *testing.T) { fxutil.Test[dependencies]( t, logimpl.MockModule(), + settingsimpl.MockModule(), ), ) // Missing params @@ -77,6 +79,7 @@ func TestRCClientCreate(t *testing.T) { AgentVersion: "7.0.0", }, ), + settingsimpl.MockModule(), ), ) assert.NoError(t, err) @@ -87,18 +90,23 @@ func TestRCClientCreate(t *testing.T) { func TestAgentConfigCallback(t *testing.T) { pkglog.SetupLogger(seelog.Default, "info") _ = config.Mock(t) - mockSettings := &mockLogLevelRuntimeSettings{logLevel: "info"} - err := settings.RegisterRuntimeSetting(mockSettings) - assert.NoError(t, err) - rc := fxutil.Test[rcclient.Component](t, fx.Options( - Module(), - logimpl.MockModule()), - fx.Supply( - rcclient.Params{ - AgentName: "test-agent", - AgentVersion: "7.0.0", - }, + rc := fxutil.Test[rcclient.Component](t, + fx.Options( + Module(), + logimpl.MockModule(), + fx.Supply( + rcclient.Params{ + AgentName: "test-agent", + AgentVersion: "7.0.0", + }, + ), + fx.Supply( + settings.Settings{ + "log_level": &mockLogLevelRuntimeSettings{logLevel: "info"}, + }, + ), + settingsimpl.Module(), ), ) diff --git a/go.mod b/go.mod index 83bd364d12a5a..d02449b1dea3f 100644 --- a/go.mod +++ b/go.mod @@ -215,7 +215,7 @@ require ( github.com/olekukonko/tablewriter v0.0.5 github.com/oliveagle/jsonpath v0.0.0-20180606110733-2e52cf6e6852 github.com/open-policy-agent/opa v0.62.0 - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.75.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.97.0 // indirect github.com/opencontainers/go-digest v1.0.0 github.com/opencontainers/image-spec v1.1.0-rc6 github.com/opencontainers/runtime-spec v1.1.0 @@ -224,7 +224,7 @@ require ( github.com/patrickmn/go-cache v2.1.0+incompatible github.com/pkg/errors v0.9.1 github.com/prometheus/client_golang v1.19.0 - github.com/prometheus/client_model v0.5.0 + github.com/prometheus/client_model v0.6.0 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 @@ -256,16 +256,16 @@ require ( 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 - go.opentelemetry.io/collector/component v0.93.0 - go.opentelemetry.io/collector/confmap v0.93.0 - go.opentelemetry.io/collector/exporter v0.91.0 - go.opentelemetry.io/collector/exporter/loggingexporter v0.91.0 - go.opentelemetry.io/collector/exporter/otlpexporter v0.91.0 - go.opentelemetry.io/collector/pdata v1.0.1 - go.opentelemetry.io/collector/processor/batchprocessor v0.91.0 - go.opentelemetry.io/collector/receiver v0.91.0 - go.opentelemetry.io/collector/receiver/otlpreceiver v0.91.0 + go.opentelemetry.io/collector v0.97.0 // indirect + go.opentelemetry.io/collector/component v0.97.0 + go.opentelemetry.io/collector/confmap v0.97.0 + go.opentelemetry.io/collector/exporter v0.97.0 + go.opentelemetry.io/collector/exporter/loggingexporter v0.97.0 + go.opentelemetry.io/collector/exporter/otlpexporter v0.97.0 + go.opentelemetry.io/collector/pdata v1.4.0 + go.opentelemetry.io/collector/processor/batchprocessor v0.97.0 + go.opentelemetry.io/collector/receiver v0.97.0 + go.opentelemetry.io/collector/receiver/otlpreceiver v0.97.0 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect go.uber.org/atomic v1.11.0 go.uber.org/automaxprocs v1.5.3 @@ -327,7 +327,6 @@ require ( code.cloudfoundry.org/rep v0.0.0-20200325195957-1404b978e31e // indirect code.cloudfoundry.org/rfc5424 v0.0.0-20180905210152-236a6d29298a // indirect code.cloudfoundry.org/tlsconfig v0.0.0-20200131000646-bbe0f8da39b3 // indirect - contrib.go.opencensus.io/exporter/prometheus v0.4.2 // indirect github.com/AlekSi/pointer v1.2.0 // indirect github.com/BurntSushi/toml v1.3.2 // indirect github.com/DataDog/aptly v1.5.3 // indirect @@ -394,7 +393,6 @@ require ( 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 - github.com/go-kit/log v0.2.1 // indirect 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 @@ -446,7 +444,7 @@ require ( github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect github.com/kevinburke/ssh_config v1.2.0 // indirect github.com/kjk/lzma v0.0.0-20161016003348-3fd93898850d // indirect - github.com/klauspost/compress v1.17.4 // indirect + github.com/klauspost/compress v1.17.7 // indirect 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 @@ -499,7 +497,6 @@ require ( 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/common v0.48.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-20230129092748-24d4a6f8daec // indirect github.com/rivo/uniseg v0.4.7 // indirect @@ -550,26 +547,26 @@ require ( go.etcd.io/etcd/client/v3 v3.6.0-alpha.0 // indirect go.etcd.io/etcd/server/v3 v3.6.0-alpha.0.0.20220522111935-c3bc4116dcd1 // indirect go.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/collector/consumer v0.91.0 // indirect - go.opentelemetry.io/collector/featuregate v1.0.1 // indirect - go.opentelemetry.io/collector/semconv v0.93.0 // indirect + go.opentelemetry.io/collector/consumer v0.97.0 // indirect + go.opentelemetry.io/collector/featuregate v1.4.0 // indirect + go.opentelemetry.io/collector/semconv v0.97.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect - go.opentelemetry.io/contrib/propagators/b3 v1.21.1 // indirect + go.opentelemetry.io/contrib/propagators/b3 v1.24.0 // indirect go.opentelemetry.io/otel v1.24.0 // 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.23.1 - go.opentelemetry.io/otel/exporters/prometheus v0.45.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0 + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0 + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.24.0 + go.opentelemetry.io/otel/exporters/prometheus v0.46.0 // indirect go.opentelemetry.io/otel/metric v1.24.0 // indirect - go.opentelemetry.io/otel/sdk v1.23.1 - go.opentelemetry.io/otel/sdk/metric v1.22.0 // indirect + go.opentelemetry.io/otel/sdk v1.24.0 + go.opentelemetry.io/otel/sdk/metric v1.24.0 // indirect go.opentelemetry.io/otel/trace v1.24.0 // indirect go.opentelemetry.io/proto/otlp v1.0.0 // indirect golang.org/x/crypto v0.22.0 // indirect golang.org/x/mod v0.17.0 golang.org/x/oauth2 v0.18.0 // indirect golang.org/x/term v0.19.0 // indirect - gonum.org/v1/gonum v0.14.0 // indirect + gonum.org/v1/gonum v0.15.0 // indirect google.golang.org/api v0.170.0 // indirect google.golang.org/appengine v1.6.8 // indirect gopkg.in/Knetic/govaluate.v3 v3.0.0 // indirect @@ -691,9 +688,13 @@ require ( github.com/sijms/go-ora/v2 v2.8.6 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 + go.opentelemetry.io/collector/confmap/converter/expandconverter v0.97.0 + go.opentelemetry.io/collector/confmap/provider/envprovider v0.97.0 + go.opentelemetry.io/collector/confmap/provider/fileprovider v0.97.0 + go.opentelemetry.io/collector/confmap/provider/yamlprovider v0.97.0 + go.opentelemetry.io/collector/extension v0.97.0 + go.opentelemetry.io/collector/otelcol v0.97.0 + go.opentelemetry.io/collector/processor v0.97.0 go4.org/intern v0.0.0-20230525184215-6c62f75575cb gotest.tools v2.2.0+incompatible ) @@ -732,13 +733,14 @@ require ( 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/go-viper/mapstructure/v2 v2.0.0-alpha.1 // indirect github.com/godror/knownpb v0.1.0 // indirect github.com/google/cel-go v0.17.7 // 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 - github.com/knadh/koanf/v2 v2.0.1 // indirect + github.com/knadh/koanf/v2 v2.1.0 // indirect github.com/kr/text v0.2.0 // indirect github.com/mattn/go-shellwords v1.0.12 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect @@ -764,24 +766,27 @@ require ( github.com/swaggest/refl v1.3.0 // indirect github.com/tetratelabs/wazero v1.7.0 // indirect github.com/wk8/go-ordered-map/v2 v2.1.8 // indirect - go.opentelemetry.io/collector/config/configauth v0.91.0 // indirect - go.opentelemetry.io/collector/config/configcompression v0.91.0 // indirect - go.opentelemetry.io/collector/config/configgrpc v0.91.0 // indirect - go.opentelemetry.io/collector/config/confighttp v0.91.0 // indirect - go.opentelemetry.io/collector/config/confignet v0.91.0 // indirect - go.opentelemetry.io/collector/config/configopaque v0.91.0 // indirect - go.opentelemetry.io/collector/config/configtelemetry v0.93.0 // indirect - go.opentelemetry.io/collector/config/configtls v0.91.0 // indirect - go.opentelemetry.io/collector/config/internal v0.91.0 // indirect - go.opentelemetry.io/collector/connector v0.91.0 // indirect - go.opentelemetry.io/collector/extension/auth v0.91.0 // indirect - go.opentelemetry.io/collector/service v0.91.0 // indirect - go.opentelemetry.io/contrib/config v0.1.1 // indirect - go.opentelemetry.io/otel/bridge/opencensus v0.44.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.44.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v0.44.0 // indirect - go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v0.44.0 // indirect - go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.21.0 // indirect + go.opentelemetry.io/collector/config/configauth v0.97.0 // indirect + go.opentelemetry.io/collector/config/configcompression v1.4.0 // indirect + go.opentelemetry.io/collector/config/configgrpc v0.97.0 // indirect + go.opentelemetry.io/collector/config/confighttp v0.97.0 // indirect + go.opentelemetry.io/collector/config/confignet v0.97.0 // indirect + go.opentelemetry.io/collector/config/configopaque v1.4.0 // indirect + go.opentelemetry.io/collector/config/configretry v0.97.0 // indirect + go.opentelemetry.io/collector/config/configtelemetry v0.97.0 // indirect + go.opentelemetry.io/collector/config/configtls v0.97.0 // indirect + go.opentelemetry.io/collector/config/internal v0.97.0 // indirect + go.opentelemetry.io/collector/confmap/provider/httpprovider v0.97.0 // indirect + go.opentelemetry.io/collector/confmap/provider/httpsprovider v0.97.0 // indirect + go.opentelemetry.io/collector/connector v0.97.0 // indirect + go.opentelemetry.io/collector/extension/auth v0.97.0 // indirect + go.opentelemetry.io/collector/service v0.97.0 // indirect + go.opentelemetry.io/contrib/config v0.4.0 // indirect + go.opentelemetry.io/otel/bridge/opencensus v1.24.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.24.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.24.0 // indirect + go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.24.0 // indirect + go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.24.0 // indirect go4.org/unsafe/assume-no-moving-gc v0.0.0-20231121144256-b99613f794b6 // indirect golang.org/x/exp/typeparams v0.0.0-20230307190834-24139beb5833 // indirect golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 // indirect diff --git a/go.sum b/go.sum index 22de297d6821f..beff9fd6dec9a 100644 --- a/go.sum +++ b/go.sum @@ -633,8 +633,6 @@ code.cloudfoundry.org/rfc5424 v0.0.0-20180905210152-236a6d29298a h1:8rqv2w8xEceN code.cloudfoundry.org/rfc5424 v0.0.0-20180905210152-236a6d29298a/go.mod h1:tkZo8GtzBjySJ7USvxm4E36lNQw1D3xM6oKHGqdaAJ4= code.cloudfoundry.org/tlsconfig v0.0.0-20200131000646-bbe0f8da39b3 h1:2Qal+q+tw/DmDOoJBWwDCPE3lIJNj/1o7oMkkb2c5SI= code.cloudfoundry.org/tlsconfig v0.0.0-20200131000646-bbe0f8da39b3/go.mod h1:eTbFJpyXRGuFVyg5+oaj9B2eIbIc+0/kZjH8ftbtdew= -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= dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= @@ -780,7 +778,6 @@ github.com/alecthomas/kingpin/v2 v2.4.0/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HR github.com/alecthomas/participle v0.7.1 h1:2bN7reTw//5f0cugJcTOnY/NYZcWQOaajW+BwZB5xWs= github.com/alecthomas/participle v0.7.1/go.mod h1:HfdmEuwvr12HXQN44HPWXR0lHmVolVYe4dyL6lQ3duY= github.com/alecthomas/repr v0.0.0-20181024024818-d37bc2a10ba1/go.mod h1:xTS7Pm1pD1mvyM075QCDSRqH6qRLXylzS24ZTpRiSzQ= -github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 h1:s6gZFSlWYmbqAuRjVTiNNhvNRfY2Wxp9nhfyel4rklc= 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= @@ -961,7 +958,6 @@ github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91 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.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/cheggaaa/pb v1.0.10/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= @@ -1190,7 +1186,6 @@ 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.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= -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-latex/latex v0.0.0-20210118124228-b3d85cf34e07/go.mod h1:CO1AlKB2CSIqUrmQPqA0gdRIlnLEY0gK5JGjh37zN5U= github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81/go.mod h1:SX0U8uGpxhq9o2S/CELCSUxEWWAuoCUcVCQWv7G2OCk= @@ -1258,6 +1253,8 @@ github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEe 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 h1:28FVBuwkwowZMjbA7M0wXsI6t3PYulRTMio3SO+eKCM= github.com/go-test/deep v1.0.2-0.20181118220953-042da051cf31/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= +github.com/go-viper/mapstructure/v2 v2.0.0-alpha.1 h1:TQcrn6Wq+sKGkpyPvppOz99zsMBaUOKXq6HSv655U1c= +github.com/go-viper/mapstructure/v2 v2.0.0-alpha.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= github.com/gobwas/httphead v0.1.0 h1:exrUm0f4YX0L7EBwZHuCF4GDp8aJfVeBrlLQrs6NqWU= @@ -1636,16 +1633,16 @@ github.com/klauspost/compress v1.11.4/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYs github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= 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/compress v1.17.7 h1:ehO88t2UGzQK66LMdE8tibEd1ErmzZjNEqWkjLAKQQg= +github.com/klauspost/compress v1.17.7/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/pgzip v1.2.5 h1:qnWYvvKqedOF2ulHpMG72XQol4ILEJ8k2wwRl/Km8oE= github.com/klauspost/pgzip v1.2.5/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= github.com/knadh/koanf v1.5.0 h1:q2TSd/3Pyc/5yP9ldIrSdIz26MCcyNQzW0pEAugLPNs= github.com/knadh/koanf v1.5.0/go.mod h1:Hgyjp4y8v44hpZtPzs7JZfRAW5AhN7KfZcwv1RYggDs= -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/knadh/koanf/v2 v2.1.0 h1:eh4QmHHBuU8BybfIJ8mB8K8gsGCD/AUQTdwGq/GzId8= +github.com/knadh/koanf/v2 v2.1.0/go.mod h1:4mnTRbZCK+ALuBXHZMjDfG9y714L7TykVnZkXbMU3Es= 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-20230223133812-3ed183d23422 h1:PPPlUUqPP6fLudIK4n0l0VU4KT2cQGnheW9x8pNiCHI= @@ -1746,7 +1743,6 @@ github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A github.com/mattn/go-sqlite3 v1.14.15/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= 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/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k= github.com/mdlayher/netlink v1.7.2 h1:/UtM3ofJap7Vl4QWCPDGXY8d3GIY2UGSDbK+QWmY8/g= github.com/mdlayher/netlink v1.7.2/go.mod h1:xraEF7uJbxLhc5fpHL4cPe221LI2bdttWlU+ZGLfQSw= @@ -1867,14 +1863,14 @@ 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.62.0 h1:8NAWkrg3tnMBi+pYqL7pEi7h6QmbMmVf/5IyjJS/A2s= github.com/open-policy-agent/opa v0.62.0/go.mod h1:FD8D++1j1m74Qam2iUnKlfPDeoxWTXANaRUVu8W/tmA= -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/internal/coreinternal v0.97.0 h1:vX/BkTfd7/cvydXJ7FmUy5iSviQeNGAgTCoXcLu7/Ww= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.97.0/go.mod h1:yrlbvRlLeny1kFmj4Ac9BSqv/pOr2h7sOIvDE6OMCKk= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.93.0 h1:R0GGB09OWAP1bSVps2brDOOln8pgSgzHU658bdzIb+g= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.93.0/go.mod h1:7SXQW+a9kZ1T1WH9tKwFqfGGefGv8mZxRG/lTsa65uo= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.93.0 h1:2AKT1xw2KNenv/nfRoWueYxQiLJe76Axhb5++4jdgiA= github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.93.0/go.mod h1:VmP4/AOAPwtpAG4TYHtWha603iLbLRmO7k0d0WbRqrM= -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/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.97.0 h1:82EcF0nmspeVCZmUpwrMuVAXnMYDOF4gai9eK6fHAwk= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.97.0/go.mod h1:7rCj4V2dKJVsaMNBzY81m4fek1AD2yWCFwzrM3PjSNo= 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-rc6 h1:XDqvyKsJEbRtATzkgItUqBA7QHk58yxX1Ov9HERHNqU= @@ -1950,16 +1946,14 @@ github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlk 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.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= -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/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos= +github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8= github.com/prometheus/common v0.46.0 h1:doXzt5ybi1HBKpsZOL0sSkaNHJJqkyfEWZGGqqScV0Y= github.com/prometheus/common v0.46.0/go.mod h1:Tp0qkxpb9Jsg54QMe+EAmqXkSV7Evdy1BTn+g2pa/hQ= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= 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/protocolbuffers/protoscope v0.0.0-20221109213918-8e7a6aafa2c9 h1:arwj11zP0yJIxIRiDn22E0H8PxfF7TsTrc2wIPFIsf4= 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= @@ -2119,7 +2113,6 @@ github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o 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= @@ -2292,100 +2285,114 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= 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 v0.91.0 h1:C7sGUJDJ5nwm+CkWpAaVP3lNsuYpwSRbkmLncFjkmO8= -go.opentelemetry.io/collector v0.91.0/go.mod h1:YhQpIDZsn+bICAAqgBwXk9wqK8GKZDv+aogfG52zUuE= -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/configauth v0.91.0 h1:SjWKimuqlpfS3sIlFpfzdkSY/AmMMCEmn9+KRcjEU+s= -go.opentelemetry.io/collector/config/configauth v0.91.0/go.mod h1:wmmMYqv6PxwY+/h7qqvd/LP0XN/wzXoECDu6PYz2Of0= -go.opentelemetry.io/collector/config/configcompression v0.91.0 h1:v+jEpFhLgfJDCUCPsSF03gjoFEvm77PofTCqHKKgXTs= -go.opentelemetry.io/collector/config/configcompression v0.91.0/go.mod h1:LaavoxZsro5lL7qh1g9DMifG0qixWPEecW18Qr8bpag= -go.opentelemetry.io/collector/config/configgrpc v0.91.0 h1:+2zPmgVOhKgelluGaGwE3OMKqwi56i6OiU0+7xWTetM= -go.opentelemetry.io/collector/config/configgrpc v0.91.0/go.mod h1:iWDbg9vYaayewmbKfM2zEk4YvaOOwrs0eiUffypcZFk= -go.opentelemetry.io/collector/config/confighttp v0.91.0 h1:YAOyXcDaLDnF3UqPHH4kYU8lx8BqXJ7hS3Ou8GcmqpQ= -go.opentelemetry.io/collector/config/confighttp v0.91.0/go.mod h1:R6y8KSJzqDe6CE6JsYwt4CTZ2B4AlqRA+V74OJPX3vE= -go.opentelemetry.io/collector/config/confignet v0.91.0 h1:3huNXh04O3wXaN4qPhmmiefyz4dYbOlNcR/OKMByqig= -go.opentelemetry.io/collector/config/confignet v0.91.0/go.mod h1:cpO8JYWGONaViOygKVw+Hd2UoBcn2cUiyi0WWeFTwJY= -go.opentelemetry.io/collector/config/configopaque v0.91.0 h1:bQgJPyARbuXAsU2p6h2YbEm1kHb1stS6hg42ekyMZmI= -go.opentelemetry.io/collector/config/configopaque v0.91.0/go.mod h1:TPCHaU+QXiEV+JXbgyr6mSErTI9chwQyasDVMdJr3eY= -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/config/configtls v0.91.0 h1:lZromNeOslPwyVlTPMOzF2q++SY+VONvfH3cDqA0kKk= -go.opentelemetry.io/collector/config/configtls v0.91.0/go.mod h1:E+CW5gZoH8V3z5aSlZxwiof7GAcayzn1HRM+uRILLEI= -go.opentelemetry.io/collector/config/internal v0.91.0 h1:Yx17oFdXOPnY83Jfe1oiXhvfYW7RX/xh3/kpV/iYibM= -go.opentelemetry.io/collector/config/internal v0.91.0/go.mod h1:42VsQ/1kP2qnvzjNi+dfNP+KyCFRADejyrJ8m2GVL3M= -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/connector v0.91.0 h1:p2YsgBtr26guCib99ExQHtGuNmX+awgmH1Mbz23wYGU= -go.opentelemetry.io/collector/connector v0.91.0/go.mod h1:dG34jAOATtXFdqzp8IxZJsFwFLaUIkYK69WT1WQ03ZY= -go.opentelemetry.io/collector/consumer v0.91.0 h1:0nU1lUe2S0b8iOmF3w3R/9Dt24n413thRTbXz/nJgrM= -go.opentelemetry.io/collector/consumer v0.91.0/go.mod h1:phTUQmr7hpYfwXyDXo4mFHVjYrlSbZE+nZYlKlbVxGs= -go.opentelemetry.io/collector/exporter v0.91.0 h1:guWcGflFjaenp3BMxAmAKjb8RQG80jQQKjuUFouS+z8= -go.opentelemetry.io/collector/exporter v0.91.0/go.mod h1:hkOBunNNWu6CaTtkRsCJ/OJ509REJZg+DDElevFIQCQ= -go.opentelemetry.io/collector/exporter/loggingexporter v0.91.0 h1:mwKepKvfGciI6n/jLBYYH4bkbAVTr9RsNfzB3x66bCQ= -go.opentelemetry.io/collector/exporter/loggingexporter v0.91.0/go.mod h1:7UTIR8N+Aw/8lT6mJWLqtbum8Yu/ZFznUq6fdNtPxxM= -go.opentelemetry.io/collector/exporter/otlpexporter v0.91.0 h1:PEVJgEZIUMQ/M2/aQ9uuEfjptW4t0bmm91LeeNpa8mc= -go.opentelemetry.io/collector/exporter/otlpexporter v0.91.0/go.mod h1:ebWRIZhk6zere5QnvUpPHjfTvbapscwI6QfCial/X0Y= -go.opentelemetry.io/collector/extension v0.91.0 h1:bkoSLgnWm4g6n+RLmyKG6Up7dr8KmJy68quonoLZnr0= -go.opentelemetry.io/collector/extension v0.91.0/go.mod h1:F3r0fVTTh4sYR0GVv51Qez8lk8v77kTDPdyMOp6A2kg= -go.opentelemetry.io/collector/extension/auth v0.91.0 h1:28Hv5W0GZgv2jR5IiFdJzutTs91KmXFh8DUfVTjwwmI= -go.opentelemetry.io/collector/extension/auth v0.91.0/go.mod h1:diY6Sw7cOAn2qivKipZk4niBFzCCFBj7swAXiG2h9ro= -go.opentelemetry.io/collector/extension/zpagesextension v0.91.0 h1:d787uZ6cNHN1uaJ3pIgFlcrkHVB4ML6AlXBiCQRJ9t0= -go.opentelemetry.io/collector/extension/zpagesextension v0.91.0/go.mod h1:S1T9YKuxRqCKFENC+GuEZhz0fzuUBACOrScNY13Y96w= -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/otelcol v0.91.0 h1:gq/PY/tHgkTr2fuMLp+F+NAm+03iiU+j/Eilvx38p5w= -go.opentelemetry.io/collector/otelcol v0.91.0/go.mod h1:9j8gKdZvuEgZoeUhz5f5D/fwCxx7M7Tg+6D207/KjNs= -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/processor v0.91.0 h1:Xi52gYMXTG4zYmNhsqJ8ly/9f7b0n0crMhKxVVI9HpY= -go.opentelemetry.io/collector/processor v0.91.0/go.mod h1:naTuusZNfzM5MSqoTVzkKbR1MaJ8oD8v5ginR5JreDE= -go.opentelemetry.io/collector/processor/batchprocessor v0.91.0 h1:YuPG52D7otNr4lNd8KGsIIBHvawAAaOqGoNTK9799ko= -go.opentelemetry.io/collector/processor/batchprocessor v0.91.0/go.mod h1:U2ZVSMwgr4OsaKKMfvX9OGaurG83zAPKjVdpTgmj0ok= -go.opentelemetry.io/collector/receiver v0.91.0 h1:0TZF/0OXoJtxgm+mvOinRRXo9LgVyOsOgCQfWkNGXJA= -go.opentelemetry.io/collector/receiver v0.91.0/go.mod h1:d5qo2mpovqKoi47hrMxj5BLdLzOXM0mUHL5CKrjfWNM= -go.opentelemetry.io/collector/receiver/otlpreceiver v0.91.0 h1:1Eyc1uR8yr3heKkC4YXFoZip0JqgOXuOiN/tXvl9WUo= -go.opentelemetry.io/collector/receiver/otlpreceiver v0.91.0/go.mod h1:7am8EW0xmHLxeeGIb0xTcsoVc6+1LfNCGdc+b7OvE8k= -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/collector/service v0.91.0 h1:AQS6YAiZO6V+ohcMX4upfyp/Ydi6y862yQEbFt8t+fQ= -go.opentelemetry.io/collector/service v0.91.0/go.mod h1:8Pf8mPo3YqcTNwOzXa0Ok/o+g2+d8hSCaGxRqR/c6CY= -go.opentelemetry.io/contrib/config v0.1.1 h1:lIUTrMWkfDE0GvzBLhwv6ATDB1vntrnTsRvUMkZKnfQ= -go.opentelemetry.io/contrib/config v0.1.1/go.mod h1:rDrK4+PS6Cs+WIphU/GO5Sk4TGV36lEQqk/Z1vZkaLI= +go.opentelemetry.io/collector v0.97.0 h1:qyOju13byHIKEK/JehmTiGMj4pFLa4kDyrOCtTmjHU0= +go.opentelemetry.io/collector v0.97.0/go.mod h1:V6xquYAaO2VHVu4DBK28JYuikRdZajh7DH5Vl/Y8NiA= +go.opentelemetry.io/collector/component v0.97.0 h1:vanKhXl5nptN8igRH4PqVYHOILif653vaPIKv6LCZCI= +go.opentelemetry.io/collector/component v0.97.0/go.mod h1:F/m3HMlkb16RKI7wJjgbECK1IZkAcmB8bu7yD8XOkwM= +go.opentelemetry.io/collector/config/configauth v0.97.0 h1:38M2uUsBzgD7sdJPPXUsOq1BFr6X6P4A5VFg+MOcRNY= +go.opentelemetry.io/collector/config/configauth v0.97.0/go.mod h1:BkCDatBU7CXXStrRPE1b4woj2VLxaYEMg2WTkb50BlI= +go.opentelemetry.io/collector/config/configcompression v1.4.0 h1:qWRKdl49lBvPUr6UWmyf1pR4EOBHN+66pDeGtfQ1Mbk= +go.opentelemetry.io/collector/config/configcompression v1.4.0/go.mod h1:O0fOPCADyGwGLLIf5lf7N3960NsnIfxsm6dr/mIpL+M= +go.opentelemetry.io/collector/config/configgrpc v0.97.0 h1:Ukl1GPtzSko4Pu8KV5jedD8OjySL/C+QgrfRdaakfHk= +go.opentelemetry.io/collector/config/configgrpc v0.97.0/go.mod h1:i8OrrxynYldlcZ6wPOUKNoZmmbUCDp3CzryRT+2mN7c= +go.opentelemetry.io/collector/config/confighttp v0.97.0 h1:Tfw4DtK5x66uSoRdbZc9tQTNGWEo/urR8RAedBdYtNU= +go.opentelemetry.io/collector/config/confighttp v0.97.0/go.mod h1:wyg4yXvCsk1CsfPBWQ3+rZDThz44Q0d35/1lJBHj5VI= +go.opentelemetry.io/collector/config/confignet v0.97.0 h1:KJjv10/YVMslSSLVWW/IIjpLM3JiO3rWvw5dK/t1H7g= +go.opentelemetry.io/collector/config/confignet v0.97.0/go.mod h1:3naWoPss70RhDHhYjGACi7xh4NcVRvs9itzIRVWyu1k= +go.opentelemetry.io/collector/config/configopaque v1.4.0 h1:5KgD9oLN+N07HqDsLzUrU0mE2pC8cMhrCSC1Nf8CEO4= +go.opentelemetry.io/collector/config/configopaque v1.4.0/go.mod h1:7Qzo69x7i+FaNELeA9jmZtVvfnR5lE6JYa5YEOCJPFQ= +go.opentelemetry.io/collector/config/configretry v0.97.0 h1:k7VwQ5H0oBLm6Fgm0ltfDDbmQVsiqSIY9ojijF0hiR0= +go.opentelemetry.io/collector/config/configretry v0.97.0/go.mod h1:s7A6ZGxK8bxqidFzwbr2pITzbsB2qf+aeHEDQDcanV8= +go.opentelemetry.io/collector/config/configtelemetry v0.97.0 h1:JS/WxK09A9m39D5OqsAWaoRe4tG7ESMnzDNIbZ5bD6c= +go.opentelemetry.io/collector/config/configtelemetry v0.97.0/go.mod h1:YV5PaOdtnU1xRomPcYqoHmyCr48tnaAREeGO96EZw8o= +go.opentelemetry.io/collector/config/configtls v0.97.0 h1:wmXj/rKQUGMZzbHVCTyB+xUWImsGxnLqhivwjBE0FdI= +go.opentelemetry.io/collector/config/configtls v0.97.0/go.mod h1:ev/fMI6hm1WTSHHEAEoVjF3RZj0qf38E/XO5itFku7k= +go.opentelemetry.io/collector/config/internal v0.97.0 h1:vhTzCm2u6MUAxdWPprkOePR/Kd57v2uF11twpza1E7o= +go.opentelemetry.io/collector/config/internal v0.97.0/go.mod h1:RVGDn9OH/KHT878cclG497/n2qxe54+zW+u/SVsRLNw= +go.opentelemetry.io/collector/confmap v0.97.0 h1:0CGSk7YW9rPc6jCwJteJzHzN96HRoHTfuqI7J/EmZsg= +go.opentelemetry.io/collector/confmap v0.97.0/go.mod h1:AnJmZcZoOLuykSXGiAf3shi11ZZk5ei4tZd9dDTTpWE= +go.opentelemetry.io/collector/confmap/converter/expandconverter v0.97.0 h1:Tw0+JlvA1Z5xpvHYqzYXsPdsCaq6+oGoqw7fCymh+lc= +go.opentelemetry.io/collector/confmap/converter/expandconverter v0.97.0/go.mod h1:gp3XWfC1OpmwHZsODRIpy4XZtrNy1RryJhvK7sdNgmk= +go.opentelemetry.io/collector/confmap/provider/envprovider v0.97.0 h1:2F3yl+Vr6nJ0sN9HoYeebY5+lJ8OJ4VqxCY16SsVcXs= +go.opentelemetry.io/collector/confmap/provider/envprovider v0.97.0/go.mod h1:GrHP/mOgzx8+fcTRmgB/IgH3lG80nv2bFW1v6oPggRM= +go.opentelemetry.io/collector/confmap/provider/fileprovider v0.97.0 h1:5SXsBAA/6Hv76+ndBY0wZRYGNES/55SKu6VhP4kriqM= +go.opentelemetry.io/collector/confmap/provider/fileprovider v0.97.0/go.mod h1:YAj2CNxE1go08GiAxYO2HSeNkWv8g7C7DHFpEECttI8= +go.opentelemetry.io/collector/confmap/provider/httpprovider v0.97.0 h1:Wd4XR3cOznED8sYM0Qy0NlAToxvpEG8OH9O89RKp+pg= +go.opentelemetry.io/collector/confmap/provider/httpprovider v0.97.0/go.mod h1:2LIGxKR6dJPP5kxkRSTIeWuJ7Mto1Mv456+MlG86RH8= +go.opentelemetry.io/collector/confmap/provider/httpsprovider v0.97.0 h1:suZwewHxcwA3z0kE6p6tjYcPKlGOYWoIjy/58gBK/c0= +go.opentelemetry.io/collector/confmap/provider/httpsprovider v0.97.0/go.mod h1:R+cJ8wWzaJll+WCTUOM769zIk1vOb7NQARG9xWNbgUA= +go.opentelemetry.io/collector/confmap/provider/yamlprovider v0.97.0 h1:ntcR7AMHwFRROTMW1ifx0xVu+ltbPafS/1r/ssxe+hM= +go.opentelemetry.io/collector/confmap/provider/yamlprovider v0.97.0/go.mod h1:0THo600LMD0RGl7loqyaHgd/47Icgb64QOmqaj0j5dU= +go.opentelemetry.io/collector/connector v0.97.0 h1:X3AI3rCRiNhKCF5OJc1XzNoIKYbClYm5BiLINtxHts8= +go.opentelemetry.io/collector/connector v0.97.0/go.mod h1:KolkR5/kkPzy2jW7Q7zs+FiO1xiDrBeAvDYrZe/ygtA= +go.opentelemetry.io/collector/consumer v0.97.0 h1:S0BZQtJQxSHT156S8a5rLt3TeWYP8Rq+jn8QEyWQUYk= +go.opentelemetry.io/collector/consumer v0.97.0/go.mod h1:1D06LURiZ/1KA2OnuKNeSn9bvFmJ5ZWe6L8kLu0osSY= +go.opentelemetry.io/collector/exporter v0.97.0 h1:kw/fQrpkhTz0/3I/Z0maRj0S8Mi0NK50/WwFuWrRYPc= +go.opentelemetry.io/collector/exporter v0.97.0/go.mod h1:EJYc4biKWxq3kD4Xh4SUSFbZ2lMsxjzwiCozikEDMjk= +go.opentelemetry.io/collector/exporter/loggingexporter v0.97.0 h1:avSUMkwU3b7OlrKR5qFjbBYmRgwdIoDltR11h9MmxjQ= +go.opentelemetry.io/collector/exporter/loggingexporter v0.97.0/go.mod h1:wT/uTcbmw01Uxgsb370KVffXIGypXikZxk7KQDynLnk= +go.opentelemetry.io/collector/exporter/otlpexporter v0.97.0 h1:yqEl3oMw/h4jzkTEC599Icm2jp7oVsa1pOu5RoxIJTA= +go.opentelemetry.io/collector/exporter/otlpexporter v0.97.0/go.mod h1:XF5RsoyMLVMTtvLv4lIbsTiowJtE3Z9Jikot8/nJUDw= +go.opentelemetry.io/collector/extension v0.97.0 h1:LpjZ4KQgnhLG/u3l69QgWkX8qMqeS8IFKWMoDtbPIeE= +go.opentelemetry.io/collector/extension v0.97.0/go.mod h1:jWNG0Npi7AxiqwCclToskDfCQuNKHYHlBPJNnIKHp84= +go.opentelemetry.io/collector/extension/auth v0.97.0 h1:2AYGxSbsi1KC2DOOFbAe7valrERb86m7TfRY85X8hSE= +go.opentelemetry.io/collector/extension/auth v0.97.0/go.mod h1:uElLYtzMPA48mu9baxGIH6lHpOn76NLe4mVHnmV+hEY= +go.opentelemetry.io/collector/extension/zpagesextension v0.97.0 h1:IaZm011+6WKE03TFmDQ7ztp65eu8ngGc026m9KhuhB4= +go.opentelemetry.io/collector/extension/zpagesextension v0.97.0/go.mod h1:PxR6gK4FEYHc6iGPH7svM9jjFIZo4o/MGGO0l+see0o= +go.opentelemetry.io/collector/featuregate v1.4.0 h1:RWE9M659C9iuUQc4GzBsndkGHG1jIzIY+nZJWvcKy1M= +go.opentelemetry.io/collector/featuregate v1.4.0/go.mod h1:w7nUODKxEi3FLf1HslCiE6YWtMtOOrMnSwsDam8Mg9w= +go.opentelemetry.io/collector/otelcol v0.97.0 h1:xtZOYmdzeu1dSgco0I4yqhSyQ6GrGa7E7TRUlg7KIwI= +go.opentelemetry.io/collector/otelcol v0.97.0/go.mod h1:mHzwRh3ATXfStF9xsttnJilxpaP+03hhozMn39dP+Jo= +go.opentelemetry.io/collector/pdata v1.4.0 h1:cA6Pr7Z2V7mE+i7FmYpavX7nefzd6H4CICgW0T9aJX0= +go.opentelemetry.io/collector/pdata v1.4.0/go.mod h1:0Ttp4wQinhV5oJTd9MjyvUegmZBO9O0nrlh/+EDLw+Q= +go.opentelemetry.io/collector/processor v0.97.0 h1:L3R5R7x56LH2inF3sv0ZOsFfulVo8yuIFhO/OgpkCU0= +go.opentelemetry.io/collector/processor v0.97.0/go.mod h1:OsxBAPQ2fDytAn+yWLdEQ1yjYfl/OIak1AfKGfI8ALs= +go.opentelemetry.io/collector/processor/batchprocessor v0.97.0 h1:DpC+d8ZQB/Qj5+sODYPpu8a8l0aMtMZEq6pN/3e+5X4= +go.opentelemetry.io/collector/processor/batchprocessor v0.97.0/go.mod h1:2sSDgffCKAUocMEapmcMBvgfBIotLtDFg/YJrOia8GE= +go.opentelemetry.io/collector/receiver v0.97.0 h1:ozzE5MhIPtfnYA/UKB/NCcgxSmeLqdwErboi6B/IpLQ= +go.opentelemetry.io/collector/receiver v0.97.0/go.mod h1:1TCN9DRuB45+xKqlwv4BMQR6qXgaJeSSNezFTJhmDUo= +go.opentelemetry.io/collector/receiver/otlpreceiver v0.97.0 h1:LY6kbWURk2g+jcfJlQo51Xu6WyYKHW3W+UOhAr3g3qc= +go.opentelemetry.io/collector/receiver/otlpreceiver v0.97.0/go.mod h1:JL1oxtysJT2TN80p/nC9vrWkENh/If7kmMRio7yF9WE= +go.opentelemetry.io/collector/semconv v0.97.0 h1:iF3nTfThbiOwz7o5Pocn0dDnDoffd18ijDuf6Mwzi1s= +go.opentelemetry.io/collector/semconv v0.97.0/go.mod h1:8ElcRZ8Cdw5JnvhTOQOdYizkJaQ10Z2fS+R6djOnj6A= +go.opentelemetry.io/collector/service v0.97.0 h1:Nv/A41Ezot0lqMQwqJSRGV2PeQNcItaiDaQPudFXBOM= +go.opentelemetry.io/collector/service v0.97.0/go.mod h1:h9SwBe1yThExLAhgIErMtGsyBdEmSKGK8p/f+QcWyT0= +go.opentelemetry.io/contrib/config v0.4.0 h1:Xb+ncYOqseLroMuBesGNRgVQolXcXOhMj7EhGwJCdHs= +go.opentelemetry.io/contrib/config v0.4.0/go.mod h1:drNk2xRqLWW4/amk6Uh1S+sDAJTc7bcEEN1GfJzj418= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 h1:4Pp6oUg3+e/6M4C0A/3kJ2VYa++dsWVTtGgLVj5xtHg= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= -go.opentelemetry.io/contrib/propagators/b3 v1.21.1 h1:WPYiUgmw3+b7b3sQ1bFBFAf0q+Di9dvNc3AtYfnT4RQ= -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/contrib/propagators/b3 v1.24.0 h1:n4xwCdTx3pZqZs2CjS/CUZAs03y3dZcGhC/FepKtEUY= +go.opentelemetry.io/contrib/propagators/b3 v1.24.0/go.mod h1:k5wRxKRU2uXx2F8uNJ4TaonuEO/V7/5xoz7kdsDACT8= +go.opentelemetry.io/contrib/zpages v0.49.0 h1:Wk217PkNBxcKWnIQpwtbZZE286K4ZY9uajnM5woSeLU= +go.opentelemetry.io/contrib/zpages v0.49.0/go.mod h1:6alLi5mmkZWbAtZMRPd1ffIgkTcsU9OTHQF2NbSOhrQ= go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo= go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo= -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.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.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/bridge/opencensus v1.24.0 h1:Vlhy5ee5k5R0zASpH+9AgHiJH7xnKACI3XopO1tUZfY= +go.opentelemetry.io/otel/bridge/opencensus v1.24.0/go.mod h1:jRjVXV/X38jyrnHtvMGN8+9cejZB21JvXAAvooF2s+Q= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.24.0 h1:f2jriWfOdldanBwS9jNBdeOKAQN7b4ugAMaNu1/1k9g= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.24.0/go.mod h1:B+bcQI1yTY+N0vqMpoZbEN7+XU4tNM0DmUiOwebFJWI= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.24.0 h1:mM8nKi6/iFQ0iqst80wDHU2ge198Ye/TfN0WBS5U24Y= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.24.0/go.mod h1:0PrIIzDteLSmNyxqcGYRL4mDIo8OTuBAOI/Bn1URxac= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0 h1:t6wl9SPayj+c7lEIFgm4ooDBZVb01IhLB4InpomhRw8= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0/go.mod h1:iSDOcsnSA5INXzZtwaBPrKp/lWu/V14Dd+llD0oI2EA= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0 h1:Mw5xcxMwlqoJd97vwPxA8isEaIoxsta9/Q51+TTJLGE= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0/go.mod h1:CQNu9bj7o7mC6U7+CA/schKEYakYXWr79ucDHTMGhCM= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.24.0 h1:Xw8U6u2f8DK2XAkGRFV7BBLENgnTGX9i4rQRxJf+/vs= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.24.0/go.mod h1:6KW1Fm6R/s6Z3PGXwSJN2K4eT6wQB3vXX6CVnYX9NmM= +go.opentelemetry.io/otel/exporters/prometheus v0.46.0 h1:I8WIFXR351FoLJYuloU4EgXbtNX2URfU/85pUPheIEQ= +go.opentelemetry.io/otel/exporters/prometheus v0.46.0/go.mod h1:ztwVUHe5DTR/1v7PeuGRnU5Bbd4QKYwApWmuutKsJSs= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.24.0 h1:JYE2HM7pZbOt5Jhk8ndWZTUWYOVift2cHjXVMkPdmdc= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.24.0/go.mod h1:yMb/8c6hVsnma0RpsBMNo0fEiQKeclawtgaIaOp2MLY= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.24.0 h1:s0PHtIkN+3xrbDOpt2M8OTG92cWqUESvzh2MxiR5xY8= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.24.0/go.mod h1:hZlFbDbRt++MMPCCfSJfmhkGIWnX1h3XjkfxZUjLrIA= go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI= go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= -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/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw= +go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg= +go.opentelemetry.io/otel/sdk/metric v1.24.0 h1:yyMQrPzF+k88/DbH7o4FMAs80puqd+9osbiBrJrz/w8= +go.opentelemetry.io/otel/sdk/metric v1.24.0/go.mod h1:I6Y5FjH6rvEnTTAYQz3Mmv2kl6Ek5IIrmwTLqMrrOE0= go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI= go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= @@ -2761,7 +2768,6 @@ golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBc 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= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -2924,8 +2930,8 @@ gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJ gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= gonum.org/v1/gonum v0.9.3/go.mod h1:TZumC3NeyVQskjXqmyWt4S3bINhy7B4eYwW69EbyX+0= gonum.org/v1/gonum v0.11.0/go.mod h1:fSG4YDCxxUZQJ7rKsQrj0gMOg00Il0Z96/qMA4bVQhA= -gonum.org/v1/gonum v0.14.0 h1:2NiG67LD1tEH0D7kM+ps2V+fXmsAnpUeec7n8tcr4S0= -gonum.org/v1/gonum v0.14.0/go.mod h1:AoWeoz0becf9QMWtE8iWXNXc27fK4fNeHNf/oMejGfU= +gonum.org/v1/gonum v0.15.0 h1:2lYxjRbTYyxkJxlhC+LvJIx3SsANPdRybu1tGj9/OrQ= +gonum.org/v1/gonum v0.15.0/go.mod h1:xzZVBJBtS+Mz4q0Yl2LJTk+OxOg4jiXZ7qBoM0uISGo= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= gonum.org/v1/plot v0.9.0/go.mod h1:3Pcqqmp6RHvJI72kgb8fThyUnav364FOsdDo2aGW5lY= @@ -3233,7 +3239,6 @@ gopkg.in/DataDog/dd-trace-go.v1 v1.61.0 h1:XKO91GwTjpIRhd56Xif/BZ2YgHkQufVTOvtkb gopkg.in/DataDog/dd-trace-go.v1 v1.61.0/go.mod h1:NHKX1t9eKmajySb6H+zLdgZizCFzbt5iKvrTyxEyy8w= gopkg.in/Knetic/govaluate.v3 v3.0.0 h1:18mUyIt4ZlRlFZAAfVetz4/rzlJs9yhN+U02F4u1AOc= gopkg.in/Knetic/govaluate.v3 v3.0.0/go.mod h1:csKLBORsPbafmSCGTEh3U7Ozmsuq8ZSIlKk1bcqph0E= -gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/asn1-ber.v1 v1.0.0-20181015200546-f715ec2f112d/go.mod h1:cuepJuh7vyXfUyUwEgHQXw849cJrilpS5NeIjOWESAw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/omnibus/config/projects/installer.rb b/omnibus/config/projects/installer.rb index fd7fb62164720..50536c9ec7885 100644 --- a/omnibus/config/projects/installer.rb +++ b/omnibus/config/projects/installer.rb @@ -13,7 +13,7 @@ homepage 'http://www.datadoghq.com' -INSTALL_DIR = ENV['INSTALL_DIR'] || '/opt/datadog-packages/installer_boot' +INSTALL_DIR = ENV['INSTALL_DIR'] || '/opt/datadog-installer' install_dir INSTALL_DIR diff --git a/omnibus/config/software/datadog-agent.rb b/omnibus/config/software/datadog-agent.rb index 91833d8c3e8be..bc055acfe7ebb 100644 --- a/omnibus/config/software/datadog-agent.rb +++ b/omnibus/config/software/datadog-agent.rb @@ -282,7 +282,7 @@ # Systray GUI app_temp_dir = "#{install_dir}/Datadog Agent.app/Contents" mkdir "#{app_temp_dir}/MacOS" - systray_build_dir = "#{project_dir}/cmd/agent/gui/systray" + systray_build_dir = "#{project_dir}/comp/core/gui/guiimpl/systray" # Target OSX 10.10 (it brings significant changes to Cocoa and Foundation APIs, and older versions of OSX are EOL'ed) # Add @executable_path/../Frameworks to rpath to find the swift libs in the Frameworks folder. command 'swiftc -O -swift-version "5" -target "x86_64-apple-macosx10.10" -Xlinker \'-rpath\' -Xlinker \'@executable_path/../Frameworks\' Sources/*.swift -o gui', cwd: systray_build_dir diff --git a/omnibus/config/software/installer.rb b/omnibus/config/software/installer.rb index 6f02c12cad80f..3cb4fedd4ed56 100644 --- a/omnibus/config/software/installer.rb +++ b/omnibus/config/software/installer.rb @@ -42,16 +42,12 @@ mkdir "/etc/datadog-agent" mkdir "/etc/init" mkdir "/var/log/datadog" - move "bin/agent/dist/datadog.yaml", "#{etc_dir}/datadog.yaml.example" - move "bin/agent/dist/conf.d", "#{etc_dir}/conf.d" - move "bin/agent/dist/system-probe.yaml", "#{etc_dir}/system-probe.yaml.example" - move "bin/agent/dist/security-agent.yaml", "#{etc_dir}/security-agent.yaml.example" mkdir "/var/run/datadog-packages" # Packages mkdir "/opt/datadog-packages" - copy 'bin/updater', "#{install_dir}/bin/" + copy 'bin/installer', "#{install_dir}/bin/" # Add installer units systemdPath = "/lib/systemd/system/" diff --git a/omnibus/config/templates/installer/datadog-installer.service.erb b/omnibus/config/templates/installer/datadog-installer.service.erb index ecb6aaeef0d71..de5074f2ad994 100644 --- a/omnibus/config/templates/installer/datadog-installer.service.erb +++ b/omnibus/config/templates/installer/datadog-installer.service.erb @@ -8,7 +8,7 @@ PIDFile=<%= install_dir %>/run/installer.pid User=dd-installer Restart=on-failure EnvironmentFile=-<%= etc_dir %>/environment -ExecStart=<%= install_dir %>/bin/installer/updater run -p <%= install_dir %>/run/installer.pid +ExecStart=<%= install_dir %>/bin/installer/installer run -p <%= install_dir %>/run/installer.pid # Since systemd 229, should be in [Unit] but in order to support systemd <229, # it is also supported to have it here. StartLimitInterval=10 diff --git a/omnibus/package-scripts/updater-deb/postinst b/omnibus/package-scripts/updater-deb/postinst index b21e7638dc5bc..e661773649a1b 100644 --- a/omnibus/package-scripts/updater-deb/postinst +++ b/omnibus/package-scripts/updater-deb/postinst @@ -5,8 +5,8 @@ # .deb: STEP 5 of 5 readonly PACKAGES_DIR=/opt/datadog-packages -readonly INSTALL_DIR=${PACKAGES_DIR}/installer_boot -readonly UPDATER_HELPER=${INSTALL_DIR}/bin/updater/updater-helper +readonly INSTALL_DIR=/opt/datadog-installer +readonly HELPER=${INSTALL_DIR}/bin/installer/helper readonly LOG_DIR=/var/log/datadog readonly PACKAGES_LOCK_DIR=/var/run/datadog-packages readonly CONFIG_DIR=/etc/datadog-agent @@ -50,6 +50,7 @@ chown -R dd-agent:dd-agent ${LOG_DIR} chmod -R g+rw ${LOG_DIR} chown -R dd-installer:dd-installer ${PACKAGES_DIR} chown -R dd-installer:dd-installer ${PACKAGES_LOCK_DIR} +chown -R dd-installer:dd-installer ${INSTALL_DIR} chmod -R 755 ${PACKAGES_DIR} # Lock_dir is world read/write/x as any application with a tracer injected @@ -76,9 +77,9 @@ if [ -d "$CONFIG_DIR/runtime-security.d" ]; then chown -R root:root ${CONFIG_DIR}/runtime-security.d || true fi -# Set updater helper rights -chmod 750 ${UPDATER_HELPER} -setcap cap_setuid+ep ${UPDATER_HELPER} +# Set helper rights +chmod 750 ${HELPER} +setcap cap_setuid+ep ${HELPER} # start updater SYSTEMCTL_SKIP_SYSV=true systemctl enable datadog-installer || true diff --git a/omnibus/package-scripts/updater-deb/postrm b/omnibus/package-scripts/updater-deb/postrm index 043a5f1f29827..1c8a334593c14 100644 --- a/omnibus/package-scripts/updater-deb/postrm +++ b/omnibus/package-scripts/updater-deb/postrm @@ -5,6 +5,7 @@ # .deb: STEP 3 of 5 PACKAGES_DIR=/opt/datadog-packages +INSTALL_DIR=/opt/datadog-installer LOG_DIR=/var/log/datadog CONFIG_DIR=/etc/datadog-agent PACKAGES_LOCK_DIR=/var/run/datadog-packages @@ -19,7 +20,8 @@ case "$1" in echo "Deleting dd-agent group" (getent group dd-agent >/dev/null && delgroup dd-agent --quiet) || true (getent group dd-installer >/dev/null && delgroup dd-installer --quiet) || true - echo "Force-deleting $PACKAGES_DIR, $LOG_DIR, $CONFIG_DIR" + echo "Force-deleting $INSTALL_DIR, $PACKAGES_DIR, $LOG_DIR, $CONFIG_DIR" + rm -rf $INSTALL_DIR rm -rf $LOG_DIR rm -rf $CONFIG_DIR rm -rf $PACKAGES_DIR diff --git a/omnibus/package-scripts/updater-deb/prerm b/omnibus/package-scripts/updater-deb/prerm index f147fd516f429..6c2c35b3d6ac7 100644 --- a/omnibus/package-scripts/updater-deb/prerm +++ b/omnibus/package-scripts/updater-deb/prerm @@ -3,8 +3,7 @@ # # .deb: STEP 1 of 5 -readonly PACKAGES_DIR=/opt/datadog-packages -readonly INSTALL_DIR=${PACKAGES_DIR}/installer_boot +readonly INSTALL_DIR=/opt/datadog-installer SYSTEMCTL_SKIP_SYSV=true systemctl stop datadog-installer || true SYSTEMCTL_SKIP_SYSV=true systemctl disable datadog-installer || true @@ -13,7 +12,7 @@ set -e case "$1" in remove) - $INSTALL_DIR/bin/updater/updater purge + $INSTALL_DIR/bin/installer/installer purge ;; *) ;; diff --git a/omnibus/package-scripts/updater-rpm/postrm b/omnibus/package-scripts/updater-rpm/postrm index 126614047431e..5d09d9186629a 100644 --- a/omnibus/package-scripts/updater-rpm/postrm +++ b/omnibus/package-scripts/updater-rpm/postrm @@ -5,6 +5,7 @@ # PACKAGES_DIR=/opt/datadog-packages +INSTALL_DIR=/opt/datadog-installer LOG_DIR=/var/log/datadog PACKAGES_LOCK_DIR=/var/run/datadog-packages @@ -21,10 +22,11 @@ userdel dd-installer echo "Deleting dd-agent group" (getent group dd-agent >/dev/null && groupdel dd-agent) || true (getent group dd-installer >/dev/null && groupdel dd-installer) || true -echo "Force-deleting $PACKAGES_DIR $LOG_DIR" +echo "Force-deleting $INSTALL_DIR $PACKAGES_DIR $LOG_DIR" rm -rf $LOG_DIR rm -rf $PACKAGES_DIR rm -rf $PACKAGES_LOCK_DIR +rm -rf $INSTALL_DIR exit 0 diff --git a/omnibus/package-scripts/updater-rpm/posttrans b/omnibus/package-scripts/updater-rpm/posttrans index 26e996d45804d..273c589fb8072 100644 --- a/omnibus/package-scripts/updater-rpm/posttrans +++ b/omnibus/package-scripts/updater-rpm/posttrans @@ -1,8 +1,8 @@ #!/bin/sh readonly PACKAGES_DIR=/opt/datadog-packages -readonly INSTALL_DIR=${PACKAGES_DIR}/installer_boot -readonly UPDATER_HELPER=${INSTALL_DIR}/bin/updater/updater-helper +readonly INSTALL_DIR=/opt/datadog-installer +readonly HELPER=${INSTALL_DIR}/bin/installer/helper readonly LOG_DIR=/var/log/datadog readonly PACKAGES_LOCK_DIR=/var/run/datadog-packages readonly CONFIG_DIR=/etc/datadog-agent @@ -34,6 +34,7 @@ chown -R dd-agent:dd-agent ${LOG_DIR} chmod -R g+rw ${LOG_DIR} chown -R dd-installer:dd-installer ${PACKAGES_DIR} chown -R dd-installer:dd-installer ${PACKAGES_LOCK_DIR} +chown -R dd-installer:dd-installer ${INSTALL_DIR} chmod -R 755 ${PACKAGES_DIR} # Lock_dir is world read/write/x as any application with a tracer injected @@ -60,9 +61,9 @@ if [ -d "$CONFIG_DIR/runtime-security.d" ]; then chown -R root:root ${CONFIG_DIR}/runtime-security.d || true fi -# Set updater helper rights -chmod 750 ${UPDATER_HELPER} -setcap cap_setuid+ep ${UPDATER_HELPER} +# Set helper rights +chmod 750 ${HELPER} +setcap cap_setuid+ep ${HELPER} # start updater SYSTEMCTL_SKIP_SYSV=true systemctl enable datadog-installer || true diff --git a/omnibus/package-scripts/updater-rpm/prerm b/omnibus/package-scripts/updater-rpm/prerm index d0ffa49cfe1a0..5f98ab8d0e342 100644 --- a/omnibus/package-scripts/updater-rpm/prerm +++ b/omnibus/package-scripts/updater-rpm/prerm @@ -2,7 +2,7 @@ # # Perform necessary datadog-agent setup steps prior to remove the old package. -readonly INSTALL_DIR=/opt/datadog-packages/installer_boot +readonly INSTALL_DIR=/opt/datadog-installer SYSTEMCTL_SKIP_SYSV=true systemctl stop datadog-installer || true SYSTEMCTL_SKIP_SYSV=true systemctl disable datadog-installer || true @@ -14,7 +14,7 @@ case "$1" in # $1 contains the number of packages with the same name left # on the system after the current action completes. # If 0, then we are uninstalling - $INSTALL_DIR/bin/updater/updater purge + $INSTALL_DIR/bin/installer/installer purge ;; *) # For other cases, we're upgrading diff --git a/pkg/cli/standalone/jmx.go b/pkg/cli/standalone/jmx.go index a57ef790d89cb..2bbab480c914a 100644 --- a/pkg/cli/standalone/jmx.go +++ b/pkg/cli/standalone/jmx.go @@ -21,7 +21,6 @@ import ( logsAgent "github.com/DataDog/datadog-agent/comp/logs/agent" "github.com/DataDog/datadog-agent/pkg/aggregator/sender" "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" "github.com/DataDog/datadog-agent/pkg/util/optional" ) @@ -124,7 +123,7 @@ func loadJMXConfigs(runner *jmxfetch.JMXFetch, selectedChecks []string, configs } c.Instances = instances - jmx.AddScheduledConfig(c) + jmxfetch.AddScheduledConfig(c) runner.ConfigureFromInitConfig(c.InitConfig) //nolint:errcheck for _, instance := range c.Instances { runner.ConfigureFromInstance(instance) //nolint:errcheck diff --git a/pkg/cli/subcommands/check/command.go b/pkg/cli/subcommands/check/command.go index e6259f02a93f5..79870a8ad1bae 100644 --- a/pkg/cli/subcommands/check/command.go +++ b/pkg/cli/subcommands/check/command.go @@ -40,8 +40,10 @@ import ( "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/gui" "github.com/DataDog/datadog-agent/comp/core/log/logimpl" "github.com/DataDog/datadog-agent/comp/core/secrets" + "github.com/DataDog/datadog-agent/comp/core/settings" "github.com/DataDog/datadog-agent/comp/core/status" "github.com/DataDog/datadog-agent/comp/core/status/statusimpl" "github.com/DataDog/datadog-agent/comp/core/sysprobeconfig/sysprobeconfigimpl" @@ -215,13 +217,14 @@ func MakeCommand(globalParamsGetter func() GlobalParams) *cobra.Command { fx.Provide(func() replay.Component { return nil }), fx.Provide(func() pidmap.Component { return nil }), fx.Provide(func() serverdebug.Component { return nil }), + fx.Provide(func() settings.Component { return nil }), fx.Provide(func() host.Component { return nil }), fx.Provide(func() inventoryagent.Component { return nil }), fx.Provide(func() inventoryhost.Component { return nil }), fx.Provide(func() packagesigning.Component { return nil }), fx.Provide(func() optional.Option[rcservice.Component] { return optional.NewNoneOption[rcservice.Component]() }), fx.Provide(func() optional.Option[rcserviceha.Component] { return optional.NewNoneOption[rcserviceha.Component]() }), - + fx.Provide(func() optional.Option[gui.Component] { return optional.NewNoneOption[gui.Component]() }), getPlatformModules(), jmxloggerimpl.Module(), fx.Supply(jmxloggerimpl.NewDisabledParams()), diff --git a/pkg/cli/subcommands/check/command_test.go b/pkg/cli/subcommands/check/command_test.go index 73ab52c29a656..984e51b7f7392 100644 --- a/pkg/cli/subcommands/check/command_test.go +++ b/pkg/cli/subcommands/check/command_test.go @@ -37,7 +37,7 @@ func TestCommand(t *testing.T) { // this command has a lot of options, so just test a few []string{"check", "cleopatra", "--delay", "1", "--flare"}, run, - func(cliParams *cliParams, coreParams core.BundleParams, secretParams secrets.Params) { + func(cliParams *cliParams, _ core.BundleParams, secretParams secrets.Params) { require.Equal(t, []string{"cleopatra"}, cliParams.args) require.Equal(t, 1, cliParams.checkDelay) require.True(t, cliParams.saveFlare) diff --git a/pkg/collector/corechecks/embed/jmx/check.go b/pkg/collector/corechecks/embed/jmx/check.go deleted file mode 100644 index a017c49275ed6..0000000000000 --- a/pkg/collector/corechecks/embed/jmx/check.go +++ /dev/null @@ -1,139 +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 jmx - -//nolint:revive // TODO(AML) Fix revive linter -package jmx - -import ( - "fmt" - "time" - - "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" - "github.com/DataDog/datadog-agent/pkg/aggregator/sender" - 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" - "github.com/DataDog/datadog-agent/pkg/config/utils" - "github.com/DataDog/datadog-agent/pkg/diagnose/diagnosis" - "github.com/DataDog/datadog-agent/pkg/util/log" -) - -// JMXCheck represents a JMXFetch check -type JMXCheck struct { - id checkid.ID - name string - config integration.Config - stop chan struct{} - source string - telemetry bool - initConfig string - instanceConfig string -} - -func newJMXCheck(senderManager sender.SenderManager, config integration.Config, source string) *JMXCheck { - digest := config.IntDigest() - check := &JMXCheck{ - config: config, - stop: make(chan struct{}), - name: config.Name, - id: checkid.ID(fmt.Sprintf("%v_%x", config.Name, digest)), - source: source, - telemetry: utils.IsCheckTelemetryEnabled("jmx", pkgConfig.Datadog), - } - check.Configure(senderManager, digest, config.InitConfig, config.MetricConfig, source) //nolint:errcheck - - return check -} - -// Run schedules this JMXCheck to run -func (c *JMXCheck) Run() error { - err := state.scheduleCheck(c) - if err != nil { - return err - } - - select { - case <-state.runnerError: - return fmt.Errorf("jmxfetch exited, stopping %s : %s", c.name, err) - case <-c.stop: - log.Infof("jmx check %s stopped", c.name) - } - - return nil -} - -// Stop forces the JMXCheck to stop and will unschedule it -func (c *JMXCheck) Stop() { - close(c.stop) - state.unscheduleCheck(c) -} - -// Cancel is a noop -func (c *JMXCheck) Cancel() {} - -// String provides a printable version of the JMXCheck -func (c *JMXCheck) String() string { - return c.name -} - -// Version returns the version of the JMXCheck -// (note, returns an empty string) -func (c *JMXCheck) Version() string { - return "" -} - -// ConfigSource returns the source of the configuration of the JMXCheck -func (c *JMXCheck) ConfigSource() string { - return c.source -} - -// InitConfig returns the init_config in YAML or JSON of the JMXCheck -func (c *JMXCheck) InitConfig() string { - return c.initConfig -} - -// InstanceConfig returns the metric config in YAML or JSON of the JMXCheck -func (c *JMXCheck) InstanceConfig() string { - return c.instanceConfig -} - -// Configure configures this JMXCheck, setting InitConfig and InstanceConfig -func (c *JMXCheck) Configure(senderManager sender.SenderManager, integrationConfigDigest uint64, config integration.Data, initConfig integration.Data, source string) error { - c.initConfig = string(config) - c.instanceConfig = string(initConfig) - return nil -} - -// Interval returns the scheduling time for the check (0 for JMXCheck) -func (c *JMXCheck) Interval() time.Duration { - return 0 -} - -// ID provides a unique identifier for this JMXCheck instance -func (c *JMXCheck) ID() checkid.ID { - return c.id -} - -// IsTelemetryEnabled returns if telemetry is enabled for this JMXCheck -func (c *JMXCheck) IsTelemetryEnabled() bool { - return c.telemetry -} - -// GetWarnings returns the last warning registered by this JMXCheck (currently an empty slice) -func (c *JMXCheck) GetWarnings() []error { - return []error{} -} - -// GetSenderStats returns the stats from the last run of this JMXCheck -func (c *JMXCheck) GetSenderStats() (stats.SenderStats, error) { - return stats.NewSenderStats(), nil -} - -// GetDiagnoses returns the diagnoses cached in last run or diagnose explicitly -func (c *JMXCheck) GetDiagnoses() ([]diagnosis.Diagnosis, error) { - return nil, nil -} diff --git a/pkg/collector/corechecks/embed/jmx/loader.go b/pkg/collector/corechecks/embed/jmx/loader.go deleted file mode 100644 index 9783adc56e15c..0000000000000 --- a/pkg/collector/corechecks/embed/jmx/loader.go +++ /dev/null @@ -1,87 +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 jmx - -package jmx - -import ( - "errors" - - yaml "gopkg.in/yaml.v2" - - "github.com/DataDog/datadog-agent/comp/agent/jmxlogger" - "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/collector/check" - "github.com/DataDog/datadog-agent/pkg/collector/loaders" - "github.com/DataDog/datadog-agent/pkg/util/log" -) - -// JMXCheckLoader is a specific loader for checks living in this package -type JMXCheckLoader struct{} - -// NewJMXCheckLoader creates a loader for go checks -func NewJMXCheckLoader() (*JMXCheckLoader, error) { - return &JMXCheckLoader{}, nil -} - -// Name returns JMX loader name -func (jl *JMXCheckLoader) Name() string { - return "jmx" -} - -// Load returns a JMX check -func (jl *JMXCheckLoader) Load(senderManager sender.SenderManager, config integration.Config, instance integration.Data) (check.Check, error) { - var c check.Check - - if !check.IsJMXInstance(config.Name, instance, config.InitConfig) { - return c, errors.New("check is not a jmx check, or unable to determine if it's so") - } - - if err := state.runner.configureRunner(instance, config.InitConfig); err != nil { - log.Errorf("jmx.loader: could not configure check: %s", err) - return c, err - } - - // Validate common instance structure - commonOptions := integration.CommonInstanceConfig{} - err := yaml.Unmarshal(instance, &commonOptions) - if err != nil { - log.Debugf("jmx.loader: invalid instance for check %s: %s", config.Name, err) - } - - cf := integration.Config{ - ADIdentifiers: config.ADIdentifiers, - ServiceID: config.ServiceID, - InitConfig: config.InitConfig, - Instances: []integration.Data{instance}, - LogsConfig: config.LogsConfig, - MetricConfig: config.MetricConfig, - Name: config.Name, - Provider: config.Provider, - } - c = newJMXCheck(senderManager, cf, config.Source) - - return c, err -} - -func (jl *JMXCheckLoader) String() string { - return "JMX Check Loader" -} - -// InitRunner inits the runner and injects the dogstatsd server component -func InitRunner(server dogstatsdServer.Component, logger jmxlogger.Component) { - state.runner.initRunner(server, logger) -} - -func init() { - factory := func(sender.SenderManager) (check.Loader, error) { - return NewJMXCheckLoader() - } - - loaders.RegisterLoader(10, factory) -} diff --git a/pkg/collector/corechecks/embed/jmx/loader_test.go b/pkg/collector/corechecks/embed/jmx/loader_test.go deleted file mode 100644 index 9a1486ab8ca23..0000000000000 --- a/pkg/collector/corechecks/embed/jmx/loader_test.go +++ /dev/null @@ -1,84 +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 jmx - -package jmx - -import ( - "context" - "errors" - "path/filepath" - "runtime" - "testing" - - "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/collector/check" -) - -func getFile() (string, error) { - _, fileName, _, ok := runtime.Caller(1) - if !ok { - return "", errors.New("could not get current (caller) file") - } - return fileName, nil -} - -func TestLoadCheckConfig(t *testing.T) { - ctx := context.Background() - - InitRunner(nil, nil) - - jl, err := NewJMXCheckLoader() - assert.Nil(t, err) - assert.NotNil(t, jl) - - f, err := getFile() - if err != nil { - t.FailNow() - } - - d := filepath.Dir(f) - - paths := []string{filepath.Join(d, "fixtures/")} - providers.ResetReader(paths) - fp := providers.NewFileConfigProvider() - assert.NotNil(t, fp) - - cfgs, err := fp.Collect(ctx) - assert.Nil(t, err) - assert.Len(t, cfgs, 5) - - checks := []check.Check{} - numOtherInstances := 0 - - for _, cfg := range cfgs { - for _, instance := range cfg.Instances { - if loadedCheck, err := jl.Load(aggregator.NewNoOpSenderManager(), cfg, instance); err == nil { - checks = append(checks, loadedCheck) - } else { - numOtherInstances++ - } - } - } - - // should be five valid JMX instances and one non-JMX instance - assert.Len(t, checks, 5) - assert.Equal(t, numOtherInstances, 2) - - for _, cfg := range cfgs { - found := false - for _, c := range checks { - if c.String() == cfg.Name { - found = true - break - } - } - assert.True(t, found) - } -} diff --git a/pkg/config/config_template.yaml b/pkg/config/config_template.yaml index 1ac3ba0b2906f..7a6494a28bb8b 100644 --- a/pkg/config/config_template.yaml +++ b/pkg/config/config_template.yaml @@ -478,16 +478,21 @@ api_key: # # azure_hostname_style: "os" -## @param flare_stripped_keys - list of strings - optional -## @env DD_FLARE_STRIPPED_KEYS - space separated list of strings - optional -## By default, the Agent removes known sensitive keys from Agent and Integrations yaml configs before -## including them in the flare. -## Use this parameter to define additional sensitive keys that the Agent should scrub from -## the yaml files included in the flare. -# -# flare_stripped_keys: -# - "sensitive_key_1" -# - "sensitive_key_2" +## @param scrubber - custom object - optional +## Configuration for scrubbing sensitive information from the Agent's logs, configuration and flares. +# +# scrubber: +# + ## @param scrubber.additional_keys - list of strings - optional + ## @env DD_SCRUBBER_ADDITIONAL_KEYS - space-separated list of strings - optional + ## By default, the Agent removes known sensitive keys from Agent and integrations YAML configs before + ## including them in the flare. + ## Use this parameter to define additional sensitive keys that the Agent should scrub from + ## the YAML files included in the flare. + # + # additional_keys: + # - "sensitive_key_1" + # - "sensitive_key_2" ## @param no_proxy_nonexact_match - boolean - optional - default: false ## @env DD_NO_PROXY_NONEXACT_MATCH - boolean - optional - default: false diff --git a/pkg/config/logs/go.mod b/pkg/config/logs/go.mod index 806d012dce7bd..ec494d2d6e72d 100644 --- a/pkg/config/logs/go.mod +++ b/pkg/config/logs/go.mod @@ -6,7 +6,6 @@ replace ( github.com/DataDog/datadog-agent/pkg/config/model => ../model/ github.com/DataDog/datadog-agent/pkg/util/log => ../../util/log/ github.com/DataDog/datadog-agent/pkg/util/scrubber => ../../util/scrubber/ - ) require ( @@ -20,16 +19,17 @@ require ( require ( github.com/DataDog/viper v1.13.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect - github.com/fsnotify/fsnotify v1.4.7 // indirect + github.com/fsnotify/fsnotify v1.7.0 // indirect + github.com/google/go-cmp v0.6.0 // indirect github.com/hashicorp/hcl v1.0.0 // 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/spf13/afero v1.1.2 // indirect - github.com/spf13/cast v1.3.0 // indirect + github.com/spf13/cast v1.5.1 // indirect github.com/spf13/jwalterweatherman v1.0.0 // indirect - github.com/spf13/pflag v1.0.3 // indirect + github.com/spf13/pflag v1.0.5 // indirect go.uber.org/atomic v1.11.0 // indirect golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect golang.org/x/sys v0.19.0 // indirect diff --git a/pkg/config/logs/go.sum b/pkg/config/logs/go.sum index 620036b03d2c9..9b9c2ec9fe177 100644 --- a/pkg/config/logs/go.sum +++ b/pkg/config/logs/go.sum @@ -34,8 +34,11 @@ github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZm 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/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= +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= @@ -57,6 +60,8 @@ github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ 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.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= @@ -78,11 +83,13 @@ github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQL 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 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= 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 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= 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/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= @@ -121,6 +128,8 @@ github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40T 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/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= @@ -129,12 +138,14 @@ github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4k 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 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8= 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/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 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg= 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= diff --git a/pkg/config/logs/log.go b/pkg/config/logs/log.go index 269b4b4d3e0f8..5649b0a3cac8f 100644 --- a/pkg/config/logs/log.go +++ b/pkg/config/logs/log.go @@ -15,14 +15,16 @@ import ( "net/url" "os" "path/filepath" + "slices" "strconv" "strings" "time" + "github.com/cihub/seelog" + pkgconfigmodel "github.com/DataDog/datadog-agent/pkg/config/model" "github.com/DataDog/datadog-agent/pkg/util/log" "github.com/DataDog/datadog-agent/pkg/util/scrubber" - "github.com/cihub/seelog" seelogCfg "github.com/DataDog/datadog-agent/pkg/config/logs/internal/seelog" ) @@ -108,10 +110,25 @@ func SetupLogger(loggerName LoggerName, logLevel, logFile, syslogURI string, sys } _ = seelog.ReplaceLogger(loggerInterface) log.SetupLogger(loggerInterface, seelogLogLevel) - scrubber.AddStrippedKeys(cfg.GetStringSlice("flare_stripped_keys")) + flareStrippedKeys := cfg.GetStringSlice("flare_stripped_keys") + if len(flareStrippedKeys) > 0 { + log.Warn("flare_stripped_keys is deprecated, please use scrubber.additional_keys instead.") + } + scrubber.AddStrippedKeys(mergeAdditionalKeysToScrubber( + flareStrippedKeys, + cfg.GetStringSlice("scrubber.additional_keys"))) return nil } +// mergeAdditionalKeysToScrubber merges multiple slices of keys into a single slice +func mergeAdditionalKeysToScrubber(elems ...[]string) []string { + set := []string{} + for _, elem := range elems { + set = append(set, elem...) + } + return slices.Compact(set) +} + // SetupJMXLogger sets up a logger with JMX logger name and log level // if a non empty logFile is provided, it will also log to the file // a non empty syslogURI will enable syslog, and format them following RFC 5424 if specified diff --git a/pkg/config/logs/log_test.go b/pkg/config/logs/log_test.go index 6edd303facf48..08dfcea94719c 100644 --- a/pkg/config/logs/log_test.go +++ b/pkg/config/logs/log_test.go @@ -8,12 +8,15 @@ package logs import ( "bufio" "bytes" + "strings" "testing" "github.com/cihub/seelog" "github.com/stretchr/testify/assert" seelogCfg "github.com/DataDog/datadog-agent/pkg/config/logs/internal/seelog" + pkgconfigmodel "github.com/DataDog/datadog-agent/pkg/config/model" + "github.com/DataDog/datadog-agent/pkg/util/scrubber" ) func TestExtractShortPathFromFullPath(t *testing.T) { @@ -102,3 +105,46 @@ func BenchmarkLogFormatWithoutContextFormatting(b *testing.B) { func BenchmarkLogFormatWithContextFormatting(b *testing.B) { benchmarkLogFormatWithContext("%Date(%s) | %LEVEL | (%ShortFilePath:%Line in %FuncShort) | %Msg %ExtraJSONContext", b) } + +func TestMergedKeys(t *testing.T) { + // Test that the merged keys are correctly computed + s1 := []string{"foo", "bar"} + s2 := []string{"bar", "buzz"} + assert.Equal(t, []string{"foo", "bar", "buzz"}, mergeAdditionalKeysToScrubber(s1, s2)) +} + +func TestENVAdditionalKeysToScrubber(t *testing.T) { + // Test that the scrubber is correctly configured with the expected keys + cfg := pkgconfigmodel.NewConfig("test", "DD", strings.NewReplacer(".", "_")) + + cfg.SetWithoutSource("scrubber.additional_keys", []string{"yet_another_key"}) + cfg.SetWithoutSource("flare_stripped_keys", []string{"some_other_key"}) + + pathDir := t.TempDir() + + // Add a log file at the end of pathDir string + pathDir = pathDir + "/tests.log" + + SetupLogger( + "TestENVAdditionalKeysToScrubberLogger", + "info", + pathDir, + "", + false, + false, + false, + cfg) + + stringToScrub := `api_key: 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' +some_other_key: 'bbbb' +app_key: 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacccc' +yet_another_key: 'dddd'` + + scrubbed, err := scrubber.ScrubYamlString(stringToScrub) + assert.Nil(t, err) + expected := `api_key: '***************************aaaaa' +some_other_key: "********" +app_key: '***********************************acccc' +yet_another_key: "********"` + assert.YAMLEq(t, expected, scrubbed) +} diff --git a/pkg/config/setup/config.go b/pkg/config/setup/config.go index 8b5031395a814..fe40c02e6becb 100644 --- a/pkg/config/setup/config.go +++ b/pkg/config/setup/config.go @@ -382,6 +382,7 @@ func InitConfig(config pkgconfigmodel.Config) { // Yaml keys which values are stripped from flare config.BindEnvAndSetDefault("flare_stripped_keys", []string{}) + config.BindEnvAndSetDefault("scrubber.additional_keys", []string{}) // Agent GUI access port config.BindEnvAndSetDefault("GUI_port", defaultGuiPort) @@ -1334,6 +1335,7 @@ func InitConfig(config pkgconfigmodel.Config) { setupHighAvailability(config) // Updater configuration + config.BindEnvAndSetDefault("updater.remote_updates", false) config.BindEnv("updater.registry") } diff --git a/pkg/collector/corechecks/embed/jmx/fixtures/cassandra.yaml b/pkg/jmxfetch/fixtures/cassandra.yaml similarity index 100% rename from pkg/collector/corechecks/embed/jmx/fixtures/cassandra.yaml rename to pkg/jmxfetch/fixtures/cassandra.yaml diff --git a/pkg/collector/corechecks/embed/jmx/fixtures/hazelcast.yaml b/pkg/jmxfetch/fixtures/hazelcast.yaml similarity index 100% rename from pkg/collector/corechecks/embed/jmx/fixtures/hazelcast.yaml rename to pkg/jmxfetch/fixtures/hazelcast.yaml diff --git a/pkg/collector/corechecks/embed/jmx/fixtures/jmx.yaml b/pkg/jmxfetch/fixtures/jmx.yaml similarity index 100% rename from pkg/collector/corechecks/embed/jmx/fixtures/jmx.yaml rename to pkg/jmxfetch/fixtures/jmx.yaml diff --git a/pkg/collector/corechecks/embed/jmx/fixtures/jmx_alt.yaml b/pkg/jmxfetch/fixtures/jmx_alt.yaml similarity index 100% rename from pkg/collector/corechecks/embed/jmx/fixtures/jmx_alt.yaml rename to pkg/jmxfetch/fixtures/jmx_alt.yaml diff --git a/pkg/collector/corechecks/embed/jmx/fixtures/kafka.yaml b/pkg/jmxfetch/fixtures/kafka.yaml similarity index 100% rename from pkg/collector/corechecks/embed/jmx/fixtures/kafka.yaml rename to pkg/jmxfetch/fixtures/kafka.yaml diff --git a/pkg/collector/corechecks/embed/jmx/runner.go b/pkg/jmxfetch/runner.go similarity index 91% rename from pkg/collector/corechecks/embed/jmx/runner.go rename to pkg/jmxfetch/runner.go index 8890b6d33baa4..4d1767c0c5a4d 100644 --- a/pkg/collector/corechecks/embed/jmx/runner.go +++ b/pkg/jmxfetch/runner.go @@ -5,7 +5,7 @@ //go:build jmx -package jmx +package jmxfetch import ( "time" @@ -14,17 +14,16 @@ import ( "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" dogstatsdServer "github.com/DataDog/datadog-agent/comp/dogstatsd/server" "github.com/DataDog/datadog-agent/pkg/config" - "github.com/DataDog/datadog-agent/pkg/jmxfetch" jmxStatus "github.com/DataDog/datadog-agent/pkg/status/jmx" ) type runner struct { - jmxfetch *jmxfetch.JMXFetch + jmxfetch *JMXFetch started bool } func (r *runner) initRunner(server dogstatsdServer.Component, logger jmxlogger.Component) { - r.jmxfetch = jmxfetch.NewJMXFetch(logger) + r.jmxfetch = NewJMXFetch(logger) r.jmxfetch.LogLevel = config.Datadog.GetString("log_level") r.jmxfetch.DSD = server } diff --git a/pkg/collector/corechecks/embed/jmx/runner_test.go b/pkg/jmxfetch/runner_test.go similarity index 99% rename from pkg/collector/corechecks/embed/jmx/runner_test.go rename to pkg/jmxfetch/runner_test.go index fbc4567362160..854f4e177107f 100644 --- a/pkg/collector/corechecks/embed/jmx/runner_test.go +++ b/pkg/jmxfetch/runner_test.go @@ -5,7 +5,7 @@ //go:build jmx -package jmx +package jmxfetch import ( "testing" diff --git a/pkg/jmxfetch/scheduler.go b/pkg/jmxfetch/scheduler.go new file mode 100644 index 0000000000000..a17c4c484fc76 --- /dev/null +++ b/pkg/jmxfetch/scheduler.go @@ -0,0 +1,92 @@ +// 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 jmx + +package jmxfetch + +import ( + "fmt" + + "github.com/DataDog/datadog-agent/comp/core/autodiscovery" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" + "github.com/DataDog/datadog-agent/pkg/collector/check" + "github.com/DataDog/datadog-agent/pkg/util/containers" + "github.com/DataDog/datadog-agent/pkg/util/log" +) + +// JmxScheduler receives AD integration configs and updates JMXFetch configuration. +type JmxScheduler struct { + configs map[string][]string +} + +func newJmxScheduler() *JmxScheduler { + return &JmxScheduler{ + configs: make(map[string][]string), + } +} + +// Schedule implements Scheduler#Schedule. +func (s *JmxScheduler) Schedule(configs []integration.Config) { + for _, config := range configs { + if !config.IsCheckConfig() || config.HasFilter(containers.MetricsFilter) { + continue + } + + digest := config.Digest() + + for _, instance := range config.Instances { + if !check.IsJMXInstance(config.Name, instance, config.InitConfig) { + continue + } + + c := integration.Config{ + ADIdentifiers: config.ADIdentifiers, + ServiceID: config.ServiceID, + InitConfig: config.InitConfig, + Instances: []integration.Data{instance}, + LogsConfig: config.LogsConfig, + MetricConfig: config.MetricConfig, + Name: config.Name, + Provider: config.Provider, + } + + id := fmt.Sprintf("%v_%x", c.Name, c.IntDigest()) + log.Debugf("Scheduling jmxfetch config: %v: %q", id, c.String()) + + if err := state.runner.configureRunner(instance, config.InitConfig); err != nil { + log.Errorf("Could not configure jmxfetch for %v: %v", id, err) + continue + } + + s.configs[digest] = append(s.configs[digest], id) + + if err := state.scheduleConfig(id, c); err != nil { + log.Errorf("Could not schedule jmxfetch config: %v: %v", id, err) + } + } + } +} + +// Unschedule removes check configurations from jmxfetch state. +func (s *JmxScheduler) Unschedule(configs []integration.Config) { + for _, config := range configs { + digest := config.Digest() + for _, id := range s.configs[digest] { + log.Debugf("Unschedling jmxfetch config: %v", id) + state.unscheduleConfig(id) + } + delete(s.configs, digest) + } +} + +// Stop implements Scheduler#Stop. +func (s *JmxScheduler) Stop() { +} + +// RegisterWith adds the JMX scheduler to receive events from the autodiscovery. +func RegisterWith(ac autodiscovery.Component) { + ac.AddScheduler("jmx", newJmxScheduler(), true) +} diff --git a/pkg/collector/corechecks/embed/jmx/state.go b/pkg/jmxfetch/state.go similarity index 81% rename from pkg/collector/corechecks/embed/jmx/state.go rename to pkg/jmxfetch/state.go index 16adda3c3b9f3..0526474c9365a 100644 --- a/pkg/collector/corechecks/embed/jmx/state.go +++ b/pkg/jmxfetch/state.go @@ -5,14 +5,16 @@ //go:build jmx -package jmx +package jmxfetch import ( "fmt" "sync" "time" + "github.com/DataDog/datadog-agent/comp/agent/jmxlogger" "github.com/DataDog/datadog-agent/comp/core/autodiscovery/integration" + dogstatsdServer "github.com/DataDog/datadog-agent/comp/dogstatsd/server" "github.com/DataDog/datadog-agent/pkg/collector/check" "github.com/DataDog/datadog-agent/pkg/util/cache" "github.com/DataDog/datadog-agent/pkg/util/log" @@ -32,7 +34,7 @@ var state = jmxState{ lock: &sync.Mutex{}, } -func (s *jmxState) scheduleCheck(c *JMXCheck) error { +func (s *jmxState) scheduleConfig(id string, config integration.Config) error { s.lock.Lock() defer s.lock.Unlock() if !s.runner.started { @@ -41,14 +43,14 @@ func (s *jmxState) scheduleCheck(c *JMXCheck) error { return err } } - s.configs.Add(string(c.id), c.config) + s.configs.Add(id, config) return nil } -func (s *jmxState) unscheduleCheck(c *JMXCheck) { +func (s *jmxState) unscheduleConfig(id string) { s.lock.Lock() defer s.lock.Unlock() - s.configs.Remove(string(c.id)) + s.configs.Remove(id) } func (s *jmxState) addScheduledConfig(c integration.Config) { @@ -91,3 +93,8 @@ func StopJmxfetch() { log.Errorf("failure to kill jmxfetch process: %s", err) } } + +// InitRunner inits the runner and injects the dogstatsd server component +func InitRunner(server dogstatsdServer.Component, logger jmxlogger.Component) { + state.runner.initRunner(server, logger) +} diff --git a/pkg/collector/corechecks/embed/jmx/stub.go b/pkg/jmxfetch/stub.go similarity index 61% rename from pkg/collector/corechecks/embed/jmx/stub.go rename to pkg/jmxfetch/stub.go index 6e6b074c5b8ae..23916b5c87632 100644 --- a/pkg/collector/corechecks/embed/jmx/stub.go +++ b/pkg/jmxfetch/stub.go @@ -5,12 +5,20 @@ //go:build !jmx -package jmx +package jmxfetch import ( "github.com/DataDog/datadog-agent/comp/agent/jmxlogger" + "github.com/DataDog/datadog-agent/comp/core/autodiscovery" dogstatsdServer "github.com/DataDog/datadog-agent/comp/dogstatsd/server" ) // InitRunner is a stub for builds that do not include jmx func InitRunner(_ dogstatsdServer.Component, _ jmxlogger.Component) {} + +// RegisterWith adds the JMX scheduler to receive events from the autodiscovery. +// Noop version for builds without jmx. +func RegisterWith(_ autodiscovery.Component) {} + +// StopJmxfetch does nothing when the agent does not ship jmx +func StopJmxfetch() {} diff --git a/pkg/logs/client/http/destination.go b/pkg/logs/client/http/destination.go index f9a105c22c06a..a31b159a850e0 100644 --- a/pkg/logs/client/http/destination.go +++ b/pkg/logs/client/http/destination.go @@ -288,6 +288,8 @@ func (d *Destination) unconditionalSend(payload *message.Payload) (err error) { } req.Header.Set("DD-API-KEY", d.endpoint.GetAPIKey()) req.Header.Set("Content-Type", d.contentType) + req.Header.Set("User-Agent", fmt.Sprintf("datadog-agent/%s", version.AgentVersion)) + if payload.Encoding != "" { req.Header.Set("Content-Encoding", payload.Encoding) } diff --git a/pkg/logs/client/http/destination_test.go b/pkg/logs/client/http/destination_test.go index 9fd25fce2a631..bf8e6620f1346 100644 --- a/pkg/logs/client/http/destination_test.go +++ b/pkg/logs/client/http/destination_test.go @@ -7,6 +7,7 @@ package http import ( "errors" + "regexp" "strconv" "strings" "testing" @@ -209,6 +210,16 @@ func TestDestinationSendsTimestampHeaders(t *testing.T) { assert.GreaterOrEqual(t, ddCurrentTimestamp, currentTimestamp) } +func TestDestinationSendsUserAgent(t *testing.T) { + cfg := getNewConfig() + server := NewTestServer(200, cfg) + defer server.httpServer.Close() + + err := server.Destination.unconditionalSend(&message.Payload{Encoded: []byte("payload")}) + assert.Nil(t, err) + assert.Regexp(t, regexp.MustCompile("datadog-agent/.*"), server.request.Header.Values("user-agent")) +} + func TestDestinationConcurrentSends(t *testing.T) { cfg := getNewConfig() // make the server return 500, so the payloads get stuck retrying diff --git a/pkg/sbom/telemetry/telemetry.go b/pkg/sbom/telemetry/telemetry.go index e12166a669aa9..b941c941631c3 100644 --- a/pkg/sbom/telemetry/telemetry.go +++ b/pkg/sbom/telemetry/telemetry.go @@ -84,6 +84,64 @@ var ( "SBOM total number of cache misses during SBOM collection", commonOpts, ) + + queueDepth = telemetry.NewGaugeWithOpts( + subsystem, + "queue_depth", + []string{}, + "SBOM queue depth", + commonOpts, + ) + + queueAdds = telemetry.NewCounterWithOpts( + subsystem, + "queue_adds", + []string{}, + "SBOM queue adds", + commonOpts, + ) + + queueLatency = telemetry.NewHistogramWithOpts( + subsystem, + "queue_latency", + []string{}, + "SBOM queue latency in seconds", + []float64{1, 15, 60, 120, 600, 1200}, + commonOpts, + ) + + workDuration = telemetry.NewHistogramWithOpts( + subsystem, + "queue_work_duration", + []string{}, + "SBOM queue latency in seconds", + prometheus.DefBuckets, + commonOpts, + ) + + unfinishedWork = telemetry.NewGaugeWithOpts( + subsystem, + "queue_unfinished_work", + []string{}, + "SBOM queue unfinished work in seconds", + commonOpts, + ) + + longestRunningProcessor = telemetry.NewGaugeWithOpts( + subsystem, + "queue_longest_running_processor", + []string{}, + "SBOM queue longest running processor in seconds", + commonOpts, + ) + + queueRetries = telemetry.NewCounterWithOpts( + subsystem, + "queue_retries", + []string{}, + "SBOM queue retries", + commonOpts, + ) ) // QueueMetricProvider is a workqueue.MetricsProvider that provides metrics for the SBOM queue @@ -131,79 +189,35 @@ func (l histgramWrapper) Observe(value float64) { // NewDepthMetric creates a new depth metric func (QueueMetricProvider) NewDepthMetric(string) workqueue.GaugeMetric { - return gaugeWrapper{telemetry.NewGaugeWithOpts( - subsystem, - "queue_depth", - []string{}, - "SBOM queue depth", - commonOpts, - )} + return gaugeWrapper{queueDepth} } // NewAddsMetric creates a new adds metric func (QueueMetricProvider) NewAddsMetric(string) workqueue.CounterMetric { - return counterWrapper{telemetry.NewCounterWithOpts( - subsystem, - "queue_adds", - []string{}, - "SBOM queue adds", - commonOpts, - )} + return counterWrapper{queueAdds} } // NewLatencyMetric creates a new latency metric func (QueueMetricProvider) NewLatencyMetric(string) workqueue.HistogramMetric { - return histgramWrapper{telemetry.NewHistogramWithOpts( - subsystem, - "queue_latency", - []string{}, - "SBOM queue latency in seconds", - []float64{1, 15, 60, 120, 600, 1200}, - commonOpts, - )} + return histgramWrapper{queueLatency} } // NewWorkDurationMetric creates a new work duration metric func (QueueMetricProvider) NewWorkDurationMetric(string) workqueue.HistogramMetric { - return histgramWrapper{telemetry.NewHistogramWithOpts( - subsystem, - "queue_work_duration", - []string{}, - "SBOM queue latency in seconds", - prometheus.DefBuckets, - commonOpts, - )} + return histgramWrapper{workDuration} } // NewUnfinishedWorkSecondsMetric creates a new unfinished work seconds metric func (QueueMetricProvider) NewUnfinishedWorkSecondsMetric(string) workqueue.SettableGaugeMetric { - return gaugeWrapper{telemetry.NewGaugeWithOpts( - subsystem, - "queue_unfinished_work", - []string{}, - "SBOM queue unfinished work in seconds", - commonOpts, - )} + return gaugeWrapper{unfinishedWork} } // NewLongestRunningProcessorSecondsMetric creates a new longest running processor seconds metric func (QueueMetricProvider) NewLongestRunningProcessorSecondsMetric(string) workqueue.SettableGaugeMetric { - return gaugeWrapper{telemetry.NewGaugeWithOpts( - subsystem, - "queue_longest_running_processor", - []string{}, - "SBOM queue longest running processor in seconds", - commonOpts, - )} + return gaugeWrapper{longestRunningProcessor} } // NewRetriesMetric creates a new retries metric func (QueueMetricProvider) NewRetriesMetric(string) workqueue.CounterMetric { - return counterWrapper{telemetry.NewCounterWithOpts( - subsystem, - "queue_retries", - []string{}, - "SBOM queue retries", - commonOpts, - )} + return counterWrapper{queueRetries} } diff --git a/pkg/security/metrics/metrics_windows.go b/pkg/security/metrics/metrics_windows.go index 77ec45b25a8f7..b8d9564cb79e5 100644 --- a/pkg/security/metrics/metrics_windows.go +++ b/pkg/security/metrics/metrics_windows.go @@ -59,6 +59,14 @@ var ( //Tags: - MetricWindowsFileIDRename29 = newRuntimeMetric(".windows.file.id_rename29") + //MetricWindowsFileCreateSkippedDiscardedPaths is the metric for counting file create notifications for skipped discarded paths + //Tags: - + MetricWindowsFileCreateSkippedDiscardedPaths = newRuntimeMetric(".windows.file.create_skipped_discarded_paths") + + //MetricWindowsFileCreateSkippedDiscardedBasenames is the metric for counting file create notifications for skipped discarded basenames + //Tags: - + MetricWindowsFileCreateSkippedDiscardedBasenames = newRuntimeMetric(".windows.file.create_skipped_discarded_basenames") + //MetricWindowsRegCreateKey is the metric for counting registry key create notifications //Tags: - MetricWindowsRegCreateKey = newRuntimeMetric(".windows.registry.create_key") diff --git a/pkg/collector/corechecks/embed/jmx/state_nojmx.go b/pkg/security/probe/discarders_windows.go similarity index 60% rename from pkg/collector/corechecks/embed/jmx/state_nojmx.go rename to pkg/security/probe/discarders_windows.go index 7cab67ddfa1a1..d5a2702e3ddaa 100644 --- a/pkg/collector/corechecks/embed/jmx/state_nojmx.go +++ b/pkg/security/probe/discarders_windows.go @@ -3,12 +3,9 @@ // This product includes software developed at Datadog (https://www.datadoghq.com/). // Copyright 2016-present Datadog, Inc. -//go:build !jmx - -//nolint:revive // TODO(APL) Fix revive linter -package jmx - -// StopJmxfetch does nothing when the agent does not ship jmx -func StopJmxfetch() { +package probe +func init() { + SupportedDiscarders["create.file.path"] = true + SupportedDiscarders["create.file.name"] = true } diff --git a/pkg/security/probe/probe_kernel_file_windows.go b/pkg/security/probe/probe_kernel_file_windows.go index 1ff976cf51dcd..0b06d315a1095 100644 --- a/pkg/security/probe/probe_kernel_file_windows.go +++ b/pkg/security/probe/probe_kernel_file_windows.go @@ -7,7 +7,9 @@ package probe import ( + "errors" "fmt" + "path/filepath" "strconv" "strings" @@ -42,7 +44,7 @@ const ( type fileObjectPointer uint64 var ( - filePathResolver = make(map[fileObjectPointer]string, 0) + errDiscardedPath = errors.New("discarded path") ) /* @@ -155,12 +157,23 @@ func (wp *WindowsProbe) parseCreateHandleArgs(e *etw.DDEventRecord) (*createHand } else { return nil, fmt.Errorf("unknown version %v", e.EventHeader.EventDescriptor.Version) } - if _, ok := filePathResolver[ca.fileObject]; ok { - wp.stats.filePathOverwrites++ - } else { - wp.stats.filePathNewWrites++ + + if _, ok := wp.discardedPaths.Get(ca.fileName); ok { + wp.stats.fileCreateSkippedDiscardedPaths++ + return nil, errDiscardedPath + } + + // not amazing to double compute the basename.. + basename := filepath.Base(ca.fileName) + if _, ok := wp.discardedBasenames.Get(basename); ok { + wp.stats.fileCreateSkippedDiscardedBasenames++ + return nil, errDiscardedPath } - filePathResolver[ca.fileObject] = ca.fileName + + wp.filePathResolverLock.Lock() + defer wp.filePathResolverLock.Unlock() + wp.filePathResolver[ca.fileObject] = ca.fileName + return ca, nil } @@ -220,7 +233,7 @@ type setInformationArgs struct { } // nolint: unused -func parseInformationArgs(e *etw.DDEventRecord) (*setInformationArgs, error) { +func (wp *WindowsProbe) parseInformationArgs(e *etw.DDEventRecord) (*setInformationArgs, error) { sia := &setInformationArgs{ DDEventHeader: e.EventHeader, } @@ -243,9 +256,13 @@ func parseInformationArgs(e *etw.DDEventRecord) (*setInformationArgs, error) { } else { return nil, fmt.Errorf("unknown version number %v", e.EventHeader.EventDescriptor.Version) } - if s, ok := filePathResolver[fileObjectPointer(sia.fileObject)]; ok { + + wp.filePathResolverLock.Lock() + defer wp.filePathResolverLock.Unlock() + if s, ok := wp.filePathResolver[fileObjectPointer(sia.fileObject)]; ok { sia.fileName = s } + return sia, nil } @@ -291,7 +308,7 @@ type closeArgs cleanupArgs // nolint: unused type flushArgs cleanupArgs -func parseCleanupArgs(e *etw.DDEventRecord) (*cleanupArgs, error) { +func (wp *WindowsProbe) parseCleanupArgs(e *etw.DDEventRecord) (*cleanupArgs, error) { ca := &cleanupArgs{ DDEventHeader: e.EventHeader, } @@ -310,16 +327,19 @@ func parseCleanupArgs(e *etw.DDEventRecord) (*cleanupArgs, error) { } else { return nil, fmt.Errorf("unknown version number %v", e.EventHeader.EventDescriptor.Version) } - if s, ok := filePathResolver[ca.fileObject]; ok { - ca.fileName = s + wp.filePathResolverLock.Lock() + defer wp.filePathResolverLock.Unlock() + if s, ok := wp.filePathResolver[ca.fileObject]; ok { + ca.fileName = s } + return ca, nil } // nolint: unused -func parseCloseArgs(e *etw.DDEventRecord) (*closeArgs, error) { - ca, err := parseCleanupArgs(e) +func (wp *WindowsProbe) parseCloseArgs(e *etw.DDEventRecord) (*closeArgs, error) { + ca, err := wp.parseCleanupArgs(e) if err != nil { return nil, err } @@ -327,8 +347,8 @@ func parseCloseArgs(e *etw.DDEventRecord) (*closeArgs, error) { } // nolint: unused -func parseFlushArgs(e *etw.DDEventRecord) (*flushArgs, error) { - ca, err := parseCleanupArgs(e) +func (wp *WindowsProbe) parseFlushArgs(e *etw.DDEventRecord) (*flushArgs, error) { + ca, err := wp.parseCleanupArgs(e) if err != nil { return nil, err } diff --git a/pkg/security/probe/probe_kernel_file_windows_test.go b/pkg/security/probe/probe_kernel_file_windows_test.go index 9307f4de97707..25aef4e6e36b7 100644 --- a/pkg/security/probe/probe_kernel_file_windows_test.go +++ b/pkg/security/probe/probe_kernel_file_windows_test.go @@ -16,6 +16,7 @@ import ( "time" "github.com/DataDog/datadog-agent/pkg/security/config" + lru "github.com/hashicorp/golang-lru/v2" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -33,11 +34,25 @@ func createTestProbe() (*WindowsProbe, error) { } cfg.RuntimeSecurity.FIMEnabled = true + discardedPaths, err := lru.New[string, struct{}](1 << 10) + if err != nil { + return nil, err + } + + discardedBasenames, err := lru.New[string, struct{}](1 << 10) + if err != nil { + return nil, err + } + // probe and config are provided as null. During the tests, it is assumed // that we will not access those values. wp := &WindowsProbe{ - opts: opts, - config: cfg, + opts: opts, + config: cfg, + filePathResolver: make(map[fileObjectPointer]string, 0), + regPathResolver: make(map[regObjectPointer]string, 0), + discardedPaths: discardedPaths, + discardedBasenames: discardedBasenames, } err = wp.Init() @@ -163,8 +178,9 @@ func testSimpleCreate(t *testing.T, et *etwTester, testfilename string) { select { case <-et.loopExited: return true + default: + return false } - return false }, 4*time.Second, 250*time.Millisecond, "did not get notification") stopLoop(et, &wg) @@ -232,8 +248,9 @@ func testFileOpen(t *testing.T, et *etwTester, testfilename string) { select { case <-et.loopExited: return true + default: + return false } - return false }, 4*time.Second, 250*time.Millisecond, "did not get notification") stopLoop(et, &wg) diff --git a/pkg/security/probe/probe_kernel_reg_windows.go b/pkg/security/probe/probe_kernel_reg_windows.go index 6547de91f92f9..47d7b5d7e985c 100644 --- a/pkg/security/probe/probe_kernel_reg_windows.go +++ b/pkg/security/probe/probe_kernel_reg_windows.go @@ -29,8 +29,7 @@ const ( type regObjectPointer uint64 var ( - regPathResolver = make(map[regObjectPointer]string, 0) - regprefix = `\REGISTRY` + regprefix = `\REGISTRY` ) /* @@ -110,7 +109,7 @@ type setValueKeyArgs struct { computedFullPath string } -func parseCreateRegistryKey(e *etw.DDEventRecord) (*createKeyArgs, error) { +func (wp *WindowsProbe) parseCreateRegistryKey(e *etw.DDEventRecord) (*createKeyArgs, error) { crc := &createKeyArgs{ DDEventHeader: e.EventHeader, @@ -131,7 +130,7 @@ func parseCreateRegistryKey(e *etw.DDEventRecord) (*createKeyArgs, error) { } crc.relativeName, _, _, _ = data.ParseUnicodeString(nextOffset) - crc.computeFullPath() + wp.computeFullPath(crc) return crc, nil } @@ -150,25 +149,22 @@ func (cka *createKeyArgs) translateBasePaths() { } } } -func parseOpenRegistryKey(e *etw.DDEventRecord) (*openKeyArgs, error) { - cka, err := parseCreateRegistryKey(e) +func (wp *WindowsProbe) parseOpenRegistryKey(e *etw.DDEventRecord) (*openKeyArgs, error) { + cka, err := wp.parseCreateRegistryKey(e) if err != nil { return nil, err } return (*openKeyArgs)(cka), nil } -func (cka *createKeyArgs) computeFullPath() { - - // var regPathResolver map[regObjectPointer]string - +func (wp *WindowsProbe) computeFullPath(cka *createKeyArgs) { if strings.HasPrefix(cka.relativeName, regprefix) { cka.translateBasePaths() cka.computedFullPath = cka.relativeName - regPathResolver[cka.keyObject] = cka.relativeName + wp.regPathResolver[cka.keyObject] = cka.relativeName return } - if s, ok := regPathResolver[cka.keyObject]; ok { + if s, ok := wp.regPathResolver[cka.keyObject]; ok { cka.computedFullPath = s } var outstr string @@ -179,13 +175,13 @@ func (cka *createKeyArgs) computeFullPath() { outstr += cka.relativeName } else { - if s, ok := regPathResolver[cka.baseObject]; ok { + if s, ok := wp.regPathResolver[cka.baseObject]; ok { outstr = s + "\\" + cka.relativeName } else { outstr = cka.relativeName } } - regPathResolver[cka.keyObject] = outstr + wp.regPathResolver[cka.keyObject] = outstr cka.computedFullPath = outstr } func (cka *createKeyArgs) String() string { @@ -206,7 +202,7 @@ func (cka *openKeyArgs) String() string { return (*createKeyArgs)(cka).String() } -func parseDeleteRegistryKey(e *etw.DDEventRecord) (*deleteKeyArgs, error) { +func (wp *WindowsProbe) parseDeleteRegistryKey(e *etw.DDEventRecord) (*deleteKeyArgs, error) { dka := &deleteKeyArgs{ DDEventHeader: e.EventHeader, @@ -217,37 +213,37 @@ func parseDeleteRegistryKey(e *etw.DDEventRecord) (*deleteKeyArgs, error) { dka.keyObject = regObjectPointer(data.GetUint64(0)) dka.status = data.GetUint32(8) dka.keyName, _, _, _ = data.ParseUnicodeString(12) - if s, ok := regPathResolver[dka.keyObject]; ok { + if s, ok := wp.regPathResolver[dka.keyObject]; ok { dka.computedFullPath = s } return dka, nil } -func parseFlushKey(e *etw.DDEventRecord) (*flushKeyArgs, error) { - dka, err := parseDeleteRegistryKey(e) +func (wp *WindowsProbe) parseFlushKey(e *etw.DDEventRecord) (*flushKeyArgs, error) { + dka, err := wp.parseDeleteRegistryKey(e) if err != nil { return nil, err } return (*flushKeyArgs)(dka), nil } -func parseCloseKeyArgs(e *etw.DDEventRecord) (*closeKeyArgs, error) { - dka, err := parseDeleteRegistryKey(e) +func (wp *WindowsProbe) parseCloseKeyArgs(e *etw.DDEventRecord) (*closeKeyArgs, error) { + dka, err := wp.parseDeleteRegistryKey(e) if err != nil { return nil, err } return (*closeKeyArgs)(dka), nil } -func parseQuerySecurityKeyArgs(e *etw.DDEventRecord) (*querySecurityKeyArgs, error) { - dka, err := parseDeleteRegistryKey(e) +func (wp *WindowsProbe) parseQuerySecurityKeyArgs(e *etw.DDEventRecord) (*querySecurityKeyArgs, error) { + dka, err := wp.parseDeleteRegistryKey(e) if err != nil { return nil, err } return (*querySecurityKeyArgs)(dka), nil } -func parseSetSecurityKeyArgs(e *etw.DDEventRecord) (*setSecurityKeyArgs, error) { - dka, err := parseDeleteRegistryKey(e) +func (wp *WindowsProbe) parseSetSecurityKeyArgs(e *etw.DDEventRecord) (*setSecurityKeyArgs, error) { + dka, err := wp.parseDeleteRegistryKey(e) if err != nil { return nil, err } @@ -284,7 +280,7 @@ func (ska *setSecurityKeyArgs) String() string { return (*deleteKeyArgs)(ska).String() } -func parseSetValueKey(e *etw.DDEventRecord) (*setValueKeyArgs, error) { +func (wp *WindowsProbe) parseSetValueKey(e *etw.DDEventRecord) (*setValueKeyArgs, error) { sv := &setValueKeyArgs{ DDEventHeader: e.EventHeader, @@ -333,7 +329,7 @@ func parseSetValueKey(e *etw.DDEventRecord) (*setValueKeyArgs, error) { sv.previousData = data.Bytes(nextOffset, int(sv.previousDataSize)) - if s, ok := regPathResolver[sv.keyObject]; ok { + if s, ok := wp.regPathResolver[sv.keyObject]; ok { sv.computedFullPath = s } @@ -348,9 +344,7 @@ func (sv *setValueKeyArgs) String() string { output.WriteString(" keyObject: " + strconv.FormatUint(uint64(sv.keyObject), 16) + "\n") output.WriteString(" keyName: " + sv.keyName + "\n") output.WriteString(" valueName: " + sv.valueName + "\n") - if s, ok := regPathResolver[sv.keyObject]; ok { - output.WriteString(" resolved path: " + s + "\n") - } + output.WriteString(" computed path: " + sv.computedFullPath + "\n") //output.WriteString(" CapturedSize: " + strconv.Itoa(int(sv.capturedPreviousDataSize)) + " pvssize: " + strconv.Itoa(int(sv.previousDataSize)) + " capturedpvssize " + strconv.Itoa(int(sv.capturedPreviousDataSize)) + "\n") return output.String() diff --git a/pkg/security/probe/probe_windows.go b/pkg/security/probe/probe_windows.go index d76fc2a392ad2..3504a7f5c359e 100644 --- a/pkg/security/probe/probe_windows.go +++ b/pkg/security/probe/probe_windows.go @@ -25,12 +25,14 @@ import ( "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" "github.com/DataDog/datadog-agent/pkg/security/serializers" "github.com/DataDog/datadog-agent/pkg/util/log" "github.com/DataDog/datadog-agent/pkg/util/optional" "github.com/DataDog/datadog-agent/pkg/windowsdriver/procmon" "github.com/DataDog/datadog-go/v5/statsd" "github.com/cenkalti/backoff/v4" + lru "github.com/hashicorp/golang-lru/v2" "golang.org/x/sys/windows" ) @@ -68,8 +70,16 @@ type WindowsProbe struct { fimSession etw.Session fimwg sync.WaitGroup + // path caches + filePathResolverLock sync.Mutex + filePathResolver map[fileObjectPointer]string + regPathResolver map[regObjectPointer]string + // stats stats stats + // discarders + discardedPaths *lru.Cache[string, struct{}] + discardedBasenames *lru.Cache[string, struct{}] } type etwNotification struct { @@ -105,8 +115,8 @@ type stats struct { regSetValueKey uint64 //filePathResolver status - filePathNewWrites uint64 - filePathOverwrites uint64 + fileCreateSkippedDiscardedPaths uint64 + fileCreateSkippedDiscardedBasenames uint64 } /* @@ -261,21 +271,23 @@ func (p *WindowsProbe) setupEtw(ecb etwCallback) error { } p.stats.fileCreateNew++ case idCleanup: - if ca, err := parseCleanupArgs(e); err == nil { + if ca, err := p.parseCleanupArgs(e); err == nil { ecb(ca, e.EventHeader.ProcessID) } p.stats.fileCleanup++ case idClose: - if ca, err := parseCloseArgs(e); err == nil { + if ca, err := p.parseCloseArgs(e); err == nil { //fmt.Printf("Received Close event %d %s\n", e.EventHeader.EventDescriptor.ID, ca) ecb(ca, e.EventHeader.ProcessID) if e.EventHeader.EventDescriptor.ID == idClose { - delete(filePathResolver, ca.fileObject) + p.filePathResolverLock.Lock() + delete(p.filePathResolver, ca.fileObject) + p.filePathResolverLock.Unlock() } } p.stats.fileClose++ case idFlush: - if fa, err := parseFlushArgs(e); err == nil { + if fa, err := p.parseFlushArgs(e); err == nil { ecb(fa, e.EventHeader.ProcessID) } p.stats.fileFlush++ @@ -302,44 +314,44 @@ func (p *WindowsProbe) setupEtw(ecb etwCallback) error { case etw.DDGUID(p.regguid): switch e.EventHeader.EventDescriptor.ID { case idRegCreateKey: - if cka, err := parseCreateRegistryKey(e); err == nil { + if cka, err := p.parseCreateRegistryKey(e); err == nil { log.Tracef("Got idRegCreateKey %s", cka) ecb(cka, e.EventHeader.ProcessID) } p.stats.regCreateKey++ case idRegOpenKey: - if cka, err := parseOpenRegistryKey(e); err == nil { + if cka, err := p.parseOpenRegistryKey(e); err == nil { log.Tracef("Got idRegOpenKey %s", cka) ecb(cka, e.EventHeader.ProcessID) } p.stats.regOpenKey++ case idRegDeleteKey: - if dka, err := parseDeleteRegistryKey(e); err == nil { + if dka, err := p.parseDeleteRegistryKey(e); err == nil { log.Tracef("Got idRegDeleteKey %v", dka) ecb(dka, e.EventHeader.ProcessID) } p.stats.regDeleteKey++ case idRegFlushKey: - if dka, err := parseFlushKey(e); err == nil { + if dka, err := p.parseFlushKey(e); err == nil { log.Tracef("Got idRegFlushKey %v", dka) } p.stats.regFlushKey++ case idRegCloseKey: - if dka, err := parseCloseKeyArgs(e); err == nil { + if dka, err := p.parseCloseKeyArgs(e); err == nil { log.Tracef("Got idRegCloseKey %s", dka) - delete(regPathResolver, dka.keyObject) + delete(p.regPathResolver, dka.keyObject) } p.stats.regCloseKey++ case idQuerySecurityKey: - if dka, err := parseQuerySecurityKeyArgs(e); err == nil { + if dka, err := p.parseQuerySecurityKeyArgs(e); err == nil { log.Tracef("Got idQuerySecurityKey %v", dka.keyName) } case idSetSecurityKey: - if dka, err := parseSetSecurityKeyArgs(e); err == nil { + if dka, err := p.parseSetSecurityKeyArgs(e); err == nil { log.Tracef("Got idSetSecurityKey %v", dka.keyName) } case idRegSetValueKey: - if svk, err := parseSetValueKey(e); err == nil { + if svk, err := p.parseSetValueKey(e); err == nil { log.Tracef("Got idRegSetValueKey %s", svk) ecb(svk, e.EventHeader.ProcessID) @@ -482,6 +494,7 @@ func (p *WindowsProbe) handleETWNotification(ev *model.Event, notif etwNotificat ev.Type = uint32(model.CreateNewFileEventType) ev.CreateNewFile = model.CreateNewFileEvent{ File: model.FileEvent{ + FileObject: uint64(arg.fileObject), PathnameStr: arg.fileName, BasenameStr: filepath.Base(arg.fileName), }, @@ -579,6 +592,10 @@ func (p *WindowsProbe) Close() error { // SendStats sends statistics about the probe to Datadog func (p *WindowsProbe) SendStats() error { + p.filePathResolverLock.Lock() + fprLen := len(p.filePathResolver) + p.filePathResolverLock.Unlock() + // may need to lock here if err := p.statsdClient.Gauge(metrics.MetricWindowsProcessStart, float64(p.stats.procStart), nil, 1); err != nil { return err @@ -619,6 +636,13 @@ func (p *WindowsProbe) SendStats() error { if err := p.statsdClient.Gauge(metrics.MetricWindowsFileIDRename29, float64(p.stats.fileidRename29), nil, 1); err != nil { return err } + if err := p.statsdClient.Gauge(metrics.MetricWindowsFileCreateSkippedDiscardedPaths, float64(p.stats.fileCreateSkippedDiscardedPaths), nil, 1); err != nil { + return err + } + if err := p.statsdClient.Gauge(metrics.MetricWindowsFileCreateSkippedDiscardedBasenames, float64(p.stats.fileCreateSkippedDiscardedBasenames), nil, 1); err != nil { + return err + } + if err := p.statsdClient.Gauge(metrics.MetricWindowsRegCreateKey, float64(p.stats.regCreateKey), nil, 1); err != nil { return err } @@ -637,16 +661,10 @@ func (p *WindowsProbe) SendStats() error { if err := p.statsdClient.Gauge(metrics.MetricWindowsRegSetValue, float64(p.stats.regSetValueKey), nil, 1); err != nil { return err } - if err := p.statsdClient.Gauge(metrics.MetricWindowsSizeOfFilePathResolver, float64(len(filePathResolver)), nil, 1); err != nil { + if err := p.statsdClient.Gauge(metrics.MetricWindowsSizeOfFilePathResolver, float64(fprLen), nil, 1); err != nil { return err } - if err := p.statsdClient.Gauge(metrics.MetricWindowsSizeOfRegistryPathResolver, float64(len(regPathResolver)), nil, 1); err != nil { - return err - } - if err := p.statsdClient.Gauge(metrics.MetricWindowsFileResolverNew, float64(p.stats.filePathNewWrites), nil, 1); err != nil { - return err - } - if err := p.statsdClient.Gauge(metrics.MetricWindowsFileResolverOverwrite, float64(p.stats.filePathOverwrites), nil, 1); err != nil { + if err := p.statsdClient.Gauge(metrics.MetricWindowsSizeOfRegistryPathResolver, float64(len(p.regPathResolver)), nil, 1); err != nil { return err } return nil @@ -654,6 +672,16 @@ func (p *WindowsProbe) SendStats() error { // NewWindowsProbe instantiates a new runtime security agent probe func NewWindowsProbe(probe *Probe, config *config.Config, opts Opts) (*WindowsProbe, error) { + discardedPaths, err := lru.New[string, struct{}](1 << 10) + if err != nil { + return nil, err + } + + discardedBasenames, err := lru.New[string, struct{}](1 << 10) + if err != nil { + return nil, err + } + ctx, cancelFnc := context.WithCancel(context.Background()) p := &WindowsProbe{ @@ -667,9 +695,14 @@ func NewWindowsProbe(probe *Probe, config *config.Config, opts Opts) (*WindowsPr onStop: make(chan *procmon.ProcessStopNotification), onError: make(chan bool), onETWNotification: make(chan etwNotification), + + filePathResolver: make(map[fileObjectPointer]string, 0), + regPathResolver: make(map[regObjectPointer]string, 0), + + discardedPaths: discardedPaths, + discardedBasenames: discardedBasenames, } - var err error p.Resolvers, err = resolvers.NewResolvers(config, p.statsdClient, probe.scrubber) if err != nil { return nil, err @@ -692,11 +725,31 @@ func (p *WindowsProbe) ApplyRuleSet(rs *rules.RuleSet) (*kfilters.ApplyRuleSetRe // FlushDiscarders invalidates all the discarders func (p *WindowsProbe) FlushDiscarders() error { + p.discardedPaths.Purge() + p.discardedBasenames.Purge() return nil } // OnNewDiscarder handles discarders -func (p *WindowsProbe) OnNewDiscarder(_ *rules.RuleSet, _ *model.Event, _ eval.Field, _ eval.EventType) { +func (p *WindowsProbe) OnNewDiscarder(_ *rules.RuleSet, ev *model.Event, field eval.Field, evalType eval.EventType) { + if evalType != "create" { + return + } + + if field == "create.file.path" { + path := ev.CreateNewFile.File.PathnameStr + seclog.Debugf("new discarder for `%s` -> `%v`", field, path) + p.discardedPaths.Add(path, struct{}{}) + } else if field == "create.file.name" { + basename := ev.CreateNewFile.File.BasenameStr + seclog.Debugf("new discarder for `%s` -> `%v`", field, basename) + p.discardedBasenames.Add(basename, struct{}{}) + } + + fileObject := fileObjectPointer(ev.CreateNewFile.File.FileObject) + p.filePathResolverLock.Lock() + defer p.filePathResolverLock.Unlock() + delete(p.filePathResolver, fileObject) } // NewModel returns a new Model diff --git a/pkg/security/probe/selftests/create_file_windows.go b/pkg/security/probe/selftests/create_file_windows.go index f3854f3f2c6b5..5d42d2b8bad72 100644 --- a/pkg/security/probe/selftests/create_file_windows.go +++ b/pkg/security/probe/selftests/create_file_windows.go @@ -9,6 +9,7 @@ package selftests import ( "fmt" "os" + "path/filepath" "github.com/DataDog/datadog-agent/pkg/security/secl/compiler/eval" "github.com/DataDog/datadog-agent/pkg/security/secl/rules" @@ -26,9 +27,11 @@ type WindowsCreateFileSelfTest struct { func (o *WindowsCreateFileSelfTest) GetRuleDefinition() *rules.RuleDefinition { o.ruleID = fmt.Sprintf("%s_windows_create_file", ruleIDPrefix) + basename := filepath.Base(o.filename) + return &rules.RuleDefinition{ ID: o.ruleID, - Expression: fmt.Sprintf(`create.file.path == "%s"`, o.filename), + Expression: fmt.Sprintf(`create.file.name == "%s" && create.file.path == "%s"`, basename, o.filename), } } diff --git a/pkg/security/ptracer/cws.go b/pkg/security/ptracer/cws.go index 56bebf34c2357..018f0203483ce 100644 --- a/pkg/security/ptracer/cws.go +++ b/pkg/security/ptracer/cws.go @@ -21,6 +21,8 @@ import ( "syscall" "time" + "go.uber.org/atomic" + "github.com/avast/retry-go/v4" "github.com/vmihailenco/msgpack/v5" "golang.org/x/sys/unix" @@ -124,20 +126,15 @@ func initConn(probeAddr string, nbAttempts uint) (net.Conn, error) { return client, nil } -func sendMsg(client net.Conn, msg *ebpfless.Message) error { - data, err := msgpack.Marshal(msg) - if err != nil { - return fmt.Errorf("unable to marshal message: %v", err) - } - +func sendMsgData(client net.Conn, data []byte) error { // write size var size [4]byte native.Endian.PutUint32(size[:], uint32(len(data))) - if _, err = client.Write(size[:]); err != nil { + if _, err := client.Write(size[:]); err != nil { return fmt.Errorf("unabled to send size: %v", err) } - if _, err = client.Write(data); err != nil { + if _, err := client.Write(data); err != nil { return fmt.Errorf("unabled to send message: %v", err) } return nil @@ -218,14 +215,30 @@ func StartCWSPtracer(args []string, envs []string, probeAddr string, opts Opts) } var ( - msgChan = make(chan *ebpfless.Message, 100000) + msgDataChan = make(chan []byte, 100000) traceChan = make(chan bool) ctx, cancelFnc = context.WithCancel(context.Background()) + seq = atomic.NewUint64(0) ) send := func(msg *ebpfless.Message) { + msg.SeqNum = seq.Load() + seq.Inc() + + logger.Debugf("sending message: %s", msg) + + if probeAddr == "" { + return + } + + data, err := msgpack.Marshal(msg) + if err != nil { + logger.Errorf("unable to marshal message: %v", err) + return + } + select { - case msgChan <- msg: + case msgDataChan <- data: default: logger.Errorf("unable to send message") } @@ -241,8 +254,6 @@ func StartCWSPtracer(args []string, envs []string, probeAddr string, opts Opts) go func() { defer wg.Done() - var seq uint64 - // start tracing traceChan <- true @@ -262,18 +273,10 @@ func StartCWSPtracer(args []string, envs []string, probeAddr string, opts Opts) for { select { - case msg := <-msgChan: - msg.SeqNum = seq - - if probeAddr != "" { - logger.Debugf("sending message: %s", msg) - if err := sendMsg(client, msg); err != nil { - logger.Debugf("%v", err) - } - } else { - logger.Debugf("sending message: %s", msg) + case data := <-msgDataChan: + if err := sendMsgData(client, data); err != nil { + logger.Debugf("%v", err) } - seq++ case <-ctx.Done(): return } @@ -475,7 +478,7 @@ func StartCWSPtracer(args []string, envs []string, probeAddr string, opts Opts) // stop client and msg chan reader cancelFnc() wg.Wait() - close(msgChan) + close(msgDataChan) }() if err := tracer.Trace(cb); err != nil { diff --git a/pkg/security/resolvers/process/resolver_ebpf.go b/pkg/security/resolvers/process/resolver_ebpf.go index 60aa8e3465a21..ce1d0675df4fc 100644 --- a/pkg/security/resolvers/process/resolver_ebpf.go +++ b/pkg/security/resolvers/process/resolver_ebpf.go @@ -601,15 +601,6 @@ func (p *EBPFResolver) resolve(pid, tid uint32, inode uint64, useProcFS bool) *m return nil } -func setPathname(fileEvent *model.FileEvent, pathnameStr string) { - if fileEvent.FileFields.IsFileless() { - fileEvent.SetPathnameStr("") - } else { - fileEvent.SetPathnameStr(pathnameStr) - } - fileEvent.SetBasenameStr(path.Base(pathnameStr)) -} - func (p *EBPFResolver) resolveFileFieldsPath(e *model.FileFields, pce *model.ProcessCacheEntry, ctrCtx *model.ContainerContext) (string, error) { var ( pathnameStr string @@ -658,11 +649,6 @@ func (p *EBPFResolver) SetProcessPath(fileEvent *model.FileEvent, pce *model.Pro return fileEvent.PathnameStr, nil } -// IsBusybox returns true if the pathname matches busybox -func IsBusybox(pathname string) bool { - return pathname == "/bin/busybox" || pathname == "/usr/bin/busybox" -} - // SetProcessSymlink resolves process file symlink path func (p *EBPFResolver) SetProcessSymlink(entry *model.ProcessCacheEntry) { // TODO: busybox workaround only for now @@ -828,11 +814,6 @@ func (p *EBPFResolver) resolveFromKernelMaps(pid, tid uint32, inode uint64) *mod return entry } -// IsKThread returns whether given pids are from kthreads -func IsKThread(ppid, pid uint32) bool { - return ppid == 2 || pid == 2 -} - // ResolveFromProcfs resolves the entry from procfs func (p *EBPFResolver) ResolveFromProcfs(pid uint32) *model.ProcessCacheEntry { p.Lock() @@ -908,35 +889,6 @@ func (p *EBPFResolver) SetProcessArgs(pce *model.ProcessCacheEntry) { } } -// GetProcessArgv returns the unscrubbed args of the event as an array. Use with caution. -func GetProcessArgv(pr *model.Process) ([]string, bool) { - if pr.ArgsEntry == nil { - return pr.Argv, pr.ArgsTruncated - } - - argv := pr.ArgsEntry.Values - if len(argv) > 0 { - argv = argv[1:] - } - pr.Argv = argv - pr.ArgsTruncated = pr.ArgsTruncated || pr.ArgsEntry.Truncated - return pr.Argv, pr.ArgsTruncated -} - -// GetProcessArgv0 returns the first arg of the event and whether the process arguments are truncated -func GetProcessArgv0(pr *model.Process) (string, bool) { - if pr.ArgsEntry == nil { - return pr.Argv0, pr.ArgsTruncated - } - - argv := pr.ArgsEntry.Values - if len(argv) > 0 { - pr.Argv0 = argv[0] - } - pr.ArgsTruncated = pr.ArgsTruncated || pr.ArgsEntry.Truncated - return pr.Argv0, pr.ArgsTruncated -} - // GetProcessArgvScrubbed returns the scrubbed args of the event as an array func (p *EBPFResolver) GetProcessArgvScrubbed(pr *model.Process) ([]string, bool) { if pr.ArgsEntry == nil || pr.ScrubbedArgvResolved { diff --git a/pkg/security/resolvers/process/resolver_linux.go b/pkg/security/resolvers/process/resolver_linux.go new file mode 100644 index 0000000000000..3e7e2d3a5cb6b --- /dev/null +++ b/pkg/security/resolvers/process/resolver_linux.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 process holds process related files +package process + +import ( + "path" + + "github.com/DataDog/datadog-agent/pkg/security/secl/model" +) + +// IsKThread returns whether given pids are from kthreads +func IsKThread(ppid, pid uint32) bool { + return ppid == 2 || pid == 2 +} + +// IsBusybox returns true if the pathname matches busybox +func IsBusybox(pathname string) bool { + return pathname == "/bin/busybox" || pathname == "/usr/bin/busybox" +} + +func setPathname(fileEvent *model.FileEvent, pathnameStr string) { + if fileEvent.FileFields.IsFileless() { + fileEvent.SetPathnameStr("") + } else { + fileEvent.SetPathnameStr(pathnameStr) + } + fileEvent.SetBasenameStr(path.Base(pathnameStr)) +} + +// GetProcessArgv returns the unscrubbed args of the event as an array. Use with caution. +func GetProcessArgv(pr *model.Process) ([]string, bool) { + if pr.ArgsEntry == nil { + return pr.Argv, pr.ArgsTruncated + } + + argv := pr.ArgsEntry.Values + if len(argv) > 0 { + argv = argv[1:] + } + pr.Argv = argv + pr.ArgsTruncated = pr.ArgsTruncated || pr.ArgsEntry.Truncated + return pr.Argv, pr.ArgsTruncated +} + +// GetProcessArgv0 returns the first arg of the event and whether the process arguments are truncated +func GetProcessArgv0(pr *model.Process) (string, bool) { + if pr.ArgsEntry == nil { + return pr.Argv0, pr.ArgsTruncated + } + + argv := pr.ArgsEntry.Values + if len(argv) > 0 { + pr.Argv0 = argv[0] + } + pr.ArgsTruncated = pr.ArgsTruncated || pr.ArgsEntry.Truncated + return pr.Argv0, pr.ArgsTruncated +} diff --git a/pkg/security/secl/model/model_windows.go b/pkg/security/secl/model/model_windows.go index 8990b2d9b4f71..6314784be6dac 100644 --- a/pkg/security/secl/model/model_windows.go +++ b/pkg/security/secl/model/model_windows.go @@ -44,6 +44,7 @@ type Event struct { // FileEvent is the common file event type type FileEvent struct { + FileObject uint64 `field:"-"` // handle numeric value PathnameStr string `field:"path,handler:ResolveFilePath,opts:length" op_override:"eval.WindowsPathCmp"` // SECLDoc[path] Definition:`File's path` Example:`exec.file.path == "c:\cmd.bat"` Description:`Matches the execution of the file located at c:\cmd.bat` BasenameStr string `field:"name,handler:ResolveFileBasename,opts:length" op_override:"eval.CaseInsensitiveCmp"` // SECLDoc[name] Definition:`File's basename` Example:`exec.file.name == "cmd.bat"` Description:`Matches the execution of any file named cmd.bat.` } diff --git a/pkg/security/security_profile/activity_tree/process_node_snapshot.go b/pkg/security/security_profile/activity_tree/process_node_snapshot.go index df54de6ab10d2..65fa5adfea96a 100644 --- a/pkg/security/security_profile/activity_tree/process_node_snapshot.go +++ b/pkg/security/security_profile/activity_tree/process_node_snapshot.go @@ -50,7 +50,9 @@ func (pn *ProcessNode) snapshot(owner Owner, stats *Stats, newEvent func() *mode // snapshot files if owner.IsEventTypeValid(model.FileOpenEventType) { - pn.snapshotFiles(p, stats, newEvent, reducer) + pn.snapshotAllFiles(p, stats, newEvent, reducer) + } else { + pn.snapshotMemoryMappedFiles(p, stats, newEvent, reducer) } // snapshot sockets @@ -63,7 +65,7 @@ func (pn *ProcessNode) snapshot(owner Owner, stats *Stats, newEvent func() *mode // this value was selected because it represents the default upper bound for the number of FDs a linux process can have const maxFDsPerProcessSnapshot = 1024 -func (pn *ProcessNode) snapshotFiles(p *process.Process, stats *Stats, newEvent func() *model.Event, reducer *PathsReducer) { +func (pn *ProcessNode) snapshotAllFiles(p *process.Process, stats *Stats, newEvent func() *model.Event, reducer *PathsReducer) { // list the files opened by the process fileFDs, err := p.OpenFiles() if err != nil { @@ -95,42 +97,89 @@ func (pn *ProcessNode) snapshotFiles(p *process.Process, stats *Stats, newEvent } // list the mmaped files of the process - mmapedFiles, err := snapshotMemoryMappedFiles(p.Pid, pn.Process.FileEvent.PathnameStr) + mmapedFiles, err := getMemoryMappedFiles(p.Pid, pn.Process.FileEvent.PathnameStr) if err != nil { seclog.Warnf("error while listing memory maps (pid: %v): %s", p.Pid, err) } - // often the mmaped files are already nearly sorted, so we take the quick win and de-duplicate without sorting - mmapedFiles = slices.Compact(mmapedFiles) files = append(files, mmapedFiles...) if len(files) == 0 { return } + pn.addFiles(files, stats, newEvent, reducer) +} + +func (pn *ProcessNode) snapshotMemoryMappedFiles(p *process.Process, stats *Stats, newEvent func() *model.Event, reducer *PathsReducer) { + // list the mmaped files of the process + mmapedFiles, err := getMemoryMappedFiles(p.Pid, pn.Process.FileEvent.PathnameStr) + if err != nil { + seclog.Warnf("error while listing memory maps (pid: %v): %s", p.Pid, err) + } + + pn.addFiles(mmapedFiles, stats, newEvent, reducer) +} + +func (pn *ProcessNode) addFiles(files []string, stats *Stats, newEvent func() *model.Event, reducer *PathsReducer) { + // list the mmaped files of the process slices.Sort(files) files = slices.Compact(files) // insert files - var fileinfo os.FileInfo - var resolvedPath string + var ( + err error + resolvedPath string + ) for _, f := range files { if len(f) == 0 { continue } - // fetch the file user, group and mode + evt := newEvent() fullPath := filepath.Join(utils.ProcRootPath(pn.Process.Pid), f) - fileinfo, err = os.Stat(fullPath) - if err != nil { - continue - } - stat, ok := fileinfo.Sys().(*syscall.Stat_t) - if !ok { - continue + + var fileStats unix.Statx_t + if err := unix.Statx(unix.AT_FDCWD, fullPath, 0, unix.STATX_ALL, &fileStats); err != nil { + fileinfo, err := os.Stat(fullPath) + if err != nil { + seclog.Tracef("unable to stat mapped file %s", fullPath) + continue + } + + stat, ok := fileinfo.Sys().(*syscall.Stat_t) + if !ok { + continue + } + + evt.Open.File.FileFields.Mode = uint16(stat.Mode) + evt.Open.File.FileFields.Inode = stat.Ino + evt.Open.File.FileFields.UID = stat.Uid + evt.Open.File.FileFields.GID = stat.Gid + + if fileinfo.Mode().IsRegular() { + evt.FieldHandlers.ResolveHashes(model.FileOpenEventType, &pn.Process, &evt.Open.File) + } + } else { + evt.Open.File.FileFields.Mode = uint16(fileStats.Mode) + evt.Open.File.FileFields.Inode = fileStats.Ino + evt.Open.File.FileFields.UID = fileStats.Uid + evt.Open.File.FileFields.GID = fileStats.Gid + + evt.Open.File.CTime = uint64(time.Unix(fileStats.Ctime.Sec, int64(fileStats.Ctime.Nsec)).Nanosecond()) + evt.Open.File.MTime = uint64(time.Unix(fileStats.Mtime.Sec, int64(fileStats.Mtime.Nsec)).Nanosecond()) + evt.Open.File.Mode = fileStats.Mode + evt.Open.File.Inode = fileStats.Ino + evt.Open.File.Device = fileStats.Dev_major<<20 | fileStats.Dev_minor + evt.Open.File.NLink = fileStats.Nlink + evt.Open.File.MountID = uint32(fileStats.Mnt_id) + + if (fileStats.Mode & syscall.S_IFREG) != 0 { + evt.FieldHandlers.ResolveHashes(model.FileOpenEventType, &pn.Process, &evt.Open.File) + } } - evt := newEvent() evt.Type = uint32(model.FileOpenEventType) + evt.Open.File.Mode = evt.Open.File.FileFields.Mode resolvedPath, err = filepath.EvalSymlinks(f) if err == nil && len(resolvedPath) != 0 { @@ -139,16 +188,6 @@ func (pn *ProcessNode) snapshotFiles(p *process.Process, stats *Stats, newEvent evt.Open.File.SetPathnameStr(f) } evt.Open.File.SetBasenameStr(path.Base(evt.Open.File.PathnameStr)) - evt.Open.File.FileFields.Mode = uint16(stat.Mode) - evt.Open.File.FileFields.Inode = stat.Ino - evt.Open.File.FileFields.UID = stat.Uid - evt.Open.File.FileFields.GID = stat.Gid - - evt.Open.File.Mode = evt.Open.File.FileFields.Mode - - if fileinfo.Mode().IsRegular() { - evt.FieldHandlers.ResolveHashes(model.FileOpenEventType, &pn.Process, &evt.Open.File) - } // TODO: add open flags by parsing `/proc/[pid]/fdinfo/fd` + O_RDONLY|O_CLOEXEC for the shared libs @@ -159,7 +198,7 @@ func (pn *ProcessNode) snapshotFiles(p *process.Process, stats *Stats, newEvent // MaxMmapedFiles defines the max mmaped files const MaxMmapedFiles = 128 -func snapshotMemoryMappedFiles(pid int32, processEventPath string) ([]string, error) { +func getMemoryMappedFiles(pid int32, processEventPath string) (files []string, _ error) { smapsPath := kernel.HostProc(strconv.Itoa(int(pid)), "smaps") smapsFile, err := os.Open(smapsPath) if err != nil { @@ -167,7 +206,7 @@ func snapshotMemoryMappedFiles(pid int32, processEventPath string) ([]string, er } defer smapsFile.Close() - files := make([]string, 0, MaxMmapedFiles) + files = make([]string, 0, MaxMmapedFiles) scanner := bufio.NewScanner(smapsFile) for scanner.Scan() && len(files) < MaxMmapedFiles { diff --git a/pkg/security/security_profile/activity_tree/process_node_snapshot_test.go b/pkg/security/security_profile/activity_tree/process_node_snapshot_test.go index 0ce4d6ee9e77e..5dade1292b52c 100644 --- a/pkg/security/security_profile/activity_tree/process_node_snapshot_test.go +++ b/pkg/security/security_profile/activity_tree/process_node_snapshot_test.go @@ -41,7 +41,7 @@ func TestSnapshotMemoryMappedFiles(t *testing.T) { } // hand-made version - ownImplemFiles, err := snapshotMemoryMappedFiles(int32(pid), "") + ownImplemFiles, err := getMemoryMappedFiles(int32(pid), "") if err != nil { t.Fatal(err) } diff --git a/pkg/security/tests/activity_dumps_loadcontroller_test.go b/pkg/security/tests/activity_dumps_loadcontroller_test.go index 2b1d180cec452..f307c513aa148 100644 --- a/pkg/security/tests/activity_dumps_loadcontroller_test.go +++ b/pkg/security/tests/activity_dumps_loadcontroller_test.go @@ -11,6 +11,7 @@ package tests import ( "os" "path/filepath" + "slices" "testing" "time" @@ -164,7 +165,15 @@ func TestActivityDumpsLoadControllerEventTypes(t *testing.T) { if err != nil { t.Fatal(err) } - if !isEventTypesStringSlicesEqual(activeEventTypes, presentEventTypes) { + activeTypes := make([]model.EventType, len(activeEventTypes)) + for i, eventType := range activeEventTypes { + activeTypes[i] = eventType + } + if !slices.Contains(activeTypes, model.FileOpenEventType) { + // add open to the list of expected event types because mmaped files being present in the dump + activeTypes = append(activeTypes, model.FileOpenEventType) + } + if !isEventTypesStringSlicesEqual(activeTypes, presentEventTypes) { t.Fatalf("Dump's event types are different as expected (%v) vs (%v)", activeEventTypes, presentEventTypes) } dump = nextDump diff --git a/pkg/serializer/go.mod b/pkg/serializer/go.mod index 103925192bee8..458c562f00409 100644 --- a/pkg/serializer/go.mod +++ b/pkg/serializer/go.mod @@ -76,7 +76,7 @@ require ( github.com/protocolbuffers/protoscope v0.0.0-20221109213918-8e7a6aafa2c9 github.com/richardartoul/molecule v1.0.1-0.20221107223329-32cfee06a052 github.com/stretchr/testify v1.9.0 - google.golang.org/protobuf v1.32.0 + google.golang.org/protobuf v1.33.0 ) require ( @@ -154,17 +154,17 @@ require ( github.com/tklauser/numcpus v0.6.1 // indirect github.com/twmb/murmur3 v1.1.8 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect - go.opentelemetry.io/otel v1.23.1 // indirect + go.opentelemetry.io/otel v1.24.0 // indirect go.opentelemetry.io/otel/exporters/prometheus v0.45.0 // indirect - go.opentelemetry.io/otel/metric v1.23.1 // indirect + go.opentelemetry.io/otel/metric v1.24.0 // indirect go.opentelemetry.io/otel/sdk v1.23.1 // indirect go.opentelemetry.io/otel/sdk/metric v1.22.0 // indirect - go.opentelemetry.io/otel/trace v1.23.1 // indirect + go.opentelemetry.io/otel/trace v1.24.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.11.0 // indirect - go.uber.org/zap v1.26.0 // indirect + go.uber.org/zap v1.27.0 // indirect golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect golang.org/x/mod v0.17.0 // indirect golang.org/x/net v0.24.0 // indirect diff --git a/pkg/serializer/go.sum b/pkg/serializer/go.sum index 196b4b85feec1..b68f39012cbcd 100644 --- a/pkg/serializer/go.sum +++ b/pkg/serializer/go.sum @@ -285,18 +285,18 @@ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9dec github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -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 v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo= +go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo= 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/metric v1.23.1 h1:PQJmqJ9u2QaJLBOELl1cxIdPcpbwzbkjfEyelTl2rlo= -go.opentelemetry.io/otel/metric v1.23.1/go.mod h1:mpG2QPlAfnK8yNhNJAxDZruU9Y1/HubbC+KyH8FaCWI= +go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI= +go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= 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.23.1 h1:4LrmmEd8AU2rFvU1zegmvqW7+kWarxtNOPyeL6HmYY8= -go.opentelemetry.io/otel/trace v1.23.1/go.mod h1:4IpnpJFwr1mo/6HL8XIPJaE9y0+u1KcVmuW7dwFSVrI= +go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI= +go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= 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= @@ -314,8 +314,8 @@ go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN8 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.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= -go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= +go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= +go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= 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= @@ -417,8 +417,8 @@ google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp0 google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I= -google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +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/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= diff --git a/pkg/trace/api/container_linux.go b/pkg/trace/api/container_linux.go index 6eeab347e61c7..cd933730fc68f 100644 --- a/pkg/trace/api/container_linux.go +++ b/pkg/trace/api/container_linux.go @@ -46,17 +46,27 @@ func connContext(ctx context.Context, c net.Conn) context.Context { if !ok { return ctx } - file, err := s.File() + raw, err := s.SyscallConn() if err != nil { - log.Debugf("Failed to obtain unix socket file: %v", err) + log.Debugf("Failed to read credentials from unix socket: %v", err) return ctx } - fd := int(file.Fd()) - ucred, err := syscall.GetsockoptUcred(fd, syscall.SOL_SOCKET, syscall.SO_PEERCRED) + var ( + ucred *syscall.Ucred + cerr error + ) + err = raw.Control(func(fd uintptr) { + ucred, cerr = syscall.GetsockoptUcred(int(fd), syscall.SOL_SOCKET, syscall.SO_PEERCRED) + }) if err != nil { - log.Debugf("Failed to read credentials from unix socket: %v", err) + log.Debugf("Failed to control raw unix socket: %v", err) return ctx } + if cerr != nil { + log.Debugf("Failed to read credentials from unix socket: %v", cerr) + return ctx + } + return context.WithValue(ctx, ucredKey{}, ucred) } diff --git a/pkg/trace/api/container_linux_test.go b/pkg/trace/api/container_linux_test.go index 22fe9bbf2ba05..3878e8f6a458b 100644 --- a/pkg/trace/api/container_linux_test.go +++ b/pkg/trace/api/container_linux_test.go @@ -176,3 +176,64 @@ func TestGetContainerID(t *testing.T) { assert.Equal(t, "", provider.GetContainerID(req.Context(), req.Header)) }) } + +func BenchmarkUDSCred(b *testing.B) { + sockPath := "/tmp/test-trace.sock" + client := http.Client{ + Transport: &http.Transport{ + DialContext: func(_ context.Context, _, _ string) (net.Conn, error) { + return net.Dial("unix", sockPath) + }, + }, + } + + fi, err := os.Stat(sockPath) + if err == nil { + // already exists + if fi.Mode()&os.ModeSocket == 0 { + b.Fatalf("cannot reuse %q; not a unix socket", sockPath) + } + if err := os.Remove(sockPath); err != nil { + b.Fatalf("unable to remove stale socket: %v", err) + } + } + ln, err := net.Listen("unix", sockPath) + if err != nil { + b.Fatalf("error listening on unix socket %s: %v", sockPath, err) + } + if err := os.Chmod(sockPath, 0o722); err != nil { + b.Fatalf("error setting socket permissions: %v", err) + } + ln = NewMeasuredListener(ln, "uds_connections", 10, &statsd.NoOpClient{}) + defer ln.Close() + + recvbuf := make([]byte, 1024*1024*10) // 10MiB + s := &http.Server{ + Handler: http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + ucred, ok := r.Context().Value(ucredKey{}).(*syscall.Ucred) + if !ok || ucred == nil { + b.Fatalf("Expected a unix credential but found nothing.") + } + // actually read the body, and respond afterwards, to force benchmarking of + // io over the socket. + io.ReadFull(r.Body, recvbuf) + io.WriteString(w, "OK") + }), + ConnContext: connContext, + } + go s.Serve(ln) + + buf := make([]byte, 1024*1024*10) // 10MiB + for i := 0; i < b.N; i++ { + resp, err := client.Post("http://localhost:8126/v0.4/traces", "application/msgpack", bytes.NewReader(buf)) + if err != nil { + b.Fatal(err) + } + // We don't read the response here to force a new connection for each request. + //io.Copy(io.Discard, resp.Body) + resp.Body.Close() + if resp.StatusCode != 200 { + b.Fatalf("expected http.StatusOK, got response: %#v", resp) + } + } +} diff --git a/pkg/trace/api/dogstatsd.go b/pkg/trace/api/dogstatsd.go index 15f3963b0cb8a..7207fcc8e691f 100644 --- a/pkg/trace/api/dogstatsd.go +++ b/pkg/trace/api/dogstatsd.go @@ -16,8 +16,9 @@ import ( ) // dogstatsdProxyHandler returns a new HTTP handler which will proxy requests to -// the DogStatsD endpoint in the Core Agent over UDP or UDS (defaulting to UDS -// if StatsdSocket is set in the *AgentConfig). +// the DogStatsD endpoint in the Core Agent over UDP. Communication between the +// proxy and the agent does not support UDS (see #13628), and so does not guarantee delivery of +// all statsd payloads. func (r *HTTPReceiver) dogstatsdProxyHandler() http.Handler { if !r.conf.StatsdEnabled { log.Info("DogstatsD disabled in the Agent configuration. The DogstatsD proxy endpoint will be non-functional.") diff --git a/pkg/trace/go.mod b/pkg/trace/go.mod index 1108d958862b0..d9c23762c7c17 100644 --- a/pkg/trace/go.mod +++ b/pkg/trace/go.mod @@ -27,26 +27,25 @@ require ( github.com/golang/protobuf v1.5.3 github.com/google/go-cmp v0.6.0 github.com/google/gofuzz v1.2.0 - github.com/google/uuid v1.3.1 + github.com/google/uuid v1.6.0 github.com/shirou/gopsutil/v3 v3.24.1 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 - go.opentelemetry.io/collector/pdata v1.0.1 - go.opentelemetry.io/collector/semconv v0.93.0 - go.opentelemetry.io/otel v1.22.0 - go.opentelemetry.io/otel/metric v1.22.0 + go.opentelemetry.io/collector/component v0.97.0 + go.opentelemetry.io/collector/pdata v1.4.0 + go.opentelemetry.io/collector/semconv v0.97.0 + go.opentelemetry.io/otel v1.24.0 + go.opentelemetry.io/otel/metric v1.24.0 go.uber.org/atomic v1.11.0 golang.org/x/sys v0.19.0 golang.org/x/time v0.5.0 - google.golang.org/grpc v1.60.1 - google.golang.org/protobuf v1.32.0 + google.golang.org/grpc v1.62.1 + google.golang.org/protobuf v1.33.0 k8s.io/apimachinery v0.25.5 ) require ( - contrib.go.opencensus.io/exporter/prometheus v0.4.2 // indirect github.com/DataDog/go-sqllexer v0.0.9 // indirect github.com/DataDog/go-tuf v1.1.0-0.5.2 // indirect github.com/beorn7/perks v1.0.1 // indirect @@ -56,23 +55,19 @@ require ( github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/dustin/go-humanize v1.0.1 // indirect - github.com/go-kit/log v0.2.1 // indirect - 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-ole/go-ole v1.2.6 // indirect + github.com/go-viper/mapstructure/v2 v2.0.0-alpha.1 // indirect github.com/godbus/dbus/v5 v5.0.6 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect - github.com/hashicorp/go-version v1.6.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/karrick/godirwalk v1.17.0 // 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/knadh/koanf/v2 v2.1.0 // indirect github.com/lufia/plan9stats v0.0.0-20220913051719-115f729f3c8c // 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/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect @@ -82,33 +77,30 @@ require ( github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // 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/client_golang v1.19.0 // indirect + github.com/prometheus/client_model v0.6.0 // indirect + github.com/prometheus/common v0.48.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect - github.com/prometheus/statsd_exporter v0.22.7 // indirect github.com/secure-systems-lab/go-securesystemslib v0.7.0 // indirect github.com/shoenig/go-m1cpu v0.1.6 // indirect github.com/tklauser/go-sysconf v0.3.12 // indirect github.com/tklauser/numcpus v0.6.1 // indirect github.com/vmihailenco/tagparser v0.1.2 // indirect github.com/yusufpapurcu/wmi v1.2.3 // indirect - go.opencensus.io v0.24.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/otel/exporters/prometheus v0.45.0 // indirect - go.opentelemetry.io/otel/sdk v1.22.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.22.0 // indirect - go.opentelemetry.io/otel/trace v1.22.0 // indirect + go.opentelemetry.io/collector/config/configtelemetry v0.97.0 // indirect + go.opentelemetry.io/collector/confmap v0.97.0 // indirect + go.opentelemetry.io/otel/exporters/prometheus v0.46.0 // indirect + go.opentelemetry.io/otel/sdk v1.24.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.24.0 // indirect + go.opentelemetry.io/otel/trace v1.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect - go.uber.org/zap v1.26.0 // indirect + go.uber.org/zap v1.27.0 // indirect golang.org/x/mod v0.17.0 // indirect golang.org/x/net v0.24.0 // indirect golang.org/x/text v0.14.0 // indirect golang.org/x/tools v0.16.1 // indirect google.golang.org/appengine v1.6.8 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/pkg/trace/go.sum b/pkg/trace/go.sum index 3b74d6b7a11d0..d860786ecb8d6 100644 --- a/pkg/trace/go.sum +++ b/pkg/trace/go.sum @@ -1,40 +1,3 @@ -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.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/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= -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.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= @@ -48,28 +11,13 @@ github.com/DataDog/sketches-go v1.4.2/go.mod h1:xJIXldczJyyjnbDop7ZZcLxJdV3+7Kra 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/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/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= -github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= -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/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -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/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/containerd/cgroups/v3 v3.0.2 h1:f5WFqIVSgo5IZmtTT3qVBo6TzI1ON6sycSBKkymb9L0= github.com/containerd/cgroups/v3 v3.0.2/go.mod h1:JUgITrzdFqp42uI2ryGA+ge0ap/nxzYgkGmIcetmErE= github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= @@ -85,24 +33,6 @@ github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDD 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= -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/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-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= -github.com/go-kit/log v0.2.0/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= -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.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= -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= @@ -110,96 +40,33 @@ 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/go-viper/mapstructure/v2 v2.0.0-alpha.1 h1:TQcrn6Wq+sKGkpyPvppOz99zsMBaUOKXq6HSv655U1c= +github.com/go-viper/mapstructure/v2 v2.0.0-alpha.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.0.6 h1:mkgN1ofwASrYnJ5W6U/BxG15eXXXjirgZc7CLqkcaro= github.com/godbus/dbus/v5 v5.0.6/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= 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-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= -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/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= 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.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/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.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.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.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= 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= -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/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/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= -github.com/google/uuid v1.3.1/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/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/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -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.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +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/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= -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/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/karrick/godirwalk v1.17.0 h1:b4kY7nqDdioR/6qnbHQyDvmA17u5G1cZ6J+CZXwSWoI= github.com/karrick/godirwalk v1.17.0/go.mod h1:j4mkqPuvaLI8mp1DroR3P6ad7cyYd4c1qeJ3RV7ULlk= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= @@ -208,11 +75,8 @@ github.com/knadh/koanf/maps v0.1.1 h1:G5TjmUh2D7G2YWf5SQQqSiHRJEjaicvU0KpypqB3NI 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/konsorten/go-windows-terminal-sequences v1.0.3/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/knadh/koanf/v2 v2.1.0 h1:eh4QmHHBuU8BybfIJ8mB8K8gsGCD/AUQTdwGq/GzId8= +github.com/knadh/koanf/v2 v2.1.0/go.mod h1:4mnTRbZCK+ALuBXHZMjDfG9y714L7TykVnZkXbMU3Es= 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= @@ -223,30 +87,21 @@ github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= github.com/lufia/plan9stats v0.0.0-20220913051719-115f729f3c8c h1:VtwQ41oftZwlMnOEbMWQtSEUgU64U4s+GHk7hZK+jtY= github.com/lufia/plan9stats v0.0.0-20220913051719-115f729f3c8c/go.mod h1:JKx41uQRwqlTZabZc+kILPrO/3jlKnQ2Z8b7YiVw5cE= -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.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= -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/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/opencontainers/runtime-spec v1.1.0-rc.3 h1:l04uafi6kxByhbxev7OWiuUv0LZxEsYUfDWZ6bztAuU= github.com/opencontainers/runtime-spec v1.1.0-rc.3/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/outcaste-io/ristretto v0.2.1 h1:KCItuNIGJZcursqHr3ghO7fc5ddZLEHspL9UR0cQM64= github.com/outcaste-io/ristretto v0.2.1/go.mod h1:W8HywhmtlopSB1jeMg3JtdIhf+DYkLAr0VN/s4+MHac= 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/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= @@ -254,40 +109,14 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= github.com/power-devops/perfstat v0.0.0-20220216144756-c35f1ee13d7c h1:NRoLoZvkBTKvR5gQLgA3e0hqjkY9u1wm+iOL45VN/qI= github.com/power-devops/perfstat v0.0.0-20220216144756-c35f1ee13d7c/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 v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= -github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= -github.com/prometheus/client_golang v1.12.2/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= -github.com/prometheus/client_golang v1.13.0/go.mod h1:vTeo+zgvILHsnnj/39Ou/1fPN5nJFOEMgftOUOmlvYQ= -github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= -github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= -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.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= -github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= -github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= -github.com/prometheus/common v0.35.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= -github.com/prometheus/common v0.37.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= -github.com/prometheus/common v0.46.0 h1:doXzt5ybi1HBKpsZOL0sSkaNHJJqkyfEWZGGqqScV0Y= -github.com/prometheus/common v0.46.0/go.mod h1:Tp0qkxpb9Jsg54QMe+EAmqXkSV7Evdy1BTn+g2pa/hQ= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4= +github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= +github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= +github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos= +github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8= +github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= +github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= 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/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/secure-systems-lab/go-securesystemslib v0.7.0 h1:OwvJ5jQf9LnIAS83waAjPbcMsODrTQUpJ02eNLUoxBg= @@ -298,19 +127,14 @@ 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/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.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= 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.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.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.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= @@ -319,7 +143,6 @@ github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o 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= github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= @@ -331,46 +154,34 @@ github.com/vmihailenco/msgpack/v4 v4.3.12/go.mod h1:gborTTJjAo/GWTqqRjrLCn9pgNN+ github.com/vmihailenco/tagparser v0.1.1/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI= 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/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.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.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= -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= -go.opentelemetry.io/otel/exporters/prometheus v0.45.0/go.mod h1:UVJZPLnfDSvHj+eJuZE+E1GjIBD267mEMfAAHJdghWg= -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/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/collector/component v0.97.0 h1:vanKhXl5nptN8igRH4PqVYHOILif653vaPIKv6LCZCI= +go.opentelemetry.io/collector/component v0.97.0/go.mod h1:F/m3HMlkb16RKI7wJjgbECK1IZkAcmB8bu7yD8XOkwM= +go.opentelemetry.io/collector/config/configtelemetry v0.97.0 h1:JS/WxK09A9m39D5OqsAWaoRe4tG7ESMnzDNIbZ5bD6c= +go.opentelemetry.io/collector/config/configtelemetry v0.97.0/go.mod h1:YV5PaOdtnU1xRomPcYqoHmyCr48tnaAREeGO96EZw8o= +go.opentelemetry.io/collector/confmap v0.97.0 h1:0CGSk7YW9rPc6jCwJteJzHzN96HRoHTfuqI7J/EmZsg= +go.opentelemetry.io/collector/confmap v0.97.0/go.mod h1:AnJmZcZoOLuykSXGiAf3shi11ZZk5ei4tZd9dDTTpWE= +go.opentelemetry.io/collector/pdata v1.4.0 h1:cA6Pr7Z2V7mE+i7FmYpavX7nefzd6H4CICgW0T9aJX0= +go.opentelemetry.io/collector/pdata v1.4.0/go.mod h1:0Ttp4wQinhV5oJTd9MjyvUegmZBO9O0nrlh/+EDLw+Q= +go.opentelemetry.io/collector/semconv v0.97.0 h1:iF3nTfThbiOwz7o5Pocn0dDnDoffd18ijDuf6Mwzi1s= +go.opentelemetry.io/collector/semconv v0.97.0/go.mod h1:8ElcRZ8Cdw5JnvhTOQOdYizkJaQ10Z2fS+R6djOnj6A= +go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo= +go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo= +go.opentelemetry.io/otel/exporters/prometheus v0.46.0 h1:I8WIFXR351FoLJYuloU4EgXbtNX2URfU/85pUPheIEQ= +go.opentelemetry.io/otel/exporters/prometheus v0.46.0/go.mod h1:ztwVUHe5DTR/1v7PeuGRnU5Bbd4QKYwApWmuutKsJSs= +go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI= +go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= +go.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw= +go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg= +go.opentelemetry.io/otel/sdk/metric v1.24.0 h1:yyMQrPzF+k88/DbH7o4FMAs80puqd+9osbiBrJrz/w8= +go.opentelemetry.io/otel/sdk/metric v1.24.0/go.mod h1:I6Y5FjH6rvEnTTAYQz3Mmv2kl6Ek5IIrmwTLqMrrOE0= +go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI= +go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= 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= @@ -378,45 +189,14 @@ go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= -go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= -go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= +go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= 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-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30= golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M= -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/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/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.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= @@ -424,115 +204,39 @@ golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91 golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= golang.org/x/mod v0.17.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-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-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-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-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210525063256-abc453219eb5/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-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.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w= golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= -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-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -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.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.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/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-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +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-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-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-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-20200106162015-b016eb3dc98e/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-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/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-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/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-20210510120138-977fb7262007/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-20210615035016-665e8c7367d1/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-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-20220708085239-5a0f0661e09d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -543,63 +247,19 @@ golang.org/x/sys v0.19.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= 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.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= -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/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-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-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-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-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= 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= @@ -610,118 +270,26 @@ 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= -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/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.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= -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-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/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17 h1:Jyp0Hsi0bmHXG6k9eATXoYtjd6e2UzZ1SCn/wIupY14= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:oQ5rr10WTTMvP4A36n8JpR1OrO1BEiV4f78CneXZxkA= -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.1/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.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.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -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= -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/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 h1:AjyfHzEPEFp/NpvfN5g+KDla3EMojjhRVZc1i7cj+oM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80/go.mod h1:PAREbraiVEVGVdTZsVWjSbbTtSyGbAgIIvni8a8CD5s= +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 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.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I= -google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= -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-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/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.5/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= 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= k8s.io/apimachinery v0.25.5 h1:SQomYHvv+aO43qdu3QKRf9YuI0oI8w3RrOQ1qPbAUGY= k8s.io/apimachinery v0.25.5/go.mod h1:1S2i1QHkmxc8+EZCIxe/fX5hpldVXk4gvnJInMEb8D4= -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/updater/download.go b/pkg/updater/download.go index cb949edfe7989..0792a96e36db1 100644 --- a/pkg/updater/download.go +++ b/pkg/updater/download.go @@ -6,24 +6,15 @@ package updater import ( - "archive/tar" - "bytes" "context" - "crypto/sha256" - "encoding/hex" "fmt" - "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" @@ -39,7 +30,8 @@ const ( annotationVersion = "com.datadoghq.package.version" ) -type packageMetadata struct { +type downloadedPackage struct { + Image oci.Image Name string Version string } @@ -59,87 +51,42 @@ func newDownloader(client *http.Client, remoteBaseURL string) *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) - url, err := url.Parse(pkg.URL) +func (d *downloader) Download(ctx context.Context, packageURL string) (*downloadedPackage, error) { + log.Debugf("Downloading package from %s", packageURL) + url, err := url.Parse(packageURL) 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, d.getRegistryURL(pkg.URL)) + image, err = d.downloadRegistry(ctx, d.getRegistryURL(packageURL)) 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) + return nil, fmt.Errorf("could not download package from %s: %w", packageURL, err) } - err = d.checkImageMetadata(image, pkg.Name, pkg.Version) - if err != nil { - return nil, fmt.Errorf("invalid package metadata: %w", err) - } - log.Debugf("Successfully downloaded package %s version %s from %s", pkg.Name, pkg.Version, pkg.URL) - return image, nil -} - -// Package returns the downloadable package at the given URL. -func (d *downloader) Package(ctx context.Context, pkgURL string) (Package, error) { - log.Debugf("Getting package information from %s", pkgURL) - url, err := url.Parse(pkgURL) - if err != nil { - return Package{}, fmt.Errorf("could not parse package URL: %w", err) - } - if url.Scheme != "oci" { - return Package{}, fmt.Errorf("unsupported package URL scheme: %s", url.Scheme) - } - image, err := d.downloadRegistry(ctx, d.getRegistryURL(pkgURL)) - if err != nil { - return Package{}, fmt.Errorf("could not download package from %s: %w", pkgURL, err) - } - metadata, err := d.imageMetadata(image) - if err != nil { - return Package{}, fmt.Errorf("could not get package metadata: %w", err) - } - return Package{ - Name: metadata.Name, - Version: metadata.Version, - URL: pkgURL, - }, nil -} - -func (d *downloader) imageMetadata(image oci.Image) (packageMetadata, error) { manifest, err := image.Manifest() if err != nil { - return packageMetadata{}, fmt.Errorf("could not get image manifest: %w", err) + return nil, fmt.Errorf("could not get image manifest: %w", err) } name, ok := manifest.Annotations[annotationPackage] if !ok { - return packageMetadata{}, fmt.Errorf("package manifest is missing package annotation") + return nil, fmt.Errorf("package manifest is missing package annotation") } version, ok := manifest.Annotations[annotationVersion] if !ok { - return packageMetadata{}, fmt.Errorf("package manifest is missing version annotation") + return nil, fmt.Errorf("package manifest is missing version annotation") } - return packageMetadata{ + log.Debugf("Successfully downloaded package from %s", packageURL) + return &downloadedPackage{ + Image: image, Name: name, Version: version, }, nil } -func (d *downloader) checkImageMetadata(image oci.Image, expectedName string, expectedVersion string) error { - imageMetadata, err := d.imageMetadata(image) - if err != nil { - return fmt.Errorf("could not get image metadata: %w", err) - } - if imageMetadata.Name != expectedName || imageMetadata.Version != expectedVersion { - return fmt.Errorf("invalid image metadata: expected %s version %s, got %s version %s", expectedName, expectedVersion, imageMetadata.Name, imageMetadata.Version) - } - return nil -} - func (d *downloader) getRegistryURL(url string) string { downloadURL := strings.TrimPrefix(url, "oci://") if d.remoteBaseURL != "" { @@ -183,159 +130,3 @@ func (d *downloader) downloadRegistry(ctx context.Context, url string) (oci.Imag } 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) { - // Request the oci-layout.tar archive from the given URL - req, err := http.NewRequestWithContext(ctx, http.MethodGet, url, nil) - if err != nil { - return nil, fmt.Errorf("could not create download request: %w", err) - } - resp, err := d.client.Do(req) - if err != nil { - return nil, fmt.Errorf("could not download package: %w", err) - } - defer resp.Body.Close() - if resp.ContentLength != -1 && resp.ContentLength != size { - return nil, fmt.Errorf("invalid size: expected %d, got %d", size, resp.ContentLength) - } - - // Write oci-layout.tar on disk and check its hash while doing so - hashWriter := sha256.New() - reader := io.TeeReader( - io.LimitReader(resp.Body, ociLayoutArchiveMaxSize), - hashWriter, - ) - ociLayoutArchiveFile, err := os.Create(filepath.Join(tmpDir, ociLayoutArchiveName)) - if err != nil { - return nil, fmt.Errorf("could not create oci layout archive: %w", err) - } - defer ociLayoutArchiveFile.Close() - _, err = io.Copy(ociLayoutArchiveFile, reader) - if err != nil { - return nil, fmt.Errorf("could not write oci layout archive: %w", err) - } - computedHash := hashWriter.Sum(nil) - expectedHash, err := hex.DecodeString(sha256hash) - if err != nil { - return nil, fmt.Errorf("could not decode hash: %w", err) - } - if !bytes.Equal(expectedHash, computedHash) { - return nil, fmt.Errorf("invalid hash: expected %s, got %x", sha256hash, computedHash) - } - - // Extract oci-layout.tar to the oci-layout directory - ociLayoutPath := filepath.Join(tmpDir, ociLayoutName) - err = os.Mkdir(ociLayoutPath, 0755) - if err != nil { - return nil, fmt.Errorf("could not create oci layout directory: %w", err) - } - _, err = ociLayoutArchiveFile.Seek(0, io.SeekStart) - if err != nil { - return nil, fmt.Errorf("could not seek to the beginning of the oci layout archive: %w", err) - } - err = extractTarArchive(ociLayoutArchiveFile, ociLayoutPath, ociLayoutMaxSize) - if err != nil { - return nil, fmt.Errorf("could not extract oci layout archive: %w", err) - } - - // Load the oci-layout directory as an oci image - platform := oci.Platform{ - OS: runtime.GOOS, - Architecture: runtime.GOARCH, - } - index, err := layout.ImageIndexFromPath(ociLayoutPath) - if err != nil { - return nil, fmt.Errorf("could not load oci layout image index: %w", err) - } - 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") -} - -// extractTarArchive extracts a tar archive to the given destination path -// -// Note on security: This function does not currently attempt to fully mitigate zip-slip attacks. -// This is purposeful as the archive is extracted only after its SHA256 hash has been validated -// against its reference in the package catalog. This catalog is itself sent over Remote Config -// which guarantees its integrity. -func extractTarArchive(reader io.Reader, destinationPath string, maxSize int64) error { - log.Debugf("Extracting archive to %s", destinationPath) - tr := tar.NewReader(io.LimitReader(reader, maxSize)) - for { - header, err := tr.Next() - if err == io.EOF { - break - } - if err != nil { - return fmt.Errorf("could not read tar header: %w", err) - } - if header.Name == "./" { - continue - } - - target := filepath.Join(destinationPath, header.Name) - - // Check for directory traversal. Note that this is more of a sanity check than a security measure. - if !strings.HasPrefix(target, filepath.Clean(destinationPath)+string(os.PathSeparator)) { - return fmt.Errorf("tar entry %s is trying to escape the destination directory", header.Name) - } - - // Extract element depending on its type - switch header.Typeflag { - case tar.TypeDir: - err = os.MkdirAll(target, os.FileMode(header.Mode)) - if err != nil { - return fmt.Errorf("could not create directory: %w", err) - } - case tar.TypeReg: - err = extractTarFile(target, tr, os.FileMode(header.Mode)) - if err != nil { - return err // already wrapped - } - case tar.TypeSymlink: - err = os.Symlink(header.Linkname, target) - if err != nil { - return fmt.Errorf("could not create symlink: %w", err) - } - case tar.TypeLink: - // we currently don't support hard links in the updater - default: - log.Warnf("Unsupported tar entry type %d for %s", header.Typeflag, header.Name) - } - } - - log.Debugf("Successfully extracted archive to %s", destinationPath) - return nil -} - -// extractTarFile extracts a file from a tar archive. -// It is separated from extractTarGz to ensure `defer f.Close()` is called right after the file is written. -func extractTarFile(targetPath string, reader io.Reader, mode fs.FileMode) error { - err := os.MkdirAll(filepath.Dir(targetPath), 0755) - if err != nil { - return fmt.Errorf("could not create directory: %w", err) - } - f, err := os.OpenFile(targetPath, os.O_RDWR|os.O_CREATE|os.O_TRUNC, os.FileMode(mode)) - if err != nil { - return fmt.Errorf("could not create file: %w", err) - } - defer f.Close() - - _, err = io.Copy(f, reader) - if err != nil { - return fmt.Errorf("could not write file: %w", err) - } - return nil -} diff --git a/pkg/updater/download_test.go b/pkg/updater/download_test.go index c218fa810520f..f897db79791f7 100644 --- a/pkg/updater/download_test.go +++ b/pkg/updater/download_test.go @@ -10,12 +10,9 @@ package updater import ( "context" - "crypto/sha256" "embed" "fmt" - "io" "io/fs" - "net/http" "net/http/httptest" "net/url" "os" @@ -98,16 +95,14 @@ func buildOCIRegistry(t *testing.T) *httptest.Server { } type testFixturesServer struct { - t *testing.T - s *httptest.Server - soci *httptest.Server + t *testing.T + s *httptest.Server } func newTestFixturesServer(t *testing.T) *testFixturesServer { return &testFixturesServer{ - t: t, - s: httptest.NewServer(http.FileServer(http.FS(fixturesFS))), - soci: buildOCIRegistry(t), + t: t, + s: buildOCIRegistry(t), } } @@ -115,40 +110,20 @@ func (s *testFixturesServer) Downloader() *downloader { return newDownloader(s.s.Client(), "") } -func (s *testFixturesServer) DownloaderOCI() *downloader { - return newDownloader(s.soci.Client(), "") -} - -func (s *testFixturesServer) DownloaderOCIRegistryOverride() *downloader { - return newDownloader(s.soci.Client(), "my.super/registry") +func (s *testFixturesServer) DownloaderRegistryOverride() *downloader { + return newDownloader(s.s.Client(), "my.super/registry") } func (s *testFixturesServer) Package(f fixture) Package { - file, err := fixturesFS.Open(f.layoutPath) - if err != nil { - panic(err) - } - defer file.Close() - hash := sha256.New() - n, err := io.Copy(hash, file) - if err != nil { - panic(err) - } return Package{ Name: f.pkg, Version: f.version, - URL: s.s.URL + "/" + f.layoutPath, - Size: n, - SHA256: fmt.Sprintf("%x", hash.Sum(nil)), + URL: s.PackageURL(f), } } -func (s *testFixturesServer) PackageOCI(f fixture) Package { - return Package{ - Name: f.pkg, - Version: f.version, - URL: fmt.Sprintf("oci://%s/%s@%s", strings.TrimPrefix(s.soci.URL, "http://"), f.pkg, f.indexDigest), - } +func (s *testFixturesServer) PackageURL(f fixture) string { + return fmt.Sprintf("oci://%s/%s@%s", strings.TrimPrefix(s.s.URL, "http://"), f.pkg, f.indexDigest) } func (s *testFixturesServer) PackageFS(f fixture) fs.FS { @@ -171,12 +146,11 @@ func (s *testFixturesServer) ConfigFS(f fixture) fs.FS { } func (s *testFixturesServer) Image(f fixture) oci.Image { - tmpDir := s.t.TempDir() - image, err := s.Downloader().Download(context.Background(), tmpDir, s.Package(f)) + downloadedPackage, err := s.Downloader().Download(context.Background(), s.Package(f).URL) if err != nil { panic(err) } - return image + return downloadedPackage.Image } func (s *testFixturesServer) Catalog() catalog { @@ -190,7 +164,6 @@ func (s *testFixturesServer) Catalog() catalog { func (s *testFixturesServer) Close() { s.s.Close() - s.soci.Close() } func TestDownload(t *testing.T) { @@ -198,46 +171,24 @@ func TestDownload(t *testing.T) { defer s.Close() d := s.Downloader() - image, err := d.Download(context.Background(), t.TempDir(), s.Package(fixtureSimpleV1)) + downloadedPackage, err := d.Download(context.Background(), s.PackageURL(fixtureSimpleV1)) assert.NoError(t, err) + assert.Equal(t, fixtureSimpleV1.pkg, downloadedPackage.Name) + assert.Equal(t, fixtureSimpleV1.version, downloadedPackage.Version) tmpDir := t.TempDir() - err = extractPackageLayers(image, t.TempDir(), tmpDir) + err = extractPackageLayers(downloadedPackage.Image, t.TempDir(), tmpDir) assert.NoError(t, err) assertEqualFS(t, s.PackageFS(fixtureSimpleV1), os.DirFS(tmpDir)) } -func TestPackage(t *testing.T) { - s := newTestFixturesServer(t) - defer s.Close() - d := s.Downloader() - - expectedPackage := s.PackageOCI(fixtureSimpleV1) - pkg, err := d.Package(context.Background(), expectedPackage.URL) - assert.NoError(t, err) - assert.Equal(t, expectedPackage.Name, pkg.Name) - assert.Equal(t, expectedPackage.Version, pkg.Version) - assert.Equal(t, expectedPackage.URL, pkg.URL) -} - func TestDownloadInvalidHash(t *testing.T) { s := newTestFixturesServer(t) defer s.Close() d := s.Downloader() - pkg := s.Package(fixtureSimpleV1) - pkg.SHA256 = "2857b8e9faf502169c9cfaf6d4ccf3a035eccddc0f5b87c613b673a807ff6d23" - _, err := d.Download(context.Background(), t.TempDir(), pkg) - assert.Error(t, err) -} - -func TestDownloadInvalidVersion(t *testing.T) { - s := newTestFixturesServer(t) - defer s.Close() - d := s.Downloader() - - pkg := s.Package(fixtureSimpleV1) - pkg.Version = "v1-1" - _, err := d.Download(context.Background(), t.TempDir(), pkg) + pkgURL := s.PackageURL(fixtureSimpleV1) + pkgURL = pkgURL[:strings.Index(pkgURL, "@sha256:")] + "@sha256:2857b8e9faf502169c9cfaf6d4ccf3a035eccddc0f5b87c613b673a807ff6d23" + _, err := d.Download(context.Background(), pkgURL) assert.Error(t, err) } @@ -246,30 +197,17 @@ func TestDownloadPlatformNotAvailable(t *testing.T) { defer s.Close() d := s.Downloader() - pkg := s.Package(fixtureSimpleV1Linux2Amd128) - _, err := d.Download(context.Background(), t.TempDir(), pkg) + pkg := s.PackageURL(fixtureSimpleV1Linux2Amd128) + _, err := d.Download(context.Background(), pkg) assert.Error(t, err) } -func TestDownloadRegistry(t *testing.T) { - s := newTestFixturesServer(t) - defer s.Close() - d := s.DownloaderOCI() - - image, err := d.Download(context.Background(), t.TempDir(), s.PackageOCI(fixtureSimpleV1)) - assert.NoError(t, err) - tmpDir := t.TempDir() - err = extractPackageLayers(image, t.TempDir(), tmpDir) - assert.NoError(t, err) - assertEqualFS(t, s.PackageFS(fixtureSimpleV1), os.DirFS(tmpDir)) -} - func TestDownloadRegistryWithOverride(t *testing.T) { s := newTestFixturesServer(t) defer s.Close() - d := s.DownloaderOCIRegistryOverride() + d := s.DownloaderRegistryOverride() - _, err := d.Download(context.Background(), t.TempDir(), s.PackageOCI(fixtureSimpleV1)) + _, err := d.Download(context.Background(), s.PackageURL(fixtureSimpleV1)) assert.Error(t, err) // Host not found } @@ -280,15 +218,15 @@ func TestGetRegistryURL(t *testing.T) { pkg := Package{ Name: "simple", Version: "v1", - URL: s.soci.URL + "/simple@sha256:2aaf415ad1bd66fd9ba5214603c7fb27ef2eb595baf21222cde22846e02aab4d", + URL: s.s.URL + "/simple@sha256:2aaf415ad1bd66fd9ba5214603c7fb27ef2eb595baf21222cde22846e02aab4d", SHA256: "2aaf415ad1bd66fd9ba5214603c7fb27ef2eb595baf21222cde22846e02aab4d", } - d := s.DownloaderOCI() + d := s.Downloader() url := d.getRegistryURL(pkg.URL) - assert.Equal(t, s.soci.URL+"/simple@sha256:2aaf415ad1bd66fd9ba5214603c7fb27ef2eb595baf21222cde22846e02aab4d", url) + assert.Equal(t, s.s.URL+"/simple@sha256:2aaf415ad1bd66fd9ba5214603c7fb27ef2eb595baf21222cde22846e02aab4d", url) - d = s.DownloaderOCIRegistryOverride() + d = s.DownloaderRegistryOverride() url = d.getRegistryURL(pkg.URL) assert.Equal(t, "my.super/registry/simple@sha256:2aaf415ad1bd66fd9ba5214603c7fb27ef2eb595baf21222cde22846e02aab4d", url) } @@ -296,9 +234,9 @@ func TestGetRegistryURL(t *testing.T) { func TestDownloadOCIPlatformNotAvailable(t *testing.T) { s := newTestFixturesServer(t) defer s.Close() - d := s.DownloaderOCI() + d := s.Downloader() - pkg := s.PackageOCI(fixtureSimpleV1Linux2Amd128) - _, err := d.Download(context.Background(), t.TempDir(), pkg) + pkg := s.PackageURL(fixtureSimpleV1Linux2Amd128) + _, err := d.Download(context.Background(), pkg) assert.Error(t, err) } diff --git a/pkg/updater/install.go b/pkg/updater/install.go index 906b94e62f6aa..b18b000a4a354 100644 --- a/pkg/updater/install.go +++ b/pkg/updater/install.go @@ -6,9 +6,13 @@ package updater import ( + "archive/tar" "fmt" + "io" + "io/fs" "os" "path/filepath" + "strings" oci "github.com/google/go-containerregistry/pkg/v1" "github.com/google/go-containerregistry/pkg/v1/types" @@ -146,3 +150,79 @@ func extractPackageLayers(image oci.Image, configDir string, packageDir string) } return nil } + +// extractTarArchive extracts a tar archive to the given destination path +// +// Note on security: This function does not currently attempt to fully mitigate zip-slip attacks. +// This is purposeful as the archive is extracted only after its SHA256 hash has been validated +// against its reference in the package catalog. This catalog is itself sent over Remote Config +// which guarantees its integrity. +func extractTarArchive(reader io.Reader, destinationPath string, maxSize int64) error { + log.Debugf("Extracting archive to %s", destinationPath) + tr := tar.NewReader(io.LimitReader(reader, maxSize)) + for { + header, err := tr.Next() + if err == io.EOF { + break + } + if err != nil { + return fmt.Errorf("could not read tar header: %w", err) + } + if header.Name == "./" { + continue + } + + target := filepath.Join(destinationPath, header.Name) + + // Check for directory traversal. Note that this is more of a sanity check than a security measure. + if !strings.HasPrefix(target, filepath.Clean(destinationPath)+string(os.PathSeparator)) { + return fmt.Errorf("tar entry %s is trying to escape the destination directory", header.Name) + } + + // Extract element depending on its type + switch header.Typeflag { + case tar.TypeDir: + err = os.MkdirAll(target, os.FileMode(header.Mode)) + if err != nil { + return fmt.Errorf("could not create directory: %w", err) + } + case tar.TypeReg: + err = extractTarFile(target, tr, os.FileMode(header.Mode)) + if err != nil { + return err // already wrapped + } + case tar.TypeSymlink: + err = os.Symlink(header.Linkname, target) + if err != nil { + return fmt.Errorf("could not create symlink: %w", err) + } + case tar.TypeLink: + // we currently don't support hard links in the updater + default: + log.Warnf("Unsupported tar entry type %d for %s", header.Typeflag, header.Name) + } + } + + log.Debugf("Successfully extracted archive to %s", destinationPath) + return nil +} + +// extractTarFile extracts a file from a tar archive. +// It is separated from extractTarGz to ensure `defer f.Close()` is called right after the file is written. +func extractTarFile(targetPath string, reader io.Reader, mode fs.FileMode) error { + err := os.MkdirAll(filepath.Dir(targetPath), 0755) + if err != nil { + return fmt.Errorf("could not create directory: %w", err) + } + f, err := os.OpenFile(targetPath, os.O_RDWR|os.O_CREATE|os.O_TRUNC, os.FileMode(mode)) + if err != nil { + return fmt.Errorf("could not create file: %w", err) + } + defer f.Close() + + _, err = io.Copy(f, reader) + if err != nil { + return fmt.Errorf("could not write file: %w", err) + } + return nil +} diff --git a/pkg/updater/install_test.go b/pkg/updater/install_test.go index 51a8e0ea24d40..fc51044119a36 100644 --- a/pkg/updater/install_test.go +++ b/pkg/updater/install_test.go @@ -92,7 +92,7 @@ func (i *testInstaller) ConfigFS(f fixture) fs.FS { func TestInstallStable(t *testing.T) { s := newTestFixturesServer(t) - defer s.s.Close() + defer s.Close() installer := newTestInstaller(t) err := installer.installStable(fixtureSimpleV1.pkg, fixtureSimpleV1.version, s.Image(fixtureSimpleV1)) @@ -108,7 +108,7 @@ func TestInstallStable(t *testing.T) { func TestInstallExperiment(t *testing.T) { s := newTestFixturesServer(t) - defer s.s.Close() + defer s.Close() installer := newTestInstaller(t) err := installer.installStable(fixtureSimpleV1.pkg, fixtureSimpleV1.version, s.Image(fixtureSimpleV1)) @@ -127,7 +127,7 @@ func TestInstallExperiment(t *testing.T) { func TestPromoteExperiment(t *testing.T) { s := newTestFixturesServer(t) - defer s.s.Close() + defer s.Close() installer := newTestInstaller(t) err := installer.installStable(fixtureSimpleV1.pkg, fixtureSimpleV1.version, s.Image(fixtureSimpleV1)) @@ -147,7 +147,7 @@ func TestPromoteExperiment(t *testing.T) { func TestUninstallExperiment(t *testing.T) { s := newTestFixturesServer(t) - defer s.s.Close() + defer s.Close() installer := newTestInstaller(t) err := installer.installStable(fixtureSimpleV1.pkg, fixtureSimpleV1.version, s.Image(fixtureSimpleV1)) diff --git a/pkg/updater/service/cmd_executor.go b/pkg/updater/service/cmd_executor.go index bb4ad5df2ded1..072720d541437 100644 --- a/pkg/updater/service/cmd_executor.go +++ b/pkg/updater/service/cmd_executor.go @@ -9,6 +9,7 @@ package service import ( + "context" "errors" "fmt" "io" @@ -16,11 +17,14 @@ import ( "os/exec" "path/filepath" "strings" + "time" "github.com/DataDog/datadog-agent/pkg/config/setup" ) -var updaterHelper = filepath.Join(setup.InstallPath, "bin", "updater", "updater-helper") +var updaterHelper = filepath.Join(setup.InstallPath, "bin", "installer", "helper") + +const execTimeout = 30 * time.Second // ChownDDAgent changes the owner of the given path to the dd-agent user. func ChownDDAgent(path string) error { @@ -41,7 +45,9 @@ func rmAgentSymlink() error { } func executeCommand(command string) error { - cmd := exec.Command(updaterHelper, command) + cancelctx, cancelfunc := context.WithTimeout(context.Background(), execTimeout) + defer cancelfunc() + cmd := exec.CommandContext(cancelctx, updaterHelper, command) cmd.Stdout = os.Stdout stderr, err := cmd.StderrPipe() if err != nil { @@ -61,9 +67,9 @@ func executeCommand(command string) error { return nil } -// BuildHelperForTests builds the updater-helper binary for test +// BuildHelperForTests builds the helper binary for test func BuildHelperForTests(pkgDir, binPath string, skipUIDCheck bool) error { - updaterHelper = filepath.Join(binPath, "/updater-helper") + updaterHelper = filepath.Join(binPath, "/helper") localPath, _ := filepath.Abs(".") targetDir := "datadog-agent/pkg" index := strings.Index(localPath, targetDir) diff --git a/pkg/updater/service/cmd_executor_windows.go b/pkg/updater/service/cmd_executor_windows.go index 9a978e801dbae..55f88aa7229fa 100644 --- a/pkg/updater/service/cmd_executor_windows.go +++ b/pkg/updater/service/cmd_executor_windows.go @@ -18,7 +18,7 @@ func RemoveAll(path string) error { return os.RemoveAll(path) } -// BuildHelperForTests builds the updater-helper binary for test +// BuildHelperForTests builds the helper binary for test func BuildHelperForTests(_, _ string, _ bool) error { return nil } diff --git a/pkg/updater/updater.go b/pkg/updater/updater.go index b56096658c434..065b9236cda71 100644 --- a/pkg/updater/updater.go +++ b/pkg/updater/updater.go @@ -34,8 +34,7 @@ const ( // defaultLocksPath is the default path to the run directory. defaultLocksPath = "/var/run/datadog-packages" // gcInterval is the interval at which the GC will run - gcInterval = 1 * time.Hour - bootUpdater = defaultRepositoriesPath + "/installer_boot" + gcInterval = 1 * time.Hour ) var ( @@ -43,9 +42,6 @@ var ( // It is the sum of the maximum size of the extracted oci-layout and the maximum size of the datadog package requiredDiskSpace = ociLayoutMaxSize + datadogPackageMaxSize fsDisk = filesystem.NewDisk() - avoidPurge = map[string]struct{}{ - bootUpdater: {}, - } ) // Updater is the updater used to update packages. @@ -71,6 +67,7 @@ type updaterImpl struct { downloader *downloader installer *installer + remoteUpdates bool rc *remoteConfig catalog catalog requests chan remoteAPIRequest @@ -108,9 +105,6 @@ func cleanDir(dir string, cleanFunc func(string) error) { for _, entry := range entries { path := filepath.Join(dir, entry.Name()) - if _, ok := avoidPurge[path]; ok { - continue - } err := cleanFunc(path) if err != nil { log.Warnf("updater: could not remove %s: %v", path, err) @@ -133,6 +127,7 @@ func newUpdater(rc *remoteConfig, repositoriesPath string, locksPath string, con rcClient := rc u := &updaterImpl{ + remoteUpdates: config.GetBool("updater.remote_updates"), rc: rcClient, repositories: repositories, downloader: newDownloader(http.DefaultClient, remoteRegistryOverride), @@ -153,7 +148,6 @@ func (u *updaterImpl) GetState() (map[string]repository.State, error) { // Start starts remote config and the garbage collector. func (u *updaterImpl) Start(_ context.Context) error { - u.rc.Start(u.handleCatalogUpdate, u.scheduleRemoteAPIRequest) go func() { for { select { @@ -174,6 +168,11 @@ func (u *updaterImpl) Start(_ context.Context) error { } } }() + if !u.remoteUpdates { + log.Infof("updater: Remote updates are disabled") + return nil + } + u.rc.Start(u.handleCatalogUpdate, u.scheduleRemoteAPIRequest) return nil } @@ -197,7 +196,7 @@ func (u *updaterImpl) BootstrapDefault(ctx context.Context, pkg string) error { if !ok { return fmt.Errorf("could not get default package %s for %s, %s", pkg, runtime.GOARCH, runtime.GOOS) } - return u.boostrapPackage(ctx, stablePackage) + return u.boostrapPackage(ctx, stablePackage.URL, stablePackage.Name, stablePackage.Version) } // BootstrapVersion installs the stable version of the package. @@ -211,7 +210,7 @@ func (u *updaterImpl) BootstrapVersion(ctx context.Context, pkg string, version 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) + return u.boostrapPackage(ctx, stablePackage.URL, stablePackage.Name, stablePackage.Version) } // BootstrapURL installs the stable version of the package. @@ -220,34 +219,31 @@ func (u *updaterImpl) BootstrapURL(ctx context.Context, url string) error { defer u.m.Unlock() u.refreshState(ctx) defer u.refreshState(ctx) - stablePackage, err := u.downloader.Package(ctx, url) - if err != nil { - return fmt.Errorf("could not get package from url: %w", err) - } - return u.boostrapPackage(ctx, stablePackage) + + return u.boostrapPackage(ctx, url, "", "") } -func (u *updaterImpl) boostrapPackage(ctx context.Context, stablePackage Package) error { +func (u *updaterImpl) boostrapPackage(ctx context.Context, url string, expectedPackage string, expectedVersion string) 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()) if err != nil { return fmt.Errorf("not enough disk space to install package: %w", err) } - log.Infof("Updater: Bootstrapping stable version %s of package %s", stablePackage.Version, stablePackage.Name) - tmpDir, err := os.MkdirTemp("", "") - if err != nil { - return fmt.Errorf("could not create temporary directory: %w", err) - } - defer os.RemoveAll(tmpDir) - image, err := u.downloader.Download(ctx, tmpDir, stablePackage) + log.Infof("Updater: Bootstrapping stable package from %s", url) + downloadedPackage, err := u.downloader.Download(ctx, url) if err != nil { return fmt.Errorf("could not download: %w", err) } - err = u.installer.installStable(stablePackage.Name, stablePackage.Version, image) + // check that the downloaded package metadata matches the catalog metadata + if (expectedPackage != "" && downloadedPackage.Name != expectedPackage) || (expectedVersion != "" && downloadedPackage.Version != expectedVersion) { + return fmt.Errorf("downloaded package does not match expected package: %s, %s != %s, %s", downloadedPackage.Name, downloadedPackage.Version, expectedPackage, expectedVersion) + } + err = u.installer.installStable(downloadedPackage.Name, downloadedPackage.Version, downloadedPackage.Image) if err != nil { return fmt.Errorf("could not install: %w", err) } - log.Infof("Updater: Successfully installed default version %s of package %s", stablePackage.Version, stablePackage.Name) + + log.Infof("Updater: Successfully installed default version %s of package %s from %s", downloadedPackage.Version, downloadedPackage.Name, url) return nil } @@ -268,16 +264,15 @@ func (u *updaterImpl) StartExperiment(ctx context.Context, pkg string, version s if !ok { return fmt.Errorf("could not get package %s, %s for %s, %s", pkg, version, runtime.GOARCH, runtime.GOOS) } - tmpDir, err := os.MkdirTemp("", "") - if err != nil { - return fmt.Errorf("could not create temporary directory: %w", err) - } - defer os.RemoveAll(tmpDir) - image, err := u.downloader.Download(ctx, tmpDir, experimentPackage) + downloadedPackage, err := u.downloader.Download(ctx, experimentPackage.URL) if err != nil { return fmt.Errorf("could not download experiment: %w", err) } - err = u.installer.installExperiment(pkg, version, image) + // check that the downloaded package metadata matches the catalog metadata + if downloadedPackage.Name != experimentPackage.Name || downloadedPackage.Version != experimentPackage.Version { + return fmt.Errorf("downloaded package does not match requested package: %s, %s != %s, %s", downloadedPackage.Name, downloadedPackage.Version, experimentPackage.Name, experimentPackage.Version) + } + err = u.installer.installExperiment(pkg, version, downloadedPackage.Image) if err != nil { return fmt.Errorf("could not install experiment: %w", err) } diff --git a/pkg/updater/updater_test.go b/pkg/updater/updater_test.go index 8a691d36b29fe..09ed2e949db6c 100644 --- a/pkg/updater/updater_test.go +++ b/pkg/updater/updater_test.go @@ -84,6 +84,8 @@ func newTestUpdater(t *testing.T, s *testFixturesServer, rcc *testRemoteConfigCl func newTestUpdaterWithPaths(t *testing.T, s *testFixturesServer, rcc *testRemoteConfigClient, defaultFixture fixture) (*updaterImpl, string, string) { cfg := model.NewConfig("datadog", "DD", strings.NewReplacer(".", "_")) + var b = true + cfg.Set("updater.remote_updates", &b, model.SourceDefault) rc := &remoteConfig{client: rcc} rootPath := t.TempDir() locksPath := t.TempDir() @@ -119,7 +121,7 @@ func TestUpdaterBootstrapURL(t *testing.T) { rc := newTestRemoteConfigClient() updater := newTestUpdater(t, s, rc, fixtureSimpleV1) - err := updater.BootstrapURL(context.Background(), s.PackageOCI(fixtureSimpleV1).URL) + err := updater.BootstrapURL(context.Background(), s.Package(fixtureSimpleV1).URL) assert.NoError(t, err) r := updater.repositories.Get(fixtureSimpleV1.pkg) diff --git a/pkg/util/common_test.go b/pkg/util/common_test.go index 429d33986a421..6d59ec89c2056 100644 --- a/pkg/util/common_test.go +++ b/pkg/util/common_test.go @@ -33,7 +33,7 @@ func TestJSONConverter(t *testing.T) { var cf integration.RawMap // Read file contents - yamlFile, err := os.ReadFile(fmt.Sprintf("../collector/corechecks/embed/jmx/fixtures/%s.yaml", c)) + yamlFile, err := os.ReadFile(fmt.Sprintf("../jmxfetch/fixtures/%s.yaml", c)) assert.NoError(t, err) // Parse configuration diff --git a/release.json b/release.json index bd4eb6f8cd1c1..822c764bc348d 100644 --- a/release.json +++ b/release.json @@ -9,8 +9,8 @@ "INTEGRATIONS_CORE_VERSION": "master", "OMNIBUS_SOFTWARE_VERSION": "0566b54e725fcd66e841579a1d789dd5bb23870f", "OMNIBUS_RUBY_VERSION": "d471a96fbf7f59c7384acdc94a161373090df807", - "JMXFETCH_VERSION": "0.49.0", - "JMXFETCH_HASH": "b5c2c3ff27603f469bb11961d559f1154887963e02b9d70d5f1fc7efa527a486", + "JMXFETCH_VERSION": "0.49.1", + "JMXFETCH_HASH": "6c5d4ae2f858aa57fac7f92d6615931bf95f9a99c92979090f2de9d4b3c1f0d3", "MACOS_BUILD_VERSION": "master", "WINDOWS_DDNPM_DRIVER": "release-signed", "WINDOWS_DDNPM_VERSION": "2.6.0", @@ -28,8 +28,8 @@ "INTEGRATIONS_CORE_VERSION": "master", "OMNIBUS_SOFTWARE_VERSION": "0566b54e725fcd66e841579a1d789dd5bb23870f", "OMNIBUS_RUBY_VERSION": "d471a96fbf7f59c7384acdc94a161373090df807", - "JMXFETCH_VERSION": "0.49.0", - "JMXFETCH_HASH": "b5c2c3ff27603f469bb11961d559f1154887963e02b9d70d5f1fc7efa527a486", + "JMXFETCH_VERSION": "0.49.1", + "JMXFETCH_HASH": "6c5d4ae2f858aa57fac7f92d6615931bf95f9a99c92979090f2de9d4b3c1f0d3", "MACOS_BUILD_VERSION": "master", "WINDOWS_DDNPM_DRIVER": "release-signed", "WINDOWS_DDNPM_VERSION": "2.6.0", @@ -47,8 +47,8 @@ "INTEGRATIONS_CORE_VERSION": "7.53.0-rc.2", "OMNIBUS_SOFTWARE_VERSION": "7.53.0-rc.1", "OMNIBUS_RUBY_VERSION": "7.53.0-rc.1", - "JMXFETCH_VERSION": "0.49.0", - "JMXFETCH_HASH": "b5c2c3ff27603f469bb11961d559f1154887963e02b9d70d5f1fc7efa527a486", + "JMXFETCH_VERSION": "0.49.1", + "JMXFETCH_HASH": "6c5d4ae2f858aa57fac7f92d6615931bf95f9a99c92979090f2de9d4b3c1f0d3", "SECURITY_AGENT_POLICIES_VERSION": "v0.53.1", "MACOS_BUILD_VERSION": "6.53.0-rc.1", "WINDOWS_DDNPM_DRIVER": "release-signed", @@ -62,8 +62,8 @@ "INTEGRATIONS_CORE_VERSION": "7.53.0-rc.2", "OMNIBUS_SOFTWARE_VERSION": "7.53.0-rc.1", "OMNIBUS_RUBY_VERSION": "7.53.0-rc.1", - "JMXFETCH_VERSION": "0.49.0", - "JMXFETCH_HASH": "b5c2c3ff27603f469bb11961d559f1154887963e02b9d70d5f1fc7efa527a486", + "JMXFETCH_VERSION": "0.49.1", + "JMXFETCH_HASH": "6c5d4ae2f858aa57fac7f92d6615931bf95f9a99c92979090f2de9d4b3c1f0d3", "SECURITY_AGENT_POLICIES_VERSION": "v0.53.1", "MACOS_BUILD_VERSION": "7.53.0-rc.1", "WINDOWS_DDNPM_DRIVER": "release-signed", diff --git a/releasenotes/notes/bump-jmxfetch-to-0_49_1-618bbc38451cf0d8.yaml b/releasenotes/notes/bump-jmxfetch-to-0_49_1-618bbc38451cf0d8.yaml new file mode 100644 index 0000000000000..8336f48b702a9 --- /dev/null +++ b/releasenotes/notes/bump-jmxfetch-to-0_49_1-618bbc38451cf0d8.yaml @@ -0,0 +1,12 @@ +# 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. +--- +upgrade: + - | + Upgraded JMXFetch to `0.49.1 `_ which adds support for + ZGC Major and Minor Cycles and ZGC Major and Minor Pauses beans. diff --git a/releasenotes/notes/fix-jmx-check-f403fa976a8c1a80.yaml b/releasenotes/notes/fix-jmx-check-f403fa976a8c1a80.yaml new file mode 100644 index 0000000000000..cd927a5b5b090 --- /dev/null +++ b/releasenotes/notes/fix-jmx-check-f403fa976a8c1a80.yaml @@ -0,0 +1,3 @@ +fixes: + - | + Fix a race condition that could prevent JMX checks from running. diff --git a/releasenotes/notes/less-logging-fetch-config-40f70fd190b23720.yaml b/releasenotes/notes/less-logging-fetch-config-40f70fd190b23720.yaml new file mode 100644 index 0000000000000..82bb99ee0f258 --- /dev/null +++ b/releasenotes/notes/less-logging-fetch-config-40f70fd190b23720.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: + - | + Don't log when failing to fetch config of other Agents diff --git a/releasenotes/notes/logs-api-user-agent-17d71d00a0411b49.yaml b/releasenotes/notes/logs-api-user-agent-17d71d00a0411b49.yaml new file mode 100644 index 0000000000000..ad97ef41d3b34 --- /dev/null +++ b/releasenotes/notes/logs-api-user-agent-17d71d00a0411b49.yaml @@ -0,0 +1,5 @@ +fixes: + - | + The `User-Agent` header is now set to `datadog-agent/` for logs + forwarding requests to `/api/v2/logs` and `/intake`. Previously it was set + to `Go-http-client/1.1`. diff --git a/releasenotes/notes/otlp-v0.97.0-3814dd8.yaml b/releasenotes/notes/otlp-v0.97.0-3814dd8.yaml new file mode 100644 index 0000000000000..f248d2e2066b0 --- /dev/null +++ b/releasenotes/notes/otlp-v0.97.0-3814dd8.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: + - | + The OTLP ingestion endpoint now supports the same settings and protocol as the OpenTelemetry Collector OTLP receiver v0.97.0. diff --git a/releasenotes/notes/rename-flare_stripped_keys-setting-fcb082f6398759fb.yaml b/releasenotes/notes/rename-flare_stripped_keys-setting-fcb082f6398759fb.yaml new file mode 100644 index 0000000000000..f30dee2d53758 --- /dev/null +++ b/releasenotes/notes/rename-flare_stripped_keys-setting-fcb082f6398759fb.yaml @@ -0,0 +1,3 @@ +deprecations: + - | + The `flare_stripped_keys` configuration is now deprecated. Use `scrubber.additional_keys` instead. diff --git a/repository.datadog.yml b/repository.datadog.yml index 1e16d32886dcf..595826e4d6459 100644 --- a/repository.datadog.yml +++ b/repository.datadog.yml @@ -3,7 +3,7 @@ schema-version: v1 kind: mergequeue enable: true merge_method: squash -workflow_type: speculative +workflow_type: speculative_parallel_impact speculative_max_depth: 5 wait_for_check_timeout_in_minutes: 240 gitlab_jobs_retry_enable: true diff --git a/tasks/__init__.py b/tasks/__init__.py index 709f66af258f9..940570d754855 100644 --- a/tasks/__init__.py +++ b/tasks/__init__.py @@ -32,6 +32,7 @@ owners, package, pipeline, + pre_commit, process_agent, release, rtloader, @@ -158,6 +159,7 @@ ns.add_collection(installer) ns.add_collection(owners) ns.add_collection(modules) +ns.add_collection(pre_commit) ns.configure( { 'run': { diff --git a/tasks/agent.py b/tasks/agent.py index c46bd961841e1..b60eb59c4260a 100644 --- a/tasks/agent.py +++ b/tasks/agent.py @@ -339,7 +339,7 @@ def refresh_assets(_, build_tags, development=True, flavor=AgentFlavor.base.name os.path.join(dist_folder, "conf.d/process_agent.yaml.default"), ) - shutil.copytree("./cmd/agent/gui/views", os.path.join(dist_folder, "views"), dirs_exist_ok=True) + shutil.copytree("./comp/core/gui/guiimpl/views", os.path.join(dist_folder, "views"), dirs_exist_ok=True) if development: shutil.copytree("./dev/dist/", dist_folder, dirs_exist_ok=True) diff --git a/tasks/installer.py b/tasks/installer.py index 0f81f873a806d..6b0e7bbff1760 100644 --- a/tasks/installer.py +++ b/tasks/installer.py @@ -7,13 +7,12 @@ from invoke import task -from tasks.agent import bundle_install_omnibus, render_config +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, timed -BIN_PATH = os.path.join(".", "bin", "updater") +BIN_PATH = os.path.join(".", "bin", "installer") MAJOR_VERSION = '7' @@ -48,29 +47,19 @@ def build( race_opt = "-race" if race else "" build_type = "-a" if rebuild else "" go_build_tags = " ".join(build_tags) - updater_bin = os.path.join(BIN_PATH, bin_name("updater")) + updater_bin = os.path.join(BIN_PATH, bin_name("installer")) cmd = f"go build -mod={go_mod} {race_opt} {build_type} -tags \"{go_build_tags}\" " cmd += f"-o {updater_bin} -gcflags=\"{gcflags}\" -ldflags=\"{ldflags}\" {REPO_PATH}/cmd/updater" ctx.run(cmd, env=env) - helper_bin = os.path.join(BIN_PATH, bin_name("updater-helper")) + helper_bin = os.path.join(BIN_PATH, bin_name("helper")) helper_ldflags = f"-X main.installPath={install_path} -w -s" helper_path = os.path.join("pkg", "updater", "service", "helper") cmd = f"CGO_ENABLED=0 go build {build_type} -tags \"{go_build_tags}\" " cmd += f"-o {helper_bin} -gcflags=\"{gcflags}\" -ldflags=\"{helper_ldflags}\" {helper_path}/main.go" ctx.run(cmd, env=env) - render_config( - ctx, - env, - flavor=AgentFlavor.base, - python_runtimes='3', - skip_assets=False, - build_tags=build_tags, - development=True, - windows_sysprobe=False, - ) def get_omnibus_env( diff --git a/tasks/libs/ciproviders/gitlab.py b/tasks/libs/ciproviders/gitlab.py index 986f8c49b7364..6e79edca40939 100644 --- a/tasks/libs/ciproviders/gitlab.py +++ b/tasks/libs/ciproviders/gitlab.py @@ -297,6 +297,15 @@ def find_tag(self, tag_name): else: raise e + def lint(self, configuration): + """ + Lint a gitlab-ci configuration. + """ + path = f"/projects/{quote(self.project_name, safe='')}/ci/lint?dry_run=true&include_jobs=true" + headers = {"Content-Type": "application/json"} + data = {"content": configuration} + return self.make_request(path, headers=headers, data=data, json_input=True, json_output=True) + def make_request( self, path, headers=None, data=None, json_input=False, json_output=False, stream_output=False, method=None ): @@ -383,7 +392,7 @@ def to_yaml(cls, dumper, data): return dumper.represent_sequence(cls.yaml_tag, data.data, flow_style=True) -def generate_gitlab_full_configuration(input_file): +def generate_gitlab_full_configuration(input_file, context=None, compare_to=None): """ Generate a full gitlab-ci configuration by resolving all includes """ @@ -396,6 +405,27 @@ def generate_gitlab_full_configuration(input_file): full_configuration = {} for yaml_file in yaml_contents: full_configuration.update(yaml_file) + # Override some variables with a dedicated context + if context: + full_configuration["variables"].update(context) + if compare_to: + for value in full_configuration.values(): + if ( + isinstance(value, dict) + and "changes" in value + and isinstance(value["changes"], dict) + and "compare_to" in value["changes"] + ): + value["changes"]["compare_to"] = compare_to + elif isinstance(value, list): + for v in value: + if ( + isinstance(v, dict) + and "changes" in v + and isinstance(v["changes"], dict) + and "compare_to" in v["changes"] + ): + v["changes"]["compare_to"] = compare_to return yaml.safe_dump(full_configuration) @@ -403,14 +433,113 @@ def read_includes(yaml_file, includes): """ Recursive method to read all includes from yaml files and store them in a list """ - with open(yaml_file) as f: - current_file = yaml.safe_load(f) + current_file = read_content(yaml_file) if 'include' not in current_file: includes.append(current_file) else: for include in current_file['include']: - if include.startswith('http'): - continue read_includes(include, includes) del current_file['include'] includes.append(current_file) + + +def read_content(file_path): + """ + Read the content of a file, either from a local file or from an http endpoint + """ + content = None + if file_path.startswith('http'): + import requests + + response = requests.get(file_path) + response.raise_for_status() + content = response.text + else: + with open(file_path) as f: + content = f.read() + return yaml.safe_load(content) + + +def get_preset_contexts(required_tests): + possible_tests = ["all", "main", "release", "mq"] + required_tests = required_tests.casefold().split(",") + if set(required_tests) | set(possible_tests) != set(possible_tests): + raise Exit(f"Invalid test required: {required_tests} must contain only values from {possible_tests}", 1) + main_contexts = [ + ("BUCKET_BRANCH", ["nightly"]), # ["dev", "nightly", "beta", "stable", "oldnightly"] + ("CI_COMMIT_BRANCH", ["main"]), # ["main", "mq-working-branch-main", "7.42.x", "any/name"] + ("CI_COMMIT_TAG", [""]), # ["", "1.2.3-rc.4", "6.6.6"] + ("CI_PIPELINE_SOURCE", ["pipeline"]), # ["trigger", "pipeline", "schedule"] + ("DEPLOY_AGENT", ["true"]), + ("RUN_ALL_BUILDS", ["true"]), + ("RUN_E2E_TESTS", ["auto"]), + ("RUN_KMT_TESTS", ["on"]), + ("RUN_UNIT_TESTS", ["on"]), + ("TESTING_CLEANUP", ["true"]), + ] + release_contexts = [ + ("BUCKET_BRANCH", ["stable"]), + ("CI_COMMIT_BRANCH", ["7.42.x"]), + ("CI_COMMIT_TAG", ["3.2.1", "1.2.3-rc.4"]), + ("CI_PIPELINE_SOURCE", ["schedule"]), + ("DEPLOY_AGENT", ["true"]), + ("RUN_ALL_BUILDS", ["true"]), + ("RUN_E2E_TESTS", ["auto"]), + ("RUN_KMT_TESTS", ["on"]), + ("RUN_UNIT_TESTS", ["on"]), + ("TESTING_CLEANUP", ["true"]), + ] + mq_contexts = [ + ("BUCKET_BRANCH", ["dev"]), + ("CI_COMMIT_BRANCH", ["mq-working-branch-main"]), + ("CI_PIPELINE_SOURCE", ["pipeline"]), + ("DEPLOY_AGENT", ["false"]), + ("RUN_ALL_BUILDS", ["false"]), + ("RUN_E2E_TESTS", ["auto"]), + ("RUN_KMT_TESTS", ["off"]), + ("RUN_UNIT_TESTS", ["off"]), + ("TESTING_CLEANUP", ["false"]), + ] + all_contexts = [] + for test in required_tests: + if test in ["all", "main"]: + generate_contexts(main_contexts, [], all_contexts) + if test in ["all", "release"]: + generate_contexts(release_contexts, [], all_contexts) + if test in ["all", "mq"]: + generate_contexts(mq_contexts, [], all_contexts) + return all_contexts + + +def generate_contexts(contexts, context, all_contexts): + """ + Recursive method to generate all possible contexts from a list of tuples + """ + if len(contexts) == 0: + all_contexts.append(context[:]) + return + for value in contexts[0][1]: + context.append((contexts[0][0], value)) + generate_contexts(contexts[1:], context, all_contexts) + context.pop() + + +def load_context(context): + """ + Load a context either from a yaml file or from a json string + """ + if os.path.exists(context): + with open(context) as f: + y = yaml.safe_load(f) + if "variables" not in y: + raise Exit( + f"Invalid context file: {context}, missing 'variables' key. Input file must be similar to tasks/unit-tests/testdata/gitlab_main_context_template.yml", + 1, + ) + return [[(k, v) for k, v in y["variables"].items()]] + else: + try: + j = json.loads(context) + return [[(k, v) for k, v in j.items()]] + except json.JSONDecodeError: + raise Exit(f"Invalid context: {context}, must be a valid json, or a path to a yaml file", 1) diff --git a/tasks/libs/pipeline/github_jira_map.yaml b/tasks/libs/pipeline/github_jira_map.yaml index e6a58bc72ba6a..a9a51f2e99471 100644 --- a/tasks/libs/pipeline/github_jira_map.yaml +++ b/tasks/libs/pipeline/github_jira_map.yaml @@ -7,7 +7,7 @@ '@datadog/container-ecosystems': CECO '@datadog/platform-integrations': PLINT '@datadog/agent-security': CWS -'@datadog/agent-apm': AIT +'@datadog/agent-apm': APMSP '@datadog/network-device-monitoring': NDMII '@datadog/processes': PROCS '@datadog/agent-metrics-logs': AMLII diff --git a/tasks/linter.py b/tasks/linter.py index 4d3d69c86bcb3..033c047bd787d 100644 --- a/tasks/linter.py +++ b/tasks/linter.py @@ -8,6 +8,13 @@ from tasks.build_tags import compute_build_tags_for_flavor from tasks.flavor import AgentFlavor from tasks.go import run_golangci_lint +from tasks.libs.ciproviders.gitlab import ( + Gitlab, + generate_gitlab_full_configuration, + get_gitlab_token, + get_preset_contexts, + load_context, +) from tasks.libs.common.check_tools_version import check_tools_version from tasks.libs.common.utils import DEFAULT_BRANCH, color_message from tasks.libs.types.copyright import CopyrightLinter @@ -351,3 +358,28 @@ def is_get_parameter_call(file): return SSMParameterCall(file, nb, with_wrapper=True, with_env_var=False) except UnicodeDecodeError: pass + + +@task +def gitlab_ci(_, test="all", custom_context=None): + """ + Lint Gitlab CI files in the datadog-agent repository. + """ + all_contexts = [] + if custom_context: + all_contexts = load_context(custom_context) + else: + all_contexts = get_preset_contexts(test) + print(f"We will tests {len(all_contexts)} contexts.") + for context in all_contexts: + print("Test gitlab configuration with context: ", context) + config = generate_gitlab_full_configuration(".gitlab-ci.yml", dict(context)) + gitlab = Gitlab(api_token=get_gitlab_token()) + res = gitlab.lint(config) + status = color_message("valid", "green") if res["valid"] else color_message("invalid", "red") + print(f"Config is {status}") + if len(res["warnings"]) > 0: + print(color_message(f"Warnings: {res['warnings']}", "orange"), file=sys.stderr) + if not res["valid"]: + print(color_message(f"Errors: {res['errors']}", "red"), file=sys.stderr) + raise Exit(code=1) diff --git a/tasks/pre_commit.py b/tasks/pre_commit.py new file mode 100644 index 0000000000000..16b1d4dabcf8f --- /dev/null +++ b/tasks/pre_commit.py @@ -0,0 +1,21 @@ +import sys + +from invoke import task +from invoke.context import Context + +from tasks.libs.common.color import color_message + + +@task +def shell_check_no_set_x(ctx: Context): + """ + Check that shell scripts do not use 'set -x' or 'set -o xtrace'" + """ + command = "git grep -rnE --color=always 'set( +-[^ ])* +-[^ ]*(x|( +xtrace))' -- ':*.sh' ':*/Dockerfile' ':*.yaml' ':*.yml' ':(exclude).pre-commit-config.yaml'" + + result = ctx.run(command, hide=True, warn=True) + if result.return_code == 0: + print(result.stdout.strip(), end="\n\n") + print(color_message('error:', 'red'), 'No shell script should use "set -x"', file=sys.stderr) + + exit(1) diff --git a/tasks/unit-tests/testdata/gitlab_main_context_template.yml b/tasks/unit-tests/testdata/gitlab_main_context_template.yml new file mode 100644 index 0000000000000..eeac1dbd391bd --- /dev/null +++ b/tasks/unit-tests/testdata/gitlab_main_context_template.yml @@ -0,0 +1,11 @@ +--- +variables: + BUCKET_BRANCH: 'dev' + CI_COMMIT_BRANCH: 'main' + CI_COMMIT_TAG: '' + CI_PIPELINE_SOURCE: 'pipeline' + DEPLOY_AGENT: 'true' + RUN_ALL_BUILDS: 'true' + RUN_E2E_TESTS: 'on' + RUN_KMT_TESTS: 'on' + RUN_UNIT_TESTS: 'true' diff --git a/tasks/unit-tests/testdata/gitlab_mq_context_template.yml b/tasks/unit-tests/testdata/gitlab_mq_context_template.yml new file mode 100644 index 0000000000000..29c05d73fcfb9 --- /dev/null +++ b/tasks/unit-tests/testdata/gitlab_mq_context_template.yml @@ -0,0 +1,10 @@ +--- +variables: + BUCKET_BRANCH: 'dev' + CI_COMMIT_BRANCH: 'mq-working-branch-main' + CI_PIPELINE_SOURCE: 'pipeline' + DEPLOY_AGENT: 'false' + RUN_ALL_BUILDS: 'false' + RUN_E2E_TESTS: 'auto' + RUN_KMT_TESTS: 'off' + RUN_UNIT_TESTS: 'off' diff --git a/tasks/vscode.py b/tasks/vscode.py index cac7b34e2599f..5ec716dc62223 100644 --- a/tasks/vscode.py +++ b/tasks/vscode.py @@ -110,7 +110,13 @@ def setup_devcontainer( } if devcontainer.get("image"): del devcontainer["image"] - devcontainer["runArgs"] = ["--cap-add=SYS_PTRACE", "--security-opt", "seccomp=unconfined"] + devcontainer["runArgs"] = [ + "--cap-add=SYS_PTRACE", + "--security-opt", + "seccomp=unconfined", + "--name", + "datadog_agent_devcontainer", + ] devcontainer["remoteUser"] = "datadog" devcontainer["mounts"] = ["source=/var/run/docker.sock,target=/var/run/docker.sock,type=bind,consistency=cached"] devcontainer["customizations"] = { diff --git a/test/e2e/containers/otlp_sender/go.mod b/test/e2e/containers/otlp_sender/go.mod index 6d4815026a34a..658eca844fa52 100644 --- a/test/e2e/containers/otlp_sender/go.mod +++ b/test/e2e/containers/otlp_sender/go.mod @@ -3,113 +3,113 @@ module github.com/DataDog/datadog-agent/tests/e2e/containers/otlp_sender go 1.21.9 require ( - go.opentelemetry.io/collector/component v0.91.0 - go.opentelemetry.io/collector/consumer v0.91.0 - go.opentelemetry.io/collector/exporter v0.91.0 - go.opentelemetry.io/collector/exporter/loggingexporter v0.91.0 - go.opentelemetry.io/collector/exporter/otlpexporter v0.91.0 - go.opentelemetry.io/collector/exporter/otlphttpexporter v0.91.0 - go.opentelemetry.io/collector/extension v0.91.0 - go.opentelemetry.io/collector/otelcol v0.91.0 - go.opentelemetry.io/collector/pdata v1.0.0 - go.opentelemetry.io/collector/processor v0.91.0 - go.opentelemetry.io/collector/receiver v0.91.0 + go.opentelemetry.io/collector/component v0.97.0 + go.opentelemetry.io/collector/consumer v0.97.0 + go.opentelemetry.io/collector/exporter v0.97.0 + go.opentelemetry.io/collector/exporter/loggingexporter v0.97.0 + go.opentelemetry.io/collector/exporter/otlpexporter v0.97.0 + go.opentelemetry.io/collector/exporter/otlphttpexporter v0.97.0 + go.opentelemetry.io/collector/extension v0.97.0 + go.opentelemetry.io/collector/otelcol v0.97.0 + go.opentelemetry.io/collector/pdata v1.4.0 + go.opentelemetry.io/collector/processor v0.97.0 + go.opentelemetry.io/collector/receiver v0.97.0 go.uber.org/multierr v1.11.0 - go.uber.org/zap v1.26.0 + go.uber.org/zap v1.27.0 ) require ( - cloud.google.com/go/compute/metadata v0.2.4-0.20230617002413-005d2dfb6b68 // indirect - contrib.go.opencensus.io/exporter/prometheus v0.4.2 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect - github.com/go-kit/log v0.2.1 // indirect - github.com/go-logfmt/logfmt v0.5.1 // indirect - github.com/go-logr/logr v1.3.0 // indirect + 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/go-viper/mapstructure/v2 v2.0.0-alpha.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.3 // indirect github.com/golang/snappy v0.0.4 // indirect - github.com/google/uuid v1.4.0 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0 // indirect github.com/hashicorp/go-version v1.6.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/json-iterator/go v1.1.12 // indirect - github.com/klauspost/compress v1.17.4 // indirect + github.com/klauspost/compress v1.17.7 // 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/knadh/koanf/v2 v2.1.0 // indirect github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect - github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect - github.com/mitchellh/mapstructure v1.5.1-0.20220423185008-bf980b35cac4 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/mostynb/go-grpc-compression v1.2.2 // 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.45.0 // indirect - github.com/prometheus/procfs v0.11.1 // indirect - github.com/prometheus/statsd_exporter v0.22.7 // indirect + github.com/prometheus/client_golang v1.19.0 // indirect + github.com/prometheus/client_model v0.6.0 // indirect + github.com/prometheus/common v0.48.0 // indirect + github.com/prometheus/procfs v0.12.0 // indirect github.com/rs/cors v1.10.1 // indirect - github.com/shirou/gopsutil/v3 v3.23.11 // indirect + github.com/shirou/gopsutil/v3 v3.24.2 // indirect github.com/shoenig/go-m1cpu v0.1.6 // indirect github.com/spf13/cobra v1.8.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 + github.com/yusufpapurcu/wmi v1.2.4 // indirect go.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/collector v0.91.0 // indirect - go.opentelemetry.io/collector/config/configauth v0.91.0 // indirect - go.opentelemetry.io/collector/config/configcompression v0.91.0 // indirect - go.opentelemetry.io/collector/config/configgrpc v0.91.0 // indirect - go.opentelemetry.io/collector/config/confighttp v0.91.0 // indirect - go.opentelemetry.io/collector/config/confignet v0.91.0 // indirect - go.opentelemetry.io/collector/config/configopaque v0.91.0 // indirect - go.opentelemetry.io/collector/config/configtelemetry v0.91.0 // indirect - go.opentelemetry.io/collector/config/configtls v0.91.0 // indirect - go.opentelemetry.io/collector/config/internal v0.91.0 // indirect - go.opentelemetry.io/collector/confmap v0.91.0 // indirect - go.opentelemetry.io/collector/connector v0.91.0 // indirect - go.opentelemetry.io/collector/extension/auth v0.91.0 // indirect - go.opentelemetry.io/collector/featuregate v1.0.0 // indirect - go.opentelemetry.io/collector/semconv v0.91.0 // indirect - go.opentelemetry.io/collector/service v0.91.0 // indirect - go.opentelemetry.io/contrib/config v0.1.1 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1 // 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.21.0 // indirect - go.opentelemetry.io/otel/bridge/opencensus v0.44.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.44.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v0.44.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.21.0 // indirect - go.opentelemetry.io/otel/exporters/prometheus v0.44.1-0.20231201153405-6027c1ae76f2 // indirect - go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v0.44.0 // indirect - go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.21.0 // indirect - go.opentelemetry.io/otel/metric v1.21.0 // indirect - go.opentelemetry.io/otel/sdk v1.21.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.21.0 // indirect - go.opentelemetry.io/otel/trace v1.21.0 // indirect - go.opentelemetry.io/proto/otlp v1.0.0 // indirect + go.opentelemetry.io/collector v0.97.0 // indirect + go.opentelemetry.io/collector/config/configauth v0.97.0 // indirect + go.opentelemetry.io/collector/config/configcompression v1.4.0 // indirect + go.opentelemetry.io/collector/config/configgrpc v0.97.0 // indirect + go.opentelemetry.io/collector/config/confighttp v0.97.0 // indirect + go.opentelemetry.io/collector/config/confignet v0.97.0 // indirect + go.opentelemetry.io/collector/config/configopaque v1.4.0 // indirect + go.opentelemetry.io/collector/config/configretry v0.97.0 // indirect + go.opentelemetry.io/collector/config/configtelemetry v0.97.0 // indirect + go.opentelemetry.io/collector/config/configtls v0.97.0 // indirect + go.opentelemetry.io/collector/config/internal v0.97.0 // indirect + go.opentelemetry.io/collector/confmap v0.97.0 // indirect + go.opentelemetry.io/collector/confmap/converter/expandconverter v0.97.0 // indirect + go.opentelemetry.io/collector/confmap/provider/envprovider v0.97.0 // indirect + go.opentelemetry.io/collector/confmap/provider/fileprovider v0.97.0 // indirect + go.opentelemetry.io/collector/confmap/provider/httpprovider v0.97.0 // indirect + go.opentelemetry.io/collector/confmap/provider/httpsprovider v0.97.0 // indirect + go.opentelemetry.io/collector/confmap/provider/yamlprovider v0.97.0 // indirect + go.opentelemetry.io/collector/connector v0.97.0 // indirect + go.opentelemetry.io/collector/extension/auth v0.97.0 // indirect + go.opentelemetry.io/collector/featuregate v1.4.0 // indirect + go.opentelemetry.io/collector/semconv v0.97.0 // indirect + go.opentelemetry.io/collector/service v0.97.0 // indirect + go.opentelemetry.io/contrib/config v0.4.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect + go.opentelemetry.io/contrib/propagators/b3 v1.24.0 // indirect + go.opentelemetry.io/otel v1.24.0 // indirect + go.opentelemetry.io/otel/bridge/opencensus v1.24.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.24.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.24.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.24.0 // indirect + go.opentelemetry.io/otel/exporters/prometheus v0.46.0 // indirect + go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.24.0 // indirect + go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.24.0 // indirect + go.opentelemetry.io/otel/metric v1.24.0 // indirect + go.opentelemetry.io/otel/sdk v1.24.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.24.0 // indirect + go.opentelemetry.io/otel/trace v1.24.0 // indirect + go.opentelemetry.io/proto/otlp v1.1.0 // indirect golang.org/x/net v0.24.0 // indirect golang.org/x/sys v0.19.0 // indirect golang.org/x/text v0.14.0 // indirect - gonum.org/v1/gonum v0.14.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20231127180814-3a041ad873d4 // indirect - google.golang.org/grpc v1.59.0 // indirect - google.golang.org/protobuf v1.31.0 // indirect - gopkg.in/yaml.v2 v2.4.0 // indirect + gonum.org/v1/gonum v0.15.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 // indirect + google.golang.org/grpc v1.62.1 // indirect + google.golang.org/protobuf v1.33.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/test/e2e/containers/otlp_sender/go.sum b/test/e2e/containers/otlp_sender/go.sum index 04a578dbbfff7..38ecf57be8661 100644 --- a/test/e2e/containers/otlp_sender/go.sum +++ b/test/e2e/containers/otlp_sender/go.sum @@ -1,69 +1,14 @@ 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.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 h1:Dg9iHVQfrhq82rUNu9ZxUDrJLaxFUe/HlCVaLyRruq8= -cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -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/compute v1.23.0 h1:tP41Zoavr8ptEqaW6j+LQOnyBBhO7OkOMAGrgLopTwY= -cloud.google.com/go/compute v1.23.0/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= -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/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= -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/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/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= -github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= -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/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/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -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/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/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -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/cpuguy83/go-md2man/v2 v2.0.3/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= @@ -72,638 +17,329 @@ github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymF 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/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= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= 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/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-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= -github.com/go-kit/log v0.2.0/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= -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.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= -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.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY= -github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= +github.com/go-logr/logr v1.4.1/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/go-viper/mapstructure/v2 v2.0.0-alpha.1 h1:TQcrn6Wq+sKGkpyPvppOz99zsMBaUOKXq6HSv655U1c= +github.com/go-viper/mapstructure/v2 v2.0.0-alpha.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= 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-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= -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.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.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/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.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.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.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= 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/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/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4= -github.com/google/uuid v1.4.0/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/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/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/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/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/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/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/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.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= 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/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/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.17.4 h1:Ej5ixsIri7BrIjBkRZLTo6ghwrEtHFk7ijlczPW4fZ4= -github.com/klauspost/compress v1.17.4/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= +github.com/klauspost/compress v1.17.7 h1:ehO88t2UGzQK66LMdE8tibEd1ErmzZjNEqWkjLAKQQg= +github.com/klauspost/compress v1.17.7/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= 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/konsorten/go-windows-terminal-sequences v1.0.3/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/knadh/koanf/v2 v2.1.0 h1:eh4QmHHBuU8BybfIJ8mB8K8gsGCD/AUQTdwGq/GzId8= +github.com/knadh/koanf/v2 v2.1.0/go.mod h1:4mnTRbZCK+ALuBXHZMjDfG9y714L7TykVnZkXbMU3Es= 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/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 h1:jWpvCLoY8Z/e3VKvlsiIGKtc+UG6U5vzxaoagmhXfyg= -github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k= 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.5.1-0.20220423185008-bf980b35cac4 h1:BpfhmLKZf+SjVanKKhCgf3bg+511DmU9eDQTen7LLbY= -github.com/mitchellh/mapstructure v1.5.1-0.20220423185008-bf980b35cac4/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= -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/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/mostynb/go-grpc-compression v1.2.2 h1:XaDbnRvt2+1vgr0b/l0qh4mJAfIxE0bKXtz2Znl3GGI= github.com/mostynb/go-grpc-compression v1.2.2/go.mod h1:GOCr2KBxXcblCuczg3YdLQlcin1/NfyDA348ckuCH6w= -github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -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/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 v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= -github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= -github.com/prometheus/client_golang v1.12.2/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= -github.com/prometheus/client_golang v1.13.0/go.mod h1:vTeo+zgvILHsnnj/39Ou/1fPN5nJFOEMgftOUOmlvYQ= -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_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= +github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= 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.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= -github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= -github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= -github.com/prometheus/common v0.35.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= -github.com/prometheus/common v0.37.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= -github.com/prometheus/common v0.45.0 h1:2BGz0eBc2hdMDLnO/8n0jeB3oPrt2D08CekT0lneoxM= -github.com/prometheus/common v0.45.0/go.mod h1:YJmSTw9BoKxJplESWWxlbyttQR4uaEcGyv9MZjVOJsY= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4= -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/statsd_exporter v0.22.7 h1:7Pji/i2GuhK6Lu7DHrtTkFmNBCudCPT1pX2CziuyQR0= -github.com/prometheus/statsd_exporter v0.22.7/go.mod h1:N/TevpjkIh9ccs6nuzY3jQn9dFqnUakOjnEuMPJJJnI= -github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos= +github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8= +github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= +github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= +github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= 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/rs/cors v1.10.1 h1:L0uuZVXIKlI1SShY2nhFfo44TYvDPQ1w4oFkUJNfhyo= github.com/rs/cors v1.10.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/shirou/gopsutil/v3 v3.23.11 h1:i3jP9NjCPUz7FiZKxlMnODZkdSIp2gnzfrvsu9CuWEQ= -github.com/shirou/gopsutil/v3 v3.23.11/go.mod h1:1FrWgea594Jp7qmjHUUPlJDTPgcsb9mGnXDxavtikzM= +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/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/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= 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/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.6.1/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 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/stvp/go-udp-testing v0.0.0-20201019212854-469649b16807/go.mod h1:7jxmlfBCDBXRzr0eAQJ48XC1hBu1np4CS5+cHEYfwpc= +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= github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= -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.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.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= +github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= +github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= 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 v0.91.0 h1:C7sGUJDJ5nwm+CkWpAaVP3lNsuYpwSRbkmLncFjkmO8= -go.opentelemetry.io/collector v0.91.0/go.mod h1:YhQpIDZsn+bICAAqgBwXk9wqK8GKZDv+aogfG52zUuE= -go.opentelemetry.io/collector/component v0.91.0 h1:aBT1i2zGyfh9PalYJLfXVvQp+osHyalwyDFselI1CtA= -go.opentelemetry.io/collector/component v0.91.0/go.mod h1:2KBHvjNFdU7oOjsObQeC4Ta2Ef607OISU5obznW00fw= -go.opentelemetry.io/collector/config/configauth v0.91.0 h1:SjWKimuqlpfS3sIlFpfzdkSY/AmMMCEmn9+KRcjEU+s= -go.opentelemetry.io/collector/config/configauth v0.91.0/go.mod h1:wmmMYqv6PxwY+/h7qqvd/LP0XN/wzXoECDu6PYz2Of0= -go.opentelemetry.io/collector/config/configcompression v0.91.0 h1:v+jEpFhLgfJDCUCPsSF03gjoFEvm77PofTCqHKKgXTs= -go.opentelemetry.io/collector/config/configcompression v0.91.0/go.mod h1:LaavoxZsro5lL7qh1g9DMifG0qixWPEecW18Qr8bpag= -go.opentelemetry.io/collector/config/configgrpc v0.91.0 h1:+2zPmgVOhKgelluGaGwE3OMKqwi56i6OiU0+7xWTetM= -go.opentelemetry.io/collector/config/configgrpc v0.91.0/go.mod h1:iWDbg9vYaayewmbKfM2zEk4YvaOOwrs0eiUffypcZFk= -go.opentelemetry.io/collector/config/confighttp v0.91.0 h1:YAOyXcDaLDnF3UqPHH4kYU8lx8BqXJ7hS3Ou8GcmqpQ= -go.opentelemetry.io/collector/config/confighttp v0.91.0/go.mod h1:R6y8KSJzqDe6CE6JsYwt4CTZ2B4AlqRA+V74OJPX3vE= -go.opentelemetry.io/collector/config/confignet v0.91.0 h1:3huNXh04O3wXaN4qPhmmiefyz4dYbOlNcR/OKMByqig= -go.opentelemetry.io/collector/config/confignet v0.91.0/go.mod h1:cpO8JYWGONaViOygKVw+Hd2UoBcn2cUiyi0WWeFTwJY= -go.opentelemetry.io/collector/config/configopaque v0.91.0 h1:bQgJPyARbuXAsU2p6h2YbEm1kHb1stS6hg42ekyMZmI= -go.opentelemetry.io/collector/config/configopaque v0.91.0/go.mod h1:TPCHaU+QXiEV+JXbgyr6mSErTI9chwQyasDVMdJr3eY= -go.opentelemetry.io/collector/config/configtelemetry v0.91.0 h1:mEwvqrYfwUJ7LwYfpcF9M8z7LHFoYaKhEPhnERD/88E= -go.opentelemetry.io/collector/config/configtelemetry v0.91.0/go.mod h1:+LAXM5WFMW/UbTlAuSs6L/W72WC+q8TBJt/6z39FPOU= -go.opentelemetry.io/collector/config/configtls v0.91.0 h1:lZromNeOslPwyVlTPMOzF2q++SY+VONvfH3cDqA0kKk= -go.opentelemetry.io/collector/config/configtls v0.91.0/go.mod h1:E+CW5gZoH8V3z5aSlZxwiof7GAcayzn1HRM+uRILLEI= -go.opentelemetry.io/collector/config/internal v0.91.0 h1:Yx17oFdXOPnY83Jfe1oiXhvfYW7RX/xh3/kpV/iYibM= -go.opentelemetry.io/collector/config/internal v0.91.0/go.mod h1:42VsQ/1kP2qnvzjNi+dfNP+KyCFRADejyrJ8m2GVL3M= -go.opentelemetry.io/collector/confmap v0.91.0 h1:7U2MT+u74oEzq/WWrpXSLKB7nX5jPNC4drwtQdYfwKk= -go.opentelemetry.io/collector/confmap v0.91.0/go.mod h1:uxV+fZ85kG31oovL6Cl3fAMQ3RRPwUvfAbbA9WT1Yhk= -go.opentelemetry.io/collector/connector v0.91.0 h1:p2YsgBtr26guCib99ExQHtGuNmX+awgmH1Mbz23wYGU= -go.opentelemetry.io/collector/connector v0.91.0/go.mod h1:dG34jAOATtXFdqzp8IxZJsFwFLaUIkYK69WT1WQ03ZY= -go.opentelemetry.io/collector/consumer v0.91.0 h1:0nU1lUe2S0b8iOmF3w3R/9Dt24n413thRTbXz/nJgrM= -go.opentelemetry.io/collector/consumer v0.91.0/go.mod h1:phTUQmr7hpYfwXyDXo4mFHVjYrlSbZE+nZYlKlbVxGs= -go.opentelemetry.io/collector/exporter v0.91.0 h1:guWcGflFjaenp3BMxAmAKjb8RQG80jQQKjuUFouS+z8= -go.opentelemetry.io/collector/exporter v0.91.0/go.mod h1:hkOBunNNWu6CaTtkRsCJ/OJ509REJZg+DDElevFIQCQ= -go.opentelemetry.io/collector/exporter/loggingexporter v0.91.0 h1:mwKepKvfGciI6n/jLBYYH4bkbAVTr9RsNfzB3x66bCQ= -go.opentelemetry.io/collector/exporter/loggingexporter v0.91.0/go.mod h1:7UTIR8N+Aw/8lT6mJWLqtbum8Yu/ZFznUq6fdNtPxxM= -go.opentelemetry.io/collector/exporter/otlpexporter v0.91.0 h1:PEVJgEZIUMQ/M2/aQ9uuEfjptW4t0bmm91LeeNpa8mc= -go.opentelemetry.io/collector/exporter/otlpexporter v0.91.0/go.mod h1:ebWRIZhk6zere5QnvUpPHjfTvbapscwI6QfCial/X0Y= -go.opentelemetry.io/collector/exporter/otlphttpexporter v0.91.0 h1:rjRSdUn4hmEtupjFjzp6z59dOgx2tH8dyYXyTSEheJY= -go.opentelemetry.io/collector/exporter/otlphttpexporter v0.91.0/go.mod h1:bETucYAkbcUjsNQSZ1ulwD7amKZWiWXAkWV1zCR2Bts= -go.opentelemetry.io/collector/extension v0.91.0 h1:bkoSLgnWm4g6n+RLmyKG6Up7dr8KmJy68quonoLZnr0= -go.opentelemetry.io/collector/extension v0.91.0/go.mod h1:F3r0fVTTh4sYR0GVv51Qez8lk8v77kTDPdyMOp6A2kg= -go.opentelemetry.io/collector/extension/auth v0.91.0 h1:28Hv5W0GZgv2jR5IiFdJzutTs91KmXFh8DUfVTjwwmI= -go.opentelemetry.io/collector/extension/auth v0.91.0/go.mod h1:diY6Sw7cOAn2qivKipZk4niBFzCCFBj7swAXiG2h9ro= -go.opentelemetry.io/collector/extension/zpagesextension v0.91.0 h1:d787uZ6cNHN1uaJ3pIgFlcrkHVB4ML6AlXBiCQRJ9t0= -go.opentelemetry.io/collector/extension/zpagesextension v0.91.0/go.mod h1:S1T9YKuxRqCKFENC+GuEZhz0fzuUBACOrScNY13Y96w= -go.opentelemetry.io/collector/featuregate v1.0.0 h1:5MGqe2v5zxaoo73BUOvUTunftX5J8RGrbFsC2Ha7N3g= -go.opentelemetry.io/collector/featuregate v1.0.0/go.mod h1:xGbRuw+GbutRtVVSEy3YR2yuOlEyiUMhN2M9DJljgqY= -go.opentelemetry.io/collector/otelcol v0.91.0 h1:gq/PY/tHgkTr2fuMLp+F+NAm+03iiU+j/Eilvx38p5w= -go.opentelemetry.io/collector/otelcol v0.91.0/go.mod h1:9j8gKdZvuEgZoeUhz5f5D/fwCxx7M7Tg+6D207/KjNs= -go.opentelemetry.io/collector/pdata v1.0.0 h1:ECP2jnLztewsHmL1opL8BeMtWVc7/oSlKNhfY9jP8ec= -go.opentelemetry.io/collector/pdata v1.0.0/go.mod h1:TsDFgs4JLNG7t6x9D8kGswXUz4mme+MyNChHx8zSF6k= -go.opentelemetry.io/collector/processor v0.91.0 h1:Xi52gYMXTG4zYmNhsqJ8ly/9f7b0n0crMhKxVVI9HpY= -go.opentelemetry.io/collector/processor v0.91.0/go.mod h1:naTuusZNfzM5MSqoTVzkKbR1MaJ8oD8v5ginR5JreDE= -go.opentelemetry.io/collector/receiver v0.91.0 h1:0TZF/0OXoJtxgm+mvOinRRXo9LgVyOsOgCQfWkNGXJA= -go.opentelemetry.io/collector/receiver v0.91.0/go.mod h1:d5qo2mpovqKoi47hrMxj5BLdLzOXM0mUHL5CKrjfWNM= -go.opentelemetry.io/collector/receiver/otlpreceiver v0.91.0 h1:1Eyc1uR8yr3heKkC4YXFoZip0JqgOXuOiN/tXvl9WUo= -go.opentelemetry.io/collector/receiver/otlpreceiver v0.91.0/go.mod h1:7am8EW0xmHLxeeGIb0xTcsoVc6+1LfNCGdc+b7OvE8k= -go.opentelemetry.io/collector/semconv v0.91.0 h1:TRd+yDDfKQl+aNtS24wmEbJp1/QE/xAFV9SB5zWGxpE= -go.opentelemetry.io/collector/semconv v0.91.0/go.mod h1:j/8THcqVxFna1FpvA2zYIsUperEtOaRaqoLYIN4doWw= -go.opentelemetry.io/collector/service v0.91.0 h1:AQS6YAiZO6V+ohcMX4upfyp/Ydi6y862yQEbFt8t+fQ= -go.opentelemetry.io/collector/service v0.91.0/go.mod h1:8Pf8mPo3YqcTNwOzXa0Ok/o+g2+d8hSCaGxRqR/c6CY= -go.opentelemetry.io/contrib/config v0.1.1 h1:lIUTrMWkfDE0GvzBLhwv6ATDB1vntrnTsRvUMkZKnfQ= -go.opentelemetry.io/contrib/config v0.1.1/go.mod h1:rDrK4+PS6Cs+WIphU/GO5Sk4TGV36lEQqk/Z1vZkaLI= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1 h1:SpGay3w+nEwMpfVnbqOLH5gY52/foP8RE8UzTZ1pdSE= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1/go.mod h1:4UoMYEZOC0yN/sPGH76KPkkU7zgiEWYWL9vwmbnTJPE= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 h1:aFJWCqJMNjENlcleuuOkGAPH82y0yULBScfXcIEdS24= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1/go.mod h1:sEGXWArGqc3tVa+ekntsN65DmVbVeW+7lTKTjZF3/Fo= -go.opentelemetry.io/contrib/propagators/b3 v1.21.1 h1:WPYiUgmw3+b7b3sQ1bFBFAf0q+Di9dvNc3AtYfnT4RQ= -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.21.0 h1:hzLeKBZEL7Okw2mGzZ0cc4k/A7Fta0uoPgaJCr8fsFc= -go.opentelemetry.io/otel v1.21.0/go.mod h1:QZzNPQPm1zLX4gZK4cMi+71eaorMSGT3A4znnUvNNEo= -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/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/prometheus v0.44.1-0.20231201153405-6027c1ae76f2 h1:TnhkxGJ5qPHAMIMI4r+HPT/BbpoHxqn4xONJrok054o= -go.opentelemetry.io/otel/exporters/prometheus v0.44.1-0.20231201153405-6027c1ae76f2/go.mod h1:ERL2uIeBtg4TxZdojHUwzZfIFlUIjZtxubT5p4h1Gjg= -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.21.0 h1:tlYWfeo+Bocx5kLEloTjbcDwBuELRrIFxwdQ36PlJu4= -go.opentelemetry.io/otel/metric v1.21.0/go.mod h1:o1p3CA8nNHW8j5yuQLdc1eeqEaPfzug24uvsyIEJRWM= -go.opentelemetry.io/otel/sdk v1.21.0 h1:FTt8qirL1EysG6sTQRZ5TokkU8d0ugCj8htOgThZXQ8= -go.opentelemetry.io/otel/sdk v1.21.0/go.mod h1:Nna6Yv7PWTdgJHVRD9hIYywQBRx7pbox6nwBnZIxl/E= -go.opentelemetry.io/otel/sdk/metric v1.21.0 h1:smhI5oD714d6jHE6Tie36fPx4WDFIg+Y6RfAY4ICcR0= -go.opentelemetry.io/otel/sdk/metric v1.21.0/go.mod h1:FJ8RAsoPGv/wYMgBdUJXOm+6pzFY3YdljnXtv1SBE8Q= -go.opentelemetry.io/otel/trace v1.21.0 h1:WD9i5gzvoUPuXIXH24ZNBudiarZDKuekPqi/E8fpfLc= -go.opentelemetry.io/otel/trace v1.21.0/go.mod h1:LGbsEB0f9LGjN+OZaQQ26sohbOmiMR+BaslueVtS/qQ= -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.opentelemetry.io/collector v0.97.0 h1:qyOju13byHIKEK/JehmTiGMj4pFLa4kDyrOCtTmjHU0= +go.opentelemetry.io/collector v0.97.0/go.mod h1:V6xquYAaO2VHVu4DBK28JYuikRdZajh7DH5Vl/Y8NiA= +go.opentelemetry.io/collector/component v0.97.0 h1:vanKhXl5nptN8igRH4PqVYHOILif653vaPIKv6LCZCI= +go.opentelemetry.io/collector/component v0.97.0/go.mod h1:F/m3HMlkb16RKI7wJjgbECK1IZkAcmB8bu7yD8XOkwM= +go.opentelemetry.io/collector/config/configauth v0.97.0 h1:38M2uUsBzgD7sdJPPXUsOq1BFr6X6P4A5VFg+MOcRNY= +go.opentelemetry.io/collector/config/configauth v0.97.0/go.mod h1:BkCDatBU7CXXStrRPE1b4woj2VLxaYEMg2WTkb50BlI= +go.opentelemetry.io/collector/config/configcompression v1.4.0 h1:qWRKdl49lBvPUr6UWmyf1pR4EOBHN+66pDeGtfQ1Mbk= +go.opentelemetry.io/collector/config/configcompression v1.4.0/go.mod h1:O0fOPCADyGwGLLIf5lf7N3960NsnIfxsm6dr/mIpL+M= +go.opentelemetry.io/collector/config/configgrpc v0.97.0 h1:Ukl1GPtzSko4Pu8KV5jedD8OjySL/C+QgrfRdaakfHk= +go.opentelemetry.io/collector/config/configgrpc v0.97.0/go.mod h1:i8OrrxynYldlcZ6wPOUKNoZmmbUCDp3CzryRT+2mN7c= +go.opentelemetry.io/collector/config/confighttp v0.97.0 h1:Tfw4DtK5x66uSoRdbZc9tQTNGWEo/urR8RAedBdYtNU= +go.opentelemetry.io/collector/config/confighttp v0.97.0/go.mod h1:wyg4yXvCsk1CsfPBWQ3+rZDThz44Q0d35/1lJBHj5VI= +go.opentelemetry.io/collector/config/confignet v0.97.0 h1:KJjv10/YVMslSSLVWW/IIjpLM3JiO3rWvw5dK/t1H7g= +go.opentelemetry.io/collector/config/confignet v0.97.0/go.mod h1:3naWoPss70RhDHhYjGACi7xh4NcVRvs9itzIRVWyu1k= +go.opentelemetry.io/collector/config/configopaque v1.4.0 h1:5KgD9oLN+N07HqDsLzUrU0mE2pC8cMhrCSC1Nf8CEO4= +go.opentelemetry.io/collector/config/configopaque v1.4.0/go.mod h1:7Qzo69x7i+FaNELeA9jmZtVvfnR5lE6JYa5YEOCJPFQ= +go.opentelemetry.io/collector/config/configretry v0.97.0 h1:k7VwQ5H0oBLm6Fgm0ltfDDbmQVsiqSIY9ojijF0hiR0= +go.opentelemetry.io/collector/config/configretry v0.97.0/go.mod h1:s7A6ZGxK8bxqidFzwbr2pITzbsB2qf+aeHEDQDcanV8= +go.opentelemetry.io/collector/config/configtelemetry v0.97.0 h1:JS/WxK09A9m39D5OqsAWaoRe4tG7ESMnzDNIbZ5bD6c= +go.opentelemetry.io/collector/config/configtelemetry v0.97.0/go.mod h1:YV5PaOdtnU1xRomPcYqoHmyCr48tnaAREeGO96EZw8o= +go.opentelemetry.io/collector/config/configtls v0.97.0 h1:wmXj/rKQUGMZzbHVCTyB+xUWImsGxnLqhivwjBE0FdI= +go.opentelemetry.io/collector/config/configtls v0.97.0/go.mod h1:ev/fMI6hm1WTSHHEAEoVjF3RZj0qf38E/XO5itFku7k= +go.opentelemetry.io/collector/config/internal v0.97.0 h1:vhTzCm2u6MUAxdWPprkOePR/Kd57v2uF11twpza1E7o= +go.opentelemetry.io/collector/config/internal v0.97.0/go.mod h1:RVGDn9OH/KHT878cclG497/n2qxe54+zW+u/SVsRLNw= +go.opentelemetry.io/collector/confmap v0.97.0 h1:0CGSk7YW9rPc6jCwJteJzHzN96HRoHTfuqI7J/EmZsg= +go.opentelemetry.io/collector/confmap v0.97.0/go.mod h1:AnJmZcZoOLuykSXGiAf3shi11ZZk5ei4tZd9dDTTpWE= +go.opentelemetry.io/collector/confmap/converter/expandconverter v0.97.0 h1:Tw0+JlvA1Z5xpvHYqzYXsPdsCaq6+oGoqw7fCymh+lc= +go.opentelemetry.io/collector/confmap/converter/expandconverter v0.97.0/go.mod h1:gp3XWfC1OpmwHZsODRIpy4XZtrNy1RryJhvK7sdNgmk= +go.opentelemetry.io/collector/confmap/provider/envprovider v0.97.0 h1:2F3yl+Vr6nJ0sN9HoYeebY5+lJ8OJ4VqxCY16SsVcXs= +go.opentelemetry.io/collector/confmap/provider/envprovider v0.97.0/go.mod h1:GrHP/mOgzx8+fcTRmgB/IgH3lG80nv2bFW1v6oPggRM= +go.opentelemetry.io/collector/confmap/provider/fileprovider v0.97.0 h1:5SXsBAA/6Hv76+ndBY0wZRYGNES/55SKu6VhP4kriqM= +go.opentelemetry.io/collector/confmap/provider/fileprovider v0.97.0/go.mod h1:YAj2CNxE1go08GiAxYO2HSeNkWv8g7C7DHFpEECttI8= +go.opentelemetry.io/collector/confmap/provider/httpprovider v0.97.0 h1:Wd4XR3cOznED8sYM0Qy0NlAToxvpEG8OH9O89RKp+pg= +go.opentelemetry.io/collector/confmap/provider/httpprovider v0.97.0/go.mod h1:2LIGxKR6dJPP5kxkRSTIeWuJ7Mto1Mv456+MlG86RH8= +go.opentelemetry.io/collector/confmap/provider/httpsprovider v0.97.0 h1:suZwewHxcwA3z0kE6p6tjYcPKlGOYWoIjy/58gBK/c0= +go.opentelemetry.io/collector/confmap/provider/httpsprovider v0.97.0/go.mod h1:R+cJ8wWzaJll+WCTUOM769zIk1vOb7NQARG9xWNbgUA= +go.opentelemetry.io/collector/confmap/provider/yamlprovider v0.97.0 h1:ntcR7AMHwFRROTMW1ifx0xVu+ltbPafS/1r/ssxe+hM= +go.opentelemetry.io/collector/confmap/provider/yamlprovider v0.97.0/go.mod h1:0THo600LMD0RGl7loqyaHgd/47Icgb64QOmqaj0j5dU= +go.opentelemetry.io/collector/connector v0.97.0 h1:X3AI3rCRiNhKCF5OJc1XzNoIKYbClYm5BiLINtxHts8= +go.opentelemetry.io/collector/connector v0.97.0/go.mod h1:KolkR5/kkPzy2jW7Q7zs+FiO1xiDrBeAvDYrZe/ygtA= +go.opentelemetry.io/collector/consumer v0.97.0 h1:S0BZQtJQxSHT156S8a5rLt3TeWYP8Rq+jn8QEyWQUYk= +go.opentelemetry.io/collector/consumer v0.97.0/go.mod h1:1D06LURiZ/1KA2OnuKNeSn9bvFmJ5ZWe6L8kLu0osSY= +go.opentelemetry.io/collector/exporter v0.97.0 h1:kw/fQrpkhTz0/3I/Z0maRj0S8Mi0NK50/WwFuWrRYPc= +go.opentelemetry.io/collector/exporter v0.97.0/go.mod h1:EJYc4biKWxq3kD4Xh4SUSFbZ2lMsxjzwiCozikEDMjk= +go.opentelemetry.io/collector/exporter/loggingexporter v0.97.0 h1:avSUMkwU3b7OlrKR5qFjbBYmRgwdIoDltR11h9MmxjQ= +go.opentelemetry.io/collector/exporter/loggingexporter v0.97.0/go.mod h1:wT/uTcbmw01Uxgsb370KVffXIGypXikZxk7KQDynLnk= +go.opentelemetry.io/collector/exporter/otlpexporter v0.97.0 h1:yqEl3oMw/h4jzkTEC599Icm2jp7oVsa1pOu5RoxIJTA= +go.opentelemetry.io/collector/exporter/otlpexporter v0.97.0/go.mod h1:XF5RsoyMLVMTtvLv4lIbsTiowJtE3Z9Jikot8/nJUDw= +go.opentelemetry.io/collector/exporter/otlphttpexporter v0.97.0 h1:TjqChvxmmGMvY8/GV2/FQygwzTRUsj77HjJBc9kraEw= +go.opentelemetry.io/collector/exporter/otlphttpexporter v0.97.0/go.mod h1:AqVCYi9O5hWzdko9zvRm/DGA4pOxBJZ5OqJ+XinLK8Y= +go.opentelemetry.io/collector/extension v0.97.0 h1:LpjZ4KQgnhLG/u3l69QgWkX8qMqeS8IFKWMoDtbPIeE= +go.opentelemetry.io/collector/extension v0.97.0/go.mod h1:jWNG0Npi7AxiqwCclToskDfCQuNKHYHlBPJNnIKHp84= +go.opentelemetry.io/collector/extension/auth v0.97.0 h1:2AYGxSbsi1KC2DOOFbAe7valrERb86m7TfRY85X8hSE= +go.opentelemetry.io/collector/extension/auth v0.97.0/go.mod h1:uElLYtzMPA48mu9baxGIH6lHpOn76NLe4mVHnmV+hEY= +go.opentelemetry.io/collector/extension/zpagesextension v0.97.0 h1:IaZm011+6WKE03TFmDQ7ztp65eu8ngGc026m9KhuhB4= +go.opentelemetry.io/collector/extension/zpagesextension v0.97.0/go.mod h1:PxR6gK4FEYHc6iGPH7svM9jjFIZo4o/MGGO0l+see0o= +go.opentelemetry.io/collector/featuregate v1.4.0 h1:RWE9M659C9iuUQc4GzBsndkGHG1jIzIY+nZJWvcKy1M= +go.opentelemetry.io/collector/featuregate v1.4.0/go.mod h1:w7nUODKxEi3FLf1HslCiE6YWtMtOOrMnSwsDam8Mg9w= +go.opentelemetry.io/collector/otelcol v0.97.0 h1:xtZOYmdzeu1dSgco0I4yqhSyQ6GrGa7E7TRUlg7KIwI= +go.opentelemetry.io/collector/otelcol v0.97.0/go.mod h1:mHzwRh3ATXfStF9xsttnJilxpaP+03hhozMn39dP+Jo= +go.opentelemetry.io/collector/pdata v1.4.0 h1:cA6Pr7Z2V7mE+i7FmYpavX7nefzd6H4CICgW0T9aJX0= +go.opentelemetry.io/collector/pdata v1.4.0/go.mod h1:0Ttp4wQinhV5oJTd9MjyvUegmZBO9O0nrlh/+EDLw+Q= +go.opentelemetry.io/collector/processor v0.97.0 h1:L3R5R7x56LH2inF3sv0ZOsFfulVo8yuIFhO/OgpkCU0= +go.opentelemetry.io/collector/processor v0.97.0/go.mod h1:OsxBAPQ2fDytAn+yWLdEQ1yjYfl/OIak1AfKGfI8ALs= +go.opentelemetry.io/collector/receiver v0.97.0 h1:ozzE5MhIPtfnYA/UKB/NCcgxSmeLqdwErboi6B/IpLQ= +go.opentelemetry.io/collector/receiver v0.97.0/go.mod h1:1TCN9DRuB45+xKqlwv4BMQR6qXgaJeSSNezFTJhmDUo= +go.opentelemetry.io/collector/semconv v0.97.0 h1:iF3nTfThbiOwz7o5Pocn0dDnDoffd18ijDuf6Mwzi1s= +go.opentelemetry.io/collector/semconv v0.97.0/go.mod h1:8ElcRZ8Cdw5JnvhTOQOdYizkJaQ10Z2fS+R6djOnj6A= +go.opentelemetry.io/collector/service v0.97.0 h1:Nv/A41Ezot0lqMQwqJSRGV2PeQNcItaiDaQPudFXBOM= +go.opentelemetry.io/collector/service v0.97.0/go.mod h1:h9SwBe1yThExLAhgIErMtGsyBdEmSKGK8p/f+QcWyT0= +go.opentelemetry.io/contrib/config v0.4.0 h1:Xb+ncYOqseLroMuBesGNRgVQolXcXOhMj7EhGwJCdHs= +go.opentelemetry.io/contrib/config v0.4.0/go.mod h1:drNk2xRqLWW4/amk6Uh1S+sDAJTc7bcEEN1GfJzj418= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 h1:4Pp6oUg3+e/6M4C0A/3kJ2VYa++dsWVTtGgLVj5xtHg= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= +go.opentelemetry.io/contrib/propagators/b3 v1.24.0 h1:n4xwCdTx3pZqZs2CjS/CUZAs03y3dZcGhC/FepKtEUY= +go.opentelemetry.io/contrib/propagators/b3 v1.24.0/go.mod h1:k5wRxKRU2uXx2F8uNJ4TaonuEO/V7/5xoz7kdsDACT8= +go.opentelemetry.io/contrib/zpages v0.49.0 h1:Wk217PkNBxcKWnIQpwtbZZE286K4ZY9uajnM5woSeLU= +go.opentelemetry.io/contrib/zpages v0.49.0/go.mod h1:6alLi5mmkZWbAtZMRPd1ffIgkTcsU9OTHQF2NbSOhrQ= +go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo= +go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo= +go.opentelemetry.io/otel/bridge/opencensus v1.24.0 h1:Vlhy5ee5k5R0zASpH+9AgHiJH7xnKACI3XopO1tUZfY= +go.opentelemetry.io/otel/bridge/opencensus v1.24.0/go.mod h1:jRjVXV/X38jyrnHtvMGN8+9cejZB21JvXAAvooF2s+Q= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.24.0 h1:f2jriWfOdldanBwS9jNBdeOKAQN7b4ugAMaNu1/1k9g= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.24.0/go.mod h1:B+bcQI1yTY+N0vqMpoZbEN7+XU4tNM0DmUiOwebFJWI= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.24.0 h1:mM8nKi6/iFQ0iqst80wDHU2ge198Ye/TfN0WBS5U24Y= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.24.0/go.mod h1:0PrIIzDteLSmNyxqcGYRL4mDIo8OTuBAOI/Bn1URxac= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0 h1:t6wl9SPayj+c7lEIFgm4ooDBZVb01IhLB4InpomhRw8= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0/go.mod h1:iSDOcsnSA5INXzZtwaBPrKp/lWu/V14Dd+llD0oI2EA= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0 h1:Mw5xcxMwlqoJd97vwPxA8isEaIoxsta9/Q51+TTJLGE= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0/go.mod h1:CQNu9bj7o7mC6U7+CA/schKEYakYXWr79ucDHTMGhCM= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.24.0 h1:Xw8U6u2f8DK2XAkGRFV7BBLENgnTGX9i4rQRxJf+/vs= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.24.0/go.mod h1:6KW1Fm6R/s6Z3PGXwSJN2K4eT6wQB3vXX6CVnYX9NmM= +go.opentelemetry.io/otel/exporters/prometheus v0.46.0 h1:I8WIFXR351FoLJYuloU4EgXbtNX2URfU/85pUPheIEQ= +go.opentelemetry.io/otel/exporters/prometheus v0.46.0/go.mod h1:ztwVUHe5DTR/1v7PeuGRnU5Bbd4QKYwApWmuutKsJSs= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.24.0 h1:JYE2HM7pZbOt5Jhk8ndWZTUWYOVift2cHjXVMkPdmdc= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.24.0/go.mod h1:yMb/8c6hVsnma0RpsBMNo0fEiQKeclawtgaIaOp2MLY= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.24.0 h1:s0PHtIkN+3xrbDOpt2M8OTG92cWqUESvzh2MxiR5xY8= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.24.0/go.mod h1:hZlFbDbRt++MMPCCfSJfmhkGIWnX1h3XjkfxZUjLrIA= +go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI= +go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= +go.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw= +go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg= +go.opentelemetry.io/otel/sdk/metric v1.24.0 h1:yyMQrPzF+k88/DbH7o4FMAs80puqd+9osbiBrJrz/w8= +go.opentelemetry.io/otel/sdk/metric v1.24.0/go.mod h1:I6Y5FjH6rvEnTTAYQz3Mmv2kl6Ek5IIrmwTLqMrrOE0= +go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI= +go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= +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.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= -go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= -go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= +go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= 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/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-20230321023759-10a507213a29 h1:ooxPy7fPvB4kwsA2h+iBNHkAbp/4JxTSwCmvdjEYmug= -golang.org/x/exp v0.0.0-20230321023759-10a507213a29/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= -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/exp v0.0.0-20231110203233-9a3e6036ecaa h1:FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ= +golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE= 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/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/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-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-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-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-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20210525063256-abc453219eb5/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.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w= golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= 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-20210514164344-f6687ab2804c/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.12.0 h1:smVPGxink+n1ZI5pkQa8y6fZT0RW0MgCO5bFpepy4B4= -golang.org/x/oauth2 v0.12.0/go.mod h1:A74bZ3aGXgCY0qaIC9Ahg6Lglin4AMAco8cIv9baba4= 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.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 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-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-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-20200106162015-b016eb3dc98e/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-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/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-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/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-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-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220708085239-5a0f0661e09d/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/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o= golang.org/x/sys v0.19.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/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.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-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-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-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-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-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= 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= -gonum.org/v1/gonum v0.14.0 h1:2NiG67LD1tEH0D7kM+ps2V+fXmsAnpUeec7n8tcr4S0= -gonum.org/v1/gonum v0.14.0/go.mod h1:AoWeoz0becf9QMWtE8iWXNXc27fK4fNeHNf/oMejGfU= -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= +gonum.org/v1/gonum v0.15.0 h1:2lYxjRbTYyxkJxlhC+LvJIx3SsANPdRybu1tGj9/OrQ= +gonum.org/v1/gonum v0.15.0/go.mod h1:xzZVBJBtS+Mz4q0Yl2LJTk+OxOg4jiXZ7qBoM0uISGo= 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 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= -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-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-20231120223509-83a465c0220f h1:Vn+VyHU5guc9KjB5KrjI2q0wCOWEOIh0OEsleqakHJg= -google.golang.org/genproto v0.0.0-20231120223509-83a465c0220f/go.mod h1:nWSwAFPb+qfNJXsoeO3Io7zf4tMSfN8EA8RlDA04GhY= -google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d h1:DoPTO70H+bcDXcd39vOqb2viZxgqeBeSGtZ55yZU4/Q= -google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d/go.mod h1:KjSP20unUpOx5kyQUFa7k4OJg0qeJ7DEZflGDu2p6Bk= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231127180814-3a041ad873d4 h1:DC7wcm+i+P1rN3Ff07vL+OndGg5OhNddHyTA+ocPqYE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231127180814-3a041ad873d4/go.mod h1:eJVxU6o+4G1PSczBr85xmyvSNYAKvAYgkub40YGomFM= +google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 h1:KAeGQVN3M9nD0/bQXnr/ClcEMJ968gUXJQ9pwfSynuQ= +google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80/go.mod h1:cc8bqMqtv9gMOr0zHg2Vzff5ULhhL2IXP4sbcn32Dro= +google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80 h1:Lj5rbfG876hIAYFjqiJnPHfhXbv+nzTWfm04Fg/XSVU= +google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80/go.mod h1:4jWUdICTdgc3Ibxmr8nAJiiLHwQBY0UI0XZcEMaFKaA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 h1:AjyfHzEPEFp/NpvfN5g+KDla3EMojjhRVZc1i7cj+oM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80/go.mod h1:PAREbraiVEVGVdTZsVWjSbbTtSyGbAgIIvni8a8CD5s= 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.1/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.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.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -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= @@ -712,38 +348,16 @@ google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzi 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.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -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-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/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.5/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= 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/test/e2e/containers/otlp_sender/internal/filereceiver/factory.go b/test/e2e/containers/otlp_sender/internal/filereceiver/factory.go index 120ab55aee4ad..4e69b1a23dd17 100644 --- a/test/e2e/containers/otlp_sender/internal/filereceiver/factory.go +++ b/test/e2e/containers/otlp_sender/internal/filereceiver/factory.go @@ -11,6 +11,7 @@ import ( "context" "errors" "fmt" + "log" "os" "time" @@ -26,8 +27,9 @@ const typeStr = "file" // NewFactory creates a new OTLP receiver factory. func NewFactory() collectorreceiver.Factory { + cfgType, _ := component.NewType(typeStr) return collectorreceiver.NewFactory( - typeStr, + cfgType, createDefaultConfig, collectorreceiver.WithMetrics(createMetricsReceiver, component.StabilityLevelAlpha), ) @@ -59,9 +61,10 @@ func (cfg *Config) Validate() error { } func createDefaultConfig() component.Config { + cfgType, _ := component.NewType(typeStr) return &Config{ CreateSettings: collectorreceiver.CreateSettings{ - ID: component.NewID(typeStr), + ID: component.NewID(cfgType), }, Loop: LoopConfig{Enabled: false, Period: 10 * time.Second}, } @@ -88,10 +91,10 @@ func (r *receiver) Start(_ context.Context, host component.Host) error { return nil } -func (r *receiver) unmarshalAndSend(host component.Host) { +func (r *receiver) unmarshalAndSend(_ component.Host) { file, err := os.Open(r.config.Path) if err != nil { - host.ReportFatalError(fmt.Errorf("failed to open %q: %w", r.config.Path, err)) + log.Fatal(fmt.Errorf("failed to open %q: %w", r.config.Path, err)) return } @@ -100,24 +103,24 @@ func (r *receiver) unmarshalAndSend(host component.Host) { for scanner.Scan() { metrics, err := r.unmarshaler.UnmarshalMetrics(scanner.Bytes()) if err != nil { - host.ReportFatalError(fmt.Errorf("failed to unmarshal %q: %w", r.config.Path, err)) + log.Fatal(fmt.Errorf("failed to unmarshal %q: %w", r.config.Path, err)) return } err = r.nextConsumer.ConsumeMetrics(context.Background(), metrics) if err != nil { - host.ReportFatalError(fmt.Errorf("failed to send %q: %w", r.config.Path, err)) + log.Fatal(fmt.Errorf("failed to send %q: %w", r.config.Path, err)) return } } if err := scanner.Err(); err != nil { - host.ReportFatalError(fmt.Errorf("failed to scan %q: %w", r.config.Path, err)) + log.Fatal(fmt.Errorf("failed to scan %q: %w", r.config.Path, err)) return } if err := file.Close(); err != nil { - host.ReportFatalError(fmt.Errorf("failed to close %q: %w", r.config.Path, err)) + log.Fatal(fmt.Errorf("failed to close %q: %w", r.config.Path, err)) return } } diff --git a/test/integration/serverless/serverless.yml b/test/integration/serverless/serverless.yml index 8b90ef0b02993..0bc2ce5f586a1 100644 --- a/test/integration/serverless/serverless.yml +++ b/test/integration/serverless/serverless.yml @@ -407,6 +407,7 @@ functions: - { Ref: DatadogExtensionIntegrationTestLambdaLayer } environment: DD_API_KEY: NO_NEED_TO_BE_VALID + DD_SERVERLESS_FLUSH_STRATEGY: periodically,60000 log-python: enabled: '"${env:RUN_SUITE_LOG}" == "true"' @@ -421,6 +422,7 @@ functions: environment: DD_API_KEY: NO_NEED_TO_BE_VALID DD_LAMBDA_HANDLER: src/logPython.log + DD_SERVERLESS_FLUSH_STRATEGY: periodically,60000 log-go: enabled: '"${env:RUN_SUITE_LOG}" == "true"' @@ -435,6 +437,7 @@ functions: - { Ref: DatadogExtensionIntegrationTestLambdaLayer } environment: DD_API_KEY: NO_NEED_TO_BE_VALID + DD_SERVERLESS_FLUSH_STRATEGY: periodically,60000 log-csharp: enabled: '"${env:RUN_SUITE_LOG}" == "true"' @@ -450,6 +453,7 @@ functions: environment: AWS_LAMBDA_EXEC_WRAPPER: /opt/datadog_wrapper DD_API_KEY: NO_NEED_TO_BE_VALID + DD_SERVERLESS_FLUSH_STRATEGY: periodically,60000 log-java: enabled: '"${env:RUN_SUITE_LOG}" == "true"' @@ -466,6 +470,7 @@ functions: DD_API_KEY: NO_NEED_TO_BE_VALID JAVA_TOOL_OPTIONS: '-javaagent:"/opt/java/lib/dd-java-agent.jar" -XX:+TieredCompilation -XX:TieredStopAtLevel=1' DD_JMXFETCH_ENABLED: false + DD_SERVERLESS_FLUSH_STRATEGY: periodically,60000 log-proxy: enabled: '"${env:RUN_SUITE_LOG}" == "true"' @@ -480,6 +485,7 @@ functions: DD_EXPERIMENTAL_ENABLE_PROXY: true AWS_LAMBDA_EXEC_WRAPPER: /opt/datadog_wrapper DD_API_KEY: NO_NEED_TO_BE_VALID + DD_SERVERLESS_FLUSH_STRATEGY: periodically,60000 trace-node: enabled: '"${env:RUN_SUITE_TRACE}" == "true"' diff --git a/test/integration/serverless_perf/compute.sh b/test/integration/serverless_perf/compute.sh index fde0d588bcb58..c0e818d34ea60 100755 --- a/test/integration/serverless_perf/compute.sh +++ b/test/integration/serverless_perf/compute.sh @@ -23,8 +23,12 @@ log() { startupTimes=() -# loop 10 times to incur no false positive/negative alarms -for i in {1..10} +# Cold start container enough times to get a reasonable histogram in <= 1 hour. +# Pick an odd number to avoid having to average two elements. Larger iteration +# counts are useful for exploiting large-sample-size statistics. +ITERATION_COUNT=301 + +for i in $(seq 1 ${ITERATION_COUNT}) do # create a new container to ensure cold start dockerId=$(docker run -d datadogci/lambda-extension) @@ -38,6 +42,9 @@ medianMs=$(calculate_median "${startupTimes[@]}") log "Median=$medianMs | Threshold=$STARTUP_TIME_THRESHOLD" +# Log raw startup time data to a single line for exploratory data analysis +log "RawData=${startupTimes[*]}" + # check whether or not the median duration exceeds the threshold if (( medianMs > STARTUP_TIME_THRESHOLD )); then echo "Median startup time above threshold" diff --git a/test/new-e2e/go.mod b/test/new-e2e/go.mod index 460adf6b43092..3bc24f352a181 100644 --- a/test/new-e2e/go.mod +++ b/test/new-e2e/go.mod @@ -28,7 +28,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-20240409081032-e488596ad7f3 + github.com/DataDog/test-infra-definitions v0.0.0-20240411084208-e2e7d263e05c 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 223a9e85ba7c0..cc2fa9e20a97b 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-20240409081032-e488596ad7f3 h1:tMeY0/XojCupNNEdM4De04Jy/1Lgb9L/Z/DSoL6YPjQ= -github.com/DataDog/test-infra-definitions v0.0.0-20240409081032-e488596ad7f3/go.mod h1:KNF9SeKFoqxSSucHpuXQ1QDmpi7HFS9yr5kM2h9ls3c= +github.com/DataDog/test-infra-definitions v0.0.0-20240411084208-e2e7d263e05c h1:5AnfaCrbIezuQi/KiwCut8gpuYCMGwvJO/rJB4wthE8= +github.com/DataDog/test-infra-definitions v0.0.0-20240411084208-e2e7d263e05c/go.mod h1:KNF9SeKFoqxSSucHpuXQ1QDmpi7HFS9yr5kM2h9ls3c= 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= diff --git a/test/new-e2e/pkg/environments/aws/host/windows/host.go b/test/new-e2e/pkg/environments/aws/host/windows/host.go index d846a5151ed3a..559001c00e99f 100644 --- a/test/new-e2e/pkg/environments/aws/host/windows/host.go +++ b/test/new-e2e/pkg/environments/aws/host/windows/host.go @@ -11,6 +11,7 @@ import ( "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/optional" + "github.com/DataDog/datadog-agent/test/new-e2e/tests/windows/components/defender" "github.com/DataDog/test-infra-definitions/components/activedirectory" "github.com/DataDog/test-infra-definitions/components/datadog/agent" "github.com/DataDog/test-infra-definitions/components/datadog/agentparams" @@ -34,6 +35,7 @@ type ProvisionerParams struct { agentOptions []agentparams.Option fakeintakeOptions []fakeintake.Option activeDirectoryOptions []activedirectory.Option + defenderoptions []defender.Option } // ProvisionerOption is a provisioner option. @@ -95,6 +97,14 @@ func WithActiveDirectoryOptions(opts ...activedirectory.Option) ProvisionerOptio } } +// WithDefenderOptions configures Windows Defender on an EC2 VM. +func WithDefenderOptions(opts ...defender.Option) ProvisionerOption { + return func(params *ProvisionerParams) error { + params.defenderoptions = append(params.defenderoptions, opts...) + return nil + } +} + // Run deploys a Windows environment given a pulumi.Context func Run(ctx *pulumi.Context, env *environments.WindowsHost, params *ProvisionerParams) error { awsEnv, err := aws.NewEnvironment(ctx) @@ -115,6 +125,17 @@ func Run(ctx *pulumi.Context, env *environments.WindowsHost, params *Provisioner return err } + if params.defenderoptions != nil { + defender, err := defender.NewDefender(awsEnv.CommonEnvironment, host, params.defenderoptions...) + if err != nil { + return err + } + // Active Directory setup needs to happen after Windows Defender setup + params.activeDirectoryOptions = append(params.activeDirectoryOptions, + activedirectory.WithPulumiResourceOptions( + pulumi.DependsOn(defender.Resources))) + } + if params.activeDirectoryOptions != nil { activeDirectoryComp, activeDirectoryResources, err := activedirectory.NewActiveDirectory(ctx, awsEnv.CommonEnvironment, host, params.activeDirectoryOptions...) if err != nil { @@ -178,6 +199,8 @@ func getProvisionerParams(opts ...ProvisionerOption) *ProvisionerParams { instanceOptions: []ec2.VMOption{}, agentOptions: []agentparams.Option{}, fakeintakeOptions: []fakeintake.Option{}, + // Disable Windows Defender on VMs by default + defenderoptions: []defender.Option{defender.WithDefenderDisabled()}, } err := optional.ApplyOptions(params, opts) if err != nil { diff --git a/test/new-e2e/pkg/utils/infra/retriable_errors.go b/test/new-e2e/pkg/utils/infra/retriable_errors.go index 6f6ad58194834..55da7316d6f56 100644 --- a/test/new-e2e/pkg/utils/infra/retriable_errors.go +++ b/test/new-e2e/pkg/utils/infra/retriable_errors.go @@ -43,5 +43,10 @@ func getKnownRetriableErrors() []retriableError { errorMessage: "failed attempts: dial tcp :22: connect: connection refused", retryType: reCreate, }, + { + // https://datadoghq.atlassian.net/browse/ADXT-163 + errorMessage: "couldn't find resource", + retryType: reUp, + }, } } diff --git a/test/new-e2e/tests/updater/linux_test.go b/test/new-e2e/tests/updater/linux_test.go index 1953be20529c6..28ca090ed0f6b 100644 --- a/test/new-e2e/tests/updater/linux_test.go +++ b/test/new-e2e/tests/updater/linux_test.go @@ -31,7 +31,7 @@ const ( logDir = "/var/log/datadog" locksDir = "/var/run/datadog-packages" packagesDir = "/opt/datadog-packages" - bootUpdaterDir = "/opt/datadog-packages/installer_boot" + bootUpdaterDir = "/opt/datadog-installer" ) type vmUpdaterSuite struct { @@ -76,7 +76,7 @@ func (v *vmUpdaterSuite) TestSharedAgentDirs() { } func (v *vmUpdaterSuite) TestUpdaterDirs() { - for _, dir := range []string{locksDir, packagesDir} { + for _, dir := range []string{locksDir, packagesDir, bootUpdaterDir} { require.Equal(v.T(), "dd-installer\n", v.Env().RemoteHost.MustExecute(`stat -c "%U" `+dir)) require.Equal(v.T(), "dd-installer\n", v.Env().RemoteHost.MustExecute(`stat -c "%G" `+dir)) } @@ -96,7 +96,7 @@ func (v *vmUpdaterSuite) TestAgentUnitsLoaded() { "datadog-agent-sysprobe.service", "datadog-agent-security.service", } - v.Env().RemoteHost.MustExecute(fmt.Sprintf(`sudo %v/bin/updater/updater bootstrap --url "oci://us-docker.pkg.dev/datadog-sandbox/updater-dev/agent@sha256:868287768e7f224fbf210a864c3da614ab19cde23ddbd8a94e747c915d8c9ab1"`, bootUpdaterDir)) + v.Env().RemoteHost.MustExecute(fmt.Sprintf(`sudo %v/bin/installer/installer bootstrap --url "oci://docker.io/datadog/agent-package-dev@sha256:d86138d88b407cf5ef75bccb3e0bc492ce6e3e3dfa9d3a64d2387d3b350fe5c4"`, bootUpdaterDir)) for _, unit := range stableUnits { require.Equal(v.T(), "enabled\n", v.Env().RemoteHost.MustExecute(fmt.Sprintf(`systemctl is-enabled %s`, unit))) } @@ -104,10 +104,9 @@ func (v *vmUpdaterSuite) TestAgentUnitsLoaded() { func (v *vmUpdaterSuite) TestExperimentCrash() { t := v.T() - t.Skip() host := v.Env().RemoteHost startTime := getMonotonicTimestamp(t, host) - host.MustExecute(fmt.Sprintf(`sudo %v/bin/updater/updater bootstrap --url "oci://us-docker.pkg.dev/datadog-sandbox/updater-dev/agent@sha256:868287768e7f224fbf210a864c3da614ab19cde23ddbd8a94e747c915d8c9ab1"`, bootUpdaterDir)) + host.MustExecute(fmt.Sprintf(`sudo %v/bin/installer/installer bootstrap --url "oci://docker.io/datadog/agent-package-dev@sha256:d86138d88b407cf5ef75bccb3e0bc492ce6e3e3dfa9d3a64d2387d3b350fe5c4"`, bootUpdaterDir)) v.Env().RemoteHost.MustExecute(`sudo systemctl start datadog-agent-exp --no-block`) res := getJournalDOnCondition(t, host, startTime, stopCondition([]JournaldLog{ {Unit: "datadog-agent.service", Message: "Started"}, @@ -123,7 +122,7 @@ func (v *vmUpdaterSuite) TestExperimentCrash() { func (v *vmUpdaterSuite) TestPurgeAndInstallAgent() { host := v.Env().RemoteHost - host.MustExecute(fmt.Sprintf("sudo %v/bin/updater/updater purge", bootUpdaterDir)) + host.MustExecute(fmt.Sprintf("sudo %v/bin/installer/installer purge", bootUpdaterDir)) stableUnits := []string{ "datadog-agent.service", "datadog-agent-trace.service", @@ -157,7 +156,7 @@ func (v *vmUpdaterSuite) TestPurgeAndInstallAgent() { } // bootstrap - host.MustExecute(fmt.Sprintf(`sudo %v/bin/updater/updater bootstrap --url "oci://us-docker.pkg.dev/datadog-sandbox/updater-dev/agent@sha256:868287768e7f224fbf210a864c3da614ab19cde23ddbd8a94e747c915d8c9ab1"`, bootUpdaterDir)) + host.MustExecute(fmt.Sprintf(`sudo %v/bin/installer/installer bootstrap --url "oci://docker.io/datadog/agent-package-dev@sha256:d86138d88b407cf5ef75bccb3e0bc492ce6e3e3dfa9d3a64d2387d3b350fe5c4"`, bootUpdaterDir)) // assert agent symlink _ = host.MustExecute(`test -L /usr/bin/datadog-agent`) diff --git a/test/new-e2e/tests/windows/common/defender.go b/test/new-e2e/tests/windows/common/defender.go index d477e5a6a9ea4..46f93209372a7 100644 --- a/test/new-e2e/tests/windows/common/defender.go +++ b/test/new-e2e/tests/windows/common/defender.go @@ -7,6 +7,7 @@ package common import ( "fmt" + "github.com/DataDog/datadog-agent/test/new-e2e/tests/windows/common/powershell" "strings" "github.com/DataDog/datadog-agent/test/new-e2e/pkg/components" @@ -29,24 +30,7 @@ func DisableDefender(host *components.RemoteHost) error { return fmt.Errorf("Windows Defender is tamper protected, unable to modify settings") } - // ScheduleDay = 8 means never - cmd := `@( - @{DisableArchiveScanning = $true }, - @{DisableRealtimeMonitoring = $true }, - @{DisableBehaviorMonitoring = $true }, - @{MAPSReporting = 0 }, - @{ScanScheduleDay = 8 }, - @{RemediationScheduleDay = 8 } - ) | ForEach-Object { Set-MpPreference @_ }` - _, err = host.Execute(cmd) - if err != nil { - return fmt.Errorf("error disabling Windows Defender: %w", err) - } - - // Even though Microsoft claims to have deprecated this option as of Platform Version 4.18.2108.4, - // it still works for me on Platform Version 4.18.23110.3 after a reboot, so set it anywawy. - cmd = `mkdir -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows Defender"; Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows Defender" -Name DisableAntiSpyware -Value 1` - _, err = host.Execute(cmd) + _, err = powershell.PsHost().DisableWindowsDefender().Execute(host) if err != nil { return fmt.Errorf("error disabling Windows Defender: %w", err) } diff --git a/test/new-e2e/tests/windows/common/powershell/command_builder.go b/test/new-e2e/tests/windows/common/powershell/command_builder.go index b4e17e5e3d949..dc2ea67252a50 100644 --- a/test/new-e2e/tests/windows/common/powershell/command_builder.go +++ b/test/new-e2e/tests/windows/common/powershell/command_builder.go @@ -150,6 +150,33 @@ func (ps *powerShellCommandBuilder) WaitForServiceStatus(serviceName, status str return ps } +// DisableWindowsDefender creates a command to try and disable Windows Defender without uninstalling it +func (ps *powerShellCommandBuilder) DisableWindowsDefender() *powerShellCommandBuilder { + // ScheduleDay = 8 means never + ps.cmds = append(ps.cmds, ` +if ((Get-MpComputerStatus).IsTamperProtected) { + Write-Error "Windows NewDefender is tamper protected, unable to modify settings" +} +(@{DisableArchiveScanning = $true }, + @{DisableRealtimeMonitoring = $true }, + @{DisableBehaviorMonitoring = $true }, + @{MAPSReporting = 0 }, + @{ScanScheduleDay = 8 }, + @{RemediationScheduleDay = 8 } +) | ForEach-Object { Set-MpPreference @_ }`) + // Even though Microsoft claims to have deprecated this option as of Platform Version 4.18.2108.4, + // it still works for me on Platform Version 4.18.23110.3 after a reboot, so set it anywawy. + ps.cmds = append(ps.cmds, `mkdir -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NewDefender"`) + ps.cmds = append(ps.cmds, `Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NewDefender" -Name DisableAntiSpyware -Value 1`) + return ps +} + +// UninstallWindowsDefender creates a command to uninstall Windows Defender +func (ps *powerShellCommandBuilder) UninstallWindowsDefender() *powerShellCommandBuilder { + ps.cmds = append(ps.cmds, "Uninstall-WindowsFeature -Name Windows-Defender") + return ps +} + // Execute compiles the list of PowerShell commands into one script and runs it on the given host func (ps *powerShellCommandBuilder) Execute(host *components.RemoteHost) (string, error) { return host.Execute(ps.Compile()) diff --git a/test/new-e2e/tests/windows/common/registry.go b/test/new-e2e/tests/windows/common/registry.go index 5cef878d67221..e50fb68c6be0b 100644 --- a/test/new-e2e/tests/windows/common/registry.go +++ b/test/new-e2e/tests/windows/common/registry.go @@ -21,3 +21,13 @@ func GetRegistryValue(host *components.RemoteHost, path string, value string) (s } return strings.TrimSpace(out), nil } + +// RegistryKeyExists returns true if the registry key exists on the remote host +func RegistryKeyExists(host *components.RemoteHost, path string) (bool, error) { + cmd := fmt.Sprintf("Test-Path -Path '%s'", path) + out, err := host.Execute(cmd) + if err != nil { + return false, err + } + return strings.EqualFold(strings.TrimSpace(out), "True"), nil +} diff --git a/test/new-e2e/tests/windows/components/defender/component.go b/test/new-e2e/tests/windows/components/defender/component.go new file mode 100644 index 0000000000000..0c1373a6ee2b8 --- /dev/null +++ b/test/new-e2e/tests/windows/components/defender/component.go @@ -0,0 +1,67 @@ +// 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 defender contains code to control the behavior of Windows defender in the E2E tests +package defender + +import ( + "github.com/DataDog/datadog-agent/test/new-e2e/tests/windows/common/powershell" + "github.com/DataDog/test-infra-definitions/common" + "github.com/DataDog/test-infra-definitions/common/config" + "github.com/DataDog/test-infra-definitions/common/namer" + "github.com/DataDog/test-infra-definitions/common/utils" + "github.com/DataDog/test-infra-definitions/components/command" + "github.com/DataDog/test-infra-definitions/components/remote" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Manager contains the resources to manage Windows Defender +type Manager struct { + namer namer.Namer + host *remote.Host + + Resources []pulumi.Resource +} + +// NewDefender creates a new instance of the Windows NewDefender component +func NewDefender(e *config.CommonEnvironment, host *remote.Host, options ...Option) (*Manager, error) { + params, err := common.ApplyOption(&Configuration{}, options) + if err != nil { + return nil, err + } + + manager := &Manager{ + namer: e.CommonNamer.WithPrefix("windows-defender"), + host: host, + } + + var deps []pulumi.ResourceOption + if params.Disabled { + cmd, err := host.OS.Runner().Command(manager.namer.ResourceName("disable-defender"), &command.Args{ + Create: pulumi.String(powershell.PsHost(). + DisableWindowsDefender(). + Compile()), + }, deps...) + if err != nil { + return nil, err + } + deps = append(deps, utils.PulumiDependsOn(cmd)) + manager.Resources = append(manager.Resources, cmd) + } + + if params.Uninstall { + cmd, err := host.OS.Runner().Command(manager.namer.ResourceName("uninstall-defender"), &command.Args{ + Create: pulumi.String(powershell.PsHost(). + UninstallWindowsDefender(). + Compile()), + }, deps...) + if err != nil { + return nil, err + } + manager.Resources = append(manager.Resources, cmd) + } + + return manager, nil +} diff --git a/test/new-e2e/tests/windows/components/defender/params.go b/test/new-e2e/tests/windows/components/defender/params.go new file mode 100644 index 0000000000000..d325ecd15fc08 --- /dev/null +++ b/test/new-e2e/tests/windows/components/defender/params.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. + +package defender + +// Configuration represents the Windows NewDefender configuration +type Configuration struct { + Disabled bool + Uninstall bool +} + +// Option is an optional function parameter type for Configuration options +type Option = func(*Configuration) error + +// WithDefenderDisabled configures the NewDefender component to disable Windows NewDefender +func WithDefenderDisabled() func(*Configuration) error { + return func(p *Configuration) error { + p.Disabled = true + return nil + } +} + +// WithDefenderUninstalled configures the NewDefender component to uninstall Windows NewDefender +func WithDefenderUninstalled() func(*Configuration) error { + return func(p *Configuration) error { + p.Uninstall = true + return 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 0374d0def4bac..698d45fd0c138 100644 --- a/test/new-e2e/tests/windows/domain-test/domain_test.go +++ b/test/new-e2e/tests/windows/domain-test/domain_test.go @@ -7,7 +7,7 @@ package domain import ( "fmt" - "github.com/DataDog/datadog-agent/test/new-e2e/pkg/environments/aws/host/windows" + awsHostWindows "github.com/DataDog/datadog-agent/test/new-e2e/pkg/environments/aws/host/windows" "github.com/DataDog/datadog-agent/test/new-e2e/tests/windows" "github.com/DataDog/test-infra-definitions/components/activedirectory" "path/filepath" @@ -40,8 +40,8 @@ func TestInstallsOnDomainController(t *testing.T) { suite := suite t.Run(reflect.TypeOf(suite).Elem().Name(), func(t *testing.T) { t.Parallel() - e2e.Run(t, suite, e2e.WithProvisioner(winawshost.ProvisionerNoAgent( - winawshost.WithActiveDirectoryOptions( + e2e.Run(t, suite, e2e.WithProvisioner(awsHostWindows.ProvisionerNoAgent( + awsHostWindows.WithActiveDirectoryOptions( activedirectory.WithDomainController(TestDomain, TestPassword), activedirectory.WithDomainUser(TestUser, TestPassword), )))) diff --git a/test/new-e2e/tests/windows/install-test/install_test.go b/test/new-e2e/tests/windows/install-test/install_test.go index ae49eb269c7fb..86f383b3690f2 100644 --- a/test/new-e2e/tests/windows/install-test/install_test.go +++ b/test/new-e2e/tests/windows/install-test/install_test.go @@ -17,7 +17,7 @@ import ( "github.com/DataDog/datadog-agent/test/new-e2e/pkg/components" "github.com/DataDog/datadog-agent/test/new-e2e/pkg/e2e" "github.com/DataDog/datadog-agent/test/new-e2e/pkg/environments" - awshost "github.com/DataDog/datadog-agent/test/new-e2e/pkg/environments/aws/host" + awsHostWindows "github.com/DataDog/datadog-agent/test/new-e2e/pkg/environments/aws/host/windows" "github.com/DataDog/datadog-agent/test/new-e2e/pkg/runner" "github.com/DataDog/datadog-agent/test/new-e2e/tests/agent-platform/common" boundport "github.com/DataDog/datadog-agent/test/new-e2e/tests/agent-platform/common/bound-port" @@ -25,9 +25,6 @@ import ( 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" - componentos "github.com/DataDog/test-infra-definitions/components/os" - "github.com/DataDog/test-infra-definitions/scenarios/aws/ec2" - "gopkg.in/yaml.v3" "github.com/stretchr/testify/assert" @@ -37,14 +34,12 @@ import ( ) type agentMSISuite struct { - windows.BaseAgentInstallerSuite[environments.Host] + windows.BaseAgentInstallerSuite[environments.WindowsHost] beforeInstall *windowsCommon.FileSystemSnapshot } func TestMSI(t *testing.T) { - opts := []e2e.SuiteOption{e2e.WithProvisioner(awshost.ProvisionerNoAgentNoFakeIntake( - awshost.WithEC2InstanceOptions(ec2.WithOS(componentos.WindowsDefault)), - ))} + opts := []e2e.SuiteOption{e2e.WithProvisioner(awsHostWindows.ProvisionerNoAgentNoFakeIntake())} agentPackage, err := windowsAgent.GetPackageFromEnv() if err != nil { @@ -76,19 +71,6 @@ func TestMSI(t *testing.T) { }) } -func (is *agentMSISuite) prepareHost() { - vm := is.Env().RemoteHost - - if !is.Run("prepare VM", func() { - is.Run("disable defender", func() { - err := windowsCommon.DisableDefender(vm) - is.Require().NoError(err, "should disable defender") - }) - }) { - is.T().Fatal("failed to prepare VM") - } -} - // TODO: this isn't called before tabular tests (e.g. TestAgentUser/...) func (is *agentMSISuite) BeforeTest(suiteName, testName string) { if beforeTest, ok := any(&is.BaseAgentInstallerSuite).(suite.BeforeTest); ok { @@ -187,7 +169,6 @@ func (is *agentMSISuite) cleanupOnSuccessInDevMode() { func (is *agentMSISuite) TestInstall() { vm := is.Env().RemoteHost - is.prepareHost() // initialize test helper t := is.newTester(vm) @@ -218,7 +199,6 @@ func (is *agentMSISuite) TestInstall() { func (is *agentMSISuite) TestInstallAltDir() { vm := is.Env().RemoteHost - is.prepareHost() installPath := `C:\altdir` configRoot := `C:\altconfroot` @@ -245,7 +225,6 @@ func (is *agentMSISuite) TestInstallAltDir() { func (is *agentMSISuite) TestUpgrade() { vm := is.Env().RemoteHost - is.prepareHost() // install previous version _ = is.installLastStable(vm) @@ -273,7 +252,6 @@ func (is *agentMSISuite) TestUpgrade() { // TC-INS-002 func (is *agentMSISuite) TestUpgradeRollback() { vm := is.Env().RemoteHost - is.prepareHost() // install previous version previousTester := is.installLastStable(vm) @@ -306,7 +284,6 @@ func (is *agentMSISuite) TestUpgradeRollback() { // TC-INS-001 func (is *agentMSISuite) TestRepair() { vm := is.Env().RemoteHost - is.prepareHost() // initialize test helper t := is.newTester(vm) @@ -344,7 +321,6 @@ func (is *agentMSISuite) TestRepair() { // TC-INS-006 func (is *agentMSISuite) TestAgentUser() { vm := is.Env().RemoteHost - is.prepareHost() hostinfo, err := windowsCommon.GetHostInfo(vm) is.Require().NoError(err) @@ -400,7 +376,6 @@ func (is *agentMSISuite) TestAgentUser() { // TODO: It would be better for the cmd_port binding test to be done by a regular Agent E2E test. func (is *agentMSISuite) TestInstallOpts() { vm := is.Env().RemoteHost - is.prepareHost() cmdPort := 4999 @@ -495,7 +470,6 @@ func (is *agentMSISuite) TestInstallOpts() { // should be moved to regular Agent E2E tests for each subservice. func (is *agentMSISuite) TestSubServicesOpts() { vm := is.Env().RemoteHost - is.prepareHost() tcs := []struct { testname string @@ -578,6 +552,30 @@ func (is *agentMSISuite) TestSubServicesOpts() { } } +// TC-INS-007 +// +// Runs the installer with WIXFAILWHENDEFERRED=1 to trigger a failure at the very end of the installer. +func (is *agentMSISuite) TestInstallFail() { + vm := is.Env().RemoteHost + + // run installer with failure flag + if !is.Run(fmt.Sprintf("install %s", is.AgentPackage.AgentVersion()), func() { + _, err := is.InstallAgent(vm, + windowsAgent.WithPackage(is.AgentPackage), + windowsAgent.WithValidAPIKey(), + windowsAgent.WithWixFailWhenDeferred(), + windowsAgent.WithInstallLogFile(filepath.Join(is.OutputDir, "install.log")), + ) + is.Require().Error(err, "should fail to install agent %s", is.AgentPackage.AgentVersion()) + }) { + is.T().FailNow() + } + + // currently the install failure tests are the same as the uninstall tests + t := is.newTester(vm) + t.TestUninstallExpectations(is.T()) +} + func (is *agentMSISuite) readYamlConfig(host *components.RemoteHost, path string) (map[string]any, error) { config, err := host.ReadFile(path) if err != nil { diff --git a/test/new-e2e/tests/windows/install-test/installtester.go b/test/new-e2e/tests/windows/install-test/installtester.go index 35d073495d9a9..977c7910eddf9 100644 --- a/test/new-e2e/tests/windows/install-test/installtester.go +++ b/test/new-e2e/tests/windows/install-test/installtester.go @@ -228,9 +228,18 @@ func (t *Tester) TestUninstallExpectations(tt *testing.T) { assert.NoError(tt, err, "uninstall should not remove agent user") for _, serviceName := range servicetest.ExpectedInstalledServices() { - _, err := windows.GetServiceConfig(t.host, serviceName) + conf, err := windows.GetServiceConfig(t.host, serviceName) + if err == nil && windows.IsKernelModeServiceType(conf.ServiceType) { + // TODO WKINT-410: kernel mode services are not removed on install rollback + tt.Logf("WKINT-410: Skipping known failure, kernel mode service not removed: %s", serviceName) + continue + } assert.Errorf(tt, err, "uninstall should remove service %s", serviceName) } + + registryKeyExists, err := windows.RegistryKeyExists(t.host, windowsAgent.RegistryKeyPath) + assert.NoError(tt, err, "should check registry key exists") + assert.False(tt, registryKeyExists, "uninstall should remove registry key") } // Only do some basic checks on the agent since it's a previous version diff --git a/tools/pre-commit/shell_check_no_set_x.sh b/tools/pre-commit/shell_check_no_set_x.sh deleted file mode 100755 index cf6315323a317..0000000000000 --- a/tools/pre-commit/shell_check_no_set_x.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh - -# Verify no set -x is used in this repository - -files="$(git grep -rnE --color=always 'set( +-[^ ])* +-[^ ]*(x|( +xtrace))' -- ':*.sh' ':*/Dockerfile' ':*.yaml' ':*.yml' ":(exclude)$0" ':(exclude).pre-commit-config.yaml')" - -if [ -n "$files" ]; then - echo "$files" >& 2 - echo >& 2 - echo 'error: No script should include "set -x"' >& 2 - exit 1 -else - exit 0 -fi