Storage: Avoid relying on RequestInfo (#89635)
This commit is contained in:
@@ -8,6 +8,7 @@ import (
|
||||
"github.com/google/uuid"
|
||||
|
||||
folder "github.com/grafana/grafana/pkg/apis/folder/v0alpha1"
|
||||
grafanaregistry "github.com/grafana/grafana/pkg/apiserver/registry/generic"
|
||||
"github.com/grafana/grafana/pkg/services/store/entity"
|
||||
"github.com/grafana/grafana/pkg/services/store/entity/db"
|
||||
"github.com/grafana/grafana/pkg/services/store/entity/sqlstash/sqltemplate"
|
||||
@@ -21,7 +22,7 @@ func (s *sqlEntityServer) Create(ctx context.Context, r *entity.CreateEntityRequ
|
||||
return nil, err
|
||||
}
|
||||
|
||||
key, err := entity.ParseKey(r.Entity.Key)
|
||||
key, err := grafanaregistry.ParseKey(r.Entity.Key)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("create entity: parse entity key: %w", err)
|
||||
}
|
||||
@@ -98,7 +99,7 @@ func (s *sqlEntityServer) Create(ctx context.Context, r *entity.CreateEntityRequ
|
||||
|
||||
// entityForCreate validates the given request and returns a *returnsEntity
|
||||
// populated accordingly.
|
||||
func entityForCreate(ctx context.Context, r *entity.CreateEntityRequest, key *entity.Key) (*returnsEntity, error) {
|
||||
func entityForCreate(ctx context.Context, r *entity.CreateEntityRequest, key *grafanaregistry.Key) (*returnsEntity, error) {
|
||||
newEntity := &returnsEntity{
|
||||
Entity: cloneEntity(r.Entity),
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ import (
|
||||
"time"
|
||||
|
||||
folder "github.com/grafana/grafana/pkg/apis/folder/v0alpha1"
|
||||
grafanaregistry "github.com/grafana/grafana/pkg/apiserver/registry/generic"
|
||||
"github.com/grafana/grafana/pkg/services/store/entity"
|
||||
"github.com/grafana/grafana/pkg/services/store/entity/db"
|
||||
"github.com/grafana/grafana/pkg/services/store/entity/sqlstash/sqltemplate"
|
||||
@@ -20,7 +21,7 @@ func (s *sqlEntityServer) Delete(ctx context.Context, r *entity.DeleteEntityRequ
|
||||
return nil, err
|
||||
}
|
||||
|
||||
key, err := entity.ParseKey(r.Key)
|
||||
key, err := grafanaregistry.ParseKey(r.Key)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("delete entity: parse entity key: %w", err)
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@ import (
|
||||
|
||||
"google.golang.org/protobuf/proto"
|
||||
|
||||
grafanaregistry "github.com/grafana/grafana/pkg/apiserver/registry/generic"
|
||||
"github.com/grafana/grafana/pkg/services/store/entity"
|
||||
"github.com/grafana/grafana/pkg/services/store/entity/db"
|
||||
"github.com/grafana/grafana/pkg/services/store/entity/sqlstash/sqltemplate"
|
||||
@@ -218,7 +219,7 @@ func (r sqlEntityListFolderElementsRequest) Validate() error {
|
||||
// cases and proper database deserialization.
|
||||
type sqlEntityReadRequest struct {
|
||||
*sqltemplate.SQLTemplate
|
||||
Key *entity.Key
|
||||
Key *grafanaregistry.Key
|
||||
ResourceVersion int64
|
||||
SelectForUpdate bool
|
||||
returnsEntitySet
|
||||
@@ -230,7 +231,7 @@ func (r sqlEntityReadRequest) Validate() error {
|
||||
|
||||
type sqlEntityDeleteRequest struct {
|
||||
*sqltemplate.SQLTemplate
|
||||
Key *entity.Key
|
||||
Key *grafanaregistry.Key
|
||||
}
|
||||
|
||||
func (r sqlEntityDeleteRequest) Validate() error {
|
||||
@@ -479,7 +480,7 @@ func readEntity(
|
||||
ctx context.Context,
|
||||
x db.ContextExecer,
|
||||
d sqltemplate.Dialect,
|
||||
k *entity.Key,
|
||||
k *grafanaregistry.Key,
|
||||
asOfVersion int64,
|
||||
optimisticLocking bool,
|
||||
selectForUpdate bool,
|
||||
|
||||
@@ -13,6 +13,7 @@ import (
|
||||
sqlmock "github.com/DATA-DOG/go-sqlmock"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
grafanaregistry "github.com/grafana/grafana/pkg/apiserver/registry/generic"
|
||||
"github.com/grafana/grafana/pkg/services/store/entity"
|
||||
"github.com/grafana/grafana/pkg/services/store/entity/db"
|
||||
"github.com/grafana/grafana/pkg/services/store/entity/sqlstash/sqltemplate"
|
||||
@@ -107,7 +108,7 @@ func TestQueries(t *testing.T) {
|
||||
Name: "single path",
|
||||
Data: &sqlEntityDeleteRequest{
|
||||
SQLTemplate: new(sqltemplate.SQLTemplate),
|
||||
Key: new(entity.Key),
|
||||
Key: new(grafanaregistry.Key),
|
||||
},
|
||||
Expected: expected{
|
||||
"entity_delete_mysql_sqlite.sql": dialects{
|
||||
@@ -173,7 +174,7 @@ func TestQueries(t *testing.T) {
|
||||
Name: "with resource version and select for update",
|
||||
Data: &sqlEntityReadRequest{
|
||||
SQLTemplate: new(sqltemplate.SQLTemplate),
|
||||
Key: new(entity.Key),
|
||||
Key: new(grafanaregistry.Key),
|
||||
ResourceVersion: 1,
|
||||
SelectForUpdate: true,
|
||||
returnsEntitySet: returnsEntitySet{
|
||||
@@ -190,7 +191,7 @@ func TestQueries(t *testing.T) {
|
||||
Name: "without resource version and select for update",
|
||||
Data: &sqlEntityReadRequest{
|
||||
SQLTemplate: new(sqltemplate.SQLTemplate),
|
||||
Key: new(entity.Key),
|
||||
Key: new(grafanaregistry.Key),
|
||||
returnsEntitySet: returnsEntitySet{
|
||||
Entity: newReturnsEntity(),
|
||||
},
|
||||
@@ -547,7 +548,7 @@ func TestReadEntity(t *testing.T) {
|
||||
// readonly, shared data for all subtests
|
||||
expectedEntity := newEmptyEntity()
|
||||
testdataJSON(t, `grpc-res-entity.json`, expectedEntity)
|
||||
key, err := entity.ParseKey(expectedEntity.Key)
|
||||
key, err := grafanaregistry.ParseKey(expectedEntity.Key)
|
||||
require.NoErrorf(t, err, "provided key: %#v", expectedEntity)
|
||||
|
||||
t.Run("happy path - entity table, optimistic locking", func(t *testing.T) {
|
||||
@@ -567,7 +568,7 @@ func TestReadEntity(t *testing.T) {
|
||||
db, mock := newMockDBMatchWords(t)
|
||||
readReq := sqlEntityReadRequest{ // used to generate mock results
|
||||
SQLTemplate: sqltemplate.New(sqltemplate.MySQL),
|
||||
Key: new(entity.Key),
|
||||
Key: new(grafanaregistry.Key),
|
||||
returnsEntitySet: newReturnsEntitySet(),
|
||||
}
|
||||
readReq.Entity.Entity = cloneEntity(expectedEntity)
|
||||
@@ -592,7 +593,7 @@ func TestReadEntity(t *testing.T) {
|
||||
db, mock := newMockDBMatchWords(t)
|
||||
readReq := sqlEntityReadRequest{ // used to generate mock results
|
||||
SQLTemplate: sqltemplate.New(sqltemplate.MySQL),
|
||||
Key: new(entity.Key),
|
||||
Key: new(grafanaregistry.Key),
|
||||
returnsEntitySet: newReturnsEntitySet(),
|
||||
}
|
||||
readReq.Entity.Entity = cloneEntity(expectedEntity)
|
||||
@@ -627,7 +628,7 @@ func TestReadEntity(t *testing.T) {
|
||||
db, mock := newMockDBMatchWords(t)
|
||||
readReq := sqlEntityReadRequest{ // used to generate mock results
|
||||
SQLTemplate: sqltemplate.New(sqltemplate.MySQL),
|
||||
Key: new(entity.Key),
|
||||
Key: new(grafanaregistry.Key),
|
||||
returnsEntitySet: newReturnsEntitySet(),
|
||||
}
|
||||
results := newMockResults(t, mock, sqlEntityRead, readReq)
|
||||
@@ -652,7 +653,7 @@ func TestReadEntity(t *testing.T) {
|
||||
db, mock := newMockDBMatchWords(t)
|
||||
readReq := sqlEntityReadRequest{ // used to generate mock results
|
||||
SQLTemplate: sqltemplate.New(sqltemplate.MySQL),
|
||||
Key: new(entity.Key),
|
||||
Key: new(grafanaregistry.Key),
|
||||
returnsEntitySet: newReturnsEntitySet(),
|
||||
}
|
||||
readReq.Entity.Entity = cloneEntity(expectedEntity)
|
||||
@@ -684,7 +685,7 @@ func expectReadEntity(t *testing.T, mock sqlmock.Sqlmock, e *entity.Entity) func
|
||||
// test declarations
|
||||
readReq := sqlEntityReadRequest{ // used to generate mock results
|
||||
SQLTemplate: sqltemplate.New(sqltemplate.MySQL),
|
||||
Key: new(entity.Key),
|
||||
Key: new(grafanaregistry.Key),
|
||||
returnsEntitySet: newReturnsEntitySet(),
|
||||
}
|
||||
results := newMockResults(t, mock, sqlEntityRead, readReq)
|
||||
|
||||
@@ -18,6 +18,7 @@ import (
|
||||
"go.opentelemetry.io/otel/trace"
|
||||
|
||||
"github.com/grafana/grafana/pkg/apimachinery/identity"
|
||||
grafanaregistry "github.com/grafana/grafana/pkg/apiserver/registry/generic"
|
||||
"github.com/grafana/grafana/pkg/infra/log"
|
||||
"github.com/grafana/grafana/pkg/infra/tracing"
|
||||
"github.com/grafana/grafana/pkg/services/sqlstore/migrator"
|
||||
@@ -302,7 +303,7 @@ func (s *sqlEntityServer) read(ctx context.Context, tx session.SessionQuerier, r
|
||||
return nil, fmt.Errorf("missing key")
|
||||
}
|
||||
|
||||
key, err := entity.ParseKey(r.Key)
|
||||
key, err := grafanaregistry.ParseKey(r.Key)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -395,7 +396,7 @@ func (s *sqlEntityServer) history(ctx context.Context, r *entity.EntityHistoryRe
|
||||
entityQuery.AddFields(fields...)
|
||||
|
||||
if r.Key != "" {
|
||||
key, err := entity.ParseKey(r.Key)
|
||||
key, err := grafanaregistry.ParseKey(r.Key)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -629,7 +630,7 @@ func (s *sqlEntityServer) List(ctx context.Context, r *entity.EntityListRequest)
|
||||
where := []string{}
|
||||
args := []any{}
|
||||
for _, k := range r.Key {
|
||||
key, err := entity.ParseKey(k)
|
||||
key, err := grafanaregistry.ParseKey(k)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -868,7 +869,7 @@ func (s *sqlEntityServer) watchInit(ctx context.Context, r *entity.EntityWatchRe
|
||||
where := []string{}
|
||||
args := []any{}
|
||||
for _, k := range r.Key {
|
||||
key, err := entity.ParseKey(k)
|
||||
key, err := grafanaregistry.ParseKey(k)
|
||||
if err != nil {
|
||||
ctxLogger.Error("error parsing key", "error", err, "key", k)
|
||||
return lastRv, err
|
||||
@@ -1153,7 +1154,7 @@ func watchMatches(r *entity.EntityWatchRequest, result *entity.Entity) bool {
|
||||
if len(r.Key) > 0 {
|
||||
matched := false
|
||||
for _, k := range r.Key {
|
||||
key, err := entity.ParseKey(k)
|
||||
key, err := grafanaregistry.ParseKey(k)
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ import (
|
||||
"time"
|
||||
|
||||
folder "github.com/grafana/grafana/pkg/apis/folder/v0alpha1"
|
||||
grafanaregistry "github.com/grafana/grafana/pkg/apiserver/registry/generic"
|
||||
"github.com/grafana/grafana/pkg/services/store/entity"
|
||||
"github.com/grafana/grafana/pkg/services/store/entity/db"
|
||||
"github.com/grafana/grafana/pkg/services/store/entity/sqlstash/sqltemplate"
|
||||
@@ -21,7 +22,7 @@ func (s *sqlEntityServer) Update(ctx context.Context, r *entity.UpdateEntityRequ
|
||||
return nil, err
|
||||
}
|
||||
|
||||
key, err := entity.ParseKey(r.Entity.Key)
|
||||
key, err := grafanaregistry.ParseKey(r.Entity.Key)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("update entity: parse entity key: %w", err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user