Tracing: Various improvements (#88308)
This commit is contained in:
@@ -6,6 +6,7 @@ import (
|
||||
"github.com/stretchr/testify/require"
|
||||
"gopkg.in/ini.v1"
|
||||
|
||||
"github.com/grafana/grafana/pkg/infra/tracing"
|
||||
"github.com/grafana/grafana/pkg/infra/usagestats"
|
||||
encryptionprovider "github.com/grafana/grafana/pkg/services/encryption/provider"
|
||||
encryptionservice "github.com/grafana/grafana/pkg/services/encryption/service"
|
||||
@@ -40,10 +41,11 @@ func setupTestService(tb testing.TB, store secrets.Store, features featuremgmt.F
|
||||
encProvider := encryptionprovider.Provider{}
|
||||
usageStats := &usagestats.UsageStatsMock{}
|
||||
|
||||
encryption, err := encryptionservice.ProvideEncryptionService(encProvider, usageStats, cfg)
|
||||
encryption, err := encryptionservice.ProvideEncryptionService(tracing.InitializeTracerForTest(), encProvider, usageStats, cfg)
|
||||
require.NoError(tb, err)
|
||||
|
||||
secretsService, err := ProvideSecretsService(
|
||||
tracing.InitializeTracerForTest(),
|
||||
store,
|
||||
osskmsproviders.ProvideService(encryption, cfg, features),
|
||||
encryption,
|
||||
|
||||
@@ -15,6 +15,7 @@ import (
|
||||
"golang.org/x/sync/errgroup"
|
||||
|
||||
"github.com/grafana/grafana/pkg/infra/log"
|
||||
"github.com/grafana/grafana/pkg/infra/tracing"
|
||||
"github.com/grafana/grafana/pkg/infra/usagestats"
|
||||
"github.com/grafana/grafana/pkg/services/encryption"
|
||||
"github.com/grafana/grafana/pkg/services/featuremgmt"
|
||||
@@ -35,6 +36,7 @@ var (
|
||||
)
|
||||
|
||||
type SecretsService struct {
|
||||
tracer tracing.Tracer
|
||||
store secrets.Store
|
||||
enc encryption.Internal
|
||||
cfg *setting.Cfg
|
||||
@@ -54,6 +56,7 @@ type SecretsService struct {
|
||||
}
|
||||
|
||||
func ProvideSecretsService(
|
||||
tracer tracing.Tracer,
|
||||
store secrets.Store,
|
||||
kmsProvidersService kmsproviders.Service,
|
||||
enc encryption.Internal,
|
||||
@@ -68,6 +71,7 @@ func ProvideSecretsService(
|
||||
))
|
||||
|
||||
s := &SecretsService{
|
||||
tracer: tracer,
|
||||
store: store,
|
||||
enc: enc,
|
||||
cfg: cfg,
|
||||
@@ -158,6 +162,9 @@ func (s *SecretsService) encryptedWithEnvelopeEncryption(payload []byte) bool {
|
||||
var b64 = base64.RawStdEncoding
|
||||
|
||||
func (s *SecretsService) Encrypt(ctx context.Context, payload []byte, opt secrets.EncryptionOptions) ([]byte, error) {
|
||||
ctx, span := s.tracer.Start(ctx, "secretsService.Encrypt")
|
||||
defer span.End()
|
||||
|
||||
// Use legacy encryption service if featuremgmt.FlagDisableEnvelopeEncryption toggle is on
|
||||
if s.features.IsEnabled(ctx, featuremgmt.FlagDisableEnvelopeEncryption) {
|
||||
return s.enc.Encrypt(ctx, payload, s.cfg.SecretKey)
|
||||
@@ -313,6 +320,9 @@ func newRandomDataKey() ([]byte, error) {
|
||||
}
|
||||
|
||||
func (s *SecretsService) Decrypt(ctx context.Context, payload []byte) ([]byte, error) {
|
||||
ctx, span := s.tracer.Start(ctx, "secretsService.Decrypt")
|
||||
defer span.End()
|
||||
|
||||
var err error
|
||||
defer func() {
|
||||
opsCounter.With(prometheus.Labels{
|
||||
|
||||
@@ -11,6 +11,7 @@ import (
|
||||
"gopkg.in/ini.v1"
|
||||
|
||||
"github.com/grafana/grafana/pkg/infra/db"
|
||||
"github.com/grafana/grafana/pkg/infra/tracing"
|
||||
"github.com/grafana/grafana/pkg/infra/usagestats"
|
||||
encryptionprovider "github.com/grafana/grafana/pkg/services/encryption/provider"
|
||||
encryptionservice "github.com/grafana/grafana/pkg/services/encryption/service"
|
||||
@@ -192,7 +193,7 @@ func TestSecretsService_UseCurrentProvider(t *testing.T) {
|
||||
encProvider := encryptionprovider.Provider{}
|
||||
usageStats := &usagestats.UsageStatsMock{}
|
||||
|
||||
encryptionService, err := encryptionservice.ProvideEncryptionService(encProvider, usageStats, cfg)
|
||||
encryptionService, err := encryptionservice.ProvideEncryptionService(tracing.InitializeTracerForTest(), encProvider, usageStats, cfg)
|
||||
require.NoError(t, err)
|
||||
|
||||
features := featuremgmt.WithFeatures()
|
||||
@@ -201,6 +202,7 @@ func TestSecretsService_UseCurrentProvider(t *testing.T) {
|
||||
secretStore := database.ProvideSecretsStore(testDB)
|
||||
|
||||
secretsService, err := ProvideSecretsService(
|
||||
tracing.InitializeTracerForTest(),
|
||||
secretStore,
|
||||
&kms,
|
||||
encryptionService,
|
||||
@@ -219,6 +221,7 @@ func TestSecretsService_UseCurrentProvider(t *testing.T) {
|
||||
// secret service tries to find a DEK in a cache first before calling provider's decrypt
|
||||
// to bypass the cache, we set up one more secrets service to test decrypting
|
||||
svcDecrypt, err := ProvideSecretsService(
|
||||
tracing.InitializeTracerForTest(),
|
||||
secretStore,
|
||||
&kms,
|
||||
encryptionService,
|
||||
|
||||
Reference in New Issue
Block a user