Skip to content

Commit a04d2f4

Browse files
chore: add spans to publicdashboards service methods (grafana#92149)
* chore: add spans to publicdashboards service methods * add tracing to test service * test fixture whackamole * move tracer to a package var * Update pkg/services/publicdashboards/service/service.go Co-authored-by: Dave Henderson <[email protected]> --------- Co-authored-by: Dave Henderson <[email protected]>
1 parent 21bf013 commit a04d2f4

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

pkg/services/publicdashboards/service/service.go

+39
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"github.com/google/uuid"
1010
"github.com/grafana/grafana-plugin-sdk-go/backend"
1111
"github.com/grafana/grafana-plugin-sdk-go/backend/gtime"
12+
"go.opentelemetry.io/otel"
1213

1314
"github.com/grafana/grafana/pkg/api/dtos"
1415
"github.com/grafana/grafana/pkg/infra/log"
@@ -45,6 +46,7 @@ type PublicDashboardServiceImpl struct {
4546
}
4647

4748
var LogPrefix = "publicdashboards.service"
49+
var tracer = otel.Tracer("github.com/grafana/grafana/pkg/services/publicdashboards/service")
4850

4951
// Gives us compile time error if the service does not adhere to the contract of
5052
// the interface
@@ -79,6 +81,9 @@ func ProvideService(
7981
}
8082

8183
func (pd *PublicDashboardServiceImpl) GetPublicDashboardForView(ctx context.Context, accessToken string) (*dtos.DashboardFullWithMeta, error) {
84+
ctx, span := tracer.Start(ctx, "publicdashboards.GetPublicDashboardForView")
85+
defer span.End()
86+
8287
pubdash, dash, err := pd.FindEnabledPublicDashboardAndDashboardByAccessToken(ctx, accessToken)
8388
if err != nil {
8489
return nil, err
@@ -110,10 +115,14 @@ func (pd *PublicDashboardServiceImpl) GetPublicDashboardForView(ctx context.Cont
110115

111116
// FindByDashboardUid this method would be replaced by another implementation for Enterprise version
112117
func (pd *PublicDashboardServiceImpl) FindByDashboardUid(ctx context.Context, orgId int64, dashboardUid string) (*PublicDashboard, error) {
118+
ctx, span := tracer.Start(ctx, "publicdashboards.FindByDashboardUid")
119+
defer span.End()
113120
return pd.serviceWrapper.FindByDashboardUid(ctx, orgId, dashboardUid)
114121
}
115122

116123
func (pd *PublicDashboardServiceImpl) Find(ctx context.Context, uid string) (*PublicDashboard, error) {
124+
ctx, span := tracer.Start(ctx, "publicdashboards.Find")
125+
defer span.End()
117126
pubdash, err := pd.store.Find(ctx, uid)
118127
if err != nil {
119128
return nil, ErrInternalServerError.Errorf("Find: failed to find public dashboard%w", err)
@@ -123,6 +132,8 @@ func (pd *PublicDashboardServiceImpl) Find(ctx context.Context, uid string) (*Pu
123132

124133
// FindDashboard Gets a dashboard by Uid
125134
func (pd *PublicDashboardServiceImpl) FindDashboard(ctx context.Context, orgId int64, dashboardUid string) (*dashboards.Dashboard, error) {
135+
ctx, span := tracer.Start(ctx, "publicdashboards.FindDashboard")
136+
defer span.End()
126137
dash, err := pd.dashboardService.GetDashboard(ctx, &dashboards.GetDashboardQuery{UID: dashboardUid, OrgID: orgId})
127138
if err != nil {
128139
var dashboardErr dashboards.DashboardErr
@@ -139,6 +150,8 @@ func (pd *PublicDashboardServiceImpl) FindDashboard(ctx context.Context, orgId i
139150

140151
// FindByAccessToken Gets public dashboard by access token
141152
func (pd *PublicDashboardServiceImpl) FindByAccessToken(ctx context.Context, accessToken string) (*PublicDashboard, error) {
153+
ctx, span := tracer.Start(ctx, "publicdashboards.FindByAccessToken")
154+
defer span.End()
142155
pubdash, err := pd.store.FindByAccessToken(ctx, accessToken)
143156
if err != nil {
144157
return nil, ErrInternalServerError.Errorf("FindByAccessToken: failed to find a public dashboard: %w", err)
@@ -153,6 +166,8 @@ func (pd *PublicDashboardServiceImpl) FindByAccessToken(ctx context.Context, acc
153166

154167
// FindEnabledPublicDashboardAndDashboardByAccessToken Gets public dashboard and a dashboard by access token if public dashboard is enabled
155168
func (pd *PublicDashboardServiceImpl) FindEnabledPublicDashboardAndDashboardByAccessToken(ctx context.Context, accessToken string) (*PublicDashboard, *dashboards.Dashboard, error) {
169+
ctx, span := tracer.Start(ctx, "publicdashboards.FindEnabledPublicDashboardAndDashboardByAccessToken")
170+
defer span.End()
156171
pubdash, dash, err := pd.FindPublicDashboardAndDashboardByAccessToken(ctx, accessToken)
157172
if err != nil {
158173
return pubdash, dash, err
@@ -171,6 +186,8 @@ func (pd *PublicDashboardServiceImpl) FindEnabledPublicDashboardAndDashboardByAc
171186

172187
// FindPublicDashboardAndDashboardByAccessToken Gets public dashboard and a dashboard by access token
173188
func (pd *PublicDashboardServiceImpl) FindPublicDashboardAndDashboardByAccessToken(ctx context.Context, accessToken string) (*PublicDashboard, *dashboards.Dashboard, error) {
189+
ctx, span := tracer.Start(ctx, "publicdashboards.FindPublicDashboardAndDashboardByAccessToken")
190+
defer span.End()
174191
pubdash, err := pd.FindByAccessToken(ctx, accessToken)
175192
if err != nil {
176193
return nil, nil, err
@@ -190,6 +207,8 @@ func (pd *PublicDashboardServiceImpl) FindPublicDashboardAndDashboardByAccessTok
190207

191208
// Creates and validates the public dashboard and saves it to the database
192209
func (pd *PublicDashboardServiceImpl) Create(ctx context.Context, u *user.SignedInUser, dto *SavePublicDashboardDTO) (*PublicDashboard, error) {
210+
ctx, span := tracer.Start(ctx, "publicdashboards.Create")
211+
defer span.End()
193212
// validate fields
194213
err := validation.ValidatePublicDashboard(dto)
195214
if err != nil {
@@ -247,6 +266,8 @@ func (pd *PublicDashboardServiceImpl) Create(ctx context.Context, u *user.Signed
247266

248267
// Update: updates an existing public dashboard based on publicdashboard.Uid
249268
func (pd *PublicDashboardServiceImpl) Update(ctx context.Context, u *user.SignedInUser, dto *SavePublicDashboardDTO) (*PublicDashboard, error) {
269+
ctx, span := tracer.Start(ctx, "publicdashboards.Update")
270+
defer span.End()
250271
// validate fields
251272
err := validation.ValidatePublicDashboard(dto)
252273
if err != nil {
@@ -303,6 +324,8 @@ func (pd *PublicDashboardServiceImpl) Update(ctx context.Context, u *user.Signed
303324

304325
// NewPublicDashboardUid Generates a unique uid to create a public dashboard. Will make 3 attempts and fail if it cannot find an unused uid
305326
func (pd *PublicDashboardServiceImpl) NewPublicDashboardUid(ctx context.Context) (string, error) {
327+
ctx, span := tracer.Start(ctx, "publicdashboards.NewPublicDashboardUid")
328+
defer span.End()
306329
var uid string
307330
for i := 0; i < 3; i++ {
308331
uid = util.GenerateShortUID()
@@ -317,6 +340,8 @@ func (pd *PublicDashboardServiceImpl) NewPublicDashboardUid(ctx context.Context)
317340

318341
// NewPublicDashboardAccessToken Generates a unique accessToken to create a public dashboard. Will make 3 attempts and fail if it cannot find an unused access token
319342
func (pd *PublicDashboardServiceImpl) NewPublicDashboardAccessToken(ctx context.Context) (string, error) {
343+
ctx, span := tracer.Start(ctx, "publicdashboards.NewPublicDashboardAccessToken")
344+
defer span.End()
320345
var accessToken string
321346
for i := 0; i < 3; i++ {
322347
var err error
@@ -335,6 +360,8 @@ func (pd *PublicDashboardServiceImpl) NewPublicDashboardAccessToken(ctx context.
335360

336361
// FindAllWithPagination Returns a list of public dashboards by orgId, based on permissions and with pagination
337362
func (pd *PublicDashboardServiceImpl) FindAllWithPagination(ctx context.Context, query *PublicDashboardListQuery) (*PublicDashboardListResponseWithPagination, error) {
363+
ctx, span := tracer.Start(ctx, "publicdashboards.FindAllWithPagination")
364+
defer span.End()
338365
query.Offset = query.Limit * (query.Page - 1)
339366
resp, err := pd.store.FindAllWithPagination(ctx, query)
340367
if err != nil {
@@ -348,18 +375,26 @@ func (pd *PublicDashboardServiceImpl) FindAllWithPagination(ctx context.Context,
348375
}
349376

350377
func (pd *PublicDashboardServiceImpl) ExistsEnabledByDashboardUid(ctx context.Context, dashboardUid string) (bool, error) {
378+
ctx, span := tracer.Start(ctx, "publicdashboards.ExistsEnabledByDashboardUid")
379+
defer span.End()
351380
return pd.store.ExistsEnabledByDashboardUid(ctx, dashboardUid)
352381
}
353382

354383
func (pd *PublicDashboardServiceImpl) ExistsEnabledByAccessToken(ctx context.Context, accessToken string) (bool, error) {
384+
ctx, span := tracer.Start(ctx, "publicdashboards.ExistsEnabledByAccessToken")
385+
defer span.End()
355386
return pd.store.ExistsEnabledByAccessToken(ctx, accessToken)
356387
}
357388

358389
func (pd *PublicDashboardServiceImpl) GetOrgIdByAccessToken(ctx context.Context, accessToken string) (int64, error) {
390+
ctx, span := tracer.Start(ctx, "publicdashboards.GetOrgIdByAccessToken")
391+
defer span.End()
359392
return pd.store.GetOrgIdByAccessToken(ctx, accessToken)
360393
}
361394

362395
func (pd *PublicDashboardServiceImpl) Delete(ctx context.Context, uid string, dashboardUid string) error {
396+
ctx, span := tracer.Start(ctx, "publicdashboards.Delete")
397+
defer span.End()
363398
// get existing public dashboard if exists
364399
existingPubdash, err := pd.store.Find(ctx, uid)
365400
if err != nil {
@@ -377,6 +412,8 @@ func (pd *PublicDashboardServiceImpl) Delete(ctx context.Context, uid string, da
377412
}
378413

379414
func (pd *PublicDashboardServiceImpl) DeleteByDashboard(ctx context.Context, dashboard *dashboards.Dashboard) error {
415+
ctx, span := tracer.Start(ctx, "publicdashboards.DeleteByDashboard")
416+
defer span.End()
380417
if dashboard.IsFolder {
381418
// get all pubdashes for the folder
382419
pubdashes, err := pd.store.FindByFolder(ctx, dashboard.OrgID, dashboard.UID)
@@ -464,6 +501,8 @@ func GenerateAccessToken() (string, error) {
464501
}
465502

466503
func (pd *PublicDashboardServiceImpl) newCreatePublicDashboard(ctx context.Context, dto *SavePublicDashboardDTO) (*PublicDashboard, error) {
504+
ctx, span := tracer.Start(ctx, "publicdashboards.newCreatePublicDashboard")
505+
defer span.End()
467506
//Check if uid already exists, if none then auto generate
468507
var err error
469508
uid := dto.PublicDashboard.Uid

0 commit comments

Comments
 (0)