SSE: Add functions that determine NodeType by UID and construct a data source struct from NodeType (#70106)
* add NodeTypeFromDatasourceUID and DataSourceModelFromNodeType() * deprecate expr.DataSourceModel * replace usages of IsDataSource to NodeTypeFromDatasourceUID * replace usages of DataSourceModel to DataSourceModelFromNodeType()
This commit is contained in:
@@ -269,13 +269,14 @@ func getExprRequest(ctx EvaluationContext, data []models.AlertQuery, dsCacheServ
|
||||
|
||||
ds, ok := datasources[q.DatasourceUID]
|
||||
if !ok {
|
||||
if expr.IsDataSource(q.DatasourceUID) {
|
||||
ds = expr.DataSourceModel()
|
||||
} else {
|
||||
switch nodeType := expr.NodeTypeFromDatasourceUID(q.DatasourceUID); nodeType {
|
||||
case expr.TypeCMDNode:
|
||||
ds, err = expr.DataSourceModelFromNodeType(nodeType)
|
||||
case expr.TypeDatasourceNode:
|
||||
ds, err = dsCacheService.GetDatasourceByUID(ctx.Ctx, q.DatasourceUID, ctx.User, false /*skipCache*/)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to build query '%s': %w", q.RefID, err)
|
||||
}
|
||||
}
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to build query '%s': %w", q.RefID, err)
|
||||
}
|
||||
datasources[q.DatasourceUID] = ds
|
||||
}
|
||||
@@ -621,7 +622,7 @@ func (e *evaluatorImpl) Validate(ctx EvaluationContext, condition models.Conditi
|
||||
return err
|
||||
}
|
||||
for _, query := range req.Queries {
|
||||
if query.DataSource == nil || expr.IsDataSource(query.DataSource.UID) {
|
||||
if query.DataSource == nil || expr.NodeTypeFromDatasourceUID(query.DataSource.UID) != expr.TypeDatasourceNode {
|
||||
continue
|
||||
}
|
||||
p, found := e.pluginsStore.Plugin(ctx.Ctx, query.DataSource.Type)
|
||||
|
||||
@@ -113,7 +113,7 @@ func (aq *AlertQuery) setModelProps() error {
|
||||
|
||||
// IsExpression returns true if the alert query is an expression.
|
||||
func (aq *AlertQuery) IsExpression() (bool, error) {
|
||||
return expr.IsDataSource(aq.DatasourceUID), nil
|
||||
return expr.NodeTypeFromDatasourceUID(aq.DatasourceUID) == expr.TypeCMDNode, nil
|
||||
}
|
||||
|
||||
// setMaxDatapoints sets the model maxDataPoints if it's missing or invalid
|
||||
|
||||
@@ -269,7 +269,7 @@ func (s *ServiceImpl) parseMetricRequest(ctx context.Context, user *user.SignedI
|
||||
}
|
||||
|
||||
datasourcesByUid[ds.UID] = ds
|
||||
if expr.IsDataSource(ds.UID) {
|
||||
if expr.NodeTypeFromDatasourceUID(ds.UID) != expr.TypeDatasourceNode {
|
||||
req.hasExpression = true
|
||||
} else {
|
||||
req.dsTypes[ds.Type] = true
|
||||
@@ -321,8 +321,8 @@ func (s *ServiceImpl) getDataSourceFromQuery(ctx context.Context, user *user.Sig
|
||||
return ds, nil
|
||||
}
|
||||
|
||||
if expr.IsDataSource(uid) {
|
||||
return expr.DataSourceModel(), nil
|
||||
if kind := expr.NodeTypeFromDatasourceUID(uid); kind != expr.TypeDatasourceNode {
|
||||
return expr.DataSourceModelFromNodeType(kind)
|
||||
}
|
||||
|
||||
if uid == grafanads.DatasourceUID {
|
||||
|
||||
Reference in New Issue
Block a user