63 lines
3.1 KiB
Go
63 lines
3.1 KiB
Go
package ops_alert
|
|
|
|
import "time"
|
|
|
|
const (
|
|
StateUnacknowledged = "unacknowledged"
|
|
StateAcknowledged = "acknowledged"
|
|
StateRecovering = "recovering"
|
|
StateRecovered = "recovered"
|
|
|
|
TypeDeviceOffline = "device_offline"
|
|
TypeAuthentication = "authentication_failed"
|
|
TypeClockDrift = "clock_drift"
|
|
TypeReconciliation = "reconciliation_failed"
|
|
TypeMediaShard = "media_shard_failed"
|
|
TypeControlTunnel = "control_tunnel_failed"
|
|
)
|
|
|
|
type Alert struct {
|
|
ID string `gorm:"size:36;primaryKey" json:"id"`
|
|
Fingerprint string `gorm:"size:255;not null;uniqueIndex" json:"fingerprint"`
|
|
AlertType string `gorm:"size:32;not null;index" json:"alertType"`
|
|
Severity string `gorm:"size:16;not null;index" json:"severity"`
|
|
ObjectType string `gorm:"size:32;not null;index" json:"objectType"`
|
|
ObjectID string `gorm:"size:96;not null;index" json:"objectId"`
|
|
ObjectName string `gorm:"size:128;not null" json:"objectName"`
|
|
Location string `gorm:"size:255;not null;default:''" json:"location"`
|
|
State string `gorm:"size:24;not null;index" json:"state"`
|
|
Title string `gorm:"size:160;not null" json:"title"`
|
|
Detail string `gorm:"size:512;not null" json:"detail"`
|
|
NextAction string `gorm:"size:255;not null" json:"nextAction"`
|
|
LastSourceVersion string `gorm:"size:128;not null;default:''" json:"-"`
|
|
OccurrenceCount int `gorm:"not null;default:1" json:"occurrenceCount"`
|
|
Cycle int `gorm:"not null;default:1" json:"cycle"`
|
|
FirstSeenAt time.Time `gorm:"not null;index" json:"firstSeenAt"`
|
|
LastSeenAt time.Time `gorm:"not null;index" json:"lastSeenAt"`
|
|
HealthySince *time.Time `json:"healthySince,omitempty"`
|
|
AcknowledgedAt *time.Time `json:"acknowledgedAt,omitempty"`
|
|
AcknowledgedBy int `gorm:"not null;default:0" json:"acknowledgedBy,omitempty"`
|
|
RecoveredAt *time.Time `json:"recoveredAt,omitempty"`
|
|
RecoveredBy int `gorm:"not null;default:0" json:"recoveredBy,omitempty"`
|
|
OperationalOnly bool `gorm:"not null;default:true" json:"operationalOnly"`
|
|
Version int64 `gorm:"not null;default:1" json:"version"`
|
|
CreatedAt time.Time `gorm:"not null" json:"createdAt"`
|
|
UpdatedAt time.Time `gorm:"not null" json:"updatedAt"`
|
|
}
|
|
|
|
func (Alert) TableName() string { return "sense_ops_alerts" }
|
|
|
|
type Transition struct {
|
|
ID string `gorm:"size:36;primaryKey" json:"id"`
|
|
AlertID string `gorm:"size:36;not null;index" json:"alertId"`
|
|
Cycle int `gorm:"not null" json:"cycle"`
|
|
Action string `gorm:"size:32;not null;index" json:"action"`
|
|
FromState string `gorm:"size:24;not null;default:''" json:"fromState"`
|
|
ToState string `gorm:"size:24;not null" json:"toState"`
|
|
Reason string `gorm:"size:512;not null;default:''" json:"reason"`
|
|
ActorUserID int `gorm:"not null;default:0" json:"actorUserId"`
|
|
CreatedAt time.Time `gorm:"not null;index" json:"createdAt"`
|
|
}
|
|
|
|
func (Transition) TableName() string { return "sense_ops_alert_transitions" }
|