From 920e76cc520491b75a52cafd367164d12dfdf779 Mon Sep 17 00:00:00 2001 From: Mariell Hoversholm Date: Mon, 13 Jan 2025 09:19:21 +0100 Subject: [PATCH] feat: use app sdk logger (#98824) * feat: use app sdk logger * build: bump Go version * chore: mark owner of logging lib * chore: remove ineffectual ctx assignment --- .drone.yml | 210 +++++++++--------- .github/CODEOWNERS | 1 - Dockerfile | 2 +- Makefile | 2 +- apps/alerting/notifications/go.mod | 4 +- apps/alerting/notifications/go.sum | 4 +- apps/investigation/go.mod | 9 +- apps/investigation/go.sum | 22 +- apps/playlist/go.mod | 9 +- apps/playlist/go.sum | 22 +- go.mod | 10 +- go.sum | 14 +- go.work | 2 +- go.work.sum | 9 + kindsv2/go.mod | 3 +- kindsv2/go.sum | 4 +- pkg/build/go.mod | 2 +- pkg/build/go.sum | 4 +- pkg/infra/log/log.go | 3 + pkg/promlib/go.mod | 2 +- pkg/promlib/go.sum | 4 +- .../apis/provisioning/auth/identity.go | 10 +- pkg/registry/apis/provisioning/export.go | 9 +- pkg/registry/apis/provisioning/files.go | 22 +- pkg/registry/apis/provisioning/history.go | 12 +- .../apis/provisioning/jobs/pullrequest.go | 20 +- pkg/registry/apis/provisioning/jobs/queue.go | 16 +- pkg/registry/apis/provisioning/jobs/worker.go | 8 +- .../apis/provisioning/repository/github.go | 20 +- .../provisioning/repository_controller.go | 49 ++-- .../apis/provisioning/resources/fileformat.go | 4 +- .../apis/provisioning/resources/parser.go | 10 +- .../apis/provisioning/resources/replicator.go | 57 +++-- pkg/registry/apis/provisioning/webhook.go | 6 +- pkg/slogctx/slogctx.go | 30 --- scripts/drone/variables.star | 2 +- 36 files changed, 315 insertions(+), 302 deletions(-) delete mode 100644 pkg/slogctx/slogctx.go diff --git a/.drone.yml b/.drone.yml index b9dcf35fcf1..8a733014bda 100644 --- a/.drone.yml +++ b/.drone.yml @@ -25,7 +25,7 @@ steps: depends_on: [] environment: CGO_ENABLED: 0 - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: compile-build-cmd - commands: - ./bin/build verify-drone @@ -75,7 +75,7 @@ steps: - go install github.com/bazelbuild/buildtools/buildifier@latest - buildifier --lint=warn -mode=check -r . depends_on: [] - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: lint-starlark trigger: event: @@ -427,7 +427,7 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-cue depends_on: [] - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: verify-gen-cue - commands: - '# It is required that generated jsonnet is committed and in sync with its inputs.' @@ -436,21 +436,21 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-jsonnet depends_on: [] - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: verify-gen-jsonnet - commands: - apk add --update make - make gen-go depends_on: - verify-gen-cue - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: wire-install - commands: - apk add --update build-base shared-mime-info shared-mime-info-lang - go list -f '{{.Dir}}/...' -m | xargs go test -short -covermode=atomic -timeout=5m depends_on: - wire-install - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: test-backend - commands: - apk add --update build-base @@ -459,7 +459,7 @@ steps: | grep -o '\(.*\)/' | sort -u) depends_on: - wire-install - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: test-backend-integration trigger: event: @@ -513,7 +513,7 @@ steps: depends_on: [] environment: CGO_ENABLED: 0 - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: compile-build-cmd - commands: - echo $(/usr/bin/github-app-external-token) > /github-app/token @@ -558,16 +558,16 @@ steps: - apk add --update make - make gen-go depends_on: [] - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: wire-install - commands: - go run scripts/modowners/modowners.go check go.mod - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: validate-modfile - commands: - apk add --update make - make swagger-validate - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: validate-openapi-spec trigger: event: @@ -643,7 +643,7 @@ steps: depends_on: [] environment: CGO_ENABLED: 0 - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: compile-build-cmd - commands: - '# It is required that code generated from Thema/CUE be committed and in sync @@ -653,7 +653,7 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-cue depends_on: [] - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: verify-gen-cue - commands: - '# It is required that generated jsonnet is committed and in sync with its inputs.' @@ -662,7 +662,7 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-jsonnet depends_on: [] - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: verify-gen-jsonnet - commands: - yarn install --immutable || yarn install --immutable @@ -698,7 +698,7 @@ steps: - /src/grafana-build artifacts -a targz:grafana:linux/amd64 -a targz:grafana:linux/arm64 -a targz:grafana:linux/arm/v7 -a docker:grafana:linux/amd64 -a docker:grafana:linux/amd64:ubuntu -a docker:grafana:linux/arm64 -a docker:grafana:linux/arm64:ubuntu -a docker:grafana:linux/arm/v7 - -a docker:grafana:linux/arm/v7:ubuntu --go-version=1.23.1 --yarn-cache=$$YARN_CACHE_FOLDER + -a docker:grafana:linux/arm/v7:ubuntu --go-version=1.23.4 --yarn-cache=$$YARN_CACHE_FOLDER --build-id=$$DRONE_BUILD_NUMBER --ubuntu-base=ubuntu:22.04 --alpine-base=alpine:3.20.3 --tag-format='{{ .version_base }}-{{ .buildID }}-{{ .arch }}' --ubuntu-tag-format='{{ .version_base }}-{{ .buildID }}-ubuntu-{{ .arch }}' --verify='false' --grafana-dir=$$PWD @@ -1096,7 +1096,7 @@ steps: depends_on: [] environment: CGO_ENABLED: 0 - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: compile-build-cmd - commands: - echo $DRONE_RUNNER_NAME @@ -1110,7 +1110,7 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-cue depends_on: [] - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: verify-gen-cue - commands: - '# It is required that generated jsonnet is committed and in sync with its inputs.' @@ -1119,14 +1119,14 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-jsonnet depends_on: [] - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: verify-gen-jsonnet - commands: - apk add --update make - make gen-go depends_on: - verify-gen-cue - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: wire-install - commands: - dockerize -wait tcp://postgres:5432 -timeout 120s @@ -1147,7 +1147,7 @@ steps: GRAFANA_TEST_DB: postgres PGPASSWORD: grafanatest POSTGRES_HOST: postgres - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: postgres-integration-tests - commands: - dockerize -wait tcp://mysql80:3306 -timeout 120s @@ -1168,7 +1168,7 @@ steps: environment: GRAFANA_TEST_DB: mysql MYSQL_HOST: mysql80 - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: mysql-8.0-integration-tests - commands: - dockerize -wait tcp://redis:6379 -timeout 120s @@ -1184,7 +1184,7 @@ steps: - wait-for-redis environment: REDIS_URL: redis://redis:6379/0 - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: redis-integration-tests - commands: - dockerize -wait tcp://memcached:11211 -timeout 120s @@ -1200,7 +1200,7 @@ steps: - wait-for-memcached environment: MEMCACHED_HOSTS: memcached:11211 - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: memcached-integration-tests - commands: - dockerize -wait tcp://mimir_backend:8080 -timeout 120s @@ -1216,7 +1216,7 @@ steps: environment: AM_TENANT_ID: test AM_URL: http://mimir_backend:8080 - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: remote-alertmanager-integration-tests trigger: event: @@ -1303,7 +1303,7 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-cue depends_on: [] - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: verify-gen-cue trigger: event: @@ -1424,7 +1424,7 @@ steps: && return 1; fi depends_on: - clone-enterprise - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: swagger-gen trigger: event: @@ -1529,7 +1529,7 @@ steps: depends_on: [] environment: CGO_ENABLED: 0 - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: compile-build-cmd - commands: - '# It is required that code generated from Thema/CUE be committed and in sync @@ -1540,7 +1540,7 @@ steps: - CODEGEN_VERIFY=1 make gen-cue depends_on: - clone-enterprise - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: verify-gen-cue - commands: - '# It is required that generated jsonnet is committed and in sync with its inputs.' @@ -1550,14 +1550,14 @@ steps: - CODEGEN_VERIFY=1 make gen-jsonnet depends_on: - clone-enterprise - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: verify-gen-jsonnet - commands: - apk add --update make - make gen-go depends_on: - verify-gen-cue - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: wire-install - commands: - apk add --update build-base @@ -1565,7 +1565,7 @@ steps: - go test -v -run=^$ -benchmem -timeout=1h -count=8 -bench=. ${GO_PACKAGES} depends_on: - wire-install - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: sqlite-benchmark-integration-tests - commands: - apk add --update build-base @@ -1577,7 +1577,7 @@ steps: GRAFANA_TEST_DB: postgres PGPASSWORD: grafanatest POSTGRES_HOST: postgres - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: postgres-benchmark-integration-tests - commands: - apk add --update build-base @@ -1588,7 +1588,7 @@ steps: environment: GRAFANA_TEST_DB: mysql MYSQL_HOST: mysql80 - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: mysql-8.0-benchmark-integration-tests trigger: event: @@ -1665,7 +1665,7 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-cue depends_on: [] - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: verify-gen-cue trigger: branch: main @@ -1838,7 +1838,7 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-cue depends_on: [] - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: verify-gen-cue - commands: - '# It is required that generated jsonnet is committed and in sync with its inputs.' @@ -1847,21 +1847,21 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-jsonnet depends_on: [] - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: verify-gen-jsonnet - commands: - apk add --update make - make gen-go depends_on: - verify-gen-cue - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: wire-install - commands: - apk add --update build-base shared-mime-info shared-mime-info-lang - go list -f '{{.Dir}}/...' -m | xargs go test -short -covermode=atomic -timeout=5m depends_on: - wire-install - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: test-backend - commands: - apk add --update build-base @@ -1870,7 +1870,7 @@ steps: | grep -o '\(.*\)/' | sort -u) depends_on: - wire-install - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: test-backend-integration trigger: branch: main @@ -1915,22 +1915,22 @@ steps: depends_on: [] environment: CGO_ENABLED: 0 - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: compile-build-cmd - commands: - apk add --update make - make gen-go depends_on: [] - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: wire-install - commands: - go run scripts/modowners/modowners.go check go.mod - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: validate-modfile - commands: - apk add --update make - make swagger-validate - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: validate-openapi-spec - commands: - ./bin/build verify-drone @@ -2062,7 +2062,7 @@ steps: depends_on: [] environment: CGO_ENABLED: 0 - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: compile-build-cmd - commands: - '# It is required that code generated from Thema/CUE be committed and in sync @@ -2072,7 +2072,7 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-cue depends_on: [] - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: verify-gen-cue - commands: - '# It is required that generated jsonnet is committed and in sync with its inputs.' @@ -2081,7 +2081,7 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-jsonnet depends_on: [] - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: verify-gen-jsonnet - commands: - yarn install --immutable || yarn install --immutable @@ -2116,7 +2116,7 @@ steps: - /src/grafana-build artifacts -a targz:grafana:linux/amd64 -a targz:grafana:linux/arm64 -a targz:grafana:linux/arm/v7 -a docker:grafana:linux/amd64 -a docker:grafana:linux/amd64:ubuntu -a docker:grafana:linux/arm64 -a docker:grafana:linux/arm64:ubuntu -a docker:grafana:linux/arm/v7 - -a docker:grafana:linux/arm/v7:ubuntu --go-version=1.23.1 --yarn-cache=$$YARN_CACHE_FOLDER + -a docker:grafana:linux/arm/v7:ubuntu --go-version=1.23.4 --yarn-cache=$$YARN_CACHE_FOLDER --build-id=$$DRONE_BUILD_NUMBER --ubuntu-base=ubuntu:22.04 --alpine-base=alpine:3.20.3 --tag-format='{{ .version_base }}-{{ .buildID }}-{{ .arch }}' --ubuntu-tag-format='{{ .version_base }}-{{ .buildID }}-ubuntu-{{ .arch }}' --verify='false' --grafana-dir=$$PWD @@ -2591,7 +2591,7 @@ steps: depends_on: [] environment: CGO_ENABLED: 0 - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: compile-build-cmd - commands: - echo $DRONE_RUNNER_NAME @@ -2605,7 +2605,7 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-cue depends_on: [] - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: verify-gen-cue - commands: - '# It is required that generated jsonnet is committed and in sync with its inputs.' @@ -2614,14 +2614,14 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-jsonnet depends_on: [] - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: verify-gen-jsonnet - commands: - apk add --update make - make gen-go depends_on: - verify-gen-cue - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: wire-install - commands: - dockerize -wait tcp://postgres:5432 -timeout 120s @@ -2642,7 +2642,7 @@ steps: GRAFANA_TEST_DB: postgres PGPASSWORD: grafanatest POSTGRES_HOST: postgres - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: postgres-integration-tests - commands: - dockerize -wait tcp://mysql80:3306 -timeout 120s @@ -2663,7 +2663,7 @@ steps: environment: GRAFANA_TEST_DB: mysql MYSQL_HOST: mysql80 - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: mysql-8.0-integration-tests - commands: - dockerize -wait tcp://redis:6379 -timeout 120s @@ -2679,7 +2679,7 @@ steps: - wait-for-redis environment: REDIS_URL: redis://redis:6379/0 - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: redis-integration-tests - commands: - dockerize -wait tcp://memcached:11211 -timeout 120s @@ -2695,7 +2695,7 @@ steps: - wait-for-memcached environment: MEMCACHED_HOSTS: memcached:11211 - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: memcached-integration-tests - commands: - dockerize -wait tcp://mimir_backend:8080 -timeout 120s @@ -2711,7 +2711,7 @@ steps: environment: AM_TENANT_ID: test AM_URL: http://mimir_backend:8080 - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: remote-alertmanager-integration-tests trigger: branch: main @@ -2970,7 +2970,7 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-cue depends_on: [] - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: verify-gen-cue - commands: - '# It is required that generated jsonnet is committed and in sync with its inputs.' @@ -2979,21 +2979,21 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-jsonnet depends_on: [] - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: verify-gen-jsonnet - commands: - apk add --update make - make gen-go depends_on: - verify-gen-cue - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: wire-install - commands: - apk add --update build-base shared-mime-info shared-mime-info-lang - go list -f '{{.Dir}}/...' -m | xargs go test -short -covermode=atomic -timeout=5m depends_on: - wire-install - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: test-backend - commands: - apk add --update build-base @@ -3002,7 +3002,7 @@ steps: | grep -o '\(.*\)/' | sort -u) depends_on: - wire-install - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: test-backend-integration trigger: branch: @@ -3045,22 +3045,22 @@ steps: depends_on: [] environment: CGO_ENABLED: 0 - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: compile-build-cmd - commands: - apk add --update make - make gen-go depends_on: [] - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: wire-install - commands: - go run scripts/modowners/modowners.go check go.mod - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: validate-modfile - commands: - apk add --update make - make swagger-validate - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: validate-openapi-spec trigger: branch: @@ -3139,7 +3139,7 @@ steps: depends_on: [] environment: CGO_ENABLED: 0 - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: compile-build-cmd - commands: - echo $DRONE_RUNNER_NAME @@ -3153,7 +3153,7 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-cue depends_on: [] - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: verify-gen-cue - commands: - '# It is required that generated jsonnet is committed and in sync with its inputs.' @@ -3162,14 +3162,14 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-jsonnet depends_on: [] - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: verify-gen-jsonnet - commands: - apk add --update make - make gen-go depends_on: - verify-gen-cue - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: wire-install - commands: - dockerize -wait tcp://postgres:5432 -timeout 120s @@ -3190,7 +3190,7 @@ steps: GRAFANA_TEST_DB: postgres PGPASSWORD: grafanatest POSTGRES_HOST: postgres - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: postgres-integration-tests - commands: - dockerize -wait tcp://mysql80:3306 -timeout 120s @@ -3211,7 +3211,7 @@ steps: environment: GRAFANA_TEST_DB: mysql MYSQL_HOST: mysql80 - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: mysql-8.0-integration-tests - commands: - dockerize -wait tcp://redis:6379 -timeout 120s @@ -3227,7 +3227,7 @@ steps: - wait-for-redis environment: REDIS_URL: redis://redis:6379/0 - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: redis-integration-tests - commands: - dockerize -wait tcp://memcached:11211 -timeout 120s @@ -3243,7 +3243,7 @@ steps: - wait-for-memcached environment: MEMCACHED_HOSTS: memcached:11211 - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: memcached-integration-tests - commands: - dockerize -wait tcp://mimir_backend:8080 -timeout 120s @@ -3259,7 +3259,7 @@ steps: environment: AM_TENANT_ID: test AM_URL: http://mimir_backend:8080 - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: remote-alertmanager-integration-tests trigger: branch: @@ -3359,7 +3359,7 @@ steps: depends_on: [] environment: CGO_ENABLED: 0 - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: compile-build-cmd - commands: - ./bin/build artifacts docker fetch --edition oss @@ -3491,7 +3491,7 @@ steps: depends_on: [] environment: CGO_ENABLED: 0 - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: compile-build-cmd - commands: - ./bin/build artifacts docker fetch --edition oss @@ -3632,7 +3632,7 @@ steps: depends_on: [] environment: CGO_ENABLED: 0 - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: compile-build-cmd - commands: - ./bin/build artifacts packages --artifacts-editions=oss --tag $${DRONE_TAG} --src-bucket @@ -3724,7 +3724,7 @@ steps: depends_on: [] environment: CGO_ENABLED: 0 - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: compile-build-cmd - commands: - yarn install --immutable || yarn install --immutable @@ -3824,7 +3824,7 @@ steps: depends_on: [] environment: CGO_ENABLED: 0 - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: compile-build-cmd - depends_on: - compile-build-cmd @@ -3921,7 +3921,7 @@ steps: depends_on: [] environment: CGO_ENABLED: 0 - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: compile-build-cmd - commands: - ./bin/build publish grafana-com --edition oss ${DRONE_TAG} @@ -3983,7 +3983,7 @@ steps: from_secret: grafana_api_key GCP_KEY_BASE64: from_secret: gcp_key_base64 - GO_VERSION: 1.23.1 + GO_VERSION: 1.23.4 GPG_PASSPHRASE: from_secret: packages_gpg_passphrase GPG_PRIVATE_KEY: @@ -4058,7 +4058,7 @@ steps: from_secret: grafana_api_key GCP_KEY_BASE64: from_secret: gcp_key_base64 - GO_VERSION: 1.23.1 + GO_VERSION: 1.23.4 GPG_PASSPHRASE: from_secret: packages_gpg_passphrase GPG_PRIVATE_KEY: @@ -4115,13 +4115,13 @@ steps: depends_on: [] environment: CGO_ENABLED: 0 - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: compile-build-cmd - commands: - ./bin/build whatsnew-checker depends_on: - compile-build-cmd - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: whats-new-checker trigger: event: @@ -4220,7 +4220,7 @@ steps: from_secret: grafana_api_key GCP_KEY_BASE64: from_secret: gcp_key_base64 - GO_VERSION: 1.23.1 + GO_VERSION: 1.23.4 GPG_PASSPHRASE: from_secret: packages_gpg_passphrase GPG_PRIVATE_KEY: @@ -4371,7 +4371,7 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-cue depends_on: [] - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: verify-gen-cue - commands: - '# It is required that generated jsonnet is committed and in sync with its inputs.' @@ -4380,21 +4380,21 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-jsonnet depends_on: [] - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: verify-gen-jsonnet - commands: - apk add --update make - make gen-go depends_on: - verify-gen-cue - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: wire-install - commands: - apk add --update build-base shared-mime-info shared-mime-info-lang - go list -f '{{.Dir}}/...' -m | xargs go test -short -covermode=atomic -timeout=5m depends_on: - wire-install - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: test-backend - commands: - apk add --update build-base @@ -4403,7 +4403,7 @@ steps: | grep -o '\(.*\)/' | sort -u) depends_on: - wire-install - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: test-backend-integration trigger: cron: @@ -4457,7 +4457,7 @@ steps: from_secret: grafana_api_key GCP_KEY_BASE64: from_secret: gcp_key_base64 - GO_VERSION: 1.23.1 + GO_VERSION: 1.23.4 GPG_PASSPHRASE: from_secret: packages_gpg_passphrase GPG_PRIVATE_KEY: @@ -4601,7 +4601,7 @@ steps: from_secret: grafana_api_key GCP_KEY_BASE64: from_secret: gcp_key_base64 - GO_VERSION: 1.23.1 + GO_VERSION: 1.23.4 GPG_PASSPHRASE: from_secret: packages_gpg_passphrase GPG_PRIVATE_KEY: @@ -4708,7 +4708,7 @@ steps: - export GITHUB_TOKEN=$(cat /github-app/token) - 'dagger run --silent /src/grafana-build artifacts -a $${ARTIFACTS} --grafana-ref=$${GRAFANA_REF} --enterprise-ref=$${ENTERPRISE_REF} --grafana-repo=$${GRAFANA_REPO} --version=$${VERSION} ' - - --go-version=1.23.1 + - --go-version=1.23.4 depends_on: - github-app-generate-token environment: @@ -4729,7 +4729,7 @@ steps: from_secret: grafana_api_key GCP_KEY_BASE64: from_secret: gcp_key_base64 - GO_VERSION: 1.23.1 + GO_VERSION: 1.23.4 GPG_PASSPHRASE: from_secret: packages_gpg_passphrase GPG_PRIVATE_KEY: @@ -4863,7 +4863,7 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-cue depends_on: [] - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: verify-gen-cue - commands: - '# It is required that generated jsonnet is committed and in sync with its inputs.' @@ -4872,14 +4872,14 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-jsonnet depends_on: [] - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: verify-gen-jsonnet - commands: - apk add --update make - make gen-go depends_on: - verify-gen-cue - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: wire-install - commands: - dockerize -wait tcp://postgres:5432 -timeout 120s @@ -4900,7 +4900,7 @@ steps: GRAFANA_TEST_DB: postgres PGPASSWORD: grafanatest POSTGRES_HOST: postgres - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: postgres-integration-tests - commands: - dockerize -wait tcp://mysql80:3306 -timeout 120s @@ -4921,7 +4921,7 @@ steps: environment: GRAFANA_TEST_DB: mysql MYSQL_HOST: mysql80 - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: mysql-8.0-integration-tests - commands: - dockerize -wait tcp://redis:6379 -timeout 120s @@ -4937,7 +4937,7 @@ steps: - wait-for-redis environment: REDIS_URL: redis://redis:6379/0 - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: redis-integration-tests - commands: - dockerize -wait tcp://memcached:11211 -timeout 120s @@ -4953,7 +4953,7 @@ steps: - wait-for-memcached environment: MEMCACHED_HOSTS: memcached:11211 - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: memcached-integration-tests - commands: - dockerize -wait tcp://mimir_backend:8080 -timeout 120s @@ -4969,7 +4969,7 @@ steps: environment: AM_TENANT_ID: test AM_URL: http://mimir_backend:8080 - image: golang:1.23.1-alpine + image: golang:1.23.4-alpine name: remote-alertmanager-integration-tests trigger: event: @@ -5272,7 +5272,7 @@ steps: - commands: - trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM docker:27-cli - trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM alpine/git:2.40.1 - - trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM golang:1.23.1-alpine + - trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM golang:1.23.4-alpine - trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM node:22.11.0-alpine - trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM node:22-bookworm - trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM google/cloud-sdk:431.0.0 @@ -5310,7 +5310,7 @@ steps: - commands: - trivy --exit-code 1 --severity HIGH,CRITICAL docker:27-cli - trivy --exit-code 1 --severity HIGH,CRITICAL alpine/git:2.40.1 - - trivy --exit-code 1 --severity HIGH,CRITICAL golang:1.23.1-alpine + - trivy --exit-code 1 --severity HIGH,CRITICAL golang:1.23.4-alpine - trivy --exit-code 1 --severity HIGH,CRITICAL node:22.11.0-alpine - trivy --exit-code 1 --severity HIGH,CRITICAL node:22-bookworm - trivy --exit-code 1 --severity HIGH,CRITICAL google/cloud-sdk:431.0.0 @@ -5579,6 +5579,6 @@ kind: secret name: gcr_credentials --- kind: signature -hmac: 341dbe9d2f9c6d2ee70026e495921ea4670550729350047ec0c680094497cc44 +hmac: a9bb79f6213857c3329dfa467da986137d03fafd0b12fddec08383e6ad0925c8 ... diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 5a35570fb11..91f9c5edee5 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -71,7 +71,6 @@ /conf/provisioning/sample @grafana/grafana-git-ui-sync-team /pkg/registry/apis/provisioning @grafana/grafana-git-ui-sync-team /scripts/parse-generated-api.ts @grafana/grafana-git-ui-sync-team -/pkg/slogctx @grafana/grafana-git-ui-sync-team /apps/alerting/ @grafana/alerting-backend @grafana/alerting-frontend /apps/playlist/ @grafana/grafana-app-platform-squad diff --git a/Dockerfile b/Dockerfile index 33da9d8a89a..44840f15f46 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,7 +2,7 @@ ARG BASE_IMAGE=alpine:3.20 ARG JS_IMAGE=node:22-alpine ARG JS_PLATFORM=linux/amd64 -ARG GO_IMAGE=golang:1.23.1-alpine +ARG GO_IMAGE=golang:1.23.4-alpine ARG GO_SRC=go-builder ARG JS_SRC=js-builder diff --git a/Makefile b/Makefile index 424c2a6c231..88657f0cf77 100644 --- a/Makefile +++ b/Makefile @@ -8,7 +8,7 @@ WIRE_TAGS = "oss" include .bingo/Variables.mk GO = go -GO_VERSION = 1.23.1 +GO_VERSION = 1.23.4 GO_LINT_FILES ?= $(shell ./scripts/go-workspace/golangci-lint-includes.sh) GO_TEST_FILES ?= $(shell ./scripts/go-workspace/test-includes.sh) SH_FILES ?= $(shell find ./scripts -name *.sh) diff --git a/apps/alerting/notifications/go.mod b/apps/alerting/notifications/go.mod index 70fa812823c..cf6da74a0b1 100644 --- a/apps/alerting/notifications/go.mod +++ b/apps/alerting/notifications/go.mod @@ -1,12 +1,12 @@ module github.com/grafana/grafana/apps/alerting/notifications -go 1.23.1 +go 1.23.4 replace github.com/grafana/grafana => ../../.. require ( github.com/grafana/grafana v0.0.0-00010101000000-000000000000 - github.com/grafana/grafana-app-sdk v0.23.1 + github.com/grafana/grafana-app-sdk v0.29.0 k8s.io/apimachinery v0.32.0 k8s.io/apiserver v0.32.0 k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f diff --git a/apps/alerting/notifications/go.sum b/apps/alerting/notifications/go.sum index 0dae12637f7..a5bb3e72c1b 100644 --- a/apps/alerting/notifications/go.sum +++ b/apps/alerting/notifications/go.sum @@ -71,8 +71,8 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/grafana/grafana-app-sdk v0.23.1 h1:BRpUG0bA0oVxjthkmO2thuJBo3nbjaRSSmZJHw+mA8I= -github.com/grafana/grafana-app-sdk v0.23.1/go.mod h1:KzgPnTJfMeckGmMctv6CJb8Jr/o/5rwARDyjXoeR0Fc= +github.com/grafana/grafana-app-sdk v0.29.0 h1:LMSm/+0LOBPd13fe1bs/4sKJmuLiixYUX9T0oqDqp4I= +github.com/grafana/grafana-app-sdk v0.29.0/go.mod h1:XLt308EmK6kvqPlzjUyXxbwZKEk2vur/eiypUNDay5I= github.com/grafana/grafana/pkg/apimachinery v0.0.0-20240821155123-6891eb1d35da h1:2E3c/I3ayAy4Z1GwIPqXNZcpUccRapE1aBXA1ho4g7o= github.com/grafana/grafana/pkg/apimachinery v0.0.0-20240821155123-6891eb1d35da/go.mod h1:p09fvU5ujNL/Ig8HB7g4f+S0zyYbQq3x/f0jA4ujVOM= github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI= diff --git a/apps/investigation/go.mod b/apps/investigation/go.mod index b1c0d2c4efa..e78cb2c4541 100644 --- a/apps/investigation/go.mod +++ b/apps/investigation/go.mod @@ -1,9 +1,9 @@ module github.com/grafana/grafana/apps/investigation -go 1.23.1 +go 1.23.4 require ( - github.com/grafana/grafana-app-sdk v0.23.1 + github.com/grafana/grafana-app-sdk v0.29.0 k8s.io/apimachinery v0.32.0 k8s.io/klog/v2 v2.130.1 k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f @@ -30,6 +30,7 @@ require ( github.com/google/go-cmp v0.6.0 // indirect github.com/google/gofuzz v1.2.0 // indirect github.com/google/uuid v1.6.0 // indirect + github.com/grafana/grafana-app-sdk/logging v0.29.0 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.24.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect @@ -54,17 +55,19 @@ require ( go.opentelemetry.io/otel v1.33.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.33.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.33.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.31.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.33.0 // indirect go.opentelemetry.io/otel/metric v1.33.0 // indirect go.opentelemetry.io/otel/sdk v1.33.0 // indirect go.opentelemetry.io/otel/trace v1.33.0 // indirect go.opentelemetry.io/proto/otlp v1.4.0 // indirect golang.org/x/net v0.34.0 // indirect golang.org/x/oauth2 v0.24.0 // indirect + golang.org/x/sync v0.10.0 // indirect golang.org/x/sys v0.29.0 // indirect golang.org/x/term v0.28.0 // indirect golang.org/x/text v0.21.0 // indirect golang.org/x/time v0.7.0 // indirect + golang.org/x/tools v0.29.0 // indirect gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576 // indirect diff --git a/apps/investigation/go.sum b/apps/investigation/go.sum index 3170f7999e5..f24cfa8a6b9 100644 --- a/apps/investigation/go.sum +++ b/apps/investigation/go.sum @@ -29,6 +29,8 @@ github.com/go-openapi/jsonreference v0.21.0 h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF github.com/go-openapi/jsonreference v0.21.0/go.mod h1:LmZmgsrTkVg9LG4EaHeY8cBDslNPMo06cago5JNLkm4= github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE= github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= +github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= +github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= github.com/go-test/deep v1.0.8 h1:TDsG77qcSprGbC6vTN8OuXp5g+J+b5Pcguhf7Zt61VM= github.com/go-test/deep v1.0.8/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= @@ -43,10 +45,14 @@ github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeN 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/pprof v0.0.0-20241029153458-d1b30febd7db h1:097atOisP2aRj7vFgYQBbFN4U4JNXUNYpxael3UzMyo= +github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= 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/grafana/grafana-app-sdk v0.23.1 h1:BRpUG0bA0oVxjthkmO2thuJBo3nbjaRSSmZJHw+mA8I= -github.com/grafana/grafana-app-sdk v0.23.1/go.mod h1:KzgPnTJfMeckGmMctv6CJb8Jr/o/5rwARDyjXoeR0Fc= +github.com/grafana/grafana-app-sdk v0.29.0 h1:LMSm/+0LOBPd13fe1bs/4sKJmuLiixYUX9T0oqDqp4I= +github.com/grafana/grafana-app-sdk v0.29.0/go.mod h1:XLt308EmK6kvqPlzjUyXxbwZKEk2vur/eiypUNDay5I= +github.com/grafana/grafana-app-sdk/logging v0.29.0 h1:mgbXaAf33aFwqwGVeaX30l8rkeAJH0iACgX5Rn6YkN4= +github.com/grafana/grafana-app-sdk/logging v0.29.0/go.mod h1:xy6ZyVXl50Z3DBDLybvBPphbykPhuVNed/VNmen9DQM= github.com/grpc-ecosystem/grpc-gateway/v2 v2.24.0 h1:TmHmbvxPmaegwhDubVz0lICL0J5Ka2vwTzhoePEXsGE= github.com/grpc-ecosystem/grpc-gateway/v2 v2.24.0/go.mod h1:qztMSjm835F2bXf+5HKAPIS5qsmQDqZna/PgVt4rWtI= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -81,6 +87,10 @@ github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9 github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/onsi/ginkgo/v2 v2.21.0 h1:7rg/4f3rB88pb5obDgNZrNHrQ4e6WpjonchcpuBRnZM= +github.com/onsi/ginkgo/v2 v2.21.0/go.mod h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo= +github.com/onsi/gomega v1.35.1 h1:Cwbd75ZBPxFSuZ6T+rN/WCb/gOc6YgFBXLlZLhC7Ds4= +github.com/onsi/gomega v1.35.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog= github.com/perimeterx/marshmallow v1.1.5 h1:a2LALqQ1BlHM8PZblsDdidgv1mWi1DgC2UmX50IvK2s= github.com/perimeterx/marshmallow v1.1.5/go.mod h1:dsXbUu8CRzfYP5a87xpp0xq9S3u0Vchtcl8we9tYaXw= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -120,8 +130,8 @@ go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.33.0 h1:Vh5HayB/0HHfOQA7Ctx go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.33.0/go.mod h1:cpgtDBaqD/6ok/UG0jT15/uKjAY8mRA53diogHBg3UI= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.33.0 h1:5pojmb1U1AogINhN3SurB+zm/nIcusopeBNp42f45QM= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.33.0/go.mod h1:57gTHJSE5S1tqg+EKsLPlTWhpHMsWlVmer+LA926XiA= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.31.0 h1:lUsI2TYsQw2r1IASwoROaCnjdj2cvC2+Jbxvk6nHnWU= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.31.0/go.mod h1:2HpZxxQurfGxJlJDblybejHB6RX6pmExPNe517hREw4= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.33.0 h1:wpMfgF8E1rkrT1Z6meFh1NDtownE9Ii3n3X2GJYjsaU= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.33.0/go.mod h1:wAy0T/dUbs468uOlkT31xjvqQgEVXv58BRFWEgn5v/0= go.opentelemetry.io/otel/metric v1.33.0 h1:r+JOocAyeRVXD8lZpjdQjzMadVZp2M4WmQ+5WtEnklQ= go.opentelemetry.io/otel/metric v1.33.0/go.mod h1:L9+Fyctbp6HFTddIxClbQkjtubW6O9QS3Ann/M82u6M= go.opentelemetry.io/otel/sdk v1.33.0 h1:iax7M131HuAm9QkZotNHEfstof92xM+N8sr3uHXc2IM= @@ -150,6 +160,8 @@ golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbht golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.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-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -167,6 +179,8 @@ golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.29.0 h1:Xx0h3TtM9rzQpQuR4dKLrdglAmCEN5Oi+P74JdhdzXE= +golang.org/x/tools v0.29.0/go.mod h1:KMQVMRsVxU6nHCFXrBPhDB8XncLNLM0lIy/F14RP588= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/apps/playlist/go.mod b/apps/playlist/go.mod index a91ff957337..2125ee5655b 100644 --- a/apps/playlist/go.mod +++ b/apps/playlist/go.mod @@ -1,9 +1,9 @@ module github.com/grafana/grafana/apps/playlist -go 1.23.1 +go 1.23.4 require ( - github.com/grafana/grafana-app-sdk v0.23.1 + github.com/grafana/grafana-app-sdk v0.29.0 k8s.io/apimachinery v0.32.0 k8s.io/client-go v0.32.0 k8s.io/klog/v2 v2.130.1 @@ -31,6 +31,7 @@ require ( github.com/google/go-cmp v0.6.0 // indirect github.com/google/gofuzz v1.2.0 // indirect github.com/google/uuid v1.6.0 // indirect + github.com/grafana/grafana-app-sdk/logging v0.29.0 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.24.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect @@ -55,17 +56,19 @@ require ( go.opentelemetry.io/otel v1.33.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.33.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.33.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.31.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.33.0 // indirect go.opentelemetry.io/otel/metric v1.33.0 // indirect go.opentelemetry.io/otel/sdk v1.33.0 // indirect go.opentelemetry.io/otel/trace v1.33.0 // indirect go.opentelemetry.io/proto/otlp v1.4.0 // indirect golang.org/x/net v0.34.0 // indirect golang.org/x/oauth2 v0.24.0 // indirect + golang.org/x/sync v0.10.0 // indirect golang.org/x/sys v0.29.0 // indirect golang.org/x/term v0.28.0 // indirect golang.org/x/text v0.21.0 // indirect golang.org/x/time v0.7.0 // indirect + golang.org/x/tools v0.29.0 // indirect gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576 // indirect diff --git a/apps/playlist/go.sum b/apps/playlist/go.sum index 3170f7999e5..f24cfa8a6b9 100644 --- a/apps/playlist/go.sum +++ b/apps/playlist/go.sum @@ -29,6 +29,8 @@ github.com/go-openapi/jsonreference v0.21.0 h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF github.com/go-openapi/jsonreference v0.21.0/go.mod h1:LmZmgsrTkVg9LG4EaHeY8cBDslNPMo06cago5JNLkm4= github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE= github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= +github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= +github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= github.com/go-test/deep v1.0.8 h1:TDsG77qcSprGbC6vTN8OuXp5g+J+b5Pcguhf7Zt61VM= github.com/go-test/deep v1.0.8/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= @@ -43,10 +45,14 @@ github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeN 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/pprof v0.0.0-20241029153458-d1b30febd7db h1:097atOisP2aRj7vFgYQBbFN4U4JNXUNYpxael3UzMyo= +github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= 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/grafana/grafana-app-sdk v0.23.1 h1:BRpUG0bA0oVxjthkmO2thuJBo3nbjaRSSmZJHw+mA8I= -github.com/grafana/grafana-app-sdk v0.23.1/go.mod h1:KzgPnTJfMeckGmMctv6CJb8Jr/o/5rwARDyjXoeR0Fc= +github.com/grafana/grafana-app-sdk v0.29.0 h1:LMSm/+0LOBPd13fe1bs/4sKJmuLiixYUX9T0oqDqp4I= +github.com/grafana/grafana-app-sdk v0.29.0/go.mod h1:XLt308EmK6kvqPlzjUyXxbwZKEk2vur/eiypUNDay5I= +github.com/grafana/grafana-app-sdk/logging v0.29.0 h1:mgbXaAf33aFwqwGVeaX30l8rkeAJH0iACgX5Rn6YkN4= +github.com/grafana/grafana-app-sdk/logging v0.29.0/go.mod h1:xy6ZyVXl50Z3DBDLybvBPphbykPhuVNed/VNmen9DQM= github.com/grpc-ecosystem/grpc-gateway/v2 v2.24.0 h1:TmHmbvxPmaegwhDubVz0lICL0J5Ka2vwTzhoePEXsGE= github.com/grpc-ecosystem/grpc-gateway/v2 v2.24.0/go.mod h1:qztMSjm835F2bXf+5HKAPIS5qsmQDqZna/PgVt4rWtI= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -81,6 +87,10 @@ github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9 github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/onsi/ginkgo/v2 v2.21.0 h1:7rg/4f3rB88pb5obDgNZrNHrQ4e6WpjonchcpuBRnZM= +github.com/onsi/ginkgo/v2 v2.21.0/go.mod h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo= +github.com/onsi/gomega v1.35.1 h1:Cwbd75ZBPxFSuZ6T+rN/WCb/gOc6YgFBXLlZLhC7Ds4= +github.com/onsi/gomega v1.35.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog= github.com/perimeterx/marshmallow v1.1.5 h1:a2LALqQ1BlHM8PZblsDdidgv1mWi1DgC2UmX50IvK2s= github.com/perimeterx/marshmallow v1.1.5/go.mod h1:dsXbUu8CRzfYP5a87xpp0xq9S3u0Vchtcl8we9tYaXw= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -120,8 +130,8 @@ go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.33.0 h1:Vh5HayB/0HHfOQA7Ctx go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.33.0/go.mod h1:cpgtDBaqD/6ok/UG0jT15/uKjAY8mRA53diogHBg3UI= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.33.0 h1:5pojmb1U1AogINhN3SurB+zm/nIcusopeBNp42f45QM= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.33.0/go.mod h1:57gTHJSE5S1tqg+EKsLPlTWhpHMsWlVmer+LA926XiA= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.31.0 h1:lUsI2TYsQw2r1IASwoROaCnjdj2cvC2+Jbxvk6nHnWU= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.31.0/go.mod h1:2HpZxxQurfGxJlJDblybejHB6RX6pmExPNe517hREw4= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.33.0 h1:wpMfgF8E1rkrT1Z6meFh1NDtownE9Ii3n3X2GJYjsaU= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.33.0/go.mod h1:wAy0T/dUbs468uOlkT31xjvqQgEVXv58BRFWEgn5v/0= go.opentelemetry.io/otel/metric v1.33.0 h1:r+JOocAyeRVXD8lZpjdQjzMadVZp2M4WmQ+5WtEnklQ= go.opentelemetry.io/otel/metric v1.33.0/go.mod h1:L9+Fyctbp6HFTddIxClbQkjtubW6O9QS3Ann/M82u6M= go.opentelemetry.io/otel/sdk v1.33.0 h1:iax7M131HuAm9QkZotNHEfstof92xM+N8sr3uHXc2IM= @@ -150,6 +160,8 @@ golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbht golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.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-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -167,6 +179,8 @@ golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.29.0 h1:Xx0h3TtM9rzQpQuR4dKLrdglAmCEN5Oi+P74JdhdzXE= +golang.org/x/tools v0.29.0/go.mod h1:KMQVMRsVxU6nHCFXrBPhDB8XncLNLM0lIy/F14RP588= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/go.mod b/go.mod index cb1f63f8084..e05ee22ffde 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/grafana/grafana -go 1.23.1 +go 1.23.4 // Override Prometheus version because Prometheus v2.X is tagged as v0.X for Go modules purposes and Go assumes // that v1.Y is higher than v0.X, so when we resolve dependencies if any dependency imports v1.Y we'd @@ -77,7 +77,7 @@ require ( github.com/grafana/dskit v0.0.0-20241105154643-a6b453a88040 // @grafana/grafana-backend-group github.com/grafana/gofpdf v0.0.0-20231002120153-857cc45be447 // @grafana/sharing-squad github.com/grafana/gomemcache v0.0.0-20240805133030-fdaf6a95408e // @grafana/grafana-operator-experience-squad - github.com/grafana/grafana-app-sdk v0.23.1 // @grafana/grafana-app-platform-squad + github.com/grafana/grafana-app-sdk v0.29.0 // @grafana/grafana-app-platform-squad github.com/grafana/grafana-aws-sdk v0.31.5 // @grafana/aws-datasources github.com/grafana/grafana-azure-sdk-go/v2 v2.1.2 // @grafana/partner-datasources github.com/grafana/grafana-cloud-migration-snapshot v1.6.0 // @grafana/grafana-operator-experience-squad @@ -304,7 +304,7 @@ require ( github.com/hashicorp/memberlist v0.5.0 // indirect github.com/hashicorp/yamux v0.1.1 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect - github.com/invopop/jsonschema v0.12.0 // indirect + github.com/invopop/jsonschema v0.13.0 // indirect github.com/invopop/yaml v0.3.1 // indirect github.com/jackc/pgpassfile v1.0.0 // indirect github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect @@ -474,6 +474,8 @@ require github.com/grafana/grafana/apps/alerting/notifications v0.0.0-2024120916 require github.com/grafana/grafana/apps/investigation v0.0.0-20241218083103-f46c07aba7b6 // @fcjack @matryer +require github.com/grafana/grafana-app-sdk/logging v0.29.0 // @grafana/grafana-app-platform-squad + require ( cel.dev/expr v0.18.0 // indirect cloud.google.com/go/longrunning v0.6.0 // indirect @@ -523,7 +525,7 @@ require ( go.etcd.io/bbolt v1.3.11 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.opentelemetry.io/collector/featuregate v1.9.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.31.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.33.0 // indirect go4.org/netipx v0.0.0-20230125063823-8449b0a6169f // indirect gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect k8s.io/apiextensions-apiserver v0.32.0 // indirect diff --git a/go.sum b/go.sum index b282408204f..ec4a88056b9 100644 --- a/go.sum +++ b/go.sum @@ -2299,8 +2299,10 @@ github.com/grafana/gofpdf v0.0.0-20231002120153-857cc45be447 h1:jxJJ5z0GxqhWFbQU github.com/grafana/gofpdf v0.0.0-20231002120153-857cc45be447/go.mod h1:IxsY6mns6Q5sAnWcrptrgUrSglTZJXH/kXr9nbpb/9I= github.com/grafana/gomemcache v0.0.0-20240805133030-fdaf6a95408e h1:UlEET0InuoFautfaFp8lDrNF7rPHYXuBMrzwWx9XqFY= github.com/grafana/gomemcache v0.0.0-20240805133030-fdaf6a95408e/go.mod h1:IGRj8oOoxwJbHBYl1+OhS9UjQR0dv6SQOep7HqmtyFU= -github.com/grafana/grafana-app-sdk v0.23.1 h1:BRpUG0bA0oVxjthkmO2thuJBo3nbjaRSSmZJHw+mA8I= -github.com/grafana/grafana-app-sdk v0.23.1/go.mod h1:KzgPnTJfMeckGmMctv6CJb8Jr/o/5rwARDyjXoeR0Fc= +github.com/grafana/grafana-app-sdk v0.29.0 h1:LMSm/+0LOBPd13fe1bs/4sKJmuLiixYUX9T0oqDqp4I= +github.com/grafana/grafana-app-sdk v0.29.0/go.mod h1:XLt308EmK6kvqPlzjUyXxbwZKEk2vur/eiypUNDay5I= +github.com/grafana/grafana-app-sdk/logging v0.29.0 h1:mgbXaAf33aFwqwGVeaX30l8rkeAJH0iACgX5Rn6YkN4= +github.com/grafana/grafana-app-sdk/logging v0.29.0/go.mod h1:xy6ZyVXl50Z3DBDLybvBPphbykPhuVNed/VNmen9DQM= github.com/grafana/grafana-aws-sdk v0.31.5 h1:4HpMQx7n4Qqoi7Bgu8KHQ2QKT9fYYdHilX/Gh3FZKBE= github.com/grafana/grafana-aws-sdk v0.31.5/go.mod h1:5p4Cjyr5ZiR6/RT2nFWkJ8XpIKgX4lAUmUMu70m2yCM= github.com/grafana/grafana-azure-sdk-go/v2 v2.1.2 h1:fV6IgVtViXcYZ4VqTAMuVBTLuGAnI27HhQkaLttzbPE= @@ -2498,8 +2500,8 @@ github.com/influxdata/influxql v1.4.0 h1:Lf62rbAF8KWQf+4Djqf4hVXgmQuGozUoSD6kNWj github.com/influxdata/influxql v1.4.0/go.mod h1:VqxAKyQz5p8GzgGsxWalCWYGxEqw6kvJo2IickMQiQk= github.com/influxdata/line-protocol v0.0.0-20210922203350-b1ad95c89adf h1:7JTmneyiNEwVBOHSjoMxiWAqB992atOeepeFYegn5RU= github.com/influxdata/line-protocol v0.0.0-20210922203350-b1ad95c89adf/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo= -github.com/invopop/jsonschema v0.12.0 h1:6ovsNSuvn9wEQVOyc72aycBMVQFKz7cPdMJn10CvzRI= -github.com/invopop/jsonschema v0.12.0/go.mod h1:ffZ5Km5SWWRAIN6wbDXItl95euhFz2uON45H2qjYt+0= +github.com/invopop/jsonschema v0.13.0 h1:KvpoAJWEjR3uD9Kbm2HWJmqsEaHt8lBUpd0qHcIi21E= +github.com/invopop/jsonschema v0.13.0/go.mod h1:ffZ5Km5SWWRAIN6wbDXItl95euhFz2uON45H2qjYt+0= github.com/invopop/yaml v0.3.1 h1:f0+ZpmhfBSS4MhG+4HYseMdJhoeeopbSKbq5Rpeelso= github.com/invopop/yaml v0.3.1/go.mod h1:PMOp3nn4/12yEZUFfmOuNHJsZToEEOwoWsT+D81KkeA= github.com/ionos-cloud/sdk-go/v6 v6.1.11 h1:J/uRN4UWO3wCyGOeDdMKv8LWRzKu6UIkLEaes38Kzh8= @@ -3330,8 +3332,8 @@ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.25.0/go.mod h go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.33.0 h1:5pojmb1U1AogINhN3SurB+zm/nIcusopeBNp42f45QM= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.33.0/go.mod h1:57gTHJSE5S1tqg+EKsLPlTWhpHMsWlVmer+LA926XiA= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.25.0/go.mod h1:e7ciERRhZaOZXVjx5MiL8TK5+Xv7G5Gv5PA2ZDEJdL8= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.31.0 h1:lUsI2TYsQw2r1IASwoROaCnjdj2cvC2+Jbxvk6nHnWU= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.31.0/go.mod h1:2HpZxxQurfGxJlJDblybejHB6RX6pmExPNe517hREw4= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.33.0 h1:wpMfgF8E1rkrT1Z6meFh1NDtownE9Ii3n3X2GJYjsaU= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.33.0/go.mod h1:wAy0T/dUbs468uOlkT31xjvqQgEVXv58BRFWEgn5v/0= go.opentelemetry.io/otel/metric v1.17.0/go.mod h1:h4skoxdZI17AxwITdmdZjjYJQH5nzijUUjm+wtPph5o= go.opentelemetry.io/otel/metric v1.19.0/go.mod h1:L5rUsV9kM1IxCj1MmSdS+JQAcVm319EUrDVLrt7jqt8= go.opentelemetry.io/otel/metric v1.21.0/go.mod h1:o1p3CA8nNHW8j5yuQLdc1eeqEaPfzug24uvsyIEJRWM= diff --git a/go.work b/go.work index a2026119223..78c561488f2 100644 --- a/go.work +++ b/go.work @@ -1,4 +1,4 @@ -go 1.23.1 +go 1.23.4 // The `skip:golangci-lint` comment tag is used to exclude the package from the `golangci-lint` GitHub Action. // The module at the root of the repo (`.`) is excluded because ./pkg/... is included manually in the `golangci-lint` configuration. diff --git a/go.work.sum b/go.work.sum index b0199bfec29..e00f54e7328 100644 --- a/go.work.sum +++ b/go.work.sum @@ -396,6 +396,7 @@ github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuP github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4= github.com/baidubce/bce-sdk-go v0.9.188 h1:8MA7ewe4VpX01uYl7Kic6ZvfIReUFdSKbY46ZqlQM7U= github.com/baidubce/bce-sdk-go v0.9.188/go.mod h1:zbYJMQwE4IZuyrJiFO8tO8NbtYiKTFTbwh4eIsqjVdg= +github.com/bazelbuild/rules_go v0.49.0/go.mod h1:Dhcz716Kqg1RHNWos+N6MlXNkjNP2EwZQ0LukRKJfMs= github.com/benbjohnson/immutable v0.4.0 h1:CTqXbEerYso8YzVPxmWxh2gnoRQbbB9X1quUC8+vGZA= github.com/benbjohnson/immutable v0.4.0/go.mod h1:iAr8OjJGLnLmVUr9MZ/rz4PWUy6Ouc2JLYuMArmvAJM= github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY= @@ -763,6 +764,8 @@ github.com/lyft/protoc-gen-star/v2 v2.0.4-0.20230330145011-496ad1ac90a4 h1:sIXJO github.com/lyft/protoc-gen-star/v2 v2.0.4-0.20230330145011-496ad1ac90a4/go.mod h1:amey7yeodaJhXSbf/TlLvWiqQfLOSpEk//mLlc+axEk= github.com/mailgun/raymond/v2 v2.0.48 h1:5dmlB680ZkFG2RN/0lvTAghrSxIESeu9/2aeDqACtjw= github.com/mailgun/raymond/v2 v2.0.48/go.mod h1:lsgvL50kgt1ylcFJYZiULi5fjPBkkhNfj4KA0W54Z18= +github.com/matryer/moq v0.3.3 h1:pScMH9VyrdT4S93yiLpVyU8rCDqGQr24uOyBxmktG5Q= +github.com/matryer/moq v0.3.3/go.mod h1:RJ75ZZZD71hejp39j4crZLsEDszGk6iH4v4YsWFKH4s= github.com/matryer/moq v0.5.0 h1:h2PJUYjZSiyEahzVogDRmrgL9Bsx9xYAl8l+LPfmwL8= github.com/matryer/moq v0.5.0/go.mod h1:39GTnrD0mVWHPvWdYj5ki/lxfhLQEtHcLh+tWoYF/iE= github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 h1:jWpvCLoY8Z/e3VKvlsiIGKtc+UG6U5vzxaoagmhXfyg= @@ -1087,6 +1090,10 @@ go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.28.0 h1:U2g go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.28.0/go.mod h1:yeGZANgEcpdx/WK0IvvRFC+2oLiMS2u4L/0Rj2M2Qr0= go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.28.0 h1:aLmmtjRke7LPDQ3lvpFz+kNEH43faFhzW7v8BFIEydg= go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.28.0/go.mod h1:TC1pyCt6G9Sjb4bQpShH+P5R53pO6ZuGnHuuln9xMeE= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0/go.mod h1:s75jGIWA9OfCMzF0xr+ZgfrB5FEbbV7UuYo32ahUiFI= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.31.0/go.mod h1:B5Ki776z/MBnVha1Nzwp5arlzBbE3+1jk+pGmaP5HME= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.28.0/go.mod h1:QWFXnDavXWwMx2EEcZsf3yxgEKAqsxQ+Syjp+seyInw= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.28.0/go.mod h1:Y5+XiUG4Emn1hTfciPzGPJaSI+RpDts6BnCIir0SLqk= go.opentelemetry.io/otel/exporters/prometheus v0.50.0 h1:2Ewsda6hejmbhGFyUvWZjUThC98Cf8Zy6g0zkIimOng= go.opentelemetry.io/otel/exporters/prometheus v0.50.0/go.mod h1:pMm5PkUo5YwbLiuEf7t2xg4wbP0/eSJrMxIMxKosynY= go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.4.0 h1:0MH3f8lZrflbUWXVxyBg/zviDFdGE062uKh5+fu8Vv0= @@ -1197,6 +1204,7 @@ google.golang.org/grpc v1.64.1/go.mod h1:hiQF4LFZelK2WKaP6W0L92zGHtiQdZxk8CrSdvy google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ= google.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA= google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= +google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0 h1:M1YKkFIboKNieVO5DLUEVzQfGwJD30Nv2jfUgzb5UcE= google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= @@ -1241,3 +1249,4 @@ rsc.io/pdf v0.1.1 h1:k1MczvYDUvJBe93bYd7wrZLLUEcLZAuF824/I4e5Xr4= rsc.io/quote/v3 v3.1.0 h1:9JKUTTIUgS6kzR9mK1YuGKv6Nl+DijDNIc0ghT58FaY= rsc.io/sampler v1.3.0 h1:7uVkIFmeBqHfdjD+gZwtXXI+RODJ2Wc4O7MPEh/QiW4= sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e h1:4Z09Hglb792X0kfOBBJUPFEyvVfQWrYT/l8h5EKA6JQ= +sigs.k8s.io/structured-merge-diff/v4 v4.4.2/go.mod h1:N8f93tFZh9U6vpxwRArLiikrE5/2tiu1w1AGfACIGE4= diff --git a/kindsv2/go.mod b/kindsv2/go.mod index 3ffb84c1af2..37f632240d1 100644 --- a/kindsv2/go.mod +++ b/kindsv2/go.mod @@ -2,7 +2,7 @@ module github.com/grafana/grafana/kindsv2 go 1.23.1 -require github.com/grafana/cog v0.0.5 +require github.com/grafana/cog v0.0.10 require ( cuelabs.dev/go/oci/ociregistry v0.0.0-20240906074133-82eb438dd565 // indirect @@ -33,7 +33,6 @@ require ( github.com/protocolbuffers/txtpbfmt v0.0.0-20241112170944-20d2c9ebc01d // indirect github.com/rogpeppe/go-internal v1.13.1 // indirect github.com/santhosh-tekuri/jsonschema/v5 v5.3.1 // indirect - github.com/stretchr/testify v1.10.0 // indirect github.com/ugorji/go/codec v1.2.11 // indirect github.com/yalue/merged_fs v1.3.0 // indirect golang.org/x/mod v0.22.0 // indirect diff --git a/kindsv2/go.sum b/kindsv2/go.sum index 907ebfd7292..6a78ef7df75 100644 --- a/kindsv2/go.sum +++ b/kindsv2/go.sum @@ -26,8 +26,8 @@ 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/grafana/codejen v0.0.4-0.20230321061741-77f656893a3d h1:hrXbGJ5jgp6yNITzs5o+zXq0V5yT3siNJ+uM8LGwWKk= github.com/grafana/codejen v0.0.4-0.20230321061741-77f656893a3d/go.mod h1:zmwwM/DRyQB7pfuBjTWII3CWtxcXh8LTwAYGfDfpR6s= -github.com/grafana/cog v0.0.5 h1:BCa+10i3KvV+KMSQuxlN1DS9cZEwN+EAFc7ZmXqHxQE= -github.com/grafana/cog v0.0.5/go.mod h1:lzetOuhGUl/JaSACiJoHvBokf9/fS6PEFaWZvnQu2vs= +github.com/grafana/cog v0.0.10 h1:YqtqZ1a51njXEVRKspuQifRwgYgU5NcK5KwuiEDGUqo= +github.com/grafana/cog v0.0.10/go.mod h1:HwJbc60fZ+viayROClLGdDwO5w/JjBOpO9wjGnAfMLc= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= diff --git a/pkg/build/go.mod b/pkg/build/go.mod index aa799d7d0e5..3d5fcf3877c 100644 --- a/pkg/build/go.mod +++ b/pkg/build/go.mod @@ -109,7 +109,7 @@ require ( go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.4.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.33.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.33.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.31.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.33.0 // indirect go.opentelemetry.io/otel/log v0.4.0 // indirect go.opentelemetry.io/otel/sdk/log v0.4.0 // indirect go.opentelemetry.io/proto/otlp v1.4.0 // indirect diff --git a/pkg/build/go.sum b/pkg/build/go.sum index c5af58c4b2a..3264d3470d9 100644 --- a/pkg/build/go.sum +++ b/pkg/build/go.sum @@ -245,8 +245,8 @@ go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.33.0 h1:Vh5HayB/0HHfOQA7Ctx go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.33.0/go.mod h1:cpgtDBaqD/6ok/UG0jT15/uKjAY8mRA53diogHBg3UI= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.33.0 h1:5pojmb1U1AogINhN3SurB+zm/nIcusopeBNp42f45QM= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.33.0/go.mod h1:57gTHJSE5S1tqg+EKsLPlTWhpHMsWlVmer+LA926XiA= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.31.0 h1:lUsI2TYsQw2r1IASwoROaCnjdj2cvC2+Jbxvk6nHnWU= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.31.0/go.mod h1:2HpZxxQurfGxJlJDblybejHB6RX6pmExPNe517hREw4= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.33.0 h1:wpMfgF8E1rkrT1Z6meFh1NDtownE9Ii3n3X2GJYjsaU= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.33.0/go.mod h1:wAy0T/dUbs468uOlkT31xjvqQgEVXv58BRFWEgn5v/0= go.opentelemetry.io/otel/log v0.4.0 h1:/vZ+3Utqh18e8TPjuc3ecg284078KWrR8BRz+PQAj3o= go.opentelemetry.io/otel/log v0.4.0/go.mod h1:DhGnQvky7pHy82MIRV43iXh3FlKN8UUKftn0KbLOq6I= go.opentelemetry.io/otel/metric v1.33.0 h1:r+JOocAyeRVXD8lZpjdQjzMadVZp2M4WmQ+5WtEnklQ= diff --git a/pkg/infra/log/log.go b/pkg/infra/log/log.go index 03623e5ee55..702bbc66f92 100644 --- a/pkg/infra/log/log.go +++ b/pkg/infra/log/log.go @@ -22,6 +22,7 @@ import ( "github.com/mattn/go-isatty" "gopkg.in/ini.v1" + "github.com/grafana/grafana-app-sdk/logging" "github.com/grafana/grafana/pkg/infra/log/term" "github.com/grafana/grafana/pkg/infra/log/text" "github.com/grafana/grafana/pkg/util" @@ -60,6 +61,8 @@ func init() { } return nil, false }) + + logging.DefaultLogger = logging.NewSLogLogger(slog.Default().Handler()) } // logManager manage loggers diff --git a/pkg/promlib/go.mod b/pkg/promlib/go.mod index 8f2eccfee6a..f6cad649339 100644 --- a/pkg/promlib/go.mod +++ b/pkg/promlib/go.mod @@ -61,7 +61,7 @@ require ( github.com/hashicorp/go-hclog v1.6.3 // indirect github.com/hashicorp/go-plugin v1.6.2 // indirect github.com/hashicorp/yamux v0.1.1 // indirect - github.com/invopop/jsonschema v0.12.0 // indirect + github.com/invopop/jsonschema v0.13.0 // indirect github.com/invopop/yaml v0.3.1 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/jszwedko/go-datemath v0.1.1-0.20230526204004-640a500621d6 // indirect diff --git a/pkg/promlib/go.sum b/pkg/promlib/go.sum index b514e1f70b0..ff31ea16b67 100644 --- a/pkg/promlib/go.sum +++ b/pkg/promlib/go.sum @@ -131,8 +131,8 @@ github.com/hashicorp/go-plugin v1.6.2 h1:zdGAEd0V1lCaU0u+MxWQhtSDQmahpkwOun8U8Ei github.com/hashicorp/go-plugin v1.6.2/go.mod h1:CkgLQ5CZqNmdL9U9JzM532t8ZiYQ35+pj3b1FD37R0Q= github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ= -github.com/invopop/jsonschema v0.12.0 h1:6ovsNSuvn9wEQVOyc72aycBMVQFKz7cPdMJn10CvzRI= -github.com/invopop/jsonschema v0.12.0/go.mod h1:ffZ5Km5SWWRAIN6wbDXItl95euhFz2uON45H2qjYt+0= +github.com/invopop/jsonschema v0.13.0 h1:KvpoAJWEjR3uD9Kbm2HWJmqsEaHt8lBUpd0qHcIi21E= +github.com/invopop/jsonschema v0.13.0/go.mod h1:ffZ5Km5SWWRAIN6wbDXItl95euhFz2uON45H2qjYt+0= github.com/invopop/yaml v0.3.1 h1:f0+ZpmhfBSS4MhG+4HYseMdJhoeeopbSKbq5Rpeelso= github.com/invopop/yaml v0.3.1/go.mod h1:PMOp3nn4/12yEZUFfmOuNHJsZToEEOwoWsT+D81KkeA= github.com/jhump/protoreflect v1.15.1 h1:HUMERORf3I3ZdX05WaQ6MIpd/NJ434hTp5YiKgfCL6c= diff --git a/pkg/registry/apis/provisioning/auth/identity.go b/pkg/registry/apis/provisioning/auth/identity.go index 2f16f916257..02dbd65518d 100644 --- a/pkg/registry/apis/provisioning/auth/identity.go +++ b/pkg/registry/apis/provisioning/auth/identity.go @@ -10,6 +10,7 @@ import ( "k8s.io/client-go/rest" "github.com/grafana/authlib/claims" + "github.com/grafana/grafana-app-sdk/logging" "github.com/grafana/grafana/pkg/apimachinery/identity" "github.com/grafana/grafana/pkg/services/accesscontrol" "github.com/grafana/grafana/pkg/services/apiserver" @@ -17,7 +18,6 @@ import ( "github.com/grafana/grafana/pkg/services/org" "github.com/grafana/grafana/pkg/services/serviceaccounts" "github.com/grafana/grafana/pkg/services/user" - "github.com/grafana/grafana/pkg/slogctx" ) type BackgroundIdentityService interface { @@ -155,7 +155,7 @@ func (o *backgroundIdentities) makeAdminUser(ctx context.Context, orgId int64) ( func (o *backgroundIdentities) verifyServiceAccount(ctx context.Context, orgId int64) (string, error) { serviceAccountName := fmt.Sprintf("%s-org-%d", o.serviceAccountNamePrefix, orgId) - logger := slogctx.From(ctx).With("account_name", serviceAccountName) + logger := logging.FromContext(ctx).With("account_name", serviceAccountName) saForm := serviceaccounts.CreateServiceAccountForm{ Name: serviceAccountName, Role: &o.role, @@ -167,7 +167,7 @@ func (o *backgroundIdentities) verifyServiceAccount(ctx context.Context, orgId i if accountAlreadyExists { accountId, err := o.serviceAccounts.RetrieveServiceAccountIdByName(ctx, orgId, serviceAccountName) if err != nil { - logger.ErrorContext(ctx, "Failed to retrieve service account", "err", err) + logger.Error("Failed to retrieve service account", "err", err) return "", err } // update org_role to make sure everything works properly if someone has changed the role since SA's original creation @@ -176,7 +176,7 @@ func (o *backgroundIdentities) verifyServiceAccount(ctx context.Context, orgId i Role: &o.role, }) if err != nil { - logger.ErrorContext(ctx, "Failed to update service account", "err", err) + logger.Error("Failed to update service account", "err", err) return "", err } @@ -187,7 +187,7 @@ func (o *backgroundIdentities) verifyServiceAccount(ctx context.Context, orgId i } } if serviceAccount == nil { - logger.ErrorContext(ctx, "Failed to retrieve service account", "err", err) + logger.Error("Failed to retrieve service account", "err", err) return "", err } diff --git a/pkg/registry/apis/provisioning/export.go b/pkg/registry/apis/provisioning/export.go index 3076a287149..1fa6f2954ce 100644 --- a/pkg/registry/apis/provisioning/export.go +++ b/pkg/registry/apis/provisioning/export.go @@ -10,9 +10,9 @@ import ( "k8s.io/apimachinery/pkg/runtime" "k8s.io/apiserver/pkg/registry/rest" + "github.com/grafana/grafana-app-sdk/logging" provisioning "github.com/grafana/grafana/pkg/apis/provisioning/v0alpha1" "github.com/grafana/grafana/pkg/registry/apis/provisioning/jobs" - "github.com/grafana/grafana/pkg/slogctx" ) type exportConnector struct { @@ -62,12 +62,13 @@ func (c *exportConnector) Connect( return nil, err } ns := repo.Config().GetNamespace() - logger := slogctx.From(ctx).With("logger", "export-connector", "repository", name, "namespace", ns) + logger := logging.FromContext(ctx).With("logger", "export-connector", "repository", name, "namespace", ns) // TODO: We need some way to filter what we export. return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - ctx := slogctx.To(r.Context(), logger) + logger := logger.WithContext(ctx) + ctx := logging.Context(r.Context(), logger) job, err := c.queue.Add(ctx, &provisioning.Job{ ObjectMeta: metav1.ObjectMeta{ @@ -87,7 +88,7 @@ func (c *exportConnector) Connect( responder.Error(apierrors.NewInternalError(fmt.Errorf("failed to create a job from request: %w", err))) } } else { - logger.InfoContext(ctx, "created an export job from request", + logger.Info("created an export job from request", "job", job.GetName(), "jobns", job.GetNamespace()) responder.Object(http.StatusOK, job) diff --git a/pkg/registry/apis/provisioning/files.go b/pkg/registry/apis/provisioning/files.go index d5dd4eb1fec..3d2fb9cf05b 100644 --- a/pkg/registry/apis/provisioning/files.go +++ b/pkg/registry/apis/provisioning/files.go @@ -14,10 +14,10 @@ import ( "k8s.io/apimachinery/pkg/runtime" "k8s.io/apiserver/pkg/registry/rest" + "github.com/grafana/grafana-app-sdk/logging" provisioning "github.com/grafana/grafana/pkg/apis/provisioning/v0alpha1" "github.com/grafana/grafana/pkg/registry/apis/provisioning/repository" "github.com/grafana/grafana/pkg/registry/apis/provisioning/resources" - "github.com/grafana/grafana/pkg/slogctx" ) type filesConnector struct { @@ -57,11 +57,11 @@ func (*filesConnector) NewConnectOptions() (runtime.Object, bool, string) { } func (s *filesConnector) Connect(ctx context.Context, name string, opts runtime.Object, responder rest.Responder) (http.Handler, error) { - logger := slogctx.From(ctx).With("logger", "files-connector", "repository_name", name) - ctx = slogctx.To(ctx, logger) + logger := logging.FromContext(ctx).With("logger", "files-connector", "repository_name", name) + ctx = logging.Context(ctx, logger) repo, err := s.getter.GetRepository(ctx, name) if err != nil { - logger.DebugContext(ctx, "failed to find repository", "error", err) + logger.Debug("failed to find repository", "error", err) return nil, err } @@ -70,12 +70,12 @@ func (s *filesConnector) Connect(ctx context.Context, name string, opts runtime. ref := query.Get("ref") message := query.Get("message") logger := logger.With("url", r.URL.Path, "ref", ref, "message", message) - ctx := slogctx.To(r.Context(), logger) + ctx := logging.Context(r.Context(), logger) prefix := fmt.Sprintf("/%s/files", name) idx := strings.Index(r.URL.Path, prefix) if idx == -1 { - logger.DebugContext(r.Context(), "failed to find a file path in the URL") + logger.Debug("failed to find a file path in the URL") responder.Error(apierrors.NewBadRequest("invalid request path")) return } @@ -112,7 +112,7 @@ func (s *filesConnector) Connect(ctx context.Context, name string, opts runtime. case ".json", ".yaml", ".yml": // ok default: - logger.DebugContext(ctx, "got a file extension that was not JSON or YAML", "extension", path.Ext(filePath)) + logger.Debug("got a file extension that was not JSON or YAML", "extension", path.Ext(filePath)) responder.Error(apierrors.NewBadRequest("only yaml and json files supported")) return } @@ -133,11 +133,11 @@ func (s *filesConnector) Connect(ctx context.Context, name string, opts runtime. } if err != nil { - logger.DebugContext(ctx, "got an error after processing request", "error", err) + logger.Debug("got an error after processing request", "error", err) responder.Error(err) return } - logger.DebugContext(ctx, "request resulted in valid object", "object", obj) + logger.Debug("request resulted in valid object", "object", obj) responder.Object(code, obj) }), nil } @@ -259,8 +259,8 @@ func (s *filesConnector) doDelete(ctx context.Context, repo repository.Repositor return nil, err } - logger := slogctx.From(ctx).With("path", path) - logger.InfoContext(ctx, "TODO! trigger sync for this file we just deleted...") + logger := logging.FromContext(ctx).With("path", path) + logger.Info("TODO! trigger sync for this file we just deleted...") return &provisioning.ResourceWrapper{ Path: path, diff --git a/pkg/registry/apis/provisioning/history.go b/pkg/registry/apis/provisioning/history.go index 94bd5cb5f34..7406a1ecb67 100644 --- a/pkg/registry/apis/provisioning/history.go +++ b/pkg/registry/apis/provisioning/history.go @@ -9,8 +9,8 @@ import ( "k8s.io/apimachinery/pkg/runtime" "k8s.io/apiserver/pkg/registry/rest" + "github.com/grafana/grafana-app-sdk/logging" provisioning "github.com/grafana/grafana/pkg/apis/provisioning/v0alpha1" - "github.com/grafana/grafana/pkg/slogctx" ) type historySubresource struct { @@ -49,11 +49,11 @@ func (h *historySubresource) NewConnectOptions() (runtime.Object, bool, string) } func (h *historySubresource) Connect(ctx context.Context, name string, opts runtime.Object, responder rest.Responder) (http.Handler, error) { - logger := slogctx.From(ctx).With("logger", "history-subresource") - ctx = slogctx.To(ctx, logger) + logger := logging.FromContext(ctx).With("logger", "history-subresource") + ctx = logging.Context(ctx, logger) repo, err := h.repoGetter.GetRepository(ctx, name) if err != nil { - logger.DebugContext(ctx, "failed to find repository", "error", err) + logger.Debug("failed to find repository", "error", err) return nil, err } @@ -69,11 +69,11 @@ func (h *historySubresource) Connect(ctx context.Context, name string, opts runt } logger := logger.With("ref", ref, "path", filePath) - ctx := slogctx.To(r.Context(), logger) + ctx := logging.Context(r.Context(), logger) commits, err := repo.History(ctx, filePath, ref) if err != nil { - logger.DebugContext(ctx, "failed to get history", "error", err) + logger.Debug("failed to get history", "error", err) responder.Error(err) return } diff --git a/pkg/registry/apis/provisioning/jobs/pullrequest.go b/pkg/registry/apis/provisioning/jobs/pullrequest.go index ac87f0d2633..a7e0e8babf0 100644 --- a/pkg/registry/apis/provisioning/jobs/pullrequest.go +++ b/pkg/registry/apis/provisioning/jobs/pullrequest.go @@ -9,10 +9,10 @@ import ( "net/url" "path" + "github.com/grafana/grafana-app-sdk/logging" provisioning "github.com/grafana/grafana/pkg/apis/provisioning/v0alpha1" "github.com/grafana/grafana/pkg/registry/apis/provisioning/repository" "github.com/grafana/grafana/pkg/registry/apis/provisioning/resources" - "github.com/grafana/grafana/pkg/slogctx" ) // resourcePreview represents a resource that has changed in a pull request. @@ -111,9 +111,9 @@ func (c *PullRequestCommenter) Process(ctx context.Context, job provisioning.Job return nil } - logger := slogctx.From(ctx).With("pr", job.Spec.PR) - logger.InfoContext(ctx, "process pull request") - defer logger.InfoContext(ctx, "pull request processed") + logger := logging.FromContext(ctx).With("pr", job.Spec.PR) + logger.Info("process pull request") + defer logger.Info("pull request processed") spec := job.Spec base := cfg.GitHub.Branch @@ -131,7 +131,7 @@ func (c *PullRequestCommenter) Process(ctx context.Context, job provisioning.Job } if len(files) == 0 { - logger.InfoContext(ctx, "no files to process") + logger.Info("no files to process") return nil } @@ -151,9 +151,9 @@ func (c *PullRequestCommenter) Process(ctx context.Context, job provisioning.Job parsed, err := c.parser.Parse(ctx, fileInfo, true) if err != nil { if errors.Is(err, resources.ErrUnableToReadResourceBytes) { - logger.DebugContext(ctx, "file is not a resource", "path", f.Path) + logger.Debug("file is not a resource", "path", f.Path) } else { - logger.ErrorContext(ctx, "failed to parse resource", "path", f.Path, "error", err) + logger.Error("failed to parse resource", "path", f.Path, "error", err) } continue } @@ -168,7 +168,7 @@ func (c *PullRequestCommenter) Process(ctx context.Context, job provisioning.Job return fmt.Errorf("comment pull request file %s: %w", f.Path, err) } - logger.InfoContext(ctx, "lint comment added") + logger.Info("lint comment added") } preview := resourcePreview{ @@ -200,7 +200,7 @@ func (c *PullRequestCommenter) Process(ctx context.Context, job provisioning.Job } preview.PreviewScreenshotURL = screenshotURL - logger.InfoContext(ctx, "dashboard preview added", "screenshotURL", screenshotURL) + logger.Info("dashboard preview added", "screenshotURL", screenshotURL) } previews = append(previews, preview) @@ -216,7 +216,7 @@ func (c *PullRequestCommenter) Process(ctx context.Context, job provisioning.Job return fmt.Errorf("comment pull request: %w", err) } - logger.InfoContext(ctx, "previews comment added", "number", len(previews)) + logger.Info("previews comment added", "number", len(previews)) } return nil diff --git a/pkg/registry/apis/provisioning/jobs/queue.go b/pkg/registry/apis/provisioning/jobs/queue.go index 5e223b45910..997d800a7bb 100644 --- a/pkg/registry/apis/provisioning/jobs/queue.go +++ b/pkg/registry/apis/provisioning/jobs/queue.go @@ -12,8 +12,8 @@ import ( "k8s.io/apimachinery/pkg/watch" "k8s.io/apiserver/pkg/storage" + "github.com/grafana/grafana-app-sdk/logging" provisioning "github.com/grafana/grafana/pkg/apis/provisioning/v0alpha1" - "github.com/grafana/grafana/pkg/slogctx" "github.com/grafana/grafana/pkg/util" ) @@ -103,8 +103,8 @@ func (s *jobStore) Add(ctx context.Context, job *provisioning.Job) (*provisionin // Reads the queue until no jobs remain func (s *jobStore) drainPending() { - logger := slogctx.From(context.Background()).With("logger", "job-store") - ctx := slogctx.To(context.Background(), logger) + logger := logging.DefaultLogger.With("logger", "job-store") + ctx := logging.Context(context.Background(), logger) var err error for { @@ -115,7 +115,7 @@ func (s *jobStore) drainPending() { return // done } logger := logger.With("job", job.GetName(), "namespace", job.GetNamespace()) - ctx := slogctx.To(ctx, logger) + ctx := logging.Context(ctx, logger) started := time.Now() var status *provisioning.JobStatus @@ -129,7 +129,7 @@ func (s *jobStore) drainPending() { } else { status, err = s.worker.Process(ctx, *job) if err != nil { - logger.ErrorContext(ctx, "error processing job", "error", err) + logger.Error("error processing job", "error", err) status = &provisioning.JobStatus{ State: provisioning.JobStateError, Errors: []string{err.Error()}, @@ -137,7 +137,7 @@ func (s *jobStore) drainPending() { } else if status.State == "" { status.State = provisioning.JobStateSuccess } - logger.DebugContext(ctx, "job processing finished", "status", status.State) + logger.Debug("job processing finished", "status", status.State) } status.Started = started.UnixMilli() @@ -145,9 +145,9 @@ func (s *jobStore) drainPending() { err = s.Complete(ctx, job.Namespace, job.Name, *status) if err != nil { - logger.ErrorContext(ctx, "error running job", "error", err) + logger.Error("error running job", "error", err) } - logger.DebugContext(ctx, "job has been fully completed") + logger.Debug("job has been fully completed") } } diff --git a/pkg/registry/apis/provisioning/jobs/worker.go b/pkg/registry/apis/provisioning/jobs/worker.go index 732324f030c..f2fefc1e540 100644 --- a/pkg/registry/apis/provisioning/jobs/worker.go +++ b/pkg/registry/apis/provisioning/jobs/worker.go @@ -9,6 +9,7 @@ import ( v1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apiserver/pkg/endpoints/request" + "github.com/grafana/grafana-app-sdk/logging" "github.com/grafana/grafana/pkg/apimachinery/identity" provisioning "github.com/grafana/grafana/pkg/apis/provisioning/v0alpha1" client "github.com/grafana/grafana/pkg/generated/clientset/versioned/typed/provisioning/v0alpha1" @@ -16,7 +17,6 @@ import ( "github.com/grafana/grafana/pkg/registry/apis/provisioning/repository" "github.com/grafana/grafana/pkg/registry/apis/provisioning/resources" "github.com/grafana/grafana/pkg/services/rendering" - "github.com/grafana/grafana/pkg/slogctx" "github.com/grafana/grafana/pkg/storage/unified/blob" ) @@ -57,8 +57,8 @@ func NewJobWorker( } func (g *JobWorker) Process(ctx context.Context, job provisioning.Job) (*provisioning.JobStatus, error) { - logger := slogctx.From(ctx).With("job", job.GetName(), "namespace", job.GetNamespace()) - ctx = slogctx.To(ctx, logger) + logger := logging.FromContext(ctx).With("job", job.GetName(), "namespace", job.GetNamespace()) + ctx = logging.Context(ctx, logger) id, err := g.identities.WorkerIdentity(ctx, job.Name) if err != nil { @@ -71,7 +71,7 @@ func (g *JobWorker) Process(ctx context.Context, job provisioning.Job) (*provisi return nil, fmt.Errorf("missing repository name in label") } logger = logger.With("repository", repoName) - ctx = slogctx.To(ctx, logger) + ctx = logging.Context(ctx, logger) repo, err := g.getter.GetRepository(ctx, repoName) if err != nil { diff --git a/pkg/registry/apis/provisioning/repository/github.go b/pkg/registry/apis/provisioning/repository/github.go index 98b5ef29316..1de3fb75b7e 100644 --- a/pkg/registry/apis/provisioning/repository/github.go +++ b/pkg/registry/apis/provisioning/repository/github.go @@ -15,9 +15,9 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/validation/field" + "github.com/grafana/grafana-app-sdk/logging" provisioning "github.com/grafana/grafana/pkg/apis/provisioning/v0alpha1" pgh "github.com/grafana/grafana/pkg/registry/apis/provisioning/repository/github" - "github.com/grafana/grafana/pkg/slogctx" ) var subscribedEvents = []string{"push", "pull_request"} @@ -194,7 +194,7 @@ func (r *githubRepository) ReadTree(ctx context.Context, ref string) ([]FileTree } } if truncated { - logger.WarnContext(ctx, "tree from github was truncated") + logger.Warn("tree from github was truncated") } entries := make([]FileTreeEntry, 0, len(tree)) @@ -390,7 +390,7 @@ func (r *githubRepository) ensureBranchExists(ctx context.Context, branchName st } if ok { - slogctx.From(ctx).InfoContext(ctx, "branch already exists", "branch", branchName) + logging.FromContext(ctx).Info("branch already exists", "branch", branchName) return nil } @@ -588,7 +588,7 @@ func (r *githubRepository) CompareFiles(ctx context.Context, base, ref string) ( case "unchanged": // do nothing default: - logger.ErrorContext(ctx, "ignore unhandled file", "file", f.GetFilename(), "status", f.GetStatus()) + logger.Error("ignore unhandled file", "file", f.GetFilename(), "status", f.GetStatus()) } } @@ -645,7 +645,7 @@ func (r *githubRepository) createWebhook(ctx context.Context) (pgh.WebhookConfig return pgh.WebhookConfig{}, err } - slogctx.From(ctx).InfoContext(ctx, "webhook created", "url", cfg.URL, "id", hook.ID) + logging.FromContext(ctx).Info("webhook created", "url", cfg.URL, "id", hook.ID) return hook, nil } @@ -725,7 +725,7 @@ func (r *githubRepository) deleteWebhook(ctx context.Context) error { return fmt.Errorf("delete webhook: %w", err) } - slogctx.From(ctx).InfoContext(ctx, "webhook deleted", "url", r.config.Status.Webhook.URL, "id", id) + logging.FromContext(ctx).Info("webhook deleted", "url", r.config.Status.Webhook.URL, "id", id) return nil } @@ -774,13 +774,13 @@ func (r *githubRepository) OnDelete(ctx context.Context) error { return r.deleteWebhook(ctx) } -func (r *githubRepository) logger(ctx context.Context, ref string) (context.Context, *slog.Logger) { - logger := slogctx.From(ctx) +func (r *githubRepository) logger(ctx context.Context, ref string) (context.Context, logging.Logger) { + logger := logging.FromContext(ctx) type containsGh int var containsGhKey containsGh if ctx.Value(containsGhKey) != nil { - return ctx, slogctx.From(ctx) + return ctx, logging.FromContext(ctx) } if ref == "" { @@ -789,7 +789,7 @@ func (r *githubRepository) logger(ctx context.Context, ref string) (context.Cont owner := r.config.Spec.GitHub.Owner repo := r.config.Spec.GitHub.Repository logger = logger.With(slog.Group("github_repository", "owner", owner, "name", repo, "ref", ref)) - ctx = slogctx.To(ctx, logger) + ctx = logging.Context(ctx, logger) // We want to ensure we don't add multiple github_repository keys. With doesn't deduplicate the keys... ctx = context.WithValue(ctx, containsGhKey, true) return ctx, logger diff --git a/pkg/registry/apis/provisioning/repository_controller.go b/pkg/registry/apis/provisioning/repository_controller.go index 206e46cb9b3..095c6d57a83 100644 --- a/pkg/registry/apis/provisioning/repository_controller.go +++ b/pkg/registry/apis/provisioning/repository_controller.go @@ -13,6 +13,7 @@ import ( "k8s.io/client-go/tools/cache" "k8s.io/client-go/util/workqueue" + "github.com/grafana/grafana-app-sdk/logging" "github.com/grafana/grafana/pkg/apimachinery/identity" provisioning "github.com/grafana/grafana/pkg/apis/provisioning/v0alpha1" client "github.com/grafana/grafana/pkg/generated/clientset/versioned/typed/provisioning/v0alpha1" @@ -21,7 +22,6 @@ import ( "github.com/grafana/grafana/pkg/registry/apis/provisioning/auth" "github.com/grafana/grafana/pkg/registry/apis/provisioning/jobs" "github.com/grafana/grafana/pkg/registry/apis/provisioning/repository" - "github.com/grafana/grafana/pkg/slogctx" ) const loggerName = "provisioning-repository-controller" @@ -118,23 +118,23 @@ func (rc *RepositoryController) Run(ctx context.Context, workerCount int) { defer utilruntime.HandleCrash() defer rc.queue.ShutDown() - logger := slogctx.From(ctx).With("logger", loggerName) - ctx = slogctx.To(ctx, logger) - logger.InfoContext(ctx, "Starting RepositoryController") - defer logger.InfoContext(ctx, "Shutting down RepositoryController") + logger := logging.FromContext(ctx).With("logger", loggerName) + ctx = logging.Context(ctx, logger) + logger.Info("Starting RepositoryController") + defer logger.Info("Shutting down RepositoryController") if !cache.WaitForCacheSync(ctx.Done(), rc.repoSynced) { return } - logger.InfoContext(ctx, "Starting workers", "count", workerCount) + logger.Info("Starting workers", "count", workerCount) for i := 0; i < workerCount; i++ { go wait.UntilWithContext(ctx, rc.runWorker, time.Second) } - logger.InfoContext(ctx, "Started workers") + logger.Info("Started workers") <-ctx.Done() - logger.InfoContext(ctx, "Shutting down workers") + logger.Info("Shutting down workers") } func (rc *RepositoryController) runWorker(ctx context.Context) { @@ -175,9 +175,8 @@ func (rc *RepositoryController) processNextWorkItem(ctx context.Context) bool { defer rc.queue.Done(item) // TODO: should we move tracking work to trace ids instead? - logger := slogctx.From(ctx).With("work_key", item.key) - ctx = slogctx.To(ctx, logger) // lets us track the work in child tasks, similar to a trace id - logger.InfoContext(ctx, "RepositoryController processing key") + logger := logging.FromContext(ctx).With("work_key", item.key) + logger.Info("RepositoryController processing key") err := rc.processFn(item) if err == nil { @@ -188,17 +187,17 @@ func (rc *RepositoryController) processNextWorkItem(ctx context.Context) bool { item.attempts++ logger = logger.With("error", err, "attempts", item.attempts) if item.attempts >= maxAttempts { - logger.ErrorContext(ctx, "RepositoryController failed too many times") + logger.Error("RepositoryController failed too many times") rc.queue.Forget(item) return true } if !apierrors.IsServiceUnavailable(err) { - logger.InfoContext(ctx, "RepositoryController will not retry") + logger.Info("RepositoryController will not retry") rc.queue.Forget(item) return true } else { - logger.InfoContext(ctx, "RepositoryController will retry as service is unavailable") + logger.Info("RepositoryController will retry as service is unavailable") } utilruntime.HandleError(fmt.Errorf("%v failed with: %v", item, err)) @@ -211,8 +210,8 @@ func (rc *RepositoryController) processNextWorkItem(ctx context.Context) bool { func (rc *RepositoryController) process(item *queueItem) error { ctx := context.Background() - logger := slogctx.From(ctx).With("logger", loggerName, "key", item.key) - ctx = slogctx.To(ctx, logger) + logger := logging.FromContext(ctx).With("logger", loggerName, "key", item.key) + ctx = logging.Context(ctx, logger) namespace, name, err := cache.SplitMetaNamespaceKey(item.key) if err != nil { @@ -220,7 +219,7 @@ func (rc *RepositoryController) process(item *queueItem) error { } if item.op == operationDelete { - logger.InfoContext(ctx, "handle repository deletion") + logger.Info("handle repository deletion") cfg, ok := item.obj.(*provisioning.Repository) if !ok { return errors.New("object is not a repository") @@ -252,7 +251,7 @@ func (rc *RepositoryController) process(item *queueItem) error { } ctx = identity.WithRequester(ctx, id) logger = logger.With("repository", cachedRepo.Name, "namespace", cachedRepo.Namespace) - ctx = slogctx.To(ctx, logger) + ctx = logging.Context(ctx, logger) repo, err := rc.repoGetter.AsRepository(ctx, cachedRepo) if err != nil { @@ -261,23 +260,23 @@ func (rc *RepositoryController) process(item *queueItem) error { hasSpecChanged := cachedRepo.Generation != cachedRepo.Status.ObservedGeneration if !hasSpecChanged { - logger.InfoContext(ctx, "repository spec unchanged") + logger.Info("repository spec unchanged") return nil } - logger.InfoContext(ctx, "repository spec changed", "previous", cachedRepo.Status.ObservedGeneration, "current", cachedRepo.Generation) + logger.Info("repository spec changed", "previous", cachedRepo.Status.ObservedGeneration, "current", cachedRepo.Generation) var status *provisioning.RepositoryStatus hooks, ok := repo.(repository.RepositoryHooks) if ok { if cachedRepo.Status.ObservedGeneration > 0 { - logger.InfoContext(ctx, "handle repository update") + logger.Info("handle repository update") status, err = hooks.OnUpdate(ctx) if err != nil { return fmt.Errorf("handle repository update: %w", err) } } else { - logger.InfoContext(ctx, "handle repository init") + logger.Info("handle repository init") status, err = hooks.OnCreate(ctx) if err != nil { return fmt.Errorf("handle repository create: %w", err) @@ -290,7 +289,7 @@ func (rc *RepositoryController) process(item *queueItem) error { status.ObservedGeneration = cachedRepo.Generation if time.Since(time.UnixMilli(cachedRepo.Status.Health.Checked)) < 200*time.Millisecond { - logger.InfoContext(ctx, "skipping health check as it was recently checked") + logger.Info("skipping health check as it was recently checked") } else { res, err := rc.tester.TestRepository(ctx, repo) if err != nil { @@ -304,7 +303,7 @@ func (rc *RepositoryController) process(item *queueItem) error { } if !res.Success { - logger.ErrorContext(ctx, "repository is unhealthy", "errors", res.Errors) + logger.Error("repository is unhealthy", "errors", res.Errors) } status.Health = provisioning.HealthStatus{ @@ -335,7 +334,7 @@ func (rc *RepositoryController) process(item *queueItem) error { if err != nil { return fmt.Errorf("trigger sync job: %w", err) } - logger.InfoContext(ctx, "sync job triggered", "job", job.Name) + logger.Info("sync job triggered", "job", job.Name) return nil } diff --git a/pkg/registry/apis/provisioning/resources/fileformat.go b/pkg/registry/apis/provisioning/resources/fileformat.go index 2282feace54..649fd2492c3 100644 --- a/pkg/registry/apis/provisioning/resources/fileformat.go +++ b/pkg/registry/apis/provisioning/resources/fileformat.go @@ -13,10 +13,10 @@ import ( "k8s.io/apimachinery/pkg/runtime/serializer/yaml" yamlutil "k8s.io/apimachinery/pkg/util/yaml" + "github.com/grafana/grafana-app-sdk/logging" dashboard "github.com/grafana/grafana/pkg/apis/dashboard/v1alpha1" provisioning "github.com/grafana/grafana/pkg/apis/provisioning/v0alpha1" "github.com/grafana/grafana/pkg/registry/apis/provisioning/repository" - "github.com/grafana/grafana/pkg/slogctx" ) var ErrUnableToReadResourceBytes = errors.New("unable to read bytes as a resource") @@ -46,7 +46,7 @@ func ReadClassicResource(ctx context.Context, info *repository.FileInfo) (*unstr return nil, nil, "", ErrClassicResourceIsAlreadyK8sForm } - slogctx.From(ctx).DebugContext(ctx, "TODO... likely a provisioning", + logging.FromContext(ctx).Debug("TODO... likely a provisioning", "apiVersion", value["apiVersion"], "kind", value["Kind"]) gv, err := schema.ParseGroupVersion(value["apiVersion"].(string)) diff --git a/pkg/registry/apis/provisioning/resources/parser.go b/pkg/registry/apis/provisioning/resources/parser.go index 97f504119ed..838545af99e 100644 --- a/pkg/registry/apis/provisioning/resources/parser.go +++ b/pkg/registry/apis/provisioning/resources/parser.go @@ -16,12 +16,12 @@ import ( "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/client-go/dynamic" + "github.com/grafana/grafana-app-sdk/logging" "github.com/grafana/grafana/pkg/apimachinery/apis/common/v0alpha1" "github.com/grafana/grafana/pkg/apimachinery/utils" provisioning "github.com/grafana/grafana/pkg/apis/provisioning/v0alpha1" "github.com/grafana/grafana/pkg/registry/apis/provisioning/lint" "github.com/grafana/grafana/pkg/registry/apis/provisioning/repository" - "github.com/grafana/grafana/pkg/slogctx" ) var ErrNamespaceMismatch = errors.New("the file namespace does not match target namespace") @@ -47,7 +47,7 @@ func (f *ParserFactory) GetParser(ctx context.Context, repo repository.Repositor linterFactory := lint.NewDashboardLinterFactory() cfg, err := repo.Read(ctx, linterFactory.ConfigPath(), "") - logger := slogctx.From(ctx) + logger := logging.FromContext(ctx) var linter lint.Linter switch { case err == nil: @@ -130,7 +130,7 @@ func (r *Parser) ShouldIgnore(p string) bool { } func (r *Parser) Parse(ctx context.Context, info *repository.FileInfo, validate bool) (parsed *ParsedResource, err error) { - logger := slogctx.From(ctx).With("path", info.Path, "validate", validate) + logger := logging.FromContext(ctx).With("path", info.Path, "validate", validate) parsed = &ParsedResource{ Info: info, } @@ -141,10 +141,10 @@ func (r *Parser) Parse(ctx context.Context, info *repository.FileInfo, validate parsed.Obj, parsed.GVK, err = LoadYAMLOrJSON(bytes.NewBuffer(info.Data)) if err != nil { - logger.DebugContext(ctx, "failed to find GVK of the input data", "error", err) + logger.Debug("failed to find GVK of the input data", "error", err) parsed.Obj, parsed.GVK, parsed.Classic, err = ReadClassicResource(ctx, info) if err != nil { - logger.DebugContext(ctx, "also failed to get GVK from fallback loader?", "error", err) + logger.Debug("also failed to get GVK from fallback loader?", "error", err) return parsed, err } } diff --git a/pkg/registry/apis/provisioning/resources/replicator.go b/pkg/registry/apis/provisioning/resources/replicator.go index 020df151639..fdd56750d2b 100644 --- a/pkg/registry/apis/provisioning/resources/replicator.go +++ b/pkg/registry/apis/provisioning/resources/replicator.go @@ -5,7 +5,6 @@ import ( "encoding/json" "errors" "fmt" - "log/slog" "path" "path/filepath" "strings" @@ -18,10 +17,10 @@ import ( "k8s.io/apimachinery/pkg/types" "k8s.io/client-go/dynamic" + "github.com/grafana/grafana-app-sdk/logging" apiutils "github.com/grafana/grafana/pkg/apimachinery/utils" provisioning "github.com/grafana/grafana/pkg/apis/provisioning/v0alpha1" "github.com/grafana/grafana/pkg/registry/apis/provisioning/repository" - "github.com/grafana/grafana/pkg/slogctx" ) type Replicator struct { @@ -61,11 +60,11 @@ func (r *Replicator) Sync(ctx context.Context) (string, error) { return "", fmt.Errorf("ensure repository folder exists: %w", err) } - logger := slogctx.From(ctx) + logger := logging.FromContext(ctx) var latest string switch { case !isVersioned: - logger.InfoContext(ctx, "replicate tree unversioned repository") + logger.Info("replicate tree unversioned repository") if err := r.replicateTree(ctx, ""); err != nil { return "", fmt.Errorf("replicate tree: %w", err) } @@ -78,7 +77,7 @@ func (r *Replicator) Sync(ctx context.Context) (string, error) { if err := r.replicateTree(ctx, latest); err != nil { return latest, fmt.Errorf("replicate tree: %w", err) } - logger.InfoContext(ctx, "initial replication for versioned repository", "latest", latest) + logger.Info("initial replication for versioned repository", "latest", latest) default: var err error latest, err = versionedRepo.LatestRef(ctx) @@ -86,7 +85,7 @@ func (r *Replicator) Sync(ctx context.Context) (string, error) { return "", fmt.Errorf("latest ref: %w", err) } - logger.InfoContext(ctx, "replicate changes for versioned repository", "last_commit", lastCommit, "latest", latest) + logger.Info("replicate changes for versioned repository", "last_commit", lastCommit, "latest", latest) changes, err := versionedRepo.CompareFiles(ctx, lastCommit, latest) if err != nil { return latest, fmt.Errorf("compare files: %w", err) @@ -108,14 +107,14 @@ func (r *Replicator) replicateTree(ctx context.Context, ref string) error { } for _, entry := range tree { - logger := slogctx.From(ctx).With("file", entry.Path) + logger := logging.FromContext(ctx).With("file", entry.Path) if !entry.Blob { - logger.DebugContext(ctx, "ignoring non-blob entry") + logger.Debug("ignoring non-blob entry") continue } if r.parser.ShouldIgnore(entry.Path) { - logger.DebugContext(ctx, "ignoring file") + logger.Debug("ignoring file") continue } @@ -130,7 +129,7 @@ func (r *Replicator) replicateTree(ctx context.Context, ref string) error { if err := r.replicateFile(ctx, info); err != nil { if errors.Is(err, ErrUnableToReadResourceBytes) { - logger.InfoContext(ctx, "file does not contain a resource") + logger.Info("file does not contain a resource") continue } return fmt.Errorf("replicate file: %w", err) @@ -143,7 +142,7 @@ func (r *Replicator) replicateTree(ctx context.Context, ref string) error { // replicateFile creates a new resource in the cluster. // If the resource already exists, it will be updated. func (r *Replicator) replicateFile(ctx context.Context, fileInfo *repository.FileInfo) error { - logger := slogctx.From(ctx).With("file", fileInfo.Path, "ref", fileInfo.Ref) + logger := logging.FromContext(ctx).With("file", fileInfo.Path, "ref", fileInfo.Ref) file, err := r.parseResource(ctx, fileInfo) if err != nil { return err @@ -174,19 +173,19 @@ func (r *Replicator) replicateFile(ctx context.Context, fileInfo *repository.Fil // Just in case no uid is present on the metadata for some reason. logger := logger.With("previous_uid", file.Meta.GetUID(), "previous_resource_version", existingMeta.GetResourceVersion()) if uid, ok, _ := unstructured.NestedString(file.Existing.Object, "spec", "uid"); ok { - logger.DebugContext(ctx, "updating file's UID with spec.uid", "uid", uid) + logger.Debug("updating file's UID with spec.uid", "uid", uid) file.Meta.SetUID(types.UID(uid)) } if uid := existingMeta.GetUID(); uid != "" { - logger.DebugContext(ctx, "updating file's UID with existing meta uid", "uid", uid) + logger.Debug("updating file's UID with existing meta uid", "uid", uid) file.Meta.SetUID(uid) } if rev := existingMeta.GetResourceVersion(); rev != "" { - logger.DebugContext(ctx, "updating file's UID with existing resource version", "version", rev) + logger.Debug("updating file's UID with existing resource version", "version", rev) file.Meta.SetResourceVersion(rev) } if gen := existingMeta.GetGeneration(); gen != 0 { - logger.DebugContext(ctx, "updating file's UID with existing generation + 1", "generation", gen, "new_generation", gen+1) + logger.Debug("updating file's UID with existing generation + 1", "generation", gen, "new_generation", gen+1) file.Meta.SetGeneration(gen + 1) } @@ -195,11 +194,11 @@ func (r *Replicator) replicateFile(ctx context.Context, fileInfo *repository.Fil return fmt.Errorf("failed to update object: %w", err) } } else { - logger.ErrorContext(ctx, "bug in Grafana: the file's action is unhandled") + logger.Error("bug in Grafana: the file's action is unhandled") return fmt.Errorf("bug in Grafana: got a file.Action of '%s', which is not defined to be handled", file.Action) } - logger.InfoContext(ctx, "Replicated file") + logger.Info("Replicated file") return nil } @@ -211,7 +210,7 @@ func (r *Replicator) createFolderPath(ctx context.Context, filePath string) (str return parent, nil } - logger := slogctx.From(ctx).With("file", filePath) + logger := logging.FromContext(ctx).With("file", filePath) for _, folder := range strings.Split(dir, "/") { if folder == "" { // Trailing / leading slash? @@ -222,7 +221,7 @@ func (r *Replicator) createFolderPath(ctx context.Context, filePath string) (str obj, err := r.folders.Get(ctx, folder, metav1.GetOptions{}) // FIXME: Check for IsNotFound properly if obj != nil || err == nil { - logger.DebugContext(ctx, "folder already existed") + logger.Debug("folder already existed") parent = folder continue } @@ -247,7 +246,7 @@ func (r *Replicator) createFolderPath(ctx context.Context, filePath string) (str } parent = folder - logger.InfoContext(ctx, "folder created") + logger.Info("folder created") } return parent, nil @@ -335,7 +334,7 @@ func (r *Replicator) parseResource(ctx context.Context, fileInfo *repository.Fil } func (r *Replicator) Export(ctx context.Context) error { - logger := slogctx.From(ctx) + logger := logging.FromContext(ctx) dashboardIface := r.client.Resource(schema.GroupVersionResource{ Group: "dashboard.grafana.app", Version: "v2alpha1", @@ -356,7 +355,7 @@ func (r *Replicator) Export(ctx context.Context) error { for _, item := range dashboardList.Items { if ctx.Err() != nil { - logger.DebugContext(ctx, "cancelling replication process due to ctx error", "error", err) + logger.Debug("cancelling replication process due to ctx error", "error", err) return ctx.Err() } @@ -364,14 +363,14 @@ func (r *Replicator) Export(ctx context.Context) error { logger := logger.With("item", name) ns := r.repository.Config().GetNamespace() if item.GetNamespace() != ns { - logger.DebugContext(ctx, "skipping dashboard item due to mismatching namespace", "got", ns) + logger.Debug("skipping dashboard item due to mismatching namespace", "got", ns) continue } folder := item.GetAnnotations()[apiutils.AnnoKeyFolder] logger = logger.With("folder", folder) if !folders.In(folder) { - logger.DebugContext(ctx, "folder of item was not in tree of repository") + logger.Debug("folder of item was not in tree of repository") continue } @@ -382,10 +381,6 @@ func (r *Replicator) Export(ctx context.Context) error { } fileName := filepath.Join(folders.DirPath(folder), baseFileName) logger = logger.With("file", fileName) - if logger.Enabled(ctx, slog.LevelDebug) { - bodyStr := string(marshalledBody) - logger.DebugContext(ctx, "got marshalled body for item", "body", bodyStr) - } var ref string if r.repository.Config().Spec.Type == provisioning.GitHubRepositoryType { @@ -395,7 +390,7 @@ func (r *Replicator) Export(ctx context.Context) error { _, err = r.repository.Read(ctx, fileName, ref) if err != nil && !(errors.Is(err, repository.ErrFileNotFound) || apierrors.IsNotFound(err)) { - logger.ErrorContext(ctx, "failed to check if file exists before writing", "error", err) + logger.Error("failed to check if file exists before writing", "error", err) return fmt.Errorf("failed to check if file exists before writing: %w", err) } else if err != nil { // ErrFileNotFound err = r.repository.Create(ctx, fileName, ref, marshalledBody, "export of dashboard "+name+" in namespace "+ns) @@ -403,10 +398,10 @@ func (r *Replicator) Export(ctx context.Context) error { err = r.repository.Update(ctx, fileName, ref, marshalledBody, "export of dashboard "+name+" in namespace "+ns) } if err != nil { - logger.ErrorContext(ctx, "failed to write a file in repository", "error", err) + logger.Error("failed to write a file in repository", "error", err) return fmt.Errorf("failed to write file in repo: %w", err) } - logger.DebugContext(ctx, "successfully exported item") + logger.Debug("successfully exported item") } return nil diff --git a/pkg/registry/apis/provisioning/webhook.go b/pkg/registry/apis/provisioning/webhook.go index b9a27064fb0..e4697f0aee0 100644 --- a/pkg/registry/apis/provisioning/webhook.go +++ b/pkg/registry/apis/provisioning/webhook.go @@ -10,11 +10,11 @@ import ( "k8s.io/apiserver/pkg/endpoints/request" "k8s.io/apiserver/pkg/registry/rest" + "github.com/grafana/grafana-app-sdk/logging" "github.com/grafana/grafana/pkg/apimachinery/identity" provisioning "github.com/grafana/grafana/pkg/apis/provisioning/v0alpha1" "github.com/grafana/grafana/pkg/registry/apis/provisioning/auth" "github.com/grafana/grafana/pkg/registry/apis/provisioning/jobs" - "github.com/grafana/grafana/pkg/slogctx" ) // This only works for github right now @@ -63,8 +63,8 @@ func (s *webhookConnector) Connect(ctx context.Context, name string, opts runtim } return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - logger := slogctx.From(r.Context()).With("logger", "webhook-connector", "repo", name) - ctx := slogctx.To(r.Context(), logger) + logger := logging.FromContext(r.Context()).With("logger", "webhook-connector", "repo", name) + ctx := logging.Context(r.Context(), logger) rsp, err := repo.Webhook(ctx, r) if err != nil { diff --git a/pkg/slogctx/slogctx.go b/pkg/slogctx/slogctx.go deleted file mode 100644 index e2a72e72b1b..00000000000 --- a/pkg/slogctx/slogctx.go +++ /dev/null @@ -1,30 +0,0 @@ -// Slogctx defines contextual slog utilities, that allow for tying a slog logger with each context. -// The package only defines the context-related actions. To add more data to the logger itself, call the `log/slog` functions directly, e.g. With or WithGroup. -package slogctx - -import ( - "context" - "log/slog" -) - -// key is defined to be a separate type for Context. This is recommended practice, per Context.Value. -type key int - -// The loggerKey is the default key in the context. It is a separate type from any other, so no value is necessary. This is recommended practice, per Context.Value. -var loggerKey key - -// FromContext fetches the logger from the context, or constructs a new one from slog.Default. -// To include more values, you may want to call `With` or `WithGroup` directly afterwards. -func From(ctx context.Context) *slog.Logger { - logger, ok := ctx.Value(loggerKey).(*slog.Logger) - if !ok { - return slog.Default() - } - return logger -} - -// ToContext writes the logger to a new context wrapping the context given. -// The new context will include all other values, cancellations, etc. as the one given. -func To(ctx context.Context, logger *slog.Logger) context.Context { - return context.WithValue(ctx, loggerKey, logger) -} diff --git a/scripts/drone/variables.star b/scripts/drone/variables.star index bd9536ee040..ec9e803a101 100644 --- a/scripts/drone/variables.star +++ b/scripts/drone/variables.star @@ -3,7 +3,7 @@ global variables """ grabpl_version = "v3.1.1" -golang_version = "1.23.1" +golang_version = "1.23.4" # nodejs_version should match what's in ".nvmrc", but without the v prefix. nodejs_version = "22.11.0"