diff --git a/pkg/infra/usagestats/service/usage_stats.go b/pkg/infra/usagestats/service/usage_stats.go index f72bdf8d80d..b79ff5ce08a 100644 --- a/pkg/infra/usagestats/service/usage_stats.go +++ b/pkg/infra/usagestats/service/usage_stats.go @@ -84,6 +84,7 @@ func (uss *UsageStats) GetUsageReport(ctx context.Context) (usagestats.Report, e metrics["stats.dashboards_viewers_can_admin.count"] = statsQuery.Result.DashboardsViewersCanAdmin metrics["stats.folders_viewers_can_edit.count"] = statsQuery.Result.FoldersViewersCanEdit metrics["stats.folders_viewers_can_admin.count"] = statsQuery.Result.FoldersViewersCanAdmin + metrics["stats.api_keys.count"] = statsQuery.Result.APIKeys ossEditionCount := 1 enterpriseEditionCount := 0 diff --git a/pkg/infra/usagestats/service/usage_stats_test.go b/pkg/infra/usagestats/service/usage_stats_test.go index 41b6718f0c5..7bef4b4375e 100644 --- a/pkg/infra/usagestats/service/usage_stats_test.go +++ b/pkg/infra/usagestats/service/usage_stats_test.go @@ -79,6 +79,7 @@ func TestMetrics(t *testing.T) { DashboardsViewersCanEdit: 2, FoldersViewersCanAdmin: 1, FoldersViewersCanEdit: 5, + APIKeys: 2, } getSystemStatsQuery = query return nil @@ -344,6 +345,7 @@ func TestMetrics(t *testing.T) { assert.Equal(t, getSystemStatsQuery.Result.FoldersViewersCanEdit, metrics.Get("stats.folders_viewers_can_edit.count").MustInt64()) assert.Equal(t, getSystemStatsQuery.Result.FoldersViewersCanAdmin, metrics.Get("stats.folders_viewers_can_admin.count").MustInt64()) assert.Equal(t, 15, metrics.Get("stats.total_auth_token.count").MustInt()) + assert.Equal(t, 2, metrics.Get("stats.api_keys.count").MustInt()) assert.Equal(t, 5, metrics.Get("stats.avg_auth_token_per_user.count").MustInt()) assert.Equal(t, 16, metrics.Get("stats.dashboard_versions.count").MustInt()) assert.Equal(t, 17, metrics.Get("stats.annotations.count").MustInt()) diff --git a/pkg/models/stats.go b/pkg/models/stats.go index d042d02753b..cd992d7f870 100644 --- a/pkg/models/stats.go +++ b/pkg/models/stats.go @@ -18,6 +18,7 @@ type SystemStats struct { Folders int64 ProvisionedDashboards int64 AuthTokens int64 + APIKeys int64 `xorm:"api_keys"` DashboardVersions int64 Annotations int64 AlertRules int64 diff --git a/pkg/services/sqlstore/stats.go b/pkg/services/sqlstore/stats.go index f9d505d4795..b18ae742ad9 100644 --- a/pkg/services/sqlstore/stats.go +++ b/pkg/services/sqlstore/stats.go @@ -93,6 +93,7 @@ func GetSystemStats(ctx context.Context, query *models.GetSystemStatsQuery) erro sb.Write(`(SELECT COUNT(id) FROM ` + dialect.Quote("team") + `) AS teams,`) sb.Write(`(SELECT COUNT(id) FROM ` + dialect.Quote("user_auth_token") + `) AS auth_tokens,`) sb.Write(`(SELECT COUNT(id) FROM ` + dialect.Quote("alert_rule") + `) AS alert_rules,`) + sb.Write(`(SELECT COUNT(id) FROM ` + dialect.Quote("api_key") + `) AS api_keys,`) sb.Write(`(SELECT COUNT(id) FROM `+dialect.Quote("library_element")+` WHERE kind = ?) AS library_panels,`, models.PanelElement) sb.Write(`(SELECT COUNT(id) FROM `+dialect.Quote("library_element")+` WHERE kind = ?) AS library_variables,`, models.VariableElement) diff --git a/pkg/services/sqlstore/stats_test.go b/pkg/services/sqlstore/stats_test.go index 5e44dba06e1..a3ad79815df 100644 --- a/pkg/services/sqlstore/stats_test.go +++ b/pkg/services/sqlstore/stats_test.go @@ -27,6 +27,7 @@ func TestStatsDataAccess(t *testing.T) { assert.Equal(t, int64(3), query.Result.Admins) assert.Equal(t, int64(0), query.Result.LibraryPanels) assert.Equal(t, int64(0), query.Result.LibraryVariables) + assert.Equal(t, int64(1), query.Result.APIKeys) }) t.Run("Get system user count stats should not results in error", func(t *testing.T) { @@ -125,4 +126,9 @@ func populateDB(t *testing.T, sqlStore *SQLStore) { // force renewal of user stats err = updateUserRoleCountsIfNecessary(context.Background(), true) require.NoError(t, err) + + // add 1st api key + addAPIKeyCmd := &models.AddApiKeyCommand{OrgId: org.Id, Name: "Test key 1", Key: "secret-key", Role: models.ROLE_VIEWER} + err = sqlStore.AddAPIKey(context.Background(), addAPIKeyCmd) + require.NoError(t, err) }