mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Chore: Remove dashboards from models pkg (#61578)
* Copy dashboard models to dashboard pkg * Use some models from current pkg instead of models * Adjust api pkg * Adjust pkg services * Fix lint * Chore: Remove dashboards models * Remove dashboards from models pkg * Fix lint in tests * Fix lint in tests 2 * Fix for import in auth * Remove newline * Revert unused fix
This commit is contained in:
@@ -6,7 +6,6 @@ import (
|
||||
"os"
|
||||
|
||||
"github.com/grafana/grafana/pkg/infra/log"
|
||||
"github.com/grafana/grafana/pkg/models"
|
||||
"github.com/grafana/grafana/pkg/services/dashboards"
|
||||
"github.com/grafana/grafana/pkg/services/org"
|
||||
"github.com/grafana/grafana/pkg/services/provisioning/utils"
|
||||
@@ -91,7 +90,7 @@ func (provider *Provisioner) CleanUpOrphanedDashboards(ctx context.Context) {
|
||||
currentReaders[index] = reader.Cfg.Name
|
||||
}
|
||||
|
||||
if err := provider.provisioner.DeleteOrphanedProvisionedDashboards(ctx, &models.DeleteOrphanedProvisionedDashboardsCommand{ReaderNames: currentReaders}); err != nil {
|
||||
if err := provider.provisioner.DeleteOrphanedProvisionedDashboards(ctx, &dashboards.DeleteOrphanedProvisionedDashboardsCommand{ReaderNames: currentReaders}); err != nil {
|
||||
provider.log.Warn("Failed to delete orphaned provisioned dashboards", "err", err)
|
||||
}
|
||||
}
|
||||
|
@@ -14,7 +14,6 @@ import (
|
||||
"github.com/grafana/grafana/pkg/components/simplejson"
|
||||
"github.com/grafana/grafana/pkg/infra/log"
|
||||
"github.com/grafana/grafana/pkg/infra/slugify"
|
||||
"github.com/grafana/grafana/pkg/models"
|
||||
"github.com/grafana/grafana/pkg/services/accesscontrol"
|
||||
"github.com/grafana/grafana/pkg/services/dashboards"
|
||||
"github.com/grafana/grafana/pkg/services/provisioning/utils"
|
||||
@@ -141,7 +140,7 @@ func (fr *FileReader) isDatabaseAccessRestricted() bool {
|
||||
|
||||
// storeDashboardsInFolder saves dashboards from the filesystem on disk to the folder from config
|
||||
func (fr *FileReader) storeDashboardsInFolder(ctx context.Context, filesFoundOnDisk map[string]os.FileInfo,
|
||||
dashboardRefs map[string]*models.DashboardProvisioning, usageTracker *usageTracker) error {
|
||||
dashboardRefs map[string]*dashboards.DashboardProvisioning, usageTracker *usageTracker) error {
|
||||
folderID, err := fr.getOrCreateFolderID(ctx, fr.Cfg, fr.dashboardProvisioningService, fr.Cfg.Folder)
|
||||
if err != nil && !errors.Is(err, ErrFolderNameMissing) {
|
||||
return err
|
||||
@@ -163,7 +162,7 @@ func (fr *FileReader) storeDashboardsInFolder(ctx context.Context, filesFoundOnD
|
||||
// storeDashboardsInFoldersFromFilesystemStructure saves dashboards from the filesystem on disk to the same folder
|
||||
// in Grafana as they are in on the filesystem.
|
||||
func (fr *FileReader) storeDashboardsInFoldersFromFileStructure(ctx context.Context, filesFoundOnDisk map[string]os.FileInfo,
|
||||
dashboardRefs map[string]*models.DashboardProvisioning, resolvedPath string, usageTracker *usageTracker) error {
|
||||
dashboardRefs map[string]*dashboards.DashboardProvisioning, resolvedPath string, usageTracker *usageTracker) error {
|
||||
for path, fileInfo := range filesFoundOnDisk {
|
||||
folderName := ""
|
||||
|
||||
@@ -187,14 +186,14 @@ func (fr *FileReader) storeDashboardsInFoldersFromFileStructure(ctx context.Cont
|
||||
}
|
||||
|
||||
// handleMissingDashboardFiles will unprovision or delete dashboards which are missing on disk.
|
||||
func (fr *FileReader) handleMissingDashboardFiles(ctx context.Context, provisionedDashboardRefs map[string]*models.DashboardProvisioning,
|
||||
func (fr *FileReader) handleMissingDashboardFiles(ctx context.Context, provisionedDashboardRefs map[string]*dashboards.DashboardProvisioning,
|
||||
filesFoundOnDisk map[string]os.FileInfo) {
|
||||
// find dashboards to delete since json file is missing
|
||||
var dashboardsToDelete []int64
|
||||
for path, provisioningData := range provisionedDashboardRefs {
|
||||
_, existsOnDisk := filesFoundOnDisk[path]
|
||||
if !existsOnDisk {
|
||||
dashboardsToDelete = append(dashboardsToDelete, provisioningData.DashboardId)
|
||||
dashboardsToDelete = append(dashboardsToDelete, provisioningData.DashboardID)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -222,7 +221,7 @@ func (fr *FileReader) handleMissingDashboardFiles(ctx context.Context, provision
|
||||
|
||||
// saveDashboard saves or updates the dashboard provisioning file at path.
|
||||
func (fr *FileReader) saveDashboard(ctx context.Context, path string, folderID int64, fileInfo os.FileInfo,
|
||||
provisionedDashboardRefs map[string]*models.DashboardProvisioning) (provisioningMetadata, error) {
|
||||
provisionedDashboardRefs map[string]*dashboards.DashboardProvisioning) (provisioningMetadata, error) {
|
||||
provisioningMetadata := provisioningMetadata{}
|
||||
resolvedFileInfo, err := resolveSymlink(fileInfo, path)
|
||||
if err != nil {
|
||||
@@ -257,7 +256,7 @@ func (fr *FileReader) saveDashboard(ctx context.Context, path string, folderID i
|
||||
}
|
||||
|
||||
if alreadyProvisioned {
|
||||
dash.Dashboard.SetID(provisionedData.DashboardId)
|
||||
dash.Dashboard.SetID(provisionedData.DashboardID)
|
||||
}
|
||||
|
||||
if !fr.isDatabaseAccessRestricted() {
|
||||
@@ -281,15 +280,15 @@ func (fr *FileReader) saveDashboard(ctx context.Context, path string, folderID i
|
||||
}
|
||||
|
||||
func getProvisionedDashboardsByPath(ctx context.Context, service dashboards.DashboardProvisioningService, name string) (
|
||||
map[string]*models.DashboardProvisioning, error) {
|
||||
map[string]*dashboards.DashboardProvisioning, error) {
|
||||
arr, err := service.GetProvisionedDashboardData(ctx, name)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
byPath := map[string]*models.DashboardProvisioning{}
|
||||
byPath := map[string]*dashboards.DashboardProvisioning{}
|
||||
for _, pd := range arr {
|
||||
byPath[pd.ExternalId] = pd
|
||||
byPath[pd.ExternalID] = pd
|
||||
}
|
||||
|
||||
return byPath, nil
|
||||
|
@@ -13,7 +13,6 @@ import (
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"github.com/grafana/grafana/pkg/infra/log"
|
||||
"github.com/grafana/grafana/pkg/models"
|
||||
"github.com/grafana/grafana/pkg/services/dashboards"
|
||||
"github.com/grafana/grafana/pkg/util"
|
||||
)
|
||||
@@ -163,10 +162,10 @@ func TestDashboardFileReader(t *testing.T) {
|
||||
checksum, err := util.Md5Sum(file)
|
||||
require.NoError(t, err)
|
||||
|
||||
provisionedDashboard := []*models.DashboardProvisioning{
|
||||
provisionedDashboard := []*dashboards.DashboardProvisioning{
|
||||
{
|
||||
Name: "Default",
|
||||
ExternalId: absPath,
|
||||
ExternalID: absPath,
|
||||
Updated: stat.ModTime().AddDate(0, 0, +1).Unix(),
|
||||
CheckSum: checksum,
|
||||
},
|
||||
@@ -190,10 +189,10 @@ func TestDashboardFileReader(t *testing.T) {
|
||||
stat, err := os.Stat(oneDashboard + "/dashboard1.json")
|
||||
require.NoError(t, err)
|
||||
|
||||
provisionedDashboard := []*models.DashboardProvisioning{
|
||||
provisionedDashboard := []*dashboards.DashboardProvisioning{
|
||||
{
|
||||
Name: "Default",
|
||||
ExternalId: absPath,
|
||||
ExternalID: absPath,
|
||||
Updated: stat.ModTime().AddDate(0, 0, +1).Unix(),
|
||||
CheckSum: "fakechecksum",
|
||||
},
|
||||
@@ -226,10 +225,10 @@ func TestDashboardFileReader(t *testing.T) {
|
||||
checksum, err := util.Md5Sum(file)
|
||||
require.NoError(t, err)
|
||||
|
||||
provisionedDashboard := []*models.DashboardProvisioning{
|
||||
provisionedDashboard := []*dashboards.DashboardProvisioning{
|
||||
{
|
||||
Name: "Default",
|
||||
ExternalId: absPath,
|
||||
ExternalID: absPath,
|
||||
Updated: stat.ModTime().AddDate(0, 0, -1).Unix(),
|
||||
CheckSum: checksum,
|
||||
},
|
||||
@@ -253,10 +252,10 @@ func TestDashboardFileReader(t *testing.T) {
|
||||
stat, err := os.Stat(oneDashboard + "/dashboard1.json")
|
||||
require.NoError(t, err)
|
||||
|
||||
provisionedDashboard := []*models.DashboardProvisioning{
|
||||
provisionedDashboard := []*dashboards.DashboardProvisioning{
|
||||
{
|
||||
Name: "Default",
|
||||
ExternalId: absPath,
|
||||
ExternalID: absPath,
|
||||
Updated: stat.ModTime().AddDate(0, 0, -1).Unix(),
|
||||
CheckSum: "fakechecksum",
|
||||
},
|
||||
@@ -431,9 +430,9 @@ func TestDashboardFileReader(t *testing.T) {
|
||||
absPath2, err := filepath.Abs(unprovision + "/dashboard2.json")
|
||||
require.NoError(t, err)
|
||||
|
||||
provisionedDashboard := []*models.DashboardProvisioning{
|
||||
{DashboardId: 1, Name: "Default", ExternalId: absPath1},
|
||||
{DashboardId: 2, Name: "Default", ExternalId: absPath2},
|
||||
provisionedDashboard := []*dashboards.DashboardProvisioning{
|
||||
{DashboardID: 1, Name: "Default", ExternalID: absPath1},
|
||||
{DashboardID: 2, Name: "Default", ExternalID: absPath2},
|
||||
}
|
||||
|
||||
setupFakeService := func() {
|
||||
|
@@ -9,7 +9,6 @@ import (
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"github.com/grafana/grafana/pkg/infra/log"
|
||||
"github.com/grafana/grafana/pkg/models"
|
||||
"github.com/grafana/grafana/pkg/services/dashboards"
|
||||
)
|
||||
|
||||
@@ -38,7 +37,7 @@ func TestDuplicatesValidator(t *testing.T) {
|
||||
r, err := NewDashboardFileReader(cfg, logger, nil, fakeStore)
|
||||
require.NoError(t, err)
|
||||
fakeService.On("SaveFolderForProvisionedDashboards", mock.Anything, mock.Anything).Return(&dashboards.Dashboard{}, nil).Times(6)
|
||||
fakeService.On("GetProvisionedDashboardData", mock.Anything, mock.AnythingOfType("string")).Return([]*models.DashboardProvisioning{}, nil).Times(4)
|
||||
fakeService.On("GetProvisionedDashboardData", mock.Anything, mock.AnythingOfType("string")).Return([]*dashboards.DashboardProvisioning{}, nil).Times(4)
|
||||
fakeService.On("SaveProvisionedDashboard", mock.Anything, mock.Anything, mock.Anything).Return(&dashboards.Dashboard{}, nil).Times(5)
|
||||
folderID, err := r.getOrCreateFolderID(context.Background(), cfg, fakeService, folderName)
|
||||
require.NoError(t, err)
|
||||
@@ -152,7 +151,7 @@ func TestDuplicatesValidator(t *testing.T) {
|
||||
|
||||
t.Run("Duplicates validator should restrict write access only for readers with duplicates", func(t *testing.T) {
|
||||
fakeService.On("SaveFolderForProvisionedDashboards", mock.Anything, mock.Anything).Return(&dashboards.Dashboard{}, nil).Times(5)
|
||||
fakeService.On("GetProvisionedDashboardData", mock.Anything, mock.AnythingOfType("string")).Return([]*models.DashboardProvisioning{}, nil).Times(3)
|
||||
fakeService.On("GetProvisionedDashboardData", mock.Anything, mock.AnythingOfType("string")).Return([]*dashboards.DashboardProvisioning{}, nil).Times(3)
|
||||
fakeService.On("SaveProvisionedDashboard", mock.Anything, mock.Anything, mock.Anything).Return(&dashboards.Dashboard{}, nil).Times(5)
|
||||
fakeStore := &fakeDashboardStore{}
|
||||
|
||||
|
Reference in New Issue
Block a user