feat: 信令跟踪功能接口定义
This commit is contained in:
@@ -10,31 +10,10 @@ import (
|
|||||||
"be.ems/src/modules/network_element/model"
|
"be.ems/src/modules/network_element/model"
|
||||||
)
|
)
|
||||||
|
|
||||||
// NeTraceInfo 网元跟踪任务信息
|
|
||||||
func NeTraceInfo(neInfo model.NeInfo, traceId string) (map[string]any, error) {
|
|
||||||
// 跟踪任务信息
|
|
||||||
neUrl := fmt.Sprintf("http://%s:%d/api/rest/traceManagement/v1/subscriptions?id=%s", neInfo.IP, neInfo.Port, traceId)
|
|
||||||
resBytes, err := fetch.Get(neUrl, nil, 30_000)
|
|
||||||
if err != nil {
|
|
||||||
logger.Warnf("NeTraceInfo Get \"%s\"", neUrl)
|
|
||||||
logger.Errorf("NeTraceInfo %s", err.Error())
|
|
||||||
return nil, fmt.Errorf("NeService Trace Info API Error")
|
|
||||||
}
|
|
||||||
|
|
||||||
// 序列化结果
|
|
||||||
var resData map[string]any
|
|
||||||
err = json.Unmarshal(resBytes, &resData)
|
|
||||||
if err != nil {
|
|
||||||
logger.Errorf("NeTraceInfo Unmarshal %s", err.Error())
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return resData, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// NeTraceAdd 网元跟踪任务新增
|
// NeTraceAdd 网元跟踪任务新增
|
||||||
func NeTraceAdd(neInfo model.NeInfo, data map[string]any) (map[string]any, error) {
|
func NeTraceAdd(neInfo model.NeInfo, data any) (map[string]any, error) {
|
||||||
// 跟踪任务创建
|
// 跟踪任务创建
|
||||||
neUrl := fmt.Sprintf("http://%s:%d/api/rest/traceManagement/v1/subscriptions", neInfo.IP, neInfo.Port)
|
neUrl := fmt.Sprintf("http://%s:%d/api/rest/traceManagement/v2/%s/subscriptions", neInfo.IP, neInfo.Port, neInfo.NeType)
|
||||||
resBytes, err := fetch.PostJSON(neUrl, data, nil)
|
resBytes, err := fetch.PostJSON(neUrl, data, nil)
|
||||||
var resData map[string]any
|
var resData map[string]any
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -60,48 +39,17 @@ func NeTraceAdd(neInfo model.NeInfo, data map[string]any) (map[string]any, error
|
|||||||
return resData, nil
|
return resData, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// NeTraceEdit 网元跟踪任务编辑
|
|
||||||
func NeTraceEdit(neInfo model.NeInfo, data map[string]any) (map[string]any, error) {
|
|
||||||
// 网元参数配置新增(array)
|
|
||||||
neUrl := fmt.Sprintf("http://%s:%d/api/rest/traceManagement/v1/subscriptions", neInfo.IP, neInfo.Port)
|
|
||||||
resBytes, err := fetch.PutJSON(neUrl, data, nil)
|
|
||||||
var resData map[string]any
|
|
||||||
if err != nil {
|
|
||||||
errStr := err.Error()
|
|
||||||
logger.Warnf("NeTraceEdit PUT \"%s\"", neUrl)
|
|
||||||
if strings.HasPrefix(errStr, "201") || strings.HasPrefix(errStr, "204") {
|
|
||||||
return resData, nil
|
|
||||||
}
|
|
||||||
logger.Errorf("NeTraceEdit %s", errStr)
|
|
||||||
return nil, fmt.Errorf("NeService Trace Edit API Error")
|
|
||||||
}
|
|
||||||
|
|
||||||
// 200 成功无数据时
|
|
||||||
if len(resBytes) == 0 {
|
|
||||||
return resData, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// 序列化结果
|
|
||||||
err = json.Unmarshal(resBytes, &resData)
|
|
||||||
if err != nil {
|
|
||||||
logger.Errorf("NeTraceEdit Unmarshal %s", err.Error())
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return resData, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// NeTraceDelete 网元跟踪任务删除
|
// NeTraceDelete 网元跟踪任务删除
|
||||||
func NeTraceDelete(neInfo model.NeInfo, traceId string) (map[string]any, error) {
|
func NeTraceDelete(neInfo model.NeInfo, traceId string) (map[string]any, error) {
|
||||||
// 网元参数配置删除(array)
|
neUrl := fmt.Sprintf("http://%s:%d/api/rest/traceManagement/v2/%s/subscriptions?id=%s", neInfo.IP, neInfo.Port, neInfo.NeType, traceId)
|
||||||
neUrl := fmt.Sprintf("http://%s:%d/api/rest/traceManagement/v1/subscriptions?id=%s", neInfo.IP, neInfo.Port, traceId)
|
|
||||||
resBytes, err := fetch.Delete(neUrl, nil)
|
resBytes, err := fetch.Delete(neUrl, nil)
|
||||||
var resData map[string]any
|
var resData map[string]any
|
||||||
if err != nil {
|
if err != nil {
|
||||||
errStr := err.Error()
|
errStr := err.Error()
|
||||||
logger.Warnf("NeTraceDelete Delete \"%s\"", neUrl)
|
|
||||||
if strings.HasPrefix(errStr, "201") || strings.HasPrefix(errStr, "204") {
|
if strings.HasPrefix(errStr, "201") || strings.HasPrefix(errStr, "204") {
|
||||||
return resData, nil
|
return resData, nil
|
||||||
}
|
}
|
||||||
|
logger.Warnf("NeTraceDelete Delete \"%s\"", neUrl)
|
||||||
logger.Errorf("NeTraceDelete %s", errStr)
|
logger.Errorf("NeTraceDelete %s", errStr)
|
||||||
return nil, fmt.Errorf("NeService Trace Delete API Error")
|
return nil, fmt.Errorf("NeService Trace Delete API Error")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -149,7 +149,7 @@ func (s *Packet) LiveStart(taskNo, deviceName, filterBPF string, outputPCAP bool
|
|||||||
|
|
||||||
go s.capturePacketSource(taskInfo)
|
go s.capturePacketSource(taskInfo)
|
||||||
s.taskMap.Store(taskNo, taskInfo)
|
s.taskMap.Store(taskNo, taskInfo)
|
||||||
return fmt.Sprintf("task no. %s initiated", taskNo), nil
|
return fmt.Sprintf("task no: %s initiated", taskNo), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// verifyDevice 检查网卡设备是否存在
|
// verifyDevice 检查网卡设备是否存在
|
||||||
@@ -400,7 +400,7 @@ func (s *Packet) outputPCAPFile(snaplen uint32, linktype layers.LinkType, output
|
|||||||
func (s *Packet) LiveFilter(taskNo, expr string) error {
|
func (s *Packet) LiveFilter(taskNo, expr string) error {
|
||||||
info, ok := s.taskMap.Load(taskNo)
|
info, ok := s.taskMap.Load(taskNo)
|
||||||
if !ok {
|
if !ok {
|
||||||
return fmt.Errorf("task no. %s not exist", taskNo)
|
return fmt.Errorf("task no: %s does not exist or has stopped", taskNo)
|
||||||
}
|
}
|
||||||
task := info.(*Task)
|
task := info.(*Task)
|
||||||
task.Filter = expr
|
task.Filter = expr
|
||||||
@@ -416,7 +416,7 @@ func (s *Packet) LiveFilter(taskNo, expr string) error {
|
|||||||
func (s *Packet) LiveTimeout(taskNo string, seconds int) error {
|
func (s *Packet) LiveTimeout(taskNo string, seconds int) error {
|
||||||
info, ok := s.taskMap.Load(taskNo)
|
info, ok := s.taskMap.Load(taskNo)
|
||||||
if !ok {
|
if !ok {
|
||||||
return fmt.Errorf("task no. %s not exist", taskNo)
|
return fmt.Errorf("task no: %s does not exist or has stopped", taskNo)
|
||||||
}
|
}
|
||||||
info.(*Task).Ticker.Reset(time.Duration(seconds) * time.Second)
|
info.(*Task).Ticker.Reset(time.Duration(seconds) * time.Second)
|
||||||
return nil
|
return nil
|
||||||
@@ -426,7 +426,7 @@ func (s *Packet) LiveTimeout(taskNo string, seconds int) error {
|
|||||||
func (s *Packet) LiveStop(taskNo string) error {
|
func (s *Packet) LiveStop(taskNo string) error {
|
||||||
info, ok := s.taskMap.Load(taskNo)
|
info, ok := s.taskMap.Load(taskNo)
|
||||||
if !ok {
|
if !ok {
|
||||||
return fmt.Errorf("task no. %s not exist", taskNo)
|
return fmt.Errorf("task no: %s does not exist or has stopped", taskNo)
|
||||||
}
|
}
|
||||||
info.(*Task).Ticker.Reset(time.Millisecond)
|
info.(*Task).Ticker.Reset(time.Millisecond)
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
@@ -63,6 +63,10 @@ func Setup(router *gin.Engine) {
|
|||||||
middleware.PreAuthorize(nil),
|
middleware.PreAuthorize(nil),
|
||||||
controller.NewPacket.KeepAlive,
|
controller.NewPacket.KeepAlive,
|
||||||
)
|
)
|
||||||
|
packetGroup.GET("/filePull",
|
||||||
|
middleware.PreAuthorize(nil),
|
||||||
|
controller.NewPacket.FilePull,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 跟踪任务 网元HLR (免登录)
|
// 跟踪任务 网元HLR (免登录)
|
||||||
@@ -104,11 +108,6 @@ func Setup(router *gin.Engine) {
|
|||||||
collectlogs.OperateLog(collectlogs.OptionNew("log.operate.title.task", collectlogs.BUSINESS_TYPE_INSERT)),
|
collectlogs.OperateLog(collectlogs.OptionNew("log.operate.title.task", collectlogs.BUSINESS_TYPE_INSERT)),
|
||||||
controller.NewTraceTask.Add,
|
controller.NewTraceTask.Add,
|
||||||
)
|
)
|
||||||
taskGroup.PUT("",
|
|
||||||
middleware.PreAuthorize(nil),
|
|
||||||
collectlogs.OperateLog(collectlogs.OptionNew("log.operate.title.task", collectlogs.BUSINESS_TYPE_UPDATE)),
|
|
||||||
controller.NewTraceTask.Edit,
|
|
||||||
)
|
|
||||||
taskGroup.DELETE("/:id",
|
taskGroup.DELETE("/:id",
|
||||||
middleware.PreAuthorize(nil),
|
middleware.PreAuthorize(nil),
|
||||||
collectlogs.OperateLog(collectlogs.OptionNew("log.operate.title.task", collectlogs.BUSINESS_TYPE_DELETE)),
|
collectlogs.OperateLog(collectlogs.OptionNew("log.operate.title.task", collectlogs.BUSINESS_TYPE_DELETE)),
|
||||||
@@ -127,6 +126,10 @@ func Setup(router *gin.Engine) {
|
|||||||
middleware.PreAuthorize(nil),
|
middleware.PreAuthorize(nil),
|
||||||
controller.NewTraceData.List,
|
controller.NewTraceData.List,
|
||||||
)
|
)
|
||||||
|
taskDataGroup.GET("/:id",
|
||||||
|
middleware.PreAuthorize(nil),
|
||||||
|
controller.NewTraceData.Info,
|
||||||
|
)
|
||||||
taskDataGroup.DELETE("/:id",
|
taskDataGroup.DELETE("/:id",
|
||||||
middleware.PreAuthorize(nil),
|
middleware.PreAuthorize(nil),
|
||||||
collectlogs.OperateLog(collectlogs.OptionNew("log.operate.title.taskData", collectlogs.BUSINESS_TYPE_DELETE)),
|
collectlogs.OperateLog(collectlogs.OptionNew("log.operate.title.taskData", collectlogs.BUSINESS_TYPE_DELETE)),
|
||||||
|
|||||||
Reference in New Issue
Block a user