107 lines
3.3 KiB
Go
107 lines
3.3 KiB
Go
package dtos
|
|
|
|
import (
|
|
"github.com/winc-link/hummingbird/internal/models"
|
|
"github.com/winc-link/hummingbird/internal/pkg/constants"
|
|
"github.com/winc-link/hummingbird/internal/pkg/errort"
|
|
"github.com/winc-link/hummingbird/internal/pkg/i18n"
|
|
"time"
|
|
)
|
|
|
|
const (
|
|
SYSTEM_ALERT models.AlertType = iota + 1 // 系统告警
|
|
DRIVER_ALERT // 驱动告警
|
|
LICENSE_ALERT //证书过期
|
|
)
|
|
|
|
const (
|
|
ERROR models.AlertLevel = iota + 1 // 告警级别:错误
|
|
WARN // 告警级别:警告
|
|
NOTIFY // 告警级别: 通知
|
|
)
|
|
|
|
var (
|
|
AlertTypeTrans = map[models.AlertType]string{
|
|
SYSTEM_ALERT: i18n.AgentAlertSystem,
|
|
DRIVER_ALERT: i18n.AgentAlertDriver,
|
|
LICENSE_ALERT: i18n.LicenseAlertExpire,
|
|
}
|
|
AlertLevelTrans = map[models.AlertLevel]string{
|
|
NOTIFY: i18n.AgentAlertNotify,
|
|
WARN: i18n.AgentAlertWarn,
|
|
ERROR: i18n.AgentAlertError,
|
|
}
|
|
)
|
|
|
|
// AlertContent 服务和驱动上报告警消息
|
|
type (
|
|
ReportAlertsReq struct {
|
|
BaseRequest `json:",inline"`
|
|
ServiceName string `json:"name"` // 服务名
|
|
Type models.AlertType `json:"type" binding:"oneof=1 2"` // 告警类型
|
|
Level models.AlertLevel `json:"level" binding:"oneof=1 2 3"` // 告警级别
|
|
T int64 `json:"time"` // 告警时间
|
|
Content string `json:"content"`
|
|
}
|
|
|
|
AlertContentDTO struct {
|
|
ServiceName string `json:"name"` // 服务名
|
|
Type models.AlertType `json:"type" binding:"oneof=1 2" swaggertype:"integer"` // 告警类型
|
|
TypeValue string `json:"typeValue"`
|
|
Level models.AlertLevel `json:"level" binding:"oneof=1 2 3" swaggertype:"integer"` // 告警级别
|
|
LevelValue string `json:"levelValue"`
|
|
T int64 `json:"time"` // 告警时间
|
|
Content string `json:"content"` // 告警内容
|
|
}
|
|
)
|
|
|
|
func NewReportAlertsReq(serviceName string, tp models.AlertType, l models.AlertLevel, t int64, content string) ReportAlertsReq {
|
|
return ReportAlertsReq{
|
|
BaseRequest: NewBaseRequest(),
|
|
ServiceName: serviceName,
|
|
Type: tp,
|
|
Level: l,
|
|
T: t,
|
|
Content: content,
|
|
}
|
|
}
|
|
|
|
func ToAlertContent(req ReportAlertsReq) models.AlertContent {
|
|
return models.AlertContent{
|
|
ServiceName: req.ServiceName,
|
|
Type: req.Type,
|
|
Level: req.Level,
|
|
T: req.T,
|
|
Content: req.Content,
|
|
}
|
|
}
|
|
|
|
func AlertContentToDTO(ac models.AlertContent) AlertContentDTO {
|
|
return AlertContentDTO{
|
|
ServiceName: ac.ServiceName,
|
|
Type: ac.Type,
|
|
Level: ac.Level,
|
|
T: ac.T,
|
|
Content: ac.Content,
|
|
}
|
|
}
|
|
|
|
type ReportAlertRequest struct {
|
|
ServiceName string `json:"serviceName"`
|
|
AlertType int `json:"alertType"` // constants.AlertType_SERVICE
|
|
AlertLevel int `json:"alertLevel"` // constants.AlertLevel_ERROR
|
|
AlertTime int64 `json:"alertTime"`
|
|
Content string `json:"content"`
|
|
}
|
|
|
|
// GenServerAlert 生成服务警告内容
|
|
func GenServerAlert(lvl models.AlertLevel, err error) ReportAlertsReq {
|
|
errw := errort.NewCommonEdgeXWrapper(err)
|
|
return NewReportAlertsReq(
|
|
constants.CoreServiceKey,
|
|
SYSTEM_ALERT,
|
|
lvl,
|
|
time.Now().Unix(),
|
|
i18n.TransCodeDefault(errw.Code(), nil))
|
|
}
|