From 0f136a940c4fcaab4c8812751ee90eb9aaadd596 Mon Sep 17 00:00:00 2001 From: bergquist Date: Thu, 26 Oct 2017 14:23:31 +0200 Subject: [PATCH] datasource as cfg: enable editable ds's --- conf/datasources.yaml | 4 ++++ pkg/services/provisioning/datasources/datasources_test.go | 1 + .../datasources/test-configs/all-properties.yaml | 1 + pkg/services/provisioning/datasources/types.go | 5 +++-- pkg/services/sqlstore/datasource.go | 1 + pkg/services/sqlstore/datasource_test.go | 2 ++ 6 files changed, 12 insertions(+), 2 deletions(-) diff --git a/conf/datasources.yaml b/conf/datasources.yaml index f39972a9dd6..07d1246cccc 100644 --- a/conf/datasources.yaml +++ b/conf/datasources.yaml @@ -39,6 +39,10 @@ datasources: # # including this value garantees that instance with old configs cannot # # overwrite your last change. # version: 1 +# # allow users to edit datasources from the UI. +# editable: true + + # - name: Prometheus # type: prometheus # access: proxy diff --git a/pkg/services/provisioning/datasources/datasources_test.go b/pkg/services/provisioning/datasources/datasources_test.go index edd93716018..7174a966da8 100644 --- a/pkg/services/provisioning/datasources/datasources_test.go +++ b/pkg/services/provisioning/datasources/datasources_test.go @@ -137,6 +137,7 @@ func TestDatasourceAsConfig(t *testing.T) { So(ds.BasicAuthPassword, ShouldEqual, "basic_auth_password") So(ds.WithCredentials, ShouldBeTrue) So(ds.IsDefault, ShouldBeTrue) + So(ds.Editable, ShouldBeTrue) }) }) } diff --git a/pkg/services/provisioning/datasources/test-configs/all-properties.yaml b/pkg/services/provisioning/datasources/test-configs/all-properties.yaml index e818f22c4d8..1fe2b75da08 100644 --- a/pkg/services/provisioning/datasources/test-configs/all-properties.yaml +++ b/pkg/services/provisioning/datasources/test-configs/all-properties.yaml @@ -15,3 +15,4 @@ datasources: is_default: true json_data: '{"graphiteVersion":"0.9"}' secure_json_fields: '' + editable: true diff --git a/pkg/services/provisioning/datasources/types.go b/pkg/services/provisioning/datasources/types.go index 6da5650b65d..98a5ab515b3 100644 --- a/pkg/services/provisioning/datasources/types.go +++ b/pkg/services/provisioning/datasources/types.go @@ -26,6 +26,7 @@ type DataSourceFromConfig struct { IsDefault bool `json:"is_default" yaml:"is_default"` JsonData string `json:"json_data" yaml:"json_data"` SecureJsonData map[string]string `json:"secure_json_data" yaml:"secure_json_data"` + Editable bool `json:"editable" yaml:"editable"` } func createInsertCommand(ds DataSourceFromConfig) *models.AddDataSourceCommand { @@ -50,7 +51,7 @@ func createInsertCommand(ds DataSourceFromConfig) *models.AddDataSourceCommand { IsDefault: ds.IsDefault, JsonData: jsonData, SecureJsonData: ds.SecureJsonData, - ReadOnly: true, + ReadOnly: !ds.Editable, } } @@ -77,6 +78,6 @@ func createUpdateCommand(ds DataSourceFromConfig, id int64) *models.UpdateDataSo IsDefault: ds.IsDefault, JsonData: jsonData, SecureJsonData: ds.SecureJsonData, - ReadOnly: true, + ReadOnly: !ds.Editable, } } diff --git a/pkg/services/sqlstore/datasource.go b/pkg/services/sqlstore/datasource.go index 8a3a22c2bef..d29dfdbe76b 100644 --- a/pkg/services/sqlstore/datasource.go +++ b/pkg/services/sqlstore/datasource.go @@ -159,6 +159,7 @@ func UpdateDataSource(cmd *m.UpdateDataSourceCommand) error { sess.UseBool("is_default") sess.UseBool("basic_auth") sess.UseBool("with_credentials") + sess.UseBool("read_only") var updateSession *xorm.Session if cmd.Version != 0 { diff --git a/pkg/services/sqlstore/datasource_test.go b/pkg/services/sqlstore/datasource_test.go index f7a0ab7c1e2..135867cf0f5 100644 --- a/pkg/services/sqlstore/datasource_test.go +++ b/pkg/services/sqlstore/datasource_test.go @@ -45,6 +45,7 @@ func TestDataAccess(t *testing.T) { Access: m.DS_ACCESS_DIRECT, Url: "http://test", Database: "site", + ReadOnly: true, }) So(err, ShouldBeNil) @@ -59,6 +60,7 @@ func TestDataAccess(t *testing.T) { So(ds.OrgId, ShouldEqual, 10) So(ds.Database, ShouldEqual, "site") + So(ds.ReadOnly, ShouldBeTrue) }) Convey("Given a datasource", func() {