backend/datasources: move datasources models into the datasources service package (#51267)
* backend/datasources: move datasources models into the datasources service pkg
This commit is contained in:
@@ -12,14 +12,14 @@ import (
|
||||
"github.com/grafana/grafana/pkg/components/simplejson"
|
||||
"github.com/grafana/grafana/pkg/events"
|
||||
"github.com/grafana/grafana/pkg/infra/metrics"
|
||||
"github.com/grafana/grafana/pkg/models"
|
||||
ac "github.com/grafana/grafana/pkg/services/accesscontrol"
|
||||
"github.com/grafana/grafana/pkg/services/datasources"
|
||||
"github.com/grafana/grafana/pkg/util"
|
||||
)
|
||||
|
||||
// GetDataSource adds a datasource to the query model by querying by org_id as well as
|
||||
// either uid (preferred), id, or name and is added to the bus.
|
||||
func (ss *SQLStore) GetDataSource(ctx context.Context, query *models.GetDataSourceQuery) error {
|
||||
func (ss *SQLStore) GetDataSource(ctx context.Context, query *datasources.GetDataSourceQuery) error {
|
||||
metrics.MDBDataSourceQueryByID.Inc()
|
||||
|
||||
return ss.WithDbSession(ctx, func(sess *DBSession) error {
|
||||
@@ -27,19 +27,19 @@ func (ss *SQLStore) GetDataSource(ctx context.Context, query *models.GetDataSour
|
||||
})
|
||||
}
|
||||
|
||||
func (ss *SQLStore) getDataSource(ctx context.Context, query *models.GetDataSourceQuery, sess *DBSession) error {
|
||||
func (ss *SQLStore) getDataSource(ctx context.Context, query *datasources.GetDataSourceQuery, sess *DBSession) error {
|
||||
if query.OrgId == 0 || (query.Id == 0 && len(query.Name) == 0 && len(query.Uid) == 0) {
|
||||
return models.ErrDataSourceIdentifierNotSet
|
||||
return datasources.ErrDataSourceIdentifierNotSet
|
||||
}
|
||||
|
||||
datasource := &models.DataSource{Name: query.Name, OrgId: query.OrgId, Id: query.Id, Uid: query.Uid}
|
||||
datasource := &datasources.DataSource{Name: query.Name, OrgId: query.OrgId, Id: query.Id, Uid: query.Uid}
|
||||
has, err := sess.Get(datasource)
|
||||
|
||||
if err != nil {
|
||||
sqlog.Error("Failed getting data source", "err", err, "uid", query.Uid, "id", query.Id, "name", query.Name, "orgId", query.OrgId)
|
||||
return err
|
||||
} else if !has {
|
||||
return models.ErrDataSourceNotFound
|
||||
return datasources.ErrDataSourceNotFound
|
||||
}
|
||||
|
||||
query.Result = datasource
|
||||
@@ -47,7 +47,7 @@ func (ss *SQLStore) getDataSource(ctx context.Context, query *models.GetDataSour
|
||||
return nil
|
||||
}
|
||||
|
||||
func (ss *SQLStore) GetDataSources(ctx context.Context, query *models.GetDataSourcesQuery) error {
|
||||
func (ss *SQLStore) GetDataSources(ctx context.Context, query *datasources.GetDataSourcesQuery) error {
|
||||
var sess *xorm.Session
|
||||
return ss.WithDbSession(ctx, func(dbSess *DBSession) error {
|
||||
if query.DataSourceLimit <= 0 {
|
||||
@@ -56,31 +56,31 @@ func (ss *SQLStore) GetDataSources(ctx context.Context, query *models.GetDataSou
|
||||
sess = dbSess.Limit(query.DataSourceLimit, 0).Where("org_id=?", query.OrgId).Asc("name")
|
||||
}
|
||||
|
||||
query.Result = make([]*models.DataSource, 0)
|
||||
query.Result = make([]*datasources.DataSource, 0)
|
||||
return sess.Find(&query.Result)
|
||||
})
|
||||
}
|
||||
|
||||
// GetDataSourcesByType returns all datasources for a given type or an error if the specified type is an empty string
|
||||
func (ss *SQLStore) GetDataSourcesByType(ctx context.Context, query *models.GetDataSourcesByTypeQuery) error {
|
||||
func (ss *SQLStore) GetDataSourcesByType(ctx context.Context, query *datasources.GetDataSourcesByTypeQuery) error {
|
||||
if query.Type == "" {
|
||||
return fmt.Errorf("datasource type cannot be empty")
|
||||
}
|
||||
|
||||
query.Result = make([]*models.DataSource, 0)
|
||||
query.Result = make([]*datasources.DataSource, 0)
|
||||
return ss.WithDbSession(ctx, func(sess *DBSession) error {
|
||||
return sess.Where("type=?", query.Type).Asc("id").Find(&query.Result)
|
||||
})
|
||||
}
|
||||
|
||||
// GetDefaultDataSource is used to get the default datasource of organization
|
||||
func (ss *SQLStore) GetDefaultDataSource(ctx context.Context, query *models.GetDefaultDataSourceQuery) error {
|
||||
datasource := models.DataSource{}
|
||||
func (ss *SQLStore) GetDefaultDataSource(ctx context.Context, query *datasources.GetDefaultDataSourceQuery) error {
|
||||
datasource := datasources.DataSource{}
|
||||
return ss.WithDbSession(ctx, func(sess *DBSession) error {
|
||||
exists, err := sess.Where("org_id=? AND is_default=?", query.OrgId, true).Get(&datasource)
|
||||
|
||||
if !exists {
|
||||
return models.ErrDataSourceNotFound
|
||||
return datasources.ErrDataSourceNotFound
|
||||
}
|
||||
|
||||
query.Result = &datasource
|
||||
@@ -90,12 +90,12 @@ func (ss *SQLStore) GetDefaultDataSource(ctx context.Context, query *models.GetD
|
||||
|
||||
// DeleteDataSource removes a datasource by org_id as well as either uid (preferred), id, or name
|
||||
// and is added to the bus. It also removes permissions related to the datasource.
|
||||
func (ss *SQLStore) DeleteDataSource(ctx context.Context, cmd *models.DeleteDataSourceCommand) error {
|
||||
func (ss *SQLStore) DeleteDataSource(ctx context.Context, cmd *datasources.DeleteDataSourceCommand) error {
|
||||
return ss.WithTransactionalDbSession(ctx, func(sess *DBSession) error {
|
||||
dsQuery := &models.GetDataSourceQuery{Id: cmd.ID, Uid: cmd.UID, Name: cmd.Name, OrgId: cmd.OrgID}
|
||||
dsQuery := &datasources.GetDataSourceQuery{Id: cmd.ID, Uid: cmd.UID, Name: cmd.Name, OrgId: cmd.OrgID}
|
||||
errGettingDS := ss.getDataSource(ctx, dsQuery, sess)
|
||||
|
||||
if errGettingDS != nil && !errors.Is(errGettingDS, models.ErrDataSourceNotFound) {
|
||||
if errGettingDS != nil && !errors.Is(errGettingDS, datasources.ErrDataSourceNotFound) {
|
||||
return errGettingDS
|
||||
}
|
||||
|
||||
@@ -136,13 +136,13 @@ func (ss *SQLStore) DeleteDataSource(ctx context.Context, cmd *models.DeleteData
|
||||
})
|
||||
}
|
||||
|
||||
func (ss *SQLStore) AddDataSource(ctx context.Context, cmd *models.AddDataSourceCommand) error {
|
||||
func (ss *SQLStore) AddDataSource(ctx context.Context, cmd *datasources.AddDataSourceCommand) error {
|
||||
return ss.WithTransactionalDbSession(ctx, func(sess *DBSession) error {
|
||||
existing := models.DataSource{OrgId: cmd.OrgId, Name: cmd.Name}
|
||||
existing := datasources.DataSource{OrgId: cmd.OrgId, Name: cmd.Name}
|
||||
has, _ := sess.Get(&existing)
|
||||
|
||||
if has {
|
||||
return models.ErrDataSourceNameExists
|
||||
return datasources.ErrDataSourceNameExists
|
||||
}
|
||||
|
||||
if cmd.JsonData == nil {
|
||||
@@ -157,7 +157,7 @@ func (ss *SQLStore) AddDataSource(ctx context.Context, cmd *models.AddDataSource
|
||||
cmd.Uid = uid
|
||||
}
|
||||
|
||||
ds := &models.DataSource{
|
||||
ds := &datasources.DataSource{
|
||||
OrgId: cmd.OrgId,
|
||||
Name: cmd.Name,
|
||||
Type: cmd.Type,
|
||||
@@ -180,7 +180,7 @@ func (ss *SQLStore) AddDataSource(ctx context.Context, cmd *models.AddDataSource
|
||||
|
||||
if _, err := sess.Insert(ds); err != nil {
|
||||
if dialect.IsUniqueConstraintViolation(err) && strings.Contains(strings.ToLower(dialect.ErrorMessage(err)), "uid") {
|
||||
return models.ErrDataSourceUidExists
|
||||
return datasources.ErrDataSourceUidExists
|
||||
}
|
||||
return err
|
||||
}
|
||||
@@ -208,7 +208,7 @@ func (ss *SQLStore) AddDataSource(ctx context.Context, cmd *models.AddDataSource
|
||||
})
|
||||
}
|
||||
|
||||
func updateIsDefaultFlag(ds *models.DataSource, sess *DBSession) error {
|
||||
func updateIsDefaultFlag(ds *datasources.DataSource, sess *DBSession) error {
|
||||
// Handle is default flag
|
||||
if ds.IsDefault {
|
||||
rawSQL := "UPDATE data_source SET is_default=? WHERE org_id=? AND id <> ?"
|
||||
@@ -219,13 +219,13 @@ func updateIsDefaultFlag(ds *models.DataSource, sess *DBSession) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (ss *SQLStore) UpdateDataSource(ctx context.Context, cmd *models.UpdateDataSourceCommand) error {
|
||||
func (ss *SQLStore) UpdateDataSource(ctx context.Context, cmd *datasources.UpdateDataSourceCommand) error {
|
||||
return ss.WithTransactionalDbSession(ctx, func(sess *DBSession) error {
|
||||
if cmd.JsonData == nil {
|
||||
cmd.JsonData = simplejson.New()
|
||||
}
|
||||
|
||||
ds := &models.DataSource{
|
||||
ds := &datasources.DataSource{
|
||||
Id: cmd.Id,
|
||||
OrgId: cmd.OrgId,
|
||||
Name: cmd.Name,
|
||||
@@ -272,7 +272,7 @@ func (ss *SQLStore) UpdateDataSource(ctx context.Context, cmd *models.UpdateData
|
||||
}
|
||||
|
||||
if affected == 0 {
|
||||
return models.ErrDataSourceUpdatingOldVersion
|
||||
return datasources.ErrDataSourceUpdatingOldVersion
|
||||
}
|
||||
|
||||
err = updateIsDefaultFlag(ds, sess)
|
||||
@@ -293,7 +293,7 @@ func generateNewDatasourceUid(sess *DBSession, orgId int64) (string, error) {
|
||||
for i := 0; i < 3; i++ {
|
||||
uid := generateNewUid()
|
||||
|
||||
exists, err := sess.Where("org_id=? AND uid=?", orgId, uid).Get(&models.DataSource{})
|
||||
exists, err := sess.Where("org_id=? AND uid=?", orgId, uid).Get(&datasources.DataSource{})
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
@@ -303,7 +303,7 @@ func generateNewDatasourceUid(sess *DBSession, orgId int64) (string, error) {
|
||||
}
|
||||
}
|
||||
|
||||
return "", models.ErrDataSourceFailedGenerateUniqueUid
|
||||
return "", datasources.ErrDataSourceFailedGenerateUniqueUid
|
||||
}
|
||||
|
||||
var generateNewUid func() string = util.GenerateShortUID
|
||||
|
||||
@@ -8,39 +8,40 @@ import (
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/grafana/grafana/pkg/events"
|
||||
"github.com/grafana/grafana/pkg/models"
|
||||
ac "github.com/grafana/grafana/pkg/services/accesscontrol"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"github.com/grafana/grafana/pkg/events"
|
||||
ac "github.com/grafana/grafana/pkg/services/accesscontrol"
|
||||
"github.com/grafana/grafana/pkg/services/datasources"
|
||||
)
|
||||
|
||||
func TestIntegrationDataAccess(t *testing.T) {
|
||||
if testing.Short() {
|
||||
t.Skip("skipping integration test")
|
||||
}
|
||||
defaultAddDatasourceCommand := models.AddDataSourceCommand{
|
||||
defaultAddDatasourceCommand := datasources.AddDataSourceCommand{
|
||||
OrgId: 10,
|
||||
Name: "nisse",
|
||||
Type: models.DS_GRAPHITE,
|
||||
Access: models.DS_ACCESS_DIRECT,
|
||||
Type: datasources.DS_GRAPHITE,
|
||||
Access: datasources.DS_ACCESS_DIRECT,
|
||||
Url: "http://test",
|
||||
}
|
||||
|
||||
defaultUpdateDatasourceCommand := models.UpdateDataSourceCommand{
|
||||
defaultUpdateDatasourceCommand := datasources.UpdateDataSourceCommand{
|
||||
OrgId: 10,
|
||||
Name: "nisse_updated",
|
||||
Type: models.DS_GRAPHITE,
|
||||
Access: models.DS_ACCESS_DIRECT,
|
||||
Type: datasources.DS_GRAPHITE,
|
||||
Access: datasources.DS_ACCESS_DIRECT,
|
||||
Url: "http://test",
|
||||
}
|
||||
|
||||
initDatasource := func(sqlStore *SQLStore) *models.DataSource {
|
||||
initDatasource := func(sqlStore *SQLStore) *datasources.DataSource {
|
||||
cmd := defaultAddDatasourceCommand
|
||||
err := sqlStore.AddDataSource(context.Background(), &cmd)
|
||||
require.NoError(t, err)
|
||||
|
||||
query := models.GetDataSourcesQuery{OrgId: 10}
|
||||
query := datasources.GetDataSourcesQuery{OrgId: 10}
|
||||
err = sqlStore.GetDataSources(context.Background(), &query)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, 1, len(query.Result))
|
||||
@@ -52,18 +53,18 @@ func TestIntegrationDataAccess(t *testing.T) {
|
||||
t.Run("Can add datasource", func(t *testing.T) {
|
||||
sqlStore := InitTestDB(t)
|
||||
|
||||
err := sqlStore.AddDataSource(context.Background(), &models.AddDataSourceCommand{
|
||||
err := sqlStore.AddDataSource(context.Background(), &datasources.AddDataSourceCommand{
|
||||
OrgId: 10,
|
||||
Name: "laban",
|
||||
Type: models.DS_GRAPHITE,
|
||||
Access: models.DS_ACCESS_DIRECT,
|
||||
Type: datasources.DS_GRAPHITE,
|
||||
Access: datasources.DS_ACCESS_DIRECT,
|
||||
Url: "http://test",
|
||||
Database: "site",
|
||||
ReadOnly: true,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
query := models.GetDataSourcesQuery{OrgId: 10}
|
||||
query := datasources.GetDataSourcesQuery{OrgId: 10}
|
||||
err = sqlStore.GetDataSources(context.Background(), &query)
|
||||
require.NoError(t, err)
|
||||
|
||||
@@ -91,7 +92,7 @@ func TestIntegrationDataAccess(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
err = sqlStore.AddDataSource(context.Background(), &cmd2)
|
||||
require.Error(t, err)
|
||||
require.IsType(t, models.ErrDataSourceUidExists, err)
|
||||
require.IsType(t, datasources.ErrDataSourceUidExists, err)
|
||||
})
|
||||
|
||||
t.Run("fires an event when the datasource is added", func(t *testing.T) {
|
||||
@@ -110,7 +111,7 @@ func TestIntegrationDataAccess(t *testing.T) {
|
||||
return assert.NotNil(t, created)
|
||||
}, time.Second, time.Millisecond)
|
||||
|
||||
query := models.GetDataSourcesQuery{OrgId: 10}
|
||||
query := datasources.GetDataSourcesQuery{OrgId: 10}
|
||||
err = sqlStore.GetDataSources(context.Background(), &query)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, 1, len(query.Result))
|
||||
@@ -143,7 +144,7 @@ func TestIntegrationDataAccess(t *testing.T) {
|
||||
err := sqlStore.UpdateDataSource(context.Background(), &cmd)
|
||||
require.NoError(t, err)
|
||||
|
||||
query := models.GetDataSourceQuery{Id: ds.Id, OrgId: 10}
|
||||
query := datasources.GetDataSourceQuery{Id: ds.Id, OrgId: 10}
|
||||
err = sqlStore.GetDataSource(context.Background(), &query)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, ds.Uid, query.Result.Uid)
|
||||
@@ -153,12 +154,12 @@ func TestIntegrationDataAccess(t *testing.T) {
|
||||
sqlStore := InitTestDB(t)
|
||||
ds := initDatasource(sqlStore)
|
||||
|
||||
cmd := models.UpdateDataSourceCommand{
|
||||
cmd := datasources.UpdateDataSourceCommand{
|
||||
Id: ds.Id,
|
||||
OrgId: 10,
|
||||
Name: "nisse",
|
||||
Type: models.DS_GRAPHITE,
|
||||
Access: models.DS_ACCESS_PROXY,
|
||||
Type: datasources.DS_GRAPHITE,
|
||||
Access: datasources.DS_ACCESS_PROXY,
|
||||
Url: "http://test",
|
||||
Version: ds.Version,
|
||||
}
|
||||
@@ -176,12 +177,12 @@ func TestIntegrationDataAccess(t *testing.T) {
|
||||
sqlStore := InitTestDB(t)
|
||||
ds := initDatasource(sqlStore)
|
||||
|
||||
cmd := &models.UpdateDataSourceCommand{
|
||||
cmd := &datasources.UpdateDataSourceCommand{
|
||||
Id: ds.Id,
|
||||
OrgId: 10,
|
||||
Name: "nisse",
|
||||
Type: models.DS_GRAPHITE,
|
||||
Access: models.DS_ACCESS_PROXY,
|
||||
Type: datasources.DS_GRAPHITE,
|
||||
Access: datasources.DS_ACCESS_PROXY,
|
||||
Url: "http://test",
|
||||
}
|
||||
|
||||
@@ -193,12 +194,12 @@ func TestIntegrationDataAccess(t *testing.T) {
|
||||
sqlStore := InitTestDB(t)
|
||||
ds := initDatasource(sqlStore)
|
||||
|
||||
cmd := &models.UpdateDataSourceCommand{
|
||||
cmd := &datasources.UpdateDataSourceCommand{
|
||||
Id: ds.Id,
|
||||
OrgId: 10,
|
||||
Name: "nisse",
|
||||
Type: models.DS_GRAPHITE,
|
||||
Access: models.DS_ACCESS_PROXY,
|
||||
Type: datasources.DS_GRAPHITE,
|
||||
Access: datasources.DS_ACCESS_PROXY,
|
||||
Url: "http://test",
|
||||
Version: 90000,
|
||||
}
|
||||
@@ -213,10 +214,10 @@ func TestIntegrationDataAccess(t *testing.T) {
|
||||
sqlStore := InitTestDB(t)
|
||||
ds := initDatasource(sqlStore)
|
||||
|
||||
err := sqlStore.DeleteDataSource(context.Background(), &models.DeleteDataSourceCommand{ID: ds.Id, OrgID: ds.OrgId})
|
||||
err := sqlStore.DeleteDataSource(context.Background(), &datasources.DeleteDataSourceCommand{ID: ds.Id, OrgID: ds.OrgId})
|
||||
require.NoError(t, err)
|
||||
|
||||
query := models.GetDataSourcesQuery{OrgId: 10}
|
||||
query := datasources.GetDataSourcesQuery{OrgId: 10}
|
||||
err = sqlStore.GetDataSources(context.Background(), &query)
|
||||
require.NoError(t, err)
|
||||
|
||||
@@ -228,10 +229,10 @@ func TestIntegrationDataAccess(t *testing.T) {
|
||||
ds := initDatasource(sqlStore)
|
||||
|
||||
err := sqlStore.DeleteDataSource(context.Background(),
|
||||
&models.DeleteDataSourceCommand{ID: ds.Id, OrgID: 123123})
|
||||
&datasources.DeleteDataSourceCommand{ID: ds.Id, OrgID: 123123})
|
||||
require.NoError(t, err)
|
||||
|
||||
query := models.GetDataSourcesQuery{OrgId: 10}
|
||||
query := datasources.GetDataSourcesQuery{OrgId: 10}
|
||||
err = sqlStore.GetDataSources(context.Background(), &query)
|
||||
require.NoError(t, err)
|
||||
|
||||
@@ -250,7 +251,7 @@ func TestIntegrationDataAccess(t *testing.T) {
|
||||
})
|
||||
|
||||
err := sqlStore.DeleteDataSource(context.Background(),
|
||||
&models.DeleteDataSourceCommand{ID: ds.Id, UID: "nisse-uid", Name: "nisse", OrgID: int64(123123)})
|
||||
&datasources.DeleteDataSourceCommand{ID: ds.Id, UID: "nisse-uid", Name: "nisse", OrgID: int64(123123)})
|
||||
require.NoError(t, err)
|
||||
|
||||
require.Eventually(t, func() bool {
|
||||
@@ -266,9 +267,9 @@ func TestIntegrationDataAccess(t *testing.T) {
|
||||
t.Run("DeleteDataSourceByName", func(t *testing.T) {
|
||||
sqlStore := InitTestDB(t)
|
||||
ds := initDatasource(sqlStore)
|
||||
query := models.GetDataSourcesQuery{OrgId: 10}
|
||||
query := datasources.GetDataSourcesQuery{OrgId: 10}
|
||||
|
||||
err := sqlStore.DeleteDataSource(context.Background(), &models.DeleteDataSourceCommand{Name: ds.Name, OrgID: ds.OrgId})
|
||||
err := sqlStore.DeleteDataSource(context.Background(), &datasources.DeleteDataSourceCommand{Name: ds.Name, OrgID: ds.OrgId})
|
||||
require.NoError(t, err)
|
||||
|
||||
err = sqlStore.GetDataSources(context.Background(), &query)
|
||||
@@ -293,10 +294,10 @@ func TestIntegrationDataAccess(t *testing.T) {
|
||||
return err
|
||||
})
|
||||
require.NoError(t, errAddPermissions)
|
||||
query := models.GetDataSourcesQuery{OrgId: 10}
|
||||
query := datasources.GetDataSourcesQuery{OrgId: 10}
|
||||
|
||||
errDeletingDS := sqlStore.DeleteDataSource(context.Background(),
|
||||
&models.DeleteDataSourceCommand{Name: ds.Name, OrgID: ds.OrgId},
|
||||
&datasources.DeleteDataSourceCommand{Name: ds.Name, OrgID: ds.OrgId},
|
||||
)
|
||||
require.NoError(t, errDeletingDS)
|
||||
|
||||
@@ -318,18 +319,18 @@ func TestIntegrationDataAccess(t *testing.T) {
|
||||
sqlStore := InitTestDB(t)
|
||||
datasourceLimit := 6
|
||||
for i := 0; i < datasourceLimit+1; i++ {
|
||||
err := sqlStore.AddDataSource(context.Background(), &models.AddDataSourceCommand{
|
||||
err := sqlStore.AddDataSource(context.Background(), &datasources.AddDataSourceCommand{
|
||||
OrgId: 10,
|
||||
Name: "laban" + strconv.Itoa(i),
|
||||
Type: models.DS_GRAPHITE,
|
||||
Access: models.DS_ACCESS_DIRECT,
|
||||
Type: datasources.DS_GRAPHITE,
|
||||
Access: datasources.DS_ACCESS_DIRECT,
|
||||
Url: "http://test",
|
||||
Database: "site",
|
||||
ReadOnly: true,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
}
|
||||
query := models.GetDataSourcesQuery{OrgId: 10, DataSourceLimit: datasourceLimit}
|
||||
query := datasources.GetDataSourcesQuery{OrgId: 10, DataSourceLimit: datasourceLimit}
|
||||
|
||||
err := sqlStore.GetDataSources(context.Background(), &query)
|
||||
|
||||
@@ -341,18 +342,18 @@ func TestIntegrationDataAccess(t *testing.T) {
|
||||
sqlStore := InitTestDB(t)
|
||||
numberOfDatasource := 5100
|
||||
for i := 0; i < numberOfDatasource; i++ {
|
||||
err := sqlStore.AddDataSource(context.Background(), &models.AddDataSourceCommand{
|
||||
err := sqlStore.AddDataSource(context.Background(), &datasources.AddDataSourceCommand{
|
||||
OrgId: 10,
|
||||
Name: "laban" + strconv.Itoa(i),
|
||||
Type: models.DS_GRAPHITE,
|
||||
Access: models.DS_ACCESS_DIRECT,
|
||||
Type: datasources.DS_GRAPHITE,
|
||||
Access: datasources.DS_ACCESS_DIRECT,
|
||||
Url: "http://test",
|
||||
Database: "site",
|
||||
ReadOnly: true,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
}
|
||||
query := models.GetDataSourcesQuery{OrgId: 10}
|
||||
query := datasources.GetDataSourcesQuery{OrgId: 10}
|
||||
|
||||
err := sqlStore.GetDataSources(context.Background(), &query)
|
||||
|
||||
@@ -364,18 +365,18 @@ func TestIntegrationDataAccess(t *testing.T) {
|
||||
sqlStore := InitTestDB(t)
|
||||
numberOfDatasource := 5100
|
||||
for i := 0; i < numberOfDatasource; i++ {
|
||||
err := sqlStore.AddDataSource(context.Background(), &models.AddDataSourceCommand{
|
||||
err := sqlStore.AddDataSource(context.Background(), &datasources.AddDataSourceCommand{
|
||||
OrgId: 10,
|
||||
Name: "laban" + strconv.Itoa(i),
|
||||
Type: models.DS_GRAPHITE,
|
||||
Access: models.DS_ACCESS_DIRECT,
|
||||
Type: datasources.DS_GRAPHITE,
|
||||
Access: datasources.DS_ACCESS_DIRECT,
|
||||
Url: "http://test",
|
||||
Database: "site",
|
||||
ReadOnly: true,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
}
|
||||
query := models.GetDataSourcesQuery{OrgId: 10, DataSourceLimit: -1}
|
||||
query := datasources.GetDataSourcesQuery{OrgId: 10, DataSourceLimit: -1}
|
||||
|
||||
err := sqlStore.GetDataSources(context.Background(), &query)
|
||||
|
||||
@@ -388,29 +389,29 @@ func TestIntegrationDataAccess(t *testing.T) {
|
||||
t.Run("Only returns datasources of specified type", func(t *testing.T) {
|
||||
sqlStore := InitTestDB(t)
|
||||
|
||||
err := sqlStore.AddDataSource(context.Background(), &models.AddDataSourceCommand{
|
||||
err := sqlStore.AddDataSource(context.Background(), &datasources.AddDataSourceCommand{
|
||||
OrgId: 10,
|
||||
Name: "Elasticsearch",
|
||||
Type: models.DS_ES,
|
||||
Access: models.DS_ACCESS_DIRECT,
|
||||
Type: datasources.DS_ES,
|
||||
Access: datasources.DS_ACCESS_DIRECT,
|
||||
Url: "http://test",
|
||||
Database: "site",
|
||||
ReadOnly: true,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
err = sqlStore.AddDataSource(context.Background(), &models.AddDataSourceCommand{
|
||||
err = sqlStore.AddDataSource(context.Background(), &datasources.AddDataSourceCommand{
|
||||
OrgId: 10,
|
||||
Name: "Graphite",
|
||||
Type: models.DS_GRAPHITE,
|
||||
Access: models.DS_ACCESS_DIRECT,
|
||||
Type: datasources.DS_GRAPHITE,
|
||||
Access: datasources.DS_ACCESS_DIRECT,
|
||||
Url: "http://test",
|
||||
Database: "site",
|
||||
ReadOnly: true,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
query := models.GetDataSourcesByTypeQuery{Type: models.DS_ES}
|
||||
query := datasources.GetDataSourcesByTypeQuery{Type: datasources.DS_ES}
|
||||
|
||||
err = sqlStore.GetDataSourcesByType(context.Background(), &query)
|
||||
|
||||
@@ -421,7 +422,7 @@ func TestIntegrationDataAccess(t *testing.T) {
|
||||
t.Run("Returns an error if no type specified", func(t *testing.T) {
|
||||
sqlStore := InitTestDB(t)
|
||||
|
||||
query := models.GetDataSourcesByTypeQuery{}
|
||||
query := datasources.GetDataSourcesByTypeQuery{}
|
||||
|
||||
err := sqlStore.GetDataSourcesByType(context.Background(), &query)
|
||||
|
||||
@@ -439,31 +440,31 @@ func TestIntegrationGetDefaultDataSource(t *testing.T) {
|
||||
t.Run("should return error if there is no default datasource", func(t *testing.T) {
|
||||
sqlStore := InitTestDB(t)
|
||||
|
||||
cmd := models.AddDataSourceCommand{
|
||||
cmd := datasources.AddDataSourceCommand{
|
||||
OrgId: 10,
|
||||
Name: "nisse",
|
||||
Type: models.DS_GRAPHITE,
|
||||
Access: models.DS_ACCESS_DIRECT,
|
||||
Type: datasources.DS_GRAPHITE,
|
||||
Access: datasources.DS_ACCESS_DIRECT,
|
||||
Url: "http://test",
|
||||
}
|
||||
|
||||
err := sqlStore.AddDataSource(context.Background(), &cmd)
|
||||
require.NoError(t, err)
|
||||
|
||||
query := models.GetDefaultDataSourceQuery{OrgId: 10}
|
||||
query := datasources.GetDefaultDataSourceQuery{OrgId: 10}
|
||||
err = sqlStore.GetDefaultDataSource(context.Background(), &query)
|
||||
require.Error(t, err)
|
||||
assert.True(t, errors.Is(err, models.ErrDataSourceNotFound))
|
||||
assert.True(t, errors.Is(err, datasources.ErrDataSourceNotFound))
|
||||
})
|
||||
|
||||
t.Run("should return default datasource if exists", func(t *testing.T) {
|
||||
sqlStore := InitTestDB(t)
|
||||
|
||||
cmd := models.AddDataSourceCommand{
|
||||
cmd := datasources.AddDataSourceCommand{
|
||||
OrgId: 10,
|
||||
Name: "default datasource",
|
||||
Type: models.DS_GRAPHITE,
|
||||
Access: models.DS_ACCESS_DIRECT,
|
||||
Type: datasources.DS_GRAPHITE,
|
||||
Access: datasources.DS_ACCESS_DIRECT,
|
||||
Url: "http://test",
|
||||
IsDefault: true,
|
||||
}
|
||||
@@ -471,7 +472,7 @@ func TestIntegrationGetDefaultDataSource(t *testing.T) {
|
||||
err := sqlStore.AddDataSource(context.Background(), &cmd)
|
||||
require.NoError(t, err)
|
||||
|
||||
query := models.GetDefaultDataSourceQuery{OrgId: 10}
|
||||
query := datasources.GetDefaultDataSourceQuery{OrgId: 10}
|
||||
err = sqlStore.GetDefaultDataSource(context.Background(), &query)
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, "default datasource", query.Result.Name)
|
||||
@@ -479,9 +480,9 @@ func TestIntegrationGetDefaultDataSource(t *testing.T) {
|
||||
|
||||
t.Run("should not return default datasource of other organisation", func(t *testing.T) {
|
||||
sqlStore := InitTestDB(t)
|
||||
query := models.GetDefaultDataSourceQuery{OrgId: 1}
|
||||
query := datasources.GetDefaultDataSourceQuery{OrgId: 1}
|
||||
err := sqlStore.GetDefaultDataSource(context.Background(), &query)
|
||||
require.Error(t, err)
|
||||
assert.True(t, errors.Is(err, models.ErrDataSourceNotFound))
|
||||
assert.True(t, errors.Is(err, datasources.ErrDataSourceNotFound))
|
||||
})
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ import (
|
||||
|
||||
"github.com/grafana/grafana/pkg/components/simplejson"
|
||||
"github.com/grafana/grafana/pkg/models"
|
||||
"github.com/grafana/grafana/pkg/services/datasources"
|
||||
"github.com/grafana/grafana/pkg/services/sqlstore/migrations"
|
||||
"github.com/grafana/grafana/pkg/services/sqlstore/migrations/ualert"
|
||||
"github.com/grafana/grafana/pkg/services/sqlstore/migrator"
|
||||
@@ -556,9 +557,9 @@ func createDashboard(t *testing.T, id int64, orgId int64, uid string) *models.Da
|
||||
}
|
||||
|
||||
// createDatasource creates a ddatasource for inserting into the test database.
|
||||
func createDatasource(t *testing.T, id int64, orgId int64, uid string) *models.DataSource {
|
||||
func createDatasource(t *testing.T, id int64, orgId int64, uid string) *datasources.DataSource {
|
||||
t.Helper()
|
||||
return &models.DataSource{
|
||||
return &datasources.DataSource{
|
||||
Id: id,
|
||||
OrgId: orgId,
|
||||
Uid: uid,
|
||||
@@ -613,7 +614,7 @@ func setupLegacyAlertsTables(t *testing.T, x *xorm.Engine, legacyChannels []*mod
|
||||
require.NoError(t, errDashboards)
|
||||
|
||||
// Setup data_sources.
|
||||
dataSources := []models.DataSource{
|
||||
dataSources := []datasources.DataSource{
|
||||
*createDatasource(t, 1, 1, "ds1-1"),
|
||||
*createDatasource(t, 2, 1, "ds2-1"),
|
||||
*createDatasource(t, 3, 2, "ds3-2"),
|
||||
|
||||
@@ -4,6 +4,7 @@ import (
|
||||
"context"
|
||||
|
||||
"github.com/grafana/grafana/pkg/models"
|
||||
"github.com/grafana/grafana/pkg/services/datasources"
|
||||
"github.com/grafana/grafana/pkg/services/sqlstore"
|
||||
"github.com/grafana/grafana/pkg/services/sqlstore/migrator"
|
||||
)
|
||||
@@ -18,7 +19,7 @@ type SQLStoreMock struct {
|
||||
LatestUserId int64
|
||||
|
||||
ExpectedUser *models.User
|
||||
ExpectedDatasource *models.DataSource
|
||||
ExpectedDatasource *datasources.DataSource
|
||||
ExpectedAlert *models.Alert
|
||||
ExpectedPluginSetting *models.PluginSetting
|
||||
ExpectedDashboards []*models.Dashboard
|
||||
@@ -28,11 +29,11 @@ type SQLStoreMock struct {
|
||||
ExpectedTeamsByUser []*models.TeamDTO
|
||||
ExpectedSearchOrgList []*models.OrgDTO
|
||||
ExpectedSearchUsers models.SearchUserQueryResult
|
||||
ExpectedDatasources []*models.DataSource
|
||||
ExpectedDatasources []*datasources.DataSource
|
||||
ExpectedOrg *models.Org
|
||||
ExpectedSystemStats *models.SystemStats
|
||||
ExpectedDataSourceStats []*models.DataSourceStats
|
||||
ExpectedDataSources []*models.DataSource
|
||||
ExpectedDataSources []*datasources.DataSource
|
||||
ExpectedDataSourcesAccessStats []*models.DataSourceAccessStats
|
||||
ExpectedNotifierUsageStats []*models.NotifierUsageStats
|
||||
ExpectedPersistedDashboards models.HitList
|
||||
@@ -415,35 +416,35 @@ func (m *SQLStoreMock) GetDashboards(ctx context.Context, query *models.GetDashb
|
||||
return m.ExpectedError
|
||||
}
|
||||
|
||||
func (m SQLStoreMock) GetDataSource(ctx context.Context, query *models.GetDataSourceQuery) error {
|
||||
func (m SQLStoreMock) GetDataSource(ctx context.Context, query *datasources.GetDataSourceQuery) error {
|
||||
query.Result = m.ExpectedDatasource
|
||||
return m.ExpectedError
|
||||
}
|
||||
|
||||
func (m *SQLStoreMock) GetDataSources(ctx context.Context, query *models.GetDataSourcesQuery) error {
|
||||
func (m *SQLStoreMock) GetDataSources(ctx context.Context, query *datasources.GetDataSourcesQuery) error {
|
||||
query.Result = m.ExpectedDatasources
|
||||
return m.ExpectedError
|
||||
}
|
||||
|
||||
func (m *SQLStoreMock) GetDataSourcesByType(ctx context.Context, query *models.GetDataSourcesByTypeQuery) error {
|
||||
func (m *SQLStoreMock) GetDataSourcesByType(ctx context.Context, query *datasources.GetDataSourcesByTypeQuery) error {
|
||||
return m.ExpectedError
|
||||
}
|
||||
|
||||
func (m *SQLStoreMock) GetDefaultDataSource(ctx context.Context, query *models.GetDefaultDataSourceQuery) error {
|
||||
func (m *SQLStoreMock) GetDefaultDataSource(ctx context.Context, query *datasources.GetDefaultDataSourceQuery) error {
|
||||
query.Result = m.ExpectedDatasource
|
||||
return m.ExpectedError
|
||||
}
|
||||
|
||||
func (m *SQLStoreMock) DeleteDataSource(ctx context.Context, cmd *models.DeleteDataSourceCommand) error {
|
||||
func (m *SQLStoreMock) DeleteDataSource(ctx context.Context, cmd *datasources.DeleteDataSourceCommand) error {
|
||||
return m.ExpectedError
|
||||
}
|
||||
|
||||
func (m *SQLStoreMock) AddDataSource(ctx context.Context, cmd *models.AddDataSourceCommand) error {
|
||||
func (m *SQLStoreMock) AddDataSource(ctx context.Context, cmd *datasources.AddDataSourceCommand) error {
|
||||
cmd.Result = m.ExpectedDatasource
|
||||
return m.ExpectedError
|
||||
}
|
||||
|
||||
func (m *SQLStoreMock) UpdateDataSource(ctx context.Context, cmd *models.UpdateDataSourceCommand) error {
|
||||
func (m *SQLStoreMock) UpdateDataSource(ctx context.Context, cmd *datasources.UpdateDataSourceCommand) error {
|
||||
cmd.Result = m.ExpectedDatasource
|
||||
return m.ExpectedError
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import (
|
||||
"context"
|
||||
|
||||
"github.com/grafana/grafana/pkg/models"
|
||||
"github.com/grafana/grafana/pkg/services/datasources"
|
||||
"github.com/grafana/grafana/pkg/services/sqlstore/migrator"
|
||||
)
|
||||
|
||||
@@ -88,13 +89,13 @@ type Store interface {
|
||||
GetOrgUsers(ctx context.Context, query *models.GetOrgUsersQuery) error
|
||||
SearchOrgUsers(ctx context.Context, query *models.SearchOrgUsersQuery) error
|
||||
RemoveOrgUser(ctx context.Context, cmd *models.RemoveOrgUserCommand) error
|
||||
GetDataSource(ctx context.Context, query *models.GetDataSourceQuery) error
|
||||
GetDataSources(ctx context.Context, query *models.GetDataSourcesQuery) error
|
||||
GetDataSourcesByType(ctx context.Context, query *models.GetDataSourcesByTypeQuery) error
|
||||
GetDefaultDataSource(ctx context.Context, query *models.GetDefaultDataSourceQuery) error
|
||||
DeleteDataSource(ctx context.Context, cmd *models.DeleteDataSourceCommand) error
|
||||
AddDataSource(ctx context.Context, cmd *models.AddDataSourceCommand) error
|
||||
UpdateDataSource(ctx context.Context, cmd *models.UpdateDataSourceCommand) error
|
||||
GetDataSource(ctx context.Context, query *datasources.GetDataSourceQuery) error
|
||||
GetDataSources(ctx context.Context, query *datasources.GetDataSourcesQuery) error
|
||||
GetDataSourcesByType(ctx context.Context, query *datasources.GetDataSourcesByTypeQuery) error
|
||||
GetDefaultDataSource(ctx context.Context, query *datasources.GetDefaultDataSourceQuery) error
|
||||
DeleteDataSource(ctx context.Context, cmd *datasources.DeleteDataSourceCommand) error
|
||||
AddDataSource(ctx context.Context, cmd *datasources.AddDataSourceCommand) error
|
||||
UpdateDataSource(ctx context.Context, cmd *datasources.UpdateDataSourceCommand) error
|
||||
Migrate(bool) error
|
||||
Sync() error
|
||||
Reset() error
|
||||
|
||||
Reference in New Issue
Block a user