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
This commit is contained in:
Mariell Hoversholm authored and GitHub committed 2025-01-13 09:19:21 +01:00
1 parent e2eeba7bb4
commit 920e76cc52
36 files changed
+315 -302

No files matched your search

+105 -105
View File
@@ -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
...
-1
View File
@@ -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
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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)
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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=
+6 -3
View File
@@ -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
+18 -4
View File
@@ -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=
+6 -3
View File
@@ -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
+18 -4
View File
@@ -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=
+6 -4
View File
@@ -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
+8 -6
View File
@@ -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=
+1 -1
View File
@@ -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.
+9
View File
@@ -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=
+1 -2
View File
@@ -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
+2 -2
View File
@@ -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=
+1 -1
View File
@@ -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
+2 -2
View File
@@ -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=
+3
View File
@@ -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
+1 -1
View File
@@ -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
+2 -2
View File
@@ -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=
@@ -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
}
+5 -4
View File
@@ -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)
+11 -11
View File
@@ -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,
+6 -6
View File
@@ -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
}
@@ -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
+8 -8
View File
@@ -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")
}
}
@@ -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 {
@@ -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
@@ -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
}
@@ -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))
@@ -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
}
}
@@ -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
+3 -3
View File
@@ -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 {
-30
View File
@@ -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)
}
+1 -1
View File
@@ -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"