146 lines
3.7 KiB
Go
146 lines
3.7 KiB
Go
package common
|
|
|
|
import (
|
|
"fmt"
|
|
"strconv"
|
|
)
|
|
|
|
type AdministrativeState string
|
|
|
|
const (
|
|
Locked AdministrativeState = "Locked"
|
|
Unlocked AdministrativeState = "Unlocked"
|
|
ShuttingDown AdministrativeState = "ShuttingDown"
|
|
)
|
|
|
|
type OperationalState string
|
|
|
|
const (
|
|
Enabled OperationalState = "Enabled"
|
|
Disabled OperationalState = "Disabled"
|
|
)
|
|
|
|
const (
|
|
// NBI CM表名
|
|
NbiCmTableName = "nbi_cm"
|
|
CmVersion = "v1" // CM版本
|
|
)
|
|
|
|
type EventType int
|
|
|
|
const (
|
|
ObjectNullEvent EventType = iota // ObjectNullEvent 空事件
|
|
ObjectOriginalEvent // ObjectOriginalEvent 原始事件
|
|
ObjectCreationEvent // ObjectCreationEvent 创建事件
|
|
ObjectDeletionEvent // ObjectDeletionEvent 删除事件
|
|
ObjectAttributeValueChangeEvent // ObjectAttributeValueChangeEvent 修改事件
|
|
ObjectUnkownEvent // 未知事件
|
|
)
|
|
|
|
func (et EventType) EventTypeEnumString() string {
|
|
switch et {
|
|
case ObjectOriginalEvent:
|
|
return "ObjectOriginalEvent"
|
|
case ObjectCreationEvent:
|
|
return "ObjectCreationEvent"
|
|
case ObjectDeletionEvent:
|
|
return "ObjectDeletionEvent"
|
|
case ObjectAttributeValueChangeEvent:
|
|
return "ObjectAttributeValueChangeEvent"
|
|
case ObjectNullEvent:
|
|
return "ObjectNullEvent"
|
|
default:
|
|
return "ObjectUnkownEvent"
|
|
}
|
|
}
|
|
|
|
func (et EventType) EventTypeIntString() string {
|
|
return fmt.Sprintf("%d", et)
|
|
}
|
|
|
|
// EventTypeInt 将字符串转换为 EventType 枚举类型
|
|
func EventTypeInt(s string) EventType {
|
|
if i, err := strconv.Atoi(s); err == nil {
|
|
return EventType(i)
|
|
}
|
|
|
|
switch s {
|
|
case "ObjectOriginalEvent":
|
|
return ObjectOriginalEvent
|
|
case "ObjectCreationEvent":
|
|
return ObjectCreationEvent
|
|
case "ObjectDeletionEvent":
|
|
return ObjectDeletionEvent
|
|
case "ObjectAttributeValueChangeEvent":
|
|
return ObjectAttributeValueChangeEvent
|
|
case "":
|
|
// 如果字符串为空,则返回未知事件
|
|
return ObjectNullEvent
|
|
default:
|
|
return ObjectUnkownEvent
|
|
}
|
|
}
|
|
|
|
type NeStatus int
|
|
|
|
const (
|
|
NeStatusOffline NeStatus = iota
|
|
NeStatusActive
|
|
NeStatusToSync
|
|
NeStatusStandby
|
|
NeStatusUnknown
|
|
)
|
|
|
|
// ParseStateFromStatus 将状态字符串转换为 AdministrativeState 和 OperationalState
|
|
func ParseStateFromStatus(status NeStatus) (AdministrativeState, OperationalState) {
|
|
var adminState AdministrativeState
|
|
var operState OperationalState
|
|
|
|
switch status {
|
|
case NeStatusOffline:
|
|
adminState = Locked
|
|
operState = Disabled
|
|
case NeStatusActive:
|
|
adminState = Unlocked
|
|
operState = Enabled
|
|
case NeStatusToSync:
|
|
adminState = Unlocked
|
|
operState = Enabled
|
|
case NeStatusStandby:
|
|
adminState = Locked
|
|
operState = Enabled
|
|
default:
|
|
adminState = ShuttingDown
|
|
operState = Disabled
|
|
}
|
|
|
|
return adminState, operState
|
|
}
|
|
|
|
type NeInfo struct {
|
|
NeId string `db:"ne_id"`
|
|
NeType string `db:"ne_type"`
|
|
RmUid string `db:"rm_uid"`
|
|
VendorName string `db:"vendor_name"`
|
|
NeName string `db:"ne_name"`
|
|
Ip string `db:"ip"`
|
|
Port string `db:"port"`
|
|
PVFlag string `db:"pv_flag"`
|
|
Province string `db:"province"`
|
|
Dn string `db:"dn"`
|
|
Status NeStatus `db:"status"`
|
|
}
|
|
|
|
// NbiCm 表结构
|
|
type NbiCm struct {
|
|
Id int `json:"id" db:"id PRIMARY KEY"`
|
|
NeType string `json:"neType" db:"ne_type"`
|
|
NeId string `json:"neId" db:"ne_id"`
|
|
CmVersion string `json:"cmVersion" db:"cm_version"`
|
|
RmUid string `json:"rmUid" db:"rm_uid"`
|
|
EventType EventType `json:"eventType" db:"event_type"`
|
|
ObjectType string `json:"objectType" db:"object_type"`
|
|
ValueJson string `json:"valueJson" db:"value_json"`
|
|
Timestamp string `json:"timestamp" db:"timestamp"`
|
|
}
|