Ver código fonte

mysql: improved mysql data source, added test feature when adding data source, fixed cache issue

Torkel Ödegaard 8 anos atrás
pai
commit
4ce0bf4d16

+ 3 - 1
pkg/api/datasources.go

@@ -149,8 +149,8 @@ func fillWithSecureJsonData(cmd *m.UpdateDataSourceCommand) error {
 	if err != nil {
 		return err
 	}
-	secureJsonData := ds.SecureJsonData.Decrypt()
 
+	secureJsonData := ds.SecureJsonData.Decrypt()
 	for k, v := range secureJsonData {
 
 		if _, ok := cmd.SecureJsonData[k]; !ok {
@@ -158,6 +158,8 @@ func fillWithSecureJsonData(cmd *m.UpdateDataSourceCommand) error {
 		}
 	}
 
+	// set version from db
+	cmd.Version = ds.Version
 	return nil
 }
 

+ 3 - 2
pkg/models/datasource.go

@@ -116,8 +116,9 @@ type UpdateDataSourceCommand struct {
 	JsonData          *simplejson.Json  `json:"jsonData"`
 	SecureJsonData    map[string]string `json:"secureJsonData"`
 
-	OrgId int64 `json:"-"`
-	Id    int64 `json:"-"`
+	OrgId   int64 `json:"-"`
+	Id      int64 `json:"-"`
+	Version int   `json:"-"`
 }
 
 type DeleteDataSourceByIdCommand struct {

+ 1 - 0
pkg/services/sqlstore/datasource.go

@@ -141,6 +141,7 @@ func UpdateDataSource(cmd *m.UpdateDataSourceCommand) error {
 			JsonData:          cmd.JsonData,
 			SecureJsonData:    securejsondata.GetEncryptedJsonData(cmd.SecureJsonData),
 			Updated:           time.Now(),
+			Version:           cmd.Version + 1,
 		}
 
 		sess.UseBool("is_default")

+ 28 - 0
public/app/plugins/datasource/mysql/datasource.ts

@@ -52,6 +52,34 @@ export class MysqlDatasource {
     }).then(this.processQueryResult.bind(this));
   }
 
+  testDatasource() {
+    return this.backendSrv.datasourceRequest({
+      url: '/api/tsdb/query',
+      method: 'POST',
+      data: {
+        from: '5m',
+        to: 'now',
+        queries: [{
+          refId: 'A',
+          intervalMs: 1,
+          maxDataPoints: 1,
+          datasourceId: this.id,
+          rawSql: "SELECT 1",
+          format: 'table',
+        }],
+      }
+    }).then(res => {
+      return { status: "success", message: "Database Connection OK", title: "Success" };
+    }).catch(err => {
+      console.log(err);
+      if (err.data && err.data.message) {
+        return { status: "error", message: err.data.message, title: "Error" };
+      } else {
+        return { status: "error", message: err.status, title: "Error" };
+      }
+    });
+  }
+
   processQueryResult(res) {
     var data = [];