trace
This commit is contained in:
@@ -5,13 +5,16 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/go-resty/resty/v2"
|
"github.com/go-resty/resty/v2"
|
||||||
|
"github.com/gorilla/mux"
|
||||||
|
|
||||||
"ems.agt/lib/dborm"
|
"ems.agt/lib/dborm"
|
||||||
"ems.agt/lib/global"
|
"ems.agt/lib/global"
|
||||||
"ems.agt/lib/log"
|
"ems.agt/lib/log"
|
||||||
|
"ems.agt/lib/run"
|
||||||
"ems.agt/lib/services"
|
"ems.agt/lib/services"
|
||||||
"ems.agt/restagent/config"
|
"ems.agt/restagent/config"
|
||||||
)
|
)
|
||||||
@@ -19,6 +22,8 @@ import (
|
|||||||
var (
|
var (
|
||||||
UriTraceTaskV1 = config.DefaultUriPrefix + "/traceManagement/v1/subscriptions"
|
UriTraceTaskV1 = config.DefaultUriPrefix + "/traceManagement/v1/subscriptions"
|
||||||
UriTraceTask = config.DefaultUriPrefix + "/traceManagement/{apiVersion}/subscriptions"
|
UriTraceTask = config.DefaultUriPrefix + "/traceManagement/{apiVersion}/subscriptions"
|
||||||
|
UriTraceRawMsg = config.DefaultUriPrefix + "/traceManagement/{apiVersion}/rawMessage/{id}"
|
||||||
|
UriTraceDecMsg = config.DefaultUriPrefix + "/traceManagement/{apiVersion}/decMessage/{id}"
|
||||||
|
|
||||||
CustomUriTraceTaskV1 = config.UriPrefix + "/traceManagement/v1/subscriptions"
|
CustomUriTraceTaskV1 = config.UriPrefix + "/traceManagement/v1/subscriptions"
|
||||||
CustomUriTraceTask = config.UriPrefix + "/traceManagement/{apiVersion}/subscriptions"
|
CustomUriTraceTask = config.UriPrefix + "/traceManagement/{apiVersion}/subscriptions"
|
||||||
@@ -373,5 +378,36 @@ func DeleteTraceTaskToNF(w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
services.ResponseStatusOK204NoContent(w)
|
services.ResponseStatusOK204NoContent(w)
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetRawMessage(w http.ResponseWriter, r *http.Request) {
|
||||||
|
log.Debug("GetRawMessage processing... ")
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func ParseRawMsg2Html(w http.ResponseWriter, r *http.Request) {
|
||||||
|
log.Debug("ParseRawMsg2Html processing... ")
|
||||||
|
|
||||||
|
vars := mux.Vars(r)
|
||||||
|
idStr := vars["id"]
|
||||||
|
id, _ := strconv.Atoi(idStr)
|
||||||
|
|
||||||
|
traceData, err := dborm.XormGetTraceData(id)
|
||||||
|
if err != nil {
|
||||||
|
log.Error("Failed to dborm.XormGetTraceRawMsg:", err)
|
||||||
|
services.ResponseInternalServerError500ProcessError(w, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
log.Trace("traceData:", traceData)
|
||||||
|
htmlFile := fmt.Sprintf("traceDecMessage-%d-%d.html", traceData.TaskID, traceData.ID)
|
||||||
|
pathFile := config.GetYamlConfig().OMC.FrontTraceDir + "/" + htmlFile
|
||||||
|
command := fmt.Sprintf("ipdata2html -f %s -t %d -i N%d -d %x", pathFile, traceData.Timestamp, traceData.IfType, traceData.RawMsg)
|
||||||
|
out, err := run.ExecCmd(command, "/")
|
||||||
|
log.Tracef("Exec output: %v", string(out))
|
||||||
|
if err != nil {
|
||||||
|
log.Errorf("Faile to ipdate2html:", err)
|
||||||
|
services.ResponseInternalServerError500ProcessError(w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
services.ResponseStatusOK204NoContent(w)
|
||||||
|
}
|
||||||
|
|||||||
@@ -1746,7 +1746,7 @@ type TraceData struct {
|
|||||||
func XormGetTraceData(id int) (*TraceData, error) {
|
func XormGetTraceData(id int) (*TraceData, error) {
|
||||||
result := new(TraceData)
|
result := new(TraceData)
|
||||||
_, err := xEngine.Table("trace_data").
|
_, err := xEngine.Table("trace_data").
|
||||||
ID(id).
|
Where("id=?", id).
|
||||||
Get(result)
|
Get(result)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error("Failed to get table trace_data:", err)
|
log.Error("Failed to get table trace_data:", err)
|
||||||
@@ -1756,16 +1756,17 @@ func XormGetTraceData(id int) (*TraceData, error) {
|
|||||||
return result, nil
|
return result, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func XormGetTraceRawMsg(id int) ([]byte, error) {
|
func XormGetTraceRawMsg(id int) (int64, []byte, error) {
|
||||||
var rawMsg []byte
|
var rawMsg []byte
|
||||||
|
var timestamp int64
|
||||||
_, err := xEngine.Table("trace_data").
|
_, err := xEngine.Table("trace_data").
|
||||||
ID(id).
|
Where("id=?", id).
|
||||||
Cols("HEX(raw_msg)").
|
Cols("timestamp", "raw_msg").
|
||||||
Get(&rawMsg)
|
Get(×tamp, &rawMsg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error("Failed to get table trace_data:", err)
|
log.Error("Failed to get table trace_data:", err)
|
||||||
return nil, err
|
return timestamp, rawMsg, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return rawMsg, nil
|
return timestamp, rawMsg, nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -209,6 +209,7 @@ func init() {
|
|||||||
Register("POST", trace.UriTraceTask, trace.PostTraceTaskToNF, nil)
|
Register("POST", trace.UriTraceTask, trace.PostTraceTaskToNF, nil)
|
||||||
Register("PUT", trace.UriTraceTask, trace.PutTraceTaskToNF, nil)
|
Register("PUT", trace.UriTraceTask, trace.PutTraceTaskToNF, nil)
|
||||||
Register("DELETE", trace.UriTraceTask, trace.DeleteTraceTaskToNF, nil)
|
Register("DELETE", trace.UriTraceTask, trace.DeleteTraceTaskToNF, nil)
|
||||||
|
Register("GET", trace.UriTraceDecMsg, trace.ParseRawMsg2Html, nil)
|
||||||
|
|
||||||
Register("POST", trace.CustomUriTraceTask, trace.PostTraceTaskToNF, nil)
|
Register("POST", trace.CustomUriTraceTask, trace.PostTraceTaskToNF, nil)
|
||||||
Register("PUT", trace.CustomUriTraceTask, trace.PutTraceTaskToNF, nil)
|
Register("PUT", trace.CustomUriTraceTask, trace.PutTraceTaskToNF, nil)
|
||||||
|
|||||||
@@ -71,6 +71,7 @@ type YamlConfig struct {
|
|||||||
Backup string `yaml:"backup"`
|
Backup string `yaml:"backup"`
|
||||||
Upload string `yaml:"upload"`
|
Upload string `yaml:"upload"`
|
||||||
FrontUpload string `yaml:"frontUpload"`
|
FrontUpload string `yaml:"frontUpload"`
|
||||||
|
FrontTraceDir string `yaml:"frontTraceDir"`
|
||||||
Software string `yaml:"software"`
|
Software string `yaml:"software"`
|
||||||
License string `yaml:"license"`
|
License string `yaml:"license"`
|
||||||
GtpUri string `yaml:"gtpUri"`
|
GtpUri string `yaml:"gtpUri"`
|
||||||
|
|||||||
@@ -72,7 +72,8 @@ omc:
|
|||||||
checksign: false
|
checksign: false
|
||||||
backup: ./backup
|
backup: ./backup
|
||||||
upload: ./upload
|
upload: ./upload
|
||||||
frontUpload: d:/omc.git/goprojects/build/omc/htdocs/front/upload
|
frontUpload: d:/local.git/fe.ems/upload
|
||||||
|
frontTraceDir: d:/local.git/fe.ems/trace
|
||||||
software: ./software
|
software: ./software
|
||||||
license: ./license
|
license: ./license
|
||||||
gtpUri: gtp:192.168.2.119:2152
|
gtpUri: gtp:192.168.2.119:2152
|
||||||
|
|||||||
Reference in New Issue
Block a user