Merge pull request #9960 from zhaoxiangchun/bugfix/zxc-alert-domain-list

fix(monitor): domain view can list scope is domain or project alertrecords; fix nodata alert return info
This commit is contained in:
Zexi Li
2021-01-21 12:44:43 +08:00
committed by GitHub
2 changed files with 27 additions and 0 deletions
+11
View File
@@ -121,6 +121,9 @@ func (man *SCommonAlertManager) ValidateCreateData(
return data, merrors.NewArgIsEmptyErr("metric_query")
} else {
for _, query := range data.CommonMetricInputQuery.MetricQuery {
if query.ConditionType == monitor.METRIC_QUERY_TYPE_NO_DATA {
query.Comparator = "=="
}
if !utils.IsInStringArray(getQueryEvalType(query.Comparator), validators.EvaluatorDefaultTypes) {
return data, httperrors.NewInputParameterError("the Comparator is illegal: %s", query.Comparator)
}
@@ -226,6 +229,10 @@ func (alert *SCommonAlert) CustomizeCreate(
query jsonutils.JSONObject,
data jsonutils.JSONObject,
) error {
err := alert.SMonitorScopedResource.CustomizeCreate(ctx, userCred, ownerId, query, data)
if err != nil {
return err
}
alert.State = string(monitor.AlertStateUnknown)
input := new(monitor.CommonAlertCreateInput)
if err := data.Unmarshal(input); err != nil {
@@ -554,6 +561,7 @@ func getCommonAlertMetricDetailsFromCondition(cond *monitor.AlertCondition,
metricDetails.ConditionType = cond.Type
if metricDetails.ConditionType == monitor.METRIC_QUERY_TYPE_NO_DATA {
metricDetails.ThresholdStr = monitor.METRIC_QUERY_NO_DATA_THESHOLD
metricDetails.Comparator = monitor.METRIC_QUERY_NO_DATA_THESHOLD
}
q := cond.Query
@@ -748,6 +756,9 @@ func (alert *SCommonAlert) ValidateUpdateData(
if err != nil {
return data, errors.Wrap(err, "metric_query Unmarshal error")
}
if query.ConditionType == monitor.METRIC_QUERY_TYPE_NO_DATA {
query.Comparator = "=="
}
if !utils.IsInStringArray(getQueryEvalType(query.Comparator), validators.EvaluatorDefaultTypes) {
return data, httperrors.NewInputParameterError("the Comparator is illegal: %s", query.Comparator)
}
@@ -33,6 +33,22 @@ func (m *SMonitorScopedResourceManager) FilterByOwner(q *sqlchemy.SQuery, userCr
return q
}
func (s *SMonitorScopedResource) CustomizeCreate(ctx context.Context, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, query jsonutils.JSONObject, data jsonutils.JSONObject) error {
scope, _ := data.GetString("scope")
switch rbacutils.TRbacScope(scope) {
case rbacutils.ScopeSystem:
s.DomainId = ""
s.ProjectId = ""
case rbacutils.ScopeDomain:
s.DomainId = ownerId.GetProjectDomainId()
s.ProjectId = ""
case rbacutils.ScopeProject:
s.DomainId = ownerId.GetProjectDomainId()
s.ProjectId = ownerId.GetProjectId()
}
return nil
}
func (manager *SMonitorScopedResourceManager) ResourceScope() rbacutils.TRbacScope {
return manager.SScopedResourceBaseManager.ResourceScope()
}