diff --git a/conf/provisioning/datasources/custom.yaml b/conf/provisioning/datasources/sample.yaml similarity index 97% rename from conf/provisioning/datasources/custom.yaml rename to conf/provisioning/datasources/sample.yaml index 2a02707a2ee..1bb9cb53b45 100644 --- a/conf/provisioning/datasources/custom.yaml +++ b/conf/provisioning/datasources/sample.yaml @@ -1,11 +1,11 @@ # # list of datasources that should be deleted from the database -# delete_datasources: +#delete_datasources: # - name: Graphite # org_id: 1 # # list of datasources to insert/update depending # # whats available in the datbase -# datasources: +#datasources: # # name of the datasource. Required # - name: Graphite # # datasource type. Required diff --git a/pkg/services/provisioning/dashboards/dashboard_test.go b/pkg/services/provisioning/dashboards/config_reader_test.go similarity index 78% rename from pkg/services/provisioning/dashboards/dashboard_test.go rename to pkg/services/provisioning/dashboards/config_reader_test.go index e9ab352a122..657c0045e3a 100644 --- a/pkg/services/provisioning/dashboards/dashboard_test.go +++ b/pkg/services/provisioning/dashboards/config_reader_test.go @@ -8,6 +8,7 @@ import ( var ( simpleDashboardConfig string = "./test-configs/dashboards-from-disk" + brokenConfigs string = "./test-configs/borken-configs" ) func TestDashboardsAsConfig(t *testing.T) { @@ -45,5 +46,17 @@ func TestDashboardsAsConfig(t *testing.T) { So(len(ds2.Options), ShouldEqual, 1) So(ds2.Options["folder"], ShouldEqual, "/var/lib/grafana/dashboards") }) + + Convey("Should skip broken config files", func() { + + cfgProvifer := configReader{path: brokenConfigs} + cfg, err := cfgProvifer.readConfig() + if err != nil { + t.Fatalf("readConfig return an error %v", err) + } + + So(len(cfg), ShouldEqual, 0) + + }) }) } diff --git a/pkg/services/provisioning/dashboards/test-configs/broken-configs/commented.yaml b/pkg/services/provisioning/dashboards/test-configs/broken-configs/commented.yaml new file mode 100644 index 00000000000..e40612af508 --- /dev/null +++ b/pkg/services/provisioning/dashboards/test-configs/broken-configs/commented.yaml @@ -0,0 +1,6 @@ +# - name: 'default' +# org_id: 1 +# folder: '' +# type: file +# options: +# folder: /var/lib/grafana/dashboards diff --git a/pkg/services/provisioning/datasources/datasources.go b/pkg/services/provisioning/datasources/datasources.go index 325dbbbd757..ce631c565d4 100644 --- a/pkg/services/provisioning/datasources/datasources.go +++ b/pkg/services/provisioning/datasources/datasources.go @@ -118,13 +118,19 @@ func (configReader) readConfig(path string) ([]*DatasourcesAsConfig, error) { return nil, err } - datasources = append(datasources, datasource) + if datasource != nil { + datasources = append(datasources, datasource) + } } } defaultCount := 0 - for _, cfg := range datasources { - for _, ds := range cfg.Datasources { + for i := range datasources { + if datasources[i].Datasources == nil { + continue + } + + for _, ds := range datasources[i].Datasources { if ds.OrgId == 0 { ds.OrgId = 1 } @@ -137,7 +143,7 @@ func (configReader) readConfig(path string) ([]*DatasourcesAsConfig, error) { } } - for _, ds := range cfg.DeleteDatasources { + for _, ds := range datasources[i].DeleteDatasources { if ds.OrgId == 0 { ds.OrgId = 1 } diff --git a/pkg/services/provisioning/datasources/test-configs/broken-yaml/commented.yaml b/pkg/services/provisioning/datasources/test-configs/broken-yaml/commented.yaml new file mode 100644 index 00000000000..1bb9cb53b45 --- /dev/null +++ b/pkg/services/provisioning/datasources/test-configs/broken-yaml/commented.yaml @@ -0,0 +1,48 @@ +# # list of datasources that should be deleted from the database +#delete_datasources: +# - name: Graphite +# org_id: 1 + +# # list of datasources to insert/update depending +# # whats available in the datbase +#datasources: +# # name of the datasource. Required +# - name: Graphite +# # datasource type. Required +# type: graphite +# # access mode. direct or proxy. Required +# access: proxy +# # org id. will default to org_id 1 if not specified +# org_id: 1 +# # url +# url: http://localhost:8080 +# # database password, if used +# password: +# # database user, if used +# user: +# # database name, if used +# database: +# # enable/disable basic auth +# basic_auth: +# # basic auth username +# basic_auth_user: +# # basic auth password +# basic_auth_password: +# # enable/disable with credentials headers +# with_credentials: +# # mark as default datasource. Max one per org +# is_default: +# # fields that will be converted to json and stored in json_data +# json_data: +# graphiteVersion: "1.1" +# tlsAuth: true +# tlsAuthWithCACert: true +# # json object of data that will be encrypted. +# secure_json_data: +# tlsCACert: "..." +# tlsClientCert: "..." +# tlsClientKey: "..." +# version: 1 +# # allow users to edit datasources from the UI. +# editable: false +