AlertingNG/SSE: Datasource UID and UID/ID only (drop name) (#33039)

SSE still will support ID until dashboard/frontend always requests UID
update *.http examples

Co-authored-by: gotjosh <josue@grafana.com>
This commit is contained in:
Kyle Brandt 2021-04-16 09:29:19 -04:00 committed by GitHub
parent 5d1ec39224
commit 2c862678ab
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 40 additions and 71 deletions

View File

@ -134,9 +134,14 @@ func (s *Service) buildGraph(req *backend.QueryDataRequest) (*simple.DirectedGra
return nil, err
}
dsUID, err := rn.GetDatasourceUid()
if err != nil {
return nil, err
}
var node graph.Node
switch dsName {
case DatasourceName:
switch {
case dsName == DatasourceName || dsUID == DatasourceUID:
node, err = buildCMDNode(dp, rn)
default: // If it's not an expression query, it's a data source query.
node, err = s.buildDSNode(dp, rn, req.PluginContext.OrgID)

View File

@ -30,7 +30,7 @@ type rawNode struct {
func (rn *rawNode) GetDatasourceName() (string, error) {
rawDs, ok := rn.Query["datasource"]
if !ok {
return "", fmt.Errorf("no datasource in query for refId %v", rn.RefID)
return "", nil
}
dsName, ok := rawDs.(string)
if !ok {
@ -39,6 +39,18 @@ func (rn *rawNode) GetDatasourceName() (string, error) {
return dsName, nil
}
func (rn *rawNode) GetDatasourceUid() (string, error) {
rawDs, ok := rn.Query["datasourceUid"]
if !ok {
return "", nil
}
dsUID, ok := rawDs.(string)
if !ok {
return "", fmt.Errorf("expected datasource identifier to be a string, got %T", rawDs)
}
return dsUID, nil
}
func (rn *rawNode) GetCommandType() (c CommandType, err error) {
rawType, ok := rn.Query["type"]
if !ok {

View File

@ -240,14 +240,14 @@ func (dc *dashConditionsJSON) GetNew(orgID int64) (*ngmodels.Condition, error) {
ngCond.OrgID = orgID
exprModel := struct {
Type string `json:"type"`
RefID string `json:"refId"`
Datasource string `json:"datasource"`
Conditions []classic.ClassicConditionJSON `json:"conditions"`
Type string `json:"type"`
RefID string `json:"refId"`
DatasourceUID string `json:"datasourceUid"`
Conditions []classic.ClassicConditionJSON `json:"conditions"`
}{
"classic_conditions",
ccRefID,
"__expr__",
expr.DatasourceUID,
conditions,
}

View File

@ -77,7 +77,6 @@ content-type: application/json
"to": 10800
},
"model": {
"datasource": "gdev-prometheus",
"datasourceUid": "000000002",
"expr": "http_request_duration_microseconds_count",
"hide": false,
@ -96,7 +95,6 @@ content-type: application/json
"to": 10800
},
"model": {
"datasource": "__expr__",
"datasourceUid": "-100",
"expression": "query",
"hide": false,
@ -115,7 +113,6 @@ content-type: application/json
"to": 10800
},
"model": {
"datasource": "__expr__",
"datasourceUid": "-100",
"expression": "$reduced > 10",
"hide": false,
@ -162,7 +159,6 @@ content-type: application/json
"to": 10800
},
"model": {
"datasource": "gdev-prometheus",
"datasourceUid": "000000002",
"expr": "http_request_duration_microseconds_count",
"hide": false,
@ -181,7 +177,6 @@ content-type: application/json
"to": 10800
},
"model": {
"datasource": "__expr__",
"datasourceUid": "-100",
"expression": "query",
"hide": false,
@ -200,7 +195,6 @@ content-type: application/json
"to": 10800
},
"model": {
"datasource": "__expr__",
"datasourceUid": "-100",
"expression": "$reduced > 42",
"hide": false,

View File

@ -100,7 +100,6 @@ content-type: application/json
"to": 10800
},
"model": {
"datasource": "__expr__",
"datasourceUid": "-100",
"expression": "query",
"hide": false,
@ -119,7 +118,6 @@ content-type: application/json
"to": 10800
},
"model": {
"datasource": "__expr__",
"datasourceUid": "-100",
"expression": "$reduced > 10",
"hide": false,
@ -170,7 +168,6 @@ content-type: application/json
"to": 10800
},
"model": {
"datasource": "gdev-prometheus",
"datasourceUid": "000000002",
"expr": "http_request_duration_microseconds_count",
"hide": false,
@ -189,7 +186,6 @@ content-type: application/json
"to": 10800
},
"model": {
"datasource": "__expr__",
"datasourceUid": "-100",
"expression": "query",
"hide": false,
@ -208,7 +204,6 @@ content-type: application/json
"to": 10800
},
"model": {
"datasource": "__expr__",
"datasourceUid": "-100",
"expression": "$reduced > 42",
"hide": false,
@ -272,7 +267,6 @@ Content-Type: application/json
"to": 10800
},
"model": {
"datasource": "gdev-prometheus",
"datasourceUid": "000000002",
"expr": "http_request_duration_microseconds_count",
"hide": false,
@ -291,7 +285,6 @@ Content-Type: application/json
"to": 10800
},
"model": {
"datasource": "__expr__",
"datasourceUid": "-100",
"expression": "query",
"hide": false,
@ -310,7 +303,6 @@ Content-Type: application/json
"to": 10800
},
"model": {
"datasource": "__expr__",
"datasourceUid": "-100",
"expression": "$reduced > 42",
"hide": false,

View File

@ -16,7 +16,7 @@ content-type: application/json
"to": 10800
},
"model": {
"datasource": "__expr__",
"datasourceUid": "-100",
"type":"math",
"expression":"1 < 2"
}
@ -68,7 +68,7 @@ content-type: application/json
"to": 10800
},
"model": {
"datasource": "__expr__",
"datasourceUid": "-100",
"type":"math",
"expression":"1 < 2"
}

View File

@ -86,8 +86,8 @@ func (aq *AlertQuery) setModelProps() error {
return nil
}
// setDatasource sets DatasourceID.
// If it's an expression sets DefaultExprDatasourceID.
// setDatasource sets DatasourceUID.
// If it's an expression sets DefaultExprDatasourceUID.
func (aq *AlertQuery) setDatasource() error {
if aq.modelProps == nil {
err := aq.setModelProps()
@ -96,17 +96,6 @@ func (aq *AlertQuery) setDatasource() error {
}
}
dsName, ok := aq.modelProps["datasource"]
if !ok {
return fmt.Errorf("failed to get datasource from query model")
}
if dsName == expr.DatasourceName {
aq.DatasourceUID = expr.DatasourceUID
aq.modelProps["datasourceUid"] = expr.DatasourceUID
return nil
}
i, ok := aq.modelProps["datasourceUid"]
if !ok {
return fmt.Errorf("failed to get datasourceUid from query model")

View File

@ -27,13 +27,12 @@ func TestAlertQuery(t *testing.T) {
alertQuery: AlertQuery{
RefID: "A",
Model: json.RawMessage(`{
"datasource": "__expr__",
"datasourceUid": "-100",
"queryType": "metricQuery",
"extraParam": "some text"
}`),
},
expectedIsExpression: true,
expectedDatasource: expr.DatasourceName,
expectedDatasourceUID: expr.DatasourceUID,
expectedMaxPoints: int64(defaultMaxDataPoints),
expectedIntervalMS: int64(defaultIntervalMS),
@ -43,14 +42,12 @@ func TestAlertQuery(t *testing.T) {
alertQuery: AlertQuery{
RefID: "A",
Model: json.RawMessage(`{
"datasource": "my datasource",
"datasourceUid": "000000001",
"queryType": "metricQuery",
"extraParam": "some text"
}`),
},
expectedIsExpression: false,
expectedDatasource: "my datasource",
expectedDatasourceUID: "000000001",
expectedMaxPoints: int64(defaultMaxDataPoints),
expectedIntervalMS: int64(defaultIntervalMS),
@ -60,7 +57,6 @@ func TestAlertQuery(t *testing.T) {
alertQuery: AlertQuery{
RefID: "A",
Model: json.RawMessage(`{
"datasource": "my datasource",
"datasourceUid": "000000001",
"queryType": "metricQuery",
"maxDataPoints": 200,
@ -68,7 +64,6 @@ func TestAlertQuery(t *testing.T) {
}`),
},
expectedIsExpression: false,
expectedDatasource: "my datasource",
expectedDatasourceUID: "000000001",
expectedMaxPoints: 200,
expectedIntervalMS: int64(defaultIntervalMS),
@ -78,7 +73,6 @@ func TestAlertQuery(t *testing.T) {
alertQuery: AlertQuery{
RefID: "A",
Model: json.RawMessage(`{
"datasource": "my datasource",
"datasourceUid": "000000001",
"queryType": "metricQuery",
"maxDataPoints": "invalid",
@ -86,7 +80,6 @@ func TestAlertQuery(t *testing.T) {
}`),
},
expectedIsExpression: false,
expectedDatasource: "my datasource",
expectedDatasourceUID: "000000001",
expectedMaxPoints: int64(defaultMaxDataPoints),
expectedIntervalMS: int64(defaultIntervalMS),
@ -96,7 +89,6 @@ func TestAlertQuery(t *testing.T) {
alertQuery: AlertQuery{
RefID: "A",
Model: json.RawMessage(`{
"datasource": "my datasource",
"datasourceUid": "000000001",
"queryType": "metricQuery",
"maxDataPoints": 0,
@ -104,7 +96,6 @@ func TestAlertQuery(t *testing.T) {
}`),
},
expectedIsExpression: false,
expectedDatasource: "my datasource",
expectedDatasourceUID: "000000001",
expectedMaxPoints: int64(defaultMaxDataPoints),
expectedIntervalMS: int64(defaultIntervalMS),
@ -114,7 +105,6 @@ func TestAlertQuery(t *testing.T) {
alertQuery: AlertQuery{
RefID: "A",
Model: json.RawMessage(`{
"datasource": "my datasource",
"datasourceUid": "000000001",
"queryType": "metricQuery",
"intervalMs": 2000,
@ -122,7 +112,6 @@ func TestAlertQuery(t *testing.T) {
}`),
},
expectedIsExpression: false,
expectedDatasource: "my datasource",
expectedDatasourceUID: "000000001",
expectedMaxPoints: int64(defaultMaxDataPoints),
expectedIntervalMS: 2000,
@ -132,7 +121,6 @@ func TestAlertQuery(t *testing.T) {
alertQuery: AlertQuery{
RefID: "A",
Model: json.RawMessage(`{
"datasource": "my datasource",
"datasourceUid": "000000001",
"queryType": "metricQuery",
"intervalMs": "invalid",
@ -140,7 +128,6 @@ func TestAlertQuery(t *testing.T) {
}`),
},
expectedIsExpression: false,
expectedDatasource: "my datasource",
expectedDatasourceUID: "000000001",
expectedMaxPoints: int64(defaultMaxDataPoints),
expectedIntervalMS: int64(defaultIntervalMS),
@ -150,7 +137,6 @@ func TestAlertQuery(t *testing.T) {
alertQuery: AlertQuery{
RefID: "A",
Model: json.RawMessage(`{
"datasource": "my datasource",
"datasourceUid": "000000001",
"queryType": "metricQuery",
"intervalMs": 0,
@ -158,7 +144,6 @@ func TestAlertQuery(t *testing.T) {
}`),
},
expectedIsExpression: false,
expectedDatasource: "my datasource",
expectedDatasourceUID: "000000001",
expectedMaxPoints: int64(defaultMaxDataPoints),
expectedIntervalMS: int64(defaultIntervalMS),
@ -204,13 +189,7 @@ func TestAlertQuery(t *testing.T) {
err = json.Unmarshal(blob, &model)
require.NoError(t, err)
i, ok := model["datasource"]
require.True(t, ok)
datasource, ok := i.(string)
require.True(t, ok)
require.Equal(t, tc.expectedDatasource, datasource)
i, ok = model["datasourceUid"]
i, ok := model["datasourceUid"]
require.True(t, ok)
datasourceUID, ok := i.(string)
require.True(t, ok)

View File

@ -88,7 +88,7 @@ func TestCreatingAlertDefinition(t *testing.T) {
Data: []models.AlertQuery{
{
Model: json.RawMessage(`{
"datasource": "__expr__",
"datasourceUid": "-100",
"type":"math",
"expression":"2 + 3 > 1"
}`),
@ -129,7 +129,7 @@ func TestCreatingConflictionAlertDefinition(t *testing.T) {
Data: []models.AlertQuery{
{
Model: json.RawMessage(`{
"datasource": "__expr__",
"datasourceUid": "-100",
"type":"math",
"expression":"2 + 3 > 1"
}`),
@ -167,7 +167,7 @@ func TestUpdatingAlertDefinition(t *testing.T) {
Data: []models.AlertQuery{
{
Model: json.RawMessage(`{
"datasource": "__expr__",
"datasourceUid": "-100",
"type":"math",
"expression":"2 + 2 > 1"
}`),
@ -257,7 +257,7 @@ func TestUpdatingAlertDefinition(t *testing.T) {
Data: []models.AlertQuery{
{
Model: json.RawMessage(`{
"datasource": "__expr__",
"datasourceUid": "-100",
"type":"math",
"expression":"2 + 3 > 1"
}`),
@ -341,7 +341,7 @@ func TestUpdatingConflictingAlertDefinition(t *testing.T) {
Data: []models.AlertQuery{
{
Model: json.RawMessage(`{
"datasource": "__expr__",
"datasourceUid": "-100",
"type":"math",
"expression":"2 + 3 > 1"
}`),
@ -430,7 +430,7 @@ func createTestAlertDefinition(t *testing.T, dbstore *store.DBstore, intervalSec
Data: []models.AlertQuery{
{
Model: json.RawMessage(`{
"datasource": "__expr__",
"datasourceUid": "-100",
"type":"math",
"expression":"2 + 2 > 1"
}`),

View File

@ -83,7 +83,7 @@ func createTestAlertRule(t *testing.T, dbstore *store.DBstore, intervalSeconds i
Data: []models.AlertQuery{
{
Model: json.RawMessage(`{
"datasource": "__expr__",
"datasourceUid": "-100",
"type":"math",
"expression":"2 + 2 > 1"
}`),

View File

@ -91,7 +91,7 @@ func TestAlertRuleCRUD(t *testing.T) {
To: ngmodels.Duration(time.Duration(3) * time.Hour),
},
Model: json.RawMessage(`{
"datasource": "__expr__",
"datasourceUid": "-100",
"type": "math",
"expression": "2 + 3 > 1"
}`),
@ -112,7 +112,7 @@ func TestAlertRuleCRUD(t *testing.T) {
To: ngmodels.Duration(time.Duration(3) * time.Hour),
},
Model: json.RawMessage(`{
"datasource": "__expr__",
"datasourceUid": "-100",
"type": "math",
"expression": "2 + 3 > 1"
}`),
@ -180,7 +180,6 @@ func TestAlertRuleCRUD(t *testing.T) {
"to":10800
},
"model":{
"datasource":"__expr__",
"datasourceUid":"-100",
"expression":"2 + 3 \u003e 1",
"intervalMs":1000,
@ -216,7 +215,6 @@ func TestAlertRuleCRUD(t *testing.T) {
"to":10800
},
"model":{
"datasource":"__expr__",
"datasourceUid":"-100",
"expression":"2 + 3 \u003e 1",
"intervalMs":1000,