From 572e45968deac54c91555fec88a9a5cd081af3a0 Mon Sep 17 00:00:00 2001 From: Yousong Zhou Date: Wed, 23 Sep 2020 17:23:47 +0800 Subject: [PATCH] monitor: error fmt --- pkg/monitor/errors/doc.go | 1 + pkg/monitor/errors/error.go | 9 +++++++++ pkg/monitor/models/alertdashboard.go | 3 ++- pkg/monitor/models/commonalert.go | 9 +++++---- pkg/monitor/models/datasource.go | 11 ++++++----- pkg/monitor/models/meteralert.go | 3 ++- pkg/monitor/models/nodealert.go | 7 ++++--- pkg/monitor/models/notification.go | 3 ++- pkg/monitor/models/suggestsysalert.go | 5 +++-- pkg/monitor/models/suggestsysrule.go | 5 +++-- pkg/monitor/models/suggestsysruleconfig.go | 2 +- pkg/monitor/models/unifiedmonitor.go | 3 ++- .../suggestsysdrivers/influxdbbasedriver.go | 16 +++++++--------- pkg/monitor/validators/validators.go | 11 ++++++----- 14 files changed, 53 insertions(+), 35 deletions(-) create mode 100644 pkg/monitor/errors/doc.go create mode 100644 pkg/monitor/errors/error.go diff --git a/pkg/monitor/errors/doc.go b/pkg/monitor/errors/doc.go new file mode 100644 index 00000000000..c72e8c8faeb --- /dev/null +++ b/pkg/monitor/errors/doc.go @@ -0,0 +1 @@ +package errors // import "yunion.io/x/onecloud/pkg/monitor/errors" diff --git a/pkg/monitor/errors/error.go b/pkg/monitor/errors/error.go new file mode 100644 index 00000000000..1fc5445d999 --- /dev/null +++ b/pkg/monitor/errors/error.go @@ -0,0 +1,9 @@ +package errors + +import ( + "yunion.io/x/onecloud/pkg/httperrors" +) + +func NewArgIsEmptyErr(name string) error { + return httperrors.NewInputParameterError("parameter %s is empty", name) +} diff --git a/pkg/monitor/models/alertdashboard.go b/pkg/monitor/models/alertdashboard.go index 123ec77bbd2..dcf5411904e 100644 --- a/pkg/monitor/models/alertdashboard.go +++ b/pkg/monitor/models/alertdashboard.go @@ -13,6 +13,7 @@ import ( "yunion.io/x/onecloud/pkg/cloudcommon/db" "yunion.io/x/onecloud/pkg/httperrors" "yunion.io/x/onecloud/pkg/mcclient" + merrors "yunion.io/x/onecloud/pkg/monitor/errors" "yunion.io/x/onecloud/pkg/monitor/validators" "yunion.io/x/onecloud/pkg/util/rbacutils" "yunion.io/x/onecloud/pkg/util/stringutils2" @@ -95,7 +96,7 @@ func (man *SAlertDashBoardManager) ValidateCreateData( } } if len(data.CommonMetricInputQuery.MetricQuery) == 0 { - return data, httperrors.NewInputParameterError("metric_query is empty") + return data, merrors.NewArgIsEmptyErr("metric_query") } else { for _, query := range data.CommonMetricInputQuery.MetricQuery { if len(query.Comparator) != 0 { diff --git a/pkg/monitor/models/commonalert.go b/pkg/monitor/models/commonalert.go index aa2b4133f19..b940a3c7eaf 100644 --- a/pkg/monitor/models/commonalert.go +++ b/pkg/monitor/models/commonalert.go @@ -18,6 +18,7 @@ import ( "yunion.io/x/onecloud/pkg/cloudcommon/db" "yunion.io/x/onecloud/pkg/httperrors" "yunion.io/x/onecloud/pkg/mcclient" + merrors "yunion.io/x/onecloud/pkg/monitor/errors" "yunion.io/x/onecloud/pkg/monitor/validators" "yunion.io/x/onecloud/pkg/util/rbacutils" "yunion.io/x/onecloud/pkg/util/stringutils2" @@ -77,10 +78,10 @@ func (man *SCommonAlertManager) ValidateCreateData( data.Period = "5m" } if data.Name == "" { - return data, httperrors.NewInputParameterError("name is empty") + return data, merrors.NewArgIsEmptyErr("name") } if data.Level == "" { - return data, httperrors.NewInputParameterError("level is empty") + return data, merrors.NewArgIsEmptyErr("level") } if len(data.Channel) == 0 { data.Channel = []string{monitor.DEFAULT_SEND_NOTIFY_CHANNEL} @@ -95,11 +96,11 @@ func (man *SCommonAlertManager) ValidateCreateData( } // 默认的系统配置Recipients=commonalert-default if data.AlertType != monitor.CommonAlertSystemAlertType && len(data.Recipients) == 0 { - return data, httperrors.NewInputParameterError("recipients is empty") + return data, merrors.NewArgIsEmptyErr("recipients") } if len(data.CommonMetricInputQuery.MetricQuery) == 0 { - return data, httperrors.NewInputParameterError("metric_query is empty") + return data, merrors.NewArgIsEmptyErr("metric_query") } else { for _, query := range data.CommonMetricInputQuery.MetricQuery { if !utils.IsInStringArray(getQueryEvalType(query.Comparator), validators.EvaluatorDefaultTypes) { diff --git a/pkg/monitor/models/datasource.go b/pkg/monitor/models/datasource.go index be5ebddda9d..f06e1e48feb 100644 --- a/pkg/monitor/models/datasource.go +++ b/pkg/monitor/models/datasource.go @@ -39,6 +39,7 @@ import ( "yunion.io/x/onecloud/pkg/cloudcommon/db" "yunion.io/x/onecloud/pkg/httperrors" "yunion.io/x/onecloud/pkg/mcclient/auth" + merrors "yunion.io/x/onecloud/pkg/monitor/errors" "yunion.io/x/onecloud/pkg/monitor/options" "yunion.io/x/onecloud/pkg/monitor/registry" "yunion.io/x/onecloud/pkg/monitor/tsdb" @@ -214,7 +215,7 @@ func (self *SDataSourceManager) getMeasurementQueryInfluxdb(query jsonutils.JSON measurementFilter, tagFilter string) (rtnMeasurements []monitor.InfluxMeasurement, err error) { database, _ := query.GetString("database") if database == "" { - return rtnMeasurements, httperrors.NewInputParameterError("not find database") + return rtnMeasurements, merrors.NewArgIsEmptyErr("database") } dataSource, err := self.GetDefaultSource() if err != nil { @@ -537,19 +538,19 @@ func (self *SDataSourceManager) renderTimeFilter(from, to string) string { func (self *SDataSourceManager) GetMetricMeasurement(query jsonutils.JSONObject, tagFilter string) (jsonutils.JSONObject, error) { database, _ := query.GetString("database") if database == "" { - return jsonutils.JSONNull, httperrors.NewInputParameterError("not find database") + return jsonutils.JSONNull, merrors.NewArgIsEmptyErr("database") } measurement, _ := query.GetString("measurement") if measurement == "" { - return jsonutils.JSONNull, httperrors.NewInputParameterError("not find measurement") + return jsonutils.JSONNull, merrors.NewArgIsEmptyErr("measurement") } field, _ := query.GetString("field") if field == "" { - return jsonutils.JSONNull, httperrors.NewInputParameterError("not find field") + return jsonutils.JSONNull, merrors.NewArgIsEmptyErr("field") } from, _ := query.GetString("from") if len(from) == 0 { - return jsonutils.JSONNull, httperrors.NewInputParameterError("not find from") + return jsonutils.JSONNull, merrors.NewArgIsEmptyErr("from") } dataSource, err := self.GetDefaultSource() if err != nil { diff --git a/pkg/monitor/models/meteralert.go b/pkg/monitor/models/meteralert.go index f778f9e2f1a..c21585d8200 100644 --- a/pkg/monitor/models/meteralert.go +++ b/pkg/monitor/models/meteralert.go @@ -29,6 +29,7 @@ import ( "yunion.io/x/onecloud/pkg/mcclient" "yunion.io/x/onecloud/pkg/mcclient/auth" "yunion.io/x/onecloud/pkg/mcclient/modules" + merrors "yunion.io/x/onecloud/pkg/monitor/errors" "yunion.io/x/onecloud/pkg/monitor/options" "yunion.io/x/onecloud/pkg/util/stringutils2" ) @@ -157,7 +158,7 @@ func (man *SMeterAlertManager) ValidateCreateData( } } if data.Recipients == "" { - return nil, httperrors.NewInputParameterError("recipients is empty") + return nil, merrors.NewArgIsEmptyErr("recipients") } ds, err := DataSourceManager.GetDefaultSource() diff --git a/pkg/monitor/models/nodealert.go b/pkg/monitor/models/nodealert.go index 6dc423bde03..6a966b31b18 100644 --- a/pkg/monitor/models/nodealert.go +++ b/pkg/monitor/models/nodealert.go @@ -33,6 +33,7 @@ import ( "yunion.io/x/onecloud/pkg/mcclient/auth" "yunion.io/x/onecloud/pkg/mcclient/modulebase" "yunion.io/x/onecloud/pkg/mcclient/modules" + merrors "yunion.io/x/onecloud/pkg/monitor/errors" "yunion.io/x/onecloud/pkg/monitor/options" "yunion.io/x/onecloud/pkg/util/stringutils2" ) @@ -96,7 +97,7 @@ func (man *SNodeAlertManager) ValidateCreateData( return nil, httperrors.NewInputParameterError("Invalid period format: %s", data.Period) } if data.Metric == "" { - return nil, httperrors.NewInputParameterError("metric is missing") + return nil, merrors.NewArgIsEmptyErr("metric") } parts := strings.Split(data.Metric, ".") if len(parts) != 2 { @@ -107,10 +108,10 @@ func (man *SNodeAlertManager) ValidateCreateData( return nil, err } if data.Recipients == "" { - return nil, httperrors.NewInputParameterError("recipients is empty") + return nil, merrors.NewArgIsEmptyErr("recipients") } if data.NodeId == "" { - return nil, httperrors.NewInputParameterError("node_id is empty") + return nil, merrors.NewArgIsEmptyErr("node_id") } nodeName, resType, err := man.validateResourceId(ctx, data.Type, data.NodeId) if err != nil { diff --git a/pkg/monitor/models/notification.go b/pkg/monitor/models/notification.go index bf696d21772..c68adbe189c 100644 --- a/pkg/monitor/models/notification.go +++ b/pkg/monitor/models/notification.go @@ -26,6 +26,7 @@ import ( "yunion.io/x/onecloud/pkg/cloudcommon/db" "yunion.io/x/onecloud/pkg/httperrors" "yunion.io/x/onecloud/pkg/mcclient" + merrors "yunion.io/x/onecloud/pkg/monitor/errors" "yunion.io/x/onecloud/pkg/monitor/notifydrivers" ) @@ -126,7 +127,7 @@ func (man *SNotificationManager) GetNotificationsWithDefault(ids []string) ([]SN func (man *SNotificationManager) ValidateCreateData(ctx context.Context, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, _ jsonutils.JSONObject, input monitor.NotificationCreateInput) (monitor.NotificationCreateInput, error) { if input.Type == "" { - return input, httperrors.NewInputParameterError("notification type is empty") + return input, merrors.NewArgIsEmptyErr("type") } if input.SendReminder == nil { sendReminder := true diff --git a/pkg/monitor/models/suggestsysalert.go b/pkg/monitor/models/suggestsysalert.go index 20d69398013..c2dcc0da906 100644 --- a/pkg/monitor/models/suggestsysalert.go +++ b/pkg/monitor/models/suggestsysalert.go @@ -31,6 +31,7 @@ import ( "yunion.io/x/onecloud/pkg/mcclient" "yunion.io/x/onecloud/pkg/mcclient/auth" "yunion.io/x/onecloud/pkg/mcclient/modules" + merrors "yunion.io/x/onecloud/pkg/monitor/errors" "yunion.io/x/onecloud/pkg/util/rbacutils" "yunion.io/x/onecloud/pkg/util/stringutils2" ) @@ -281,10 +282,10 @@ func (alert *SSuggestSysAlert) ValidateUpdateData( data monitor.SuggestSysAlertUpdateInput) (monitor.SuggestSysAlertUpdateInput, error) { //rule 查询到资源信息后没有将资源id,进行转换 if len(data.ResID) == 0 { - return data, httperrors.NewInputParameterError("not found res_id ") + return data, merrors.NewArgIsEmptyErr("res_id") } if len(data.Type) == 0 { - return data, httperrors.NewInputParameterError("not found type ") + return data, merrors.NewArgIsEmptyErr("type") } var err error data.VirtualResourceBaseUpdateInput, err = alert.SVirtualResourceBase.ValidateUpdateData(ctx, userCred, query, diff --git a/pkg/monitor/models/suggestsysrule.go b/pkg/monitor/models/suggestsysrule.go index 71641abdf9d..736798a69ce 100644 --- a/pkg/monitor/models/suggestsysrule.go +++ b/pkg/monitor/models/suggestsysrule.go @@ -34,6 +34,7 @@ import ( "yunion.io/x/onecloud/pkg/httperrors" "yunion.io/x/onecloud/pkg/mcclient" "yunion.io/x/onecloud/pkg/mcclient/auth" + merrors "yunion.io/x/onecloud/pkg/monitor/errors" "yunion.io/x/onecloud/pkg/monitor/registry" "yunion.io/x/onecloud/pkg/util/influxdb" "yunion.io/x/onecloud/pkg/util/stringutils2" @@ -382,11 +383,11 @@ func (self *SSuggestSysRuleManager) GetPropertyMetricMeasurement(ctx context.Con func (self *SSuggestSysRuleManager) GetMetricMeasurement(query jsonutils.JSONObject) (jsonutils.JSONObject, error) { database, _ := query.GetString("database") if database == "" { - return jsonutils.JSONNull, httperrors.NewInputParameterError("not support database") + return jsonutils.JSONNull, merrors.NewArgIsEmptyErr("database") } measurement, _ := query.GetString("measurement") if measurement == "" { - return jsonutils.JSONNull, httperrors.NewInputParameterError("not support measurement") + return jsonutils.JSONNull, merrors.NewArgIsEmptyErr("measurement") } dataSource, err := DataSourceManager.GetDefaultSource() if err != nil { diff --git a/pkg/monitor/models/suggestsysruleconfig.go b/pkg/monitor/models/suggestsysruleconfig.go index ba3d21e60ee..40e2894a632 100644 --- a/pkg/monitor/models/suggestsysruleconfig.go +++ b/pkg/monitor/models/suggestsysruleconfig.go @@ -258,7 +258,7 @@ func (man *SSuggestSysRuleConfigManager) ValidateCreateData(ctx context.Context, return nil, httperrors.NewNotFoundError("not found driver by type %q", *input.Type) } if drv.GetResourceType() != *input.ResourceType { - return nil, httperrors.NewNotAcceptableError("type %q resource type not match input %q", drv.GetType(), *input.ResourceType) + return nil, httperrors.NewNotAcceptableError("resource type %q of driver does not match input %q", drv.GetType(), *input.ResourceType) } } } diff --git a/pkg/monitor/models/unifiedmonitor.go b/pkg/monitor/models/unifiedmonitor.go index da4aba8e07b..32c8cb51a92 100644 --- a/pkg/monitor/models/unifiedmonitor.go +++ b/pkg/monitor/models/unifiedmonitor.go @@ -13,6 +13,7 @@ import ( "yunion.io/x/onecloud/pkg/cloudcommon/db" "yunion.io/x/onecloud/pkg/httperrors" "yunion.io/x/onecloud/pkg/mcclient" + merrors "yunion.io/x/onecloud/pkg/monitor/errors" mq "yunion.io/x/onecloud/pkg/monitor/metricquery" "yunion.io/x/onecloud/pkg/monitor/tsdb" "yunion.io/x/onecloud/pkg/monitor/validators" @@ -189,7 +190,7 @@ func (self *SUnifiedMonitorManager) PerformQuery(ctx context.Context, userCred m return jsonutils.NewDict(), err } if len(inputQuery.MetricQuery) == 0 { - return nil, httperrors.NewInputParameterError("no metric_query field in param") + return nil, merrors.NewArgIsEmptyErr("metric_query") } for _, q := range inputQuery.MetricQuery { scope, _ := data.GetString("scope") diff --git a/pkg/monitor/suggestsysdrivers/influxdbbasedriver.go b/pkg/monitor/suggestsysdrivers/influxdbbasedriver.go index 16735f058d4..67868d312b4 100644 --- a/pkg/monitor/suggestsysdrivers/influxdbbasedriver.go +++ b/pkg/monitor/suggestsysdrivers/influxdbbasedriver.go @@ -19,6 +19,7 @@ import ( "yunion.io/x/onecloud/pkg/mcclient/modules" "yunion.io/x/onecloud/pkg/monitor/alerting" "yunion.io/x/onecloud/pkg/monitor/alerting/conditions" + merrors "yunion.io/x/onecloud/pkg/monitor/errors" "yunion.io/x/onecloud/pkg/monitor/models" "yunion.io/x/onecloud/pkg/monitor/validators" ) @@ -40,27 +41,24 @@ func NewInfluxdbBaseDriver(driverType monitor.SuggestDriverType, resourceType mo } func (drv *InfluxdbBaseDriver) ValidateSetting(input *monitor.SSuggestSysAlertSetting) error { - if input.ScaleRule == nil { - return httperrors.NewInputParameterError("no found rule setting ") - } - if len(*input.ScaleRule) == 0 { - return httperrors.NewInputParameterError("no found customize monitor rule") + if input.ScaleRule == nil || len(*input.ScaleRule) == 0 { + return merrors.NewArgIsEmptyErr("ScaleRule") } for _, scale := range *input.ScaleRule { if scale.Database == "" { - return httperrors.NewInputParameterError("database is missing") + return merrors.NewArgIsEmptyErr("database") } if scale.Measurement == "" { - return httperrors.NewInputParameterError("measurement is missing") + return merrors.NewArgIsEmptyErr("measurement") } if scale.Field == "" { - return httperrors.NewInputParameterError("field is missing") + return merrors.NewArgIsEmptyErr("field") } if !utils.IsInStringArray(getQueryEvalType(scale), validators.EvaluatorDefaultTypes) { return httperrors.NewInputParameterError("the evalType is illegal") } if scale.Threshold == 0 { - return httperrors.NewInputParameterError("threshold is meaningless") + return merrors.NewArgIsEmptyErr("threshold") } } return nil diff --git a/pkg/monitor/validators/validators.go b/pkg/monitor/validators/validators.go index 5e5f5dbcd2b..e8bae9612bb 100644 --- a/pkg/monitor/validators/validators.go +++ b/pkg/monitor/validators/validators.go @@ -23,6 +23,7 @@ import ( "yunion.io/x/onecloud/pkg/apis/monitor" "yunion.io/x/onecloud/pkg/httperrors" + merrors "yunion.io/x/onecloud/pkg/monitor/errors" ) const ( @@ -92,13 +93,13 @@ func ValidateAlertConditionQuery(input monitor.AlertQuery) error { func ValidateAlertQueryModel(input monitor.MetricQuery) error { if len(input.Selects) == 0 { - return httperrors.NewInputParameterError("no select data in query") + return merrors.NewArgIsEmptyErr("select") } if len(input.Database) == 0 { - return httperrors.NewInputParameterError("no database in query") + return merrors.NewArgIsEmptyErr("database") } if len(input.Measurement) == 0 { - return httperrors.NewInputParameterError("no measurement in query") + return merrors.NewArgIsEmptyErr("measurement") } return nil } @@ -138,11 +139,11 @@ func ValidateFromAndToValue(input monitor.AlertQuery) error { if toDur >= fromDur { return nil } - return httperrors.NewInputParameterError("query from:%s,to:%s err", input.From, input.To) + return httperrors.NewInputParameterError("query duration err: from: %s, to:%s", input.From, input.To) } return err } - return httperrors.NewInputParameterError("query to:%s format err", input.To) + return httperrors.NewInputParameterError("query duration `to` err: %s", input.To) } func ValidateAlertConditionReducer(input monitor.Condition) error {