From baf94b03925cf0b161490f06fcfa907fcb4ebff2 Mon Sep 17 00:00:00 2001 From: Wangjunqi123 Date: Fri, 1 Nov 2024 17:10:29 +0800 Subject: [PATCH] server: refactor error controll --- server/agentmanager/PAgentMap.go | 16 +-- server/agentmanager/agent.go | 15 ++- server/conf/config.go | 4 +- server/db/dbmanager.go | 13 +- server/db/graphmanager/neo4j.go | 41 ++++--- server/db/influxmanager/influx.go | 4 +- server/db/mysqlmanager/mysql.go | 43 ++++--- server/db/promemanager/prometheus.go | 6 +- server/db/redismanager/redis.go | 67 ++++++----- server/generator/customTopo.go | 16 +-- server/generator/generator.go | 33 +++--- server/generator/publicTopo.go | 7 +- server/generator/utils/processMatch.go | 13 +- server/generator/utils/tagInjection.go | 6 +- server/global/file.go | 2 +- server/graph/edge.go | 6 +- server/graph/node.go | 6 +- server/handler/basicHandler.go | 54 ++++----- server/handler/collectDeployHandler.go | 42 +++---- server/handler/customTopoHandler.go | 144 ++++++++++------------- server/handler/publicTopoHandler.go | 63 +++++----- server/handler/router.go | 33 ++++-- server/handler/staticPro.go | 2 +- server/resourcemanage/resourcemanage.go | 32 +++-- server/service/custom/customService.go | 92 +++++++-------- server/service/periodcollect.go | 42 ++++--- server/service/public/multihost.go | 24 ++-- server/service/public/multihostentire.go | 10 +- server/service/public/singlehost.go | 12 +- server/service/public/singlehosttree.go | 24 ++-- server/service/topoDataBuffer.go | 7 +- 31 files changed, 428 insertions(+), 451 deletions(-) diff --git a/server/agentmanager/PAgentMap.go b/server/agentmanager/PAgentMap.go index 7e624f9..9b482f8 100644 --- a/server/agentmanager/PAgentMap.go +++ b/server/agentmanager/PAgentMap.go @@ -35,12 +35,12 @@ func Wait4TopoServerReady() { for { select { case <-resourcemanage.ERManager.GoCancelCtx.Done(): - break + return default: url := "http://" + conf.Global_Config.Topo.Addr + "/plugin_manage/info" resp, err := httputils.Get(url, nil) if err == nil && resp != nil && resp.StatusCode == http.StatusOK { - break + return } time.Sleep(100 * time.Millisecond) } @@ -52,8 +52,8 @@ func (am *AgentManager) InitMachineList() { Wait4TopoServerReady() if pluginclient.Global_Client == nil { - err := errors.New("Global_Client is nil **errstackfatal**2") // err top - errormanager.ErrorTransmit(pluginclient.Global_Context, err, true) + err := errors.New("Global_Client is nil") + resourcemanage.ERManager.ErrorTransmit("error", err, true, true) return } @@ -61,8 +61,8 @@ func (am *AgentManager) InitMachineList() { machine_list, err := pluginclient.Global_Client.MachineList() if err != nil { - err = errors.Errorf("%s **errstackfatal**2", err.Error()) // err top - errormanager.ErrorTransmit(pluginclient.Global_Context, err, true) + err = errors.Errorf(err.Error()) + resourcemanage.ERManager.ErrorTransmit("error", err, true, true) } for _, m := range machine_list { @@ -79,8 +79,8 @@ func (am *AgentManager) InitMachineList() { func (am *AgentManager) UpdateMachineList() { machine_list, err := pluginclient.Global_Client.MachineList() if err != nil { - err = errors.Errorf("%s **errstackfatal**2", err.Error()) // err top - errormanager.ErrorTransmit(pluginclient.Global_Context, err, true) + err = errors.Errorf(err.Error()) + resourcemanage.ERManager.ErrorTransmit("error", err, true, true) } am.PAgentMap.Range(func(key, value interface{}) bool { diff --git a/server/agentmanager/agent.go b/server/agentmanager/agent.go index 44e0755..cbf9dc3 100644 --- a/server/agentmanager/agent.go +++ b/server/agentmanager/agent.go @@ -4,9 +4,8 @@ import ( "sync" "gitee.com/openeuler/PilotGo-plugin-topology/server/conf" - "gitee.com/openeuler/PilotGo-plugin-topology/server/errormanager" "gitee.com/openeuler/PilotGo-plugin-topology/server/graph" - "gitee.com/openeuler/PilotGo-plugin-topology/server/pluginclient" + "gitee.com/openeuler/PilotGo-plugin-topology/server/resourcemanage" "github.com/pkg/errors" ) @@ -60,15 +59,15 @@ func (am *AgentManager) GetAgent_P(uuid string) *Agent { func (am *AgentManager) DeleteAgent_P(uuid string) { if _, ok := am.PAgentMap.LoadAndDelete(uuid); !ok { - err := errors.Errorf("delete unknown agent:%s **errstack**2", uuid) // err top - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + err := errors.Errorf("delete unknown agent:%s", uuid) + resourcemanage.ERManager.ErrorTransmit("error", err, false, true) } } func (am *AgentManager) AddAgent_T(a *Agent) { if a == nil { - err := errors.Errorf("failed to add agent_t: %v **errstack**0", a) // err top - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + err := errors.Errorf("failed to add agent_t: %+v", a) + resourcemanage.ERManager.ErrorTransmit("error", err, false, true) return } am.TAgentMap.Store(a.UUID, a) @@ -89,7 +88,7 @@ func (am *AgentManager) GetAgent_T(uuid string) *Agent { func (am *AgentManager) DeleteAgent_T(uuid string) { if _, ok := am.TAgentMap.LoadAndDelete(uuid); !ok { - err := errors.Errorf("delete unknown agent:%s **errstack**2", uuid) // err top - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + err := errors.Errorf("delete unknown agent:%s", uuid) + resourcemanage.ERManager.ErrorTransmit("error", err, false, true) } } diff --git a/server/conf/config.go b/server/conf/config.go index b428193..6d0d716 100644 --- a/server/conf/config.go +++ b/server/conf/config.go @@ -45,7 +45,7 @@ func InitConfig() { bytes, err := global.FileReadBytes(ConfigFile()) if err != nil { flag.Usage() - // err = errors.Wrapf(err, "open file failed: %s, %s", ConfigFile(), err.Error()) // err top + // err = errors.Wrapf(err, "open file failed: %s, %s", ConfigFile(), err.Error()) fmt.Printf("%s\n", err.Error()) os.Exit(1) } @@ -54,7 +54,7 @@ func InitConfig() { err = yaml.Unmarshal(bytes, Global_Config) if err != nil { - err = errors.Errorf("yaml unmarshal failed: %s", err.Error()) // err top + err = errors.Errorf("yaml unmarshal failed: %s", err.Error()) fmt.Printf("%+v\n", err) os.Exit(1) } diff --git a/server/db/dbmanager.go b/server/db/dbmanager.go index 81f8e63..5993034 100644 --- a/server/db/dbmanager.go +++ b/server/db/dbmanager.go @@ -11,7 +11,6 @@ import ( "gitee.com/openeuler/PilotGo-plugin-topology/server/db/mysqlmanager" "gitee.com/openeuler/PilotGo-plugin-topology/server/db/redismanager" "gitee.com/openeuler/PilotGo-plugin-topology/server/global" - "gitee.com/openeuler/PilotGo-plugin-topology/server/pluginclient" "gitee.com/openeuler/PilotGo-plugin-topology/server/resourcemanage" "gitee.com/openeuler/PilotGo/sdk/logger" ) @@ -21,8 +20,8 @@ func InitDB() { initGraphDB() ClearGraphData(conf.Global_Config.Neo4j.Retention) } else { - err := errors.New("do not save graph data **warn**0") - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + err := errors.New("do not save graph data") + resourcemanage.ERManager.ErrorTransmit("warn", err, false, false) } initRedis() @@ -43,8 +42,8 @@ func initGraphDB() { case "otherDB": default: - err := errors.Errorf("unknown database in topo_server.yaml: %s **errstackfatal**4", conf.Global_Config.Topo.GraphDB) // err top - errormanager.ErrorTransmit(pluginclient.Global_Context, err, true) + err := errors.Errorf("unknown database in topo_server.yaml: %s", conf.Global_Config.Topo.GraphDB) + resourcemanage.ERManager.ErrorTransmit("error", err, true, true) } if graphmanager.Global_GraphDB != nil { @@ -84,8 +83,8 @@ func initInflux() { func ClearGraphData(retention int64) { if graphmanager.Global_GraphDB == nil { - err := errors.New("global_graphdb is nil **errstackfatal**0") - errormanager.ErrorTransmit(pluginclient.Global_Context, err, true) + err := errors.New("global_graphdb is nil") + resourcemanage.ERManager.ErrorTransmit("error", err, true, true) return } diff --git a/server/db/graphmanager/neo4j.go b/server/db/graphmanager/neo4j.go index a1b91b5..5294fd5 100644 --- a/server/db/graphmanager/neo4j.go +++ b/server/db/graphmanager/neo4j.go @@ -6,10 +6,9 @@ import ( "strconv" "time" - "gitee.com/openeuler/PilotGo-plugin-topology/server/errormanager" "gitee.com/openeuler/PilotGo-plugin-topology/server/global" "gitee.com/openeuler/PilotGo-plugin-topology/server/graph" - "gitee.com/openeuler/PilotGo-plugin-topology/server/pluginclient" + "gitee.com/openeuler/PilotGo-plugin-topology/server/resourcemanage" "github.com/neo4j/neo4j-go-driver/v4/neo4j" "github.com/pkg/errors" ) @@ -38,8 +37,8 @@ func Neo4jInit(url, user, pass, db string) *Neo4jClient { config.MaxConnectionLifetime = 1 * time.Hour }) if err != nil { - err := errors.Errorf("create neo4j driver failed: %s **errstackfatal**2", err.Error()) // err top - errormanager.ErrorTransmit(pluginclient.Global_Context, err, true) + err := errors.Errorf("create neo4j driver failed: %s", err.Error()) + resourcemanage.ERManager.ErrorTransmit("error", err, true, true) } global.Global_neo4j_driver = driver @@ -73,7 +72,7 @@ func (n *Neo4jClient) Node_create(unixtime string, node *graph.Node) error { return result.Consume() }) if err != nil { - err = errors.Errorf("neo4j writetransaction failed: %s, %s **errstack**9", err.Error(), cqlIN) + err = errors.Errorf("neo4j writetransaction failed: %s, %s", err.Error(), cqlIN) return err } @@ -106,7 +105,7 @@ func (n *Neo4jClient) Edge_create(unixtime string, edge *graph.Edge) error { return result.Consume() }) if err != nil { - err = errors.Errorf("neo4j writetransaction failed: %s, %s **errstack**9", err.Error(), cqlIN) + err = errors.Errorf("neo4j writetransaction failed: %s, %s", err.Error(), cqlIN) return err } @@ -125,7 +124,7 @@ func (n *Neo4jClient) Timestamps_query() ([]string, error) { _, err := session.ReadTransaction(func(tx neo4j.Transaction) (interface{}, error) { result, err := tx.Run(cqlOUT, nil) if err != nil { - err = errors.Errorf("neo4j query failed: %s, %s **errstack**2", err.Error(), cqlOUT) + err = errors.Errorf("neo4j query failed: %s, %s", err.Error(), cqlOUT) return nil, err } @@ -140,7 +139,7 @@ func (n *Neo4jClient) Timestamps_query() ([]string, error) { } if err := result.Err(); err != nil { - err = errors.Errorf("iterate result failed: %s, %s **errstack**1", err.Error(), cqlOUT) + err = errors.Errorf("iterate result failed: %s, %s", err.Error(), cqlOUT) return nil, err } @@ -148,7 +147,7 @@ func (n *Neo4jClient) Timestamps_query() ([]string, error) { }) if err != nil { - err = errors.Errorf("query Readtransaction error: %s, %s **errstack**26", err.Error(), cqlOUT) + err = errors.Errorf("query Readtransaction error: %s, %s", err.Error(), cqlOUT) return nil, err } @@ -182,7 +181,7 @@ func (n *Neo4jClient) Node_query(cypher string, varia string) ([]*graph.Node, er _, err := session.ReadTransaction(func(tx neo4j.Transaction) (interface{}, error) { result, err := tx.Run(cypher, nil) if err != nil { - err = errors.Errorf("neo4j query failed: %s, %s **errstack**2", err.Error(), cypher) + err = errors.Errorf("neo4j query failed: %s, %s", err.Error(), cypher) return nil, err } @@ -195,7 +194,7 @@ func (n *Neo4jClient) Node_query(cypher string, varia string) ([]*graph.Node, er } } if err := result.Err(); err != nil { - err = errors.Errorf("iterate node result failed: %s, %s **errstack**1", err.Error(), cypher) + err = errors.Errorf("iterate node result failed: %s, %s", err.Error(), cypher) return nil, err } @@ -203,7 +202,7 @@ func (n *Neo4jClient) Node_query(cypher string, varia string) ([]*graph.Node, er }) if err != nil { - err = errors.Errorf("node Readtransaction error: %s, %s **errstack**24", err.Error(), cypher) + err = errors.Errorf("node Readtransaction error: %s, %s", err.Error(), cypher) } return list, err } @@ -224,7 +223,7 @@ func (n *Neo4jClient) Relation_query(cypher string, varia string) ([]*graph.Edge _, err := session.ReadTransaction(func(tx neo4j.Transaction) (interface{}, error) { result, err := tx.Run(cypher, nil) if err != nil { - err = errors.Errorf("RelationshipQuery failed: %s, %s **errstack**2", err.Error(), cypher) + err = errors.Errorf("RelationshipQuery failed: %s, %s", err.Error(), cypher) return nil, err } for result.Next() { @@ -236,14 +235,14 @@ func (n *Neo4jClient) Relation_query(cypher string, varia string) ([]*graph.Edge } } if err = result.Err(); err != nil { - err = errors.Errorf("iterate relation result failed: %s, %s **errstack**1", err.Error(), cypher) + err = errors.Errorf("iterate relation result failed: %s, %s", err.Error(), cypher) return nil, err } return list, result.Err() }) if err != nil { - err = errors.Errorf("relation Readtransaction error: %s, %s **errstack**22", err.Error(), cypher) + err = errors.Errorf("relation Readtransaction error: %s, %s", err.Error(), cypher) } return list, err } @@ -261,18 +260,18 @@ func (n *Neo4jClient) ClearExpiredData(retention int64) { result, err := session.Run(cqlIN, params) if err != nil { - err = errors.Errorf("ClearExpiredData failed: %s, %s **warn**1", err.Error(), cqlIN) // err top - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + err = errors.Errorf("ClearExpiredData failed: %s, %s", err.Error(), cqlIN) + resourcemanage.ERManager.ErrorTransmit("warn", err, false, false) return } summary, err := result.Consume() if err != nil { - err = errors.Errorf("failed to consume ClearExpiredData result: %s, %s **warn**2", err.Error(), cqlIN) // err top - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + err = errors.Errorf("failed to consume ClearExpiredData result: %s, %s", err.Error(), cqlIN) + resourcemanage.ERManager.ErrorTransmit("warn", err, false, false) return } - err = errors.Errorf("delete %d nodes **debug**0", summary.Counters().NodesDeleted()) // err top - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + err = errors.Errorf("delete %d nodes", summary.Counters().NodesDeleted()) + resourcemanage.ERManager.ErrorTransmit("debug", err, false, false) } diff --git a/server/db/influxmanager/influx.go b/server/db/influxmanager/influx.go index f1dcf24..9a76768 100644 --- a/server/db/influxmanager/influx.go +++ b/server/db/influxmanager/influx.go @@ -37,7 +37,7 @@ func InfluxdbInit(conf *conf.InfluxConf) *InfluxClient { func (i *InfluxClient) WriteWithLineProtocol(measurement string, tags map[string]string, fields map[string]interface{}) error { if measurement == "" || len(fields) == 0 { - err := errors.Errorf("write to influxdb failed: measurement(%s), tags(%+v), fields(%+v) **errstack**0", measurement, tags, fields) + err := errors.Errorf("write to influxdb failed: measurement(%s), tags(%+v), fields(%+v)", measurement, tags, fields) return err } @@ -57,7 +57,7 @@ func (i *InfluxClient) Query(measurement, start, end string) error { result, err := queryAPI.Query(context.Background(), query) if err != nil { - err = errors.Errorf("%s **errstack**0", err.Error()) + err = errors.Errorf(err.Error()) return err } diff --git a/server/db/mysqlmanager/mysql.go b/server/db/mysqlmanager/mysql.go index 62f6655..6ea9077 100644 --- a/server/db/mysqlmanager/mysql.go +++ b/server/db/mysqlmanager/mysql.go @@ -7,8 +7,7 @@ import ( "strings" "gitee.com/openeuler/PilotGo-plugin-topology/server/conf" - "gitee.com/openeuler/PilotGo-plugin-topology/server/errormanager" - "gitee.com/openeuler/PilotGo-plugin-topology/server/pluginclient" + "gitee.com/openeuler/PilotGo-plugin-topology/server/resourcemanage" "gitee.com/openeuler/PilotGo/sdk/response" "github.com/pkg/errors" "gorm.io/driver/mysql" @@ -30,8 +29,8 @@ type MysqlClient struct { func MysqldbInit(conf *conf.MysqlConf) *MysqlClient { err := ensureDatabase(conf) if err != nil { - err = errors.Wrapf(err, "**errstackfatal**2") // err top - errormanager.ErrorTransmit(pluginclient.Global_Context, err, true) + err = errors.Wrapf(err, " ") + resourcemanage.ERManager.ErrorTransmit("error", err, true, true) } m := &MysqlClient{ @@ -50,14 +49,14 @@ func MysqldbInit(conf *conf.MysqlConf) *MysqlClient { }, }) if err != nil { - err := errors.Errorf("mysql connect failed: %s(url: %s) **errstackfatal**2", err.Error(), url) // err top - errormanager.ErrorTransmit(pluginclient.Global_Context, err, true) + err := errors.Errorf("mysql connect failed: %s(url: %s)", err.Error(), url) + resourcemanage.ERManager.ErrorTransmit("error", err, true, true) } var db *sql.DB if db, err = m.db.DB(); err != nil { - err = errors.Errorf("get mysql sql.db failed: %s **errstackfatal**2", err.Error()) // err top - errormanager.ErrorTransmit(pluginclient.Global_Context, err, true) + err = errors.Errorf("get mysql sql.db failed: %s", err.Error()) + resourcemanage.ERManager.ErrorTransmit("error", err, true, true) } db.SetMaxIdleConns(10) @@ -66,8 +65,8 @@ func MysqldbInit(conf *conf.MysqlConf) *MysqlClient { // mysql 模型迁移 err = m.db.AutoMigrate(&Topo_configuration_DB{}) if err != nil { - err = errors.Errorf("mysql automigrate failed: %s **errstackfatal**2", err.Error()) // err top - errormanager.ErrorTransmit(pluginclient.Global_Context, err, true) + err = errors.Errorf("mysql automigrate failed: %s", err.Error()) + resourcemanage.ERManager.ErrorTransmit("error", err, true, true) } return m @@ -75,18 +74,18 @@ func MysqldbInit(conf *conf.MysqlConf) *MysqlClient { func ensureDatabase(conf *conf.MysqlConf) error { if conf == nil { - err := errors.New("mysql config error **errstackfatal**1") + err := errors.New("mysql config error") return err } if conf.Addr == "" || conf.Username == "" || conf.Password == "" || conf.DB == "" { - err := errors.Errorf("mysql config error: addr(%s) username(%s) password(%s) db(%s) **errstackfatal**1", conf.Addr, conf.Username, conf.Password, conf.DB) + err := errors.Errorf("mysql config error: addr(%s) username(%s) password(%s) db(%s)", conf.Addr, conf.Username, conf.Password, conf.DB) return err } addr_arr := strings.Split(conf.Addr, ":") if len(addr_arr) != 2 { - err := errors.Errorf("mysql addr error: %s **errstackfatal**2", conf.Addr) + err := errors.Errorf("mysql addr error: %s", conf.Addr) return err } @@ -94,7 +93,7 @@ func ensureDatabase(conf *conf.MysqlConf) error { db, err := gorm.Open(mysql.Open(url)) if err != nil { - err := errors.Errorf("mysql connect failed: %s **errstackfatal**2", err.Error()) + err := errors.Errorf("mysql connect failed: %s", err.Error()) return err } @@ -103,11 +102,11 @@ func ensureDatabase(conf *conf.MysqlConf) error { d, err := db.DB() if err != nil { - err = errors.Errorf("get mysql sql.db failed: %s **errstackfatal**2", err.Error()) + err = errors.Errorf("get mysql sql.db failed: %s", err.Error()) return err } if err = d.Close(); err != nil { - err = errors.Errorf("close mysql sql.db failed: %s **errstackfatal**2", err.Error()) + err = errors.Errorf("close mysql sql.db failed: %s", err.Error()) return err } return nil @@ -117,7 +116,7 @@ func (m *MysqlClient) QuerySingleTopoConfiguration(tcid uint) (*Topo_configurati var tcdb *Topo_configuration_DB = new(Topo_configuration_DB) if err := m.db.Model(&Topo_configuration_DB{}).Where("id=?", tcid).First(tcdb).Error; err != nil { - err = errors.Errorf("query topo configuration failed: %s, %d **errstack**0", err.Error(), tcid) + err = errors.Errorf("query topo configuration failed: %s, %d", err.Error(), tcid) return nil, err } @@ -127,7 +126,7 @@ func (m *MysqlClient) QuerySingleTopoConfiguration(tcid uint) (*Topo_configurati func (m *MysqlClient) QueryTopoConfigurationList(query *response.PaginationQ) ([]*Topo_configuration_DB, int, error) { tcdbs := make([]*Topo_configuration_DB, 0) if err := m.db.Order("id desc").Limit(query.PageSize).Offset((query.Page - 1) * query.PageSize).Find(&tcdbs).Error; err != nil { - return nil, 0, errors.Errorf("query topo configuration list failed: %s **errstack**0", err.Error()) + return nil, 0, errors.Errorf("query topo configuration list failed: %s", err.Error()) } var total int64 @@ -141,7 +140,7 @@ func (m *MysqlClient) QueryTopoConfigurationList(query *response.PaginationQ) ([ func (m *MysqlClient) AddTopoConfiguration(tc *Topo_configuration_DB) (int, error) { _tc := tc if err := m.db.Save(_tc).Error; err != nil { - err = errors.Errorf("add topo configuration failed: %s, %+v **errstack**0", err.Error(), tc) + err = errors.Errorf("add topo configuration failed: %s, %+v", err.Error(), tc) return -1, err } @@ -150,7 +149,7 @@ func (m *MysqlClient) AddTopoConfiguration(tc *Topo_configuration_DB) (int, erro func (m *MysqlClient) DeleteTopoConfiguration(tcid uint) error { if err := m.db.Where("id = ?", tcid).Unscoped().Delete(Topo_configuration_DB{}).Error; err != nil { - return errors.Errorf("delete topo configuration failed: %s, %d **errstack**0", err.Error(), tcid) + return errors.Errorf("delete topo configuration failed: %s, %d", err.Error(), tcid) } return nil @@ -162,7 +161,7 @@ func (m *MysqlClient) TopoConfigurationToDB(tc *Topo_configuration) (*Topo_confi noderules_bytes, noderules_err := json.Marshal(tc.NodeRules) tagrules_bytes, tagrules_err := json.Marshal(tc.TagRules) if noderules_err != nil || tagrules_err != nil { - err := errors.Errorf("json marshal error: noderules(%s) tagrules)%s **errstack**4", noderules_err, tagrules_err) + err := errors.Errorf("json marshal error: noderules(%s) tagrules)%s", noderules_err, tagrules_err) return nil, err } @@ -186,7 +185,7 @@ func (m *MysqlClient) DBToTopoConfiguration(tcdb *Topo_configuration_DB) (*Topo_ noderules_err := json.Unmarshal([]byte(tcdb.NodeRules), &tc.NodeRules) tagrules_err := json.Unmarshal([]byte(tcdb.TagRules), &tc.TagRules) if noderules_err != nil || tagrules_err != nil { - err := errors.Errorf("json unmarshal error: noderules(%s) tagrules)%s **errstack**4", noderules_err, tagrules_err) + err := errors.Errorf("json unmarshal error: noderules(%s) tagrules)%s", noderules_err, tagrules_err) return nil, err } diff --git a/server/db/promemanager/prometheus.go b/server/db/promemanager/prometheus.go index d83016b..28d9e16 100644 --- a/server/db/promemanager/prometheus.go +++ b/server/db/promemanager/prometheus.go @@ -26,7 +26,7 @@ func CreatePrometheus(url string) *Prometheus { func (p *Prometheus) CreateAPI() error { client, err := api.NewClient(api.Config{Address: p.addr}) if err != nil { - err = errors.Errorf("failed to create prometheus client: %s **errstack**2", err.Error()) + err = errors.Errorf("failed to create prometheus client: %s", err.Error()) return err } @@ -41,7 +41,7 @@ func (p *Prometheus) GetTargets() ([]map[string]string, error) { result, err := p.Api.Targets(p.Ctx) if err != nil { - err = errors.Errorf("failed to get prometheus targets: %s **errstack**2", err.Error()) + err = errors.Errorf("failed to get prometheus targets: %s", err.Error()) return nil, err } @@ -60,7 +60,7 @@ func (p *Prometheus) GetMetrics() ([]string, error) { result, err := p.Api.Metadata(p.Ctx, "", "") if err != nil { - err = errors.Errorf("failed to get prometheus metric list: %s **errstack**2", err.Error()) + err = errors.Errorf("failed to get prometheus metric list: %s", err.Error()) return nil, err } diff --git a/server/db/redismanager/redis.go b/server/db/redismanager/redis.go index 4e56214..be4f6c1 100644 --- a/server/db/redismanager/redis.go +++ b/server/db/redismanager/redis.go @@ -11,9 +11,8 @@ import ( "gitee.com/openeuler/PilotGo-plugin-topology/server/agentmanager" "gitee.com/openeuler/PilotGo-plugin-topology/server/conf" - "gitee.com/openeuler/PilotGo-plugin-topology/server/errormanager" "gitee.com/openeuler/PilotGo-plugin-topology/server/global" - "gitee.com/openeuler/PilotGo-plugin-topology/server/pluginclient" + "gitee.com/openeuler/PilotGo-plugin-topology/server/resourcemanage" "gitee.com/openeuler/PilotGo/sdk/logger" "gitee.com/openeuler/PilotGo/sdk/utils/httputils" "github.com/go-redis/redis/v8" @@ -62,8 +61,8 @@ func RedisInit(url, pass string, db int, dialTimeout time.Duration) *RedisClient defer cancelFunc() _, err := r.Client.Ping(timeoutCtx).Result() if err != nil { - err = errors.Errorf("redis connection timeout: %s **errstackfatal**2", err.Error()) // err top - errormanager.ErrorTransmit(pluginclient.Global_Context, err, true) + err = errors.Errorf("redis connection timeout: %s", err.Error()) + resourcemanage.ERManager.ErrorTransmit("error", err, true, true) } return r @@ -71,13 +70,13 @@ func RedisInit(url, pass string, db int, dialTimeout time.Duration) *RedisClient func (r *RedisClient) Set(key string, value interface{}) error { if key == "" { - return errors.New("key is empty **errstack**1") + return errors.New("key is empty") } bytes, _ := json.Marshal(value) - err := r.Client.Set(pluginclient.Global_Context, key, string(bytes), 0).Err() + err := r.Client.Set(global.RootContext, key, string(bytes), 0).Err() if err != nil { - err = errors.Errorf("failed to set key-value: %s **errstack**2", err.Error()) + err = errors.Errorf("failed to set key-value: %s", err.Error()) return err } @@ -86,12 +85,12 @@ func (r *RedisClient) Set(key string, value interface{}) error { func (r *RedisClient) Get(key string, obj interface{}) (interface{}, error) { if key == "" { - return nil, errors.New("key is empty **errstack**1") + return nil, errors.New("key is empty") } - data, err := r.Client.Get(pluginclient.Global_Context, key).Result() + data, err := r.Client.Get(global.RootContext, key).Result() if err != nil { - err = errors.Errorf("failed to get value: %s, %s **errstack**2", key, err.Error()) + err = errors.Errorf("failed to get value: %s, %s", key, err.Error()) return nil, err } json.Unmarshal([]byte(data), obj) @@ -102,11 +101,11 @@ func (r *RedisClient) Scan(key string) ([]string, error) { keys := []string{} if key == "" { - return nil, errors.New("key is empty **errstack**1") + return nil, errors.New("key is empty") } - iterator := r.Client.Scan(pluginclient.Global_Context, 0, key, 0).Iterator() - for iterator.Next(pluginclient.Global_Context) { + iterator := r.Client.Scan(global.RootContext, 0, key, 0).Iterator() + for iterator.Next(global.RootContext) { key := iterator.Val() keys = append(keys, key) } @@ -116,12 +115,12 @@ func (r *RedisClient) Scan(key string) ([]string, error) { func (r *RedisClient) Delete(key string) error { if key == "" { - return errors.New("key is empty **errstack**1") + return errors.New("key is empty") } - err := r.Client.Del(pluginclient.Global_Context, key).Err() + err := r.Client.Del(global.RootContext, key).Err() if err != nil { - err = errors.Errorf("failed to del key-value: %s **errstack**2", err.Error()) + err = errors.Errorf("failed to del key-value: %s", err.Error()) return err } return nil @@ -135,8 +134,8 @@ func (r *RedisClient) UpdateTopoRunningAgentList(uuids []string, updateonce bool var abort_reason []string if agentmanager.Global_AgentManager == nil { - err := errors.New("Global_AgentManager is nil **errstackfatal**0") // err top - errormanager.ErrorTransmit(pluginclient.Global_Context, err, true) + err := errors.New("Global_AgentManager is nil") + resourcemanage.ERManager.ErrorTransmit("error", err, true, true) return -1 } @@ -150,8 +149,8 @@ func (r *RedisClient) UpdateTopoRunningAgentList(uuids []string, updateonce bool for { agent_keys, err := r.Scan("heartbeat-topoagent*") if err != nil { - err = errors.Wrap(err, "**errstack**2") // err top - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + err = errors.Wrap(err, " ") + resourcemanage.ERManager.ErrorTransmit("error", err, false, true) continue } @@ -162,8 +161,8 @@ func (r *RedisClient) UpdateTopoRunningAgentList(uuids []string, updateonce bool defer wg.Done() v, err := r.Get(key, &AgentHeartbeat{}) if err != nil { - err = errors.Wrap(err, "**errstack**2") // err top - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + err = errors.Wrap(err, " ") + resourcemanage.ERManager.ErrorTransmit("error", err, false, true) return } @@ -197,8 +196,8 @@ func (r *RedisClient) UpdateTopoRunningAgentList(uuids []string, updateonce bool } if ok, err := global.IsIPandPORTValid(agentp.IP, agentmanager.Global_AgentManager.AgentPort); !ok { - err := errors.Errorf("%s:%s is unreachable (%s) %s **warn**1", agentp.IP, agentmanager.Global_AgentManager.AgentPort, err.Error(), agentp.UUID) // err top - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + err := errors.Errorf("%s:%s is unreachable (%s) %s", agentp.IP, agentmanager.Global_AgentManager.AgentPort, err.Error(), agentp.UUID) + resourcemanage.ERManager.ErrorTransmit("warn", err, false, false) abort_reason = append(abort_reason, fmt.Sprintf("%s:ip||port不可达", agentvalue.UUID)) return } @@ -258,8 +257,8 @@ func (r *RedisClient) ActiveHeartbeatDetection(uuids []string) { err = json.Unmarshal(resp.Body, &resp_body) if err != nil { - err = errors.Errorf("%+v **errstack**2", err.Error()) // err top - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + err = errors.Errorf(err.Error()) + resourcemanage.ERManager.ErrorTransmit("error", err, false, true) return } @@ -273,16 +272,16 @@ func (r *RedisClient) ActiveHeartbeatDetection(uuids []string) { err = r.Set(key, value) if err != nil { - err = errors.Wrap(err, " **errstack**2") // err top - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + err = errors.Wrap(err, " ") + resourcemanage.ERManager.ErrorTransmit("error", err, false, true) return } } } if agentmanager.Global_AgentManager == nil { - err := errors.New("Global_AgentManager is nil **errstackfatal**0") // err top - errormanager.ErrorTransmit(pluginclient.Global_Context, err, true) + err := errors.New("Global_AgentManager is nil") + resourcemanage.ERManager.ErrorTransmit("error", err, true, true) return } @@ -294,8 +293,8 @@ func (r *RedisClient) ActiveHeartbeatDetection(uuids []string) { defer wg.Done() if ok, _ := global.IsIPandPORTValid(a.IP, agentmanager.Global_AgentManager.AgentPort); !ok { - // err := errors.Errorf("%s:%s is unreachable (%s) %s **warn**1", a.IP, agentmanager.Topo.AgentPort, err.Error(), a.UUID) // err top - // agentmanager.ErrorTransmit(agentmanager.Topo.Tctx, err, agentmanager.Topo.ErrCh, false) + // err := errors.Errorf("%s:%s is unreachable (%s) %s", a.IP, agentmanager.Topo.AgentPort, err.Error(), a.UUID) + // resourcemanage.ErrorTransmit("warn", err, false, false) return } @@ -320,8 +319,8 @@ func (r *RedisClient) ActiveHeartbeatDetection(uuids []string) { } if ok, _ := global.IsIPandPORTValid(agent.IP, agentmanager.Global_AgentManager.AgentPort); !ok { - // err := errors.Errorf("%s:%s is unreachable (%s) %s **warn**1", agent.IP, agentmanager.Topo.AgentPort, err.Error(), agent.UUID) // err top - // agentmanager.ErrorTransmit(agentmanager.Topo.Tctx, err, agentmanager.Topo.ErrCh, false) + // err := errors.Errorf("%s:%s is unreachable (%s) %s", agent.IP, agentmanager.Topo.AgentPort, err.Error(), agent.UUID) + // resourcemanage.ErrorTransmit("warn", err, false, false) return } diff --git a/server/generator/customTopo.go b/server/generator/customTopo.go index c4651fd..0ef023f 100644 --- a/server/generator/customTopo.go +++ b/server/generator/customTopo.go @@ -41,7 +41,7 @@ func (c *CustomTopo) CreateNodeEntities(agent *agentmanager.Agent, nodes *graph. host_node.Tags = append(host_node.Tags, host_node.UUID, host_node.Type) if err := utils.TagInjection(host_node, c.Tagrules); err != nil { atomic.AddInt32(c.Agent_node_count, int32(1)) - return errors.Wrap(err, "**3") + return errors.Wrap(err, " ") } nodes.Add(host_node) @@ -52,7 +52,7 @@ func (c *CustomTopo) CreateNodeEntities(agent *agentmanager.Agent, nodes *graph. if condition.Rule_type == mysqlmanager.FILTER_TYPE_HOST { if _uuid, ok := condition.Rule_condition["uuid"]; !ok { atomic.AddInt32(c.Agent_node_count, int32(1)) - return errors.Errorf("there is no uuid field in node host rule_condition: %+v **errstack**3", condition.Rule_condition) + return errors.Errorf("there is no uuid field in node host rule_condition: %+v", condition.Rule_condition) } else { uuid = _uuid.(string) break @@ -71,7 +71,7 @@ func (c *CustomTopo) CreateNodeEntities(agent *agentmanager.Agent, nodes *graph. for _, process := range agent.Processes_2 { if _name, ok := condition.Rule_condition["name"]; !ok { atomic.AddInt32(c.Agent_node_count, int32(1)) - return errors.Errorf("there is no name field in node rule_condition: %+v **errstack**3", condition.Rule_condition) + return errors.Errorf("there is no name field in node rule_condition: %+v", condition.Rule_condition) } else if utils.ProcessMatching(agent, process.ExeName, process.Cmdline, _name.(string)) { metrics_map := *graph.ProcessToMap(process) proc_node := &graph.Node{ @@ -88,7 +88,7 @@ func (c *CustomTopo) CreateNodeEntities(agent *agentmanager.Agent, nodes *graph. proc_node.Tags = append(proc_node.Tags, proc_node.UUID, proc_node.Type) if err := utils.TagInjection(proc_node, c.Tagrules); err != nil { atomic.AddInt32(c.Agent_node_count, int32(1)) - return errors.Wrap(err, "**3") + return errors.Wrap(err, " ") } nodes.Add(proc_node) @@ -100,7 +100,7 @@ func (c *CustomTopo) CreateNodeEntities(agent *agentmanager.Agent, nodes *graph. for _, process := range agent.Processes_2 { if _tag, ok := condition.Rule_condition["tag_name"]; !ok { atomic.AddInt32(c.Agent_node_count, int32(1)) - return errors.Errorf("there is no tag_name field in node rule_condition: %+v **errstack**3", condition.Rule_condition) + return errors.Errorf("there is no tag_name field in node rule_condition: %+v", condition.Rule_condition) } else if utils.ProcessMatching(agent, process.ExeName, process.Cmdline, _tag.(string)) { metrics_map := *graph.ProcessToMap(process) proc_node := &graph.Node{ @@ -117,7 +117,7 @@ func (c *CustomTopo) CreateNodeEntities(agent *agentmanager.Agent, nodes *graph. proc_node.Tags = append(proc_node.Tags, proc_node.UUID, proc_node.Type) if err := utils.TagInjection(proc_node, c.Tagrules); err != nil { atomic.AddInt32(c.Agent_node_count, int32(1)) - return errors.Wrap(err, "**3") + return errors.Wrap(err, " ") } nodes.Add(proc_node) @@ -160,7 +160,7 @@ func (c *CustomTopo) CreateNodeEntities(agent *agentmanager.Agent, nodes *graph. cpu_node.Tags = append(cpu_node.Tags, cpu_node.UUID, cpu_node.Type) if err := utils.TagInjection(cpu_node, c.Tagrules); err != nil { atomic.AddInt32(c.Agent_node_count, int32(1)) - return errors.Wrap(err, "**3") + return errors.Wrap(err, " ") } nodes.Add(cpu_node) @@ -180,7 +180,7 @@ func (c *CustomTopo) CreateNodeEntities(agent *agentmanager.Agent, nodes *graph. iface_node.Tags = append(iface_node.Tags, iface_node.UUID, iface_node.Type) if err := utils.TagInjection(iface_node, c.Tagrules); err != nil { atomic.AddInt32(c.Agent_node_count, int32(1)) - return errors.Wrap(err, "**3") + return errors.Wrap(err, " ") } nodes.Add(iface_node) diff --git a/server/generator/generator.go b/server/generator/generator.go index 396b11a..a41db5a 100755 --- a/server/generator/generator.go +++ b/server/generator/generator.go @@ -13,9 +13,8 @@ import ( "gitee.com/openeuler/PilotGo-plugin-topology/server/agentmanager" "gitee.com/openeuler/PilotGo-plugin-topology/server/conf" "gitee.com/openeuler/PilotGo-plugin-topology/server/db/mysqlmanager" - "gitee.com/openeuler/PilotGo-plugin-topology/server/errormanager" "gitee.com/openeuler/PilotGo-plugin-topology/server/graph" - "gitee.com/openeuler/PilotGo-plugin-topology/server/pluginclient" + "gitee.com/openeuler/PilotGo-plugin-topology/server/resourcemanage" "gitee.com/openeuler/PilotGo/sdk/logger" "gitee.com/openeuler/PilotGo/sdk/utils/httputils" "github.com/mitchellh/mapstructure" @@ -53,10 +52,10 @@ func (t *TopoGenerator) ProcessingData(agentnum int) (*graph.Nodes, *graph.Edges Nodes: make([]*graph.Node, 0), } edges := &graph.Edges{ - Lock: sync.Mutex{}, - Lookup: sync.Map{}, + Lock: sync.Mutex{}, + Lookup: sync.Map{}, Node_Edges_map: sync.Map{}, - Edges: make([]*graph.Edge, 0), + Edges: make([]*graph.Edge, 0), } var wg sync.WaitGroup @@ -67,13 +66,13 @@ func (t *TopoGenerator) ProcessingData(agentnum int) (*graph.Nodes, *graph.Edges collect_errorlist = t.collectInstantData() if len(collect_errorlist) != 0 { for i, err := range collect_errorlist { - collect_errorlist[i] = errors.Wrap(err, "**7") + collect_errorlist[i] = errors.Wrap(err, " ") } } start := time.Now() - ctx1, cancel1 := context.WithCancel(pluginclient.Global_Context) + ctx1, cancel1 := context.WithCancel(resourcemanage.ERManager.GoCancelCtx) go func(cancelfunc context.CancelFunc) { for { if atomic.LoadInt32(t.Factory.Return_Agent_node_count()) == int32(agentnum) { @@ -84,8 +83,8 @@ func (t *TopoGenerator) ProcessingData(agentnum int) (*graph.Nodes, *graph.Edges }(cancel1) if agentmanager.Global_AgentManager == nil { - err := errors.New("Global_AgentManager is nil **errstackfatal**0") // err top - errormanager.ErrorTransmit(pluginclient.Global_Context, err, true) + err := errors.New("Global_AgentManager is nil") + resourcemanage.ERManager.ErrorTransmit("error", err, true, true) return nil, nil, nil, nil } @@ -102,7 +101,7 @@ func (t *TopoGenerator) ProcessingData(agentnum int) (*graph.Nodes, *graph.Edges err := t.Factory.CreateNodeEntities(_agent, _nodes) if err != nil { process_errorlist_rwlock.Lock() - process_errorlist = append(process_errorlist, errors.Wrap(err, "**2")) + process_errorlist = append(process_errorlist, errors.Wrap(err, " ")) process_errorlist_rwlock.Unlock() } @@ -111,7 +110,7 @@ func (t *TopoGenerator) ProcessingData(agentnum int) (*graph.Nodes, *graph.Edges err = t.Factory.CreateEdgeEntities(_agent, _edges, _nodes) if err != nil { process_errorlist_rwlock.Lock() - process_errorlist = append(process_errorlist, errors.Wrap(err, "**2")) + process_errorlist = append(process_errorlist, errors.Wrap(err, " ")) process_errorlist_rwlock.Unlock() } @@ -138,8 +137,8 @@ func (t *TopoGenerator) collectInstantData() []error { var errorlist_rwlock sync.RWMutex if agentmanager.Global_AgentManager == nil { - err := errors.New("Global_AgentManager is nil **errstackfatal**0") // err top - errormanager.ErrorTransmit(pluginclient.Global_Context, err, true) + err := errors.New("Global_AgentManager is nil") + resourcemanage.ERManager.ErrorTransmit("error", err, true, true) return nil } @@ -156,7 +155,7 @@ func (t *TopoGenerator) collectInstantData() []error { err := t.getCollectDataFromTopoAgent(agent) if err != nil { errorlist_rwlock.Lock() - errorlist = append(errorlist, errors.Wrapf(err, "%s**2", agent.IP)) + errorlist = append(errorlist, errors.Wrap(err, agent.IP)) errorlist_rwlock.Unlock() } agentmanager.Global_AgentManager.AddAgent_T(agent) @@ -186,7 +185,7 @@ func (t *TopoGenerator) getCollectDataFromTopoAgent(agent *agentmanager.Agent) e resp, err := httputils.Get(url, nil) if err != nil { - return errors.Errorf("%s, %s **errstack**2", url, err.Error()) + return errors.Errorf("%s, %s", url, err.Error()) } // ttcode @@ -198,7 +197,7 @@ func (t *TopoGenerator) getCollectDataFromTopoAgent(agent *agentmanager.Agent) e logger.Info("\033[32mtopo server 采集数据大小\033[0m: %s, %d kb\n", agent.UUID, fileInfo.Size()/1024) if statuscode := resp.StatusCode; statuscode != 200 { - return errors.Errorf("%v, %s **errstack**2", resp.StatusCode, url) + return errors.Errorf("%v, %s", resp.StatusCode, url) } results := struct { @@ -209,7 +208,7 @@ func (t *TopoGenerator) getCollectDataFromTopoAgent(agent *agentmanager.Agent) e err = json.Unmarshal(resp.Body, &results) if err != nil { - return errors.Errorf("%s **errstack**2", err.Error()) + return errors.New(err.Error()) } collectdata := &struct { diff --git a/server/generator/publicTopo.go b/server/generator/publicTopo.go index c574b40..6296fd8 100644 --- a/server/generator/publicTopo.go +++ b/server/generator/publicTopo.go @@ -7,10 +7,9 @@ import ( "sync/atomic" "gitee.com/openeuler/PilotGo-plugin-topology/server/agentmanager" - "gitee.com/openeuler/PilotGo-plugin-topology/server/errormanager" "gitee.com/openeuler/PilotGo-plugin-topology/server/global" "gitee.com/openeuler/PilotGo-plugin-topology/server/graph" - "gitee.com/openeuler/PilotGo-plugin-topology/server/pluginclient" + "gitee.com/openeuler/PilotGo-plugin-topology/server/resourcemanage" "github.com/pkg/errors" ) @@ -86,8 +85,8 @@ func (p *PublicTopo) CreateNodeEntities(agent *agentmanager.Agent, nodes *graph. nodes.Add(net_node) } else { - err := errors.Errorf("syntax error: %s **errstack**13", net.Laddr) // err top - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + err := errors.Errorf("syntax error: %s", net.Laddr) + resourcemanage.ERManager.ErrorTransmit("error", err, false, true) } } diff --git a/server/generator/utils/processMatch.go b/server/generator/utils/processMatch.go index 886a56c..56efebd 100755 --- a/server/generator/utils/processMatch.go +++ b/server/generator/utils/processMatch.go @@ -6,8 +6,7 @@ import ( "strings" "gitee.com/openeuler/PilotGo-plugin-topology/server/agentmanager" - "gitee.com/openeuler/PilotGo-plugin-topology/server/errormanager" - "gitee.com/openeuler/PilotGo-plugin-topology/server/pluginclient" + "gitee.com/openeuler/PilotGo-plugin-topology/server/resourcemanage" "gitee.com/openeuler/PilotGo/sdk/utils/httputils" docker "github.com/fsouza/go-dockerclient" @@ -17,11 +16,11 @@ import ( func ContainerList(agent *agentmanager.Agent) ([]docker.APIContainers, error) { resp, err := httputils.Get("http://"+agent.IP+":"+agent.Port+"/plugin/topology/api/container_list", nil) if err != nil { - return nil, errors.Errorf("get container list from agent %s failed: %s **errstack**0", agent.IP, err.Error()) + return nil, errors.Errorf("get container list from agent %s failed: %s", agent.IP, err.Error()) } if resp == nil || resp.StatusCode != 200 { - return nil, errors.Errorf("get container list from agent %s failed: %+v **errstack**0", agent.IP, resp) + return nil, errors.Errorf("get container list from agent %s failed: %+v", agent.IP, resp) } resp_body := struct { @@ -32,7 +31,7 @@ func ContainerList(agent *agentmanager.Agent) ([]docker.APIContainers, error) { err = json.Unmarshal(resp.Body, &resp_body) if err != nil { - return nil, errors.Errorf("json unmarshal from agent %s failed: %s **errstack**2", agent.IP, err.Error()) + return nil, errors.Errorf("json unmarshal from agent %s failed: %s", agent.IP, err.Error()) } return resp_body.Data, nil @@ -103,8 +102,8 @@ func ProcessMatching(agent *agentmanager.Agent, exename, cmdline, component stri containers, err := ContainerList(agent) if err != nil { - err = errors.Wrap(err, " **errstack**0") // err top - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + err = errors.Wrap(err, " ") + resourcemanage.ERManager.ErrorTransmit("error", err, false, true) break } diff --git a/server/generator/utils/tagInjection.go b/server/generator/utils/tagInjection.go index 9dbcbab..e5a5539 100644 --- a/server/generator/utils/tagInjection.go +++ b/server/generator/utils/tagInjection.go @@ -15,7 +15,7 @@ func TagInjection(n *graph.Node, tags []mysqlmanager.Tag_rule) error { if condition.Rule_type == mysqlmanager.FILTER_TYPE_HOST { _uuid, ok := condition.Rule_condition["uuid"] if !ok { - return errors.Errorf("there is no uuid field in tag rule_condition: %+v **errstack**2", condition.Rule_condition) + return errors.Errorf("there is no uuid field in tag rule_condition: %+v", condition.Rule_condition) } uuid = _uuid.(string) break @@ -37,13 +37,13 @@ func TagInjection(n *graph.Node, tags []mysqlmanager.Tag_rule) error { continue case mysqlmanager.FILTER_TYPE_PROCESS: if _name, ok := condition.Rule_condition["name"]; !ok { - return errors.Errorf("there is no name field in tag rule_condition: %+v **errstack**2", condition.Rule_condition) + return errors.Errorf("there is no name field in tag rule_condition: %+v", condition.Rule_condition) } else if _name.(string) == n.Name { n.Tags = append(n.Tags, tagrule.Tag_name) } case mysqlmanager.FILTER_TYPE_TAG: if _tag, ok := condition.Rule_condition["tag_name"]; !ok { - return errors.Errorf("there is no tag_name field in tag rule_condition: %+v **errstack**2", condition.Rule_condition) + return errors.Errorf("there is no tag_name field in tag rule_condition: %+v", condition.Rule_condition) } else if _tag.(string) == n.Name { n.Tags = append(n.Tags, tagrule.Tag_name) } diff --git a/server/global/file.go b/server/global/file.go index 57d1ee2..f9283da 100755 --- a/server/global/file.go +++ b/server/global/file.go @@ -10,7 +10,7 @@ import ( func FileReadString(filePath string) (string, error) { content, err := os.ReadFile(filePath) if err != nil { - return "", errors.Errorf("%s **errstack**0", err.Error()) + return "", errors.New(err.Error()) } return string(content), nil diff --git a/server/graph/edge.go b/server/graph/edge.go index 1a813fb..d3a2b96 100644 --- a/server/graph/edge.go +++ b/server/graph/edge.go @@ -98,14 +98,14 @@ func (e *Edges) Remove(id string) error { e.Edges = append(e.Edges[:i], e.Edges[i+1:]...) // 从e.lookup中移除边 if _, ok := e.Lookup.LoadAndDelete(id); !ok { - return errors.Errorf("edge %+v not fount in lookup sync.map **errstack**0", id) + return errors.Errorf("edge %+v not fount in lookup sync.map", id) } // 从e.node_edges_map中移除边 if _, ok := e.Node_Edges_map.LoadAndDelete(id); !ok { - return errors.Errorf("edge %+v not fount in node_edges_map sync.map **errstack**0", id) + return errors.Errorf("edge %+v not fount in node_edges_map sync.map", id) } return nil } - return errors.Errorf("edge %+v not fount in slice **errstack**0", id) + return errors.Errorf("edge %+v not fount in slice", id) } diff --git a/server/graph/node.go b/server/graph/node.go index a8bbaa8..432df99 100755 --- a/server/graph/node.go +++ b/server/graph/node.go @@ -53,7 +53,7 @@ func (ns *Nodes) Remove(node *Node) error { } } } else { - return errors.Errorf("failed to remove node: %v from nodes.lookupbytype **errstack**0", node) + return errors.Errorf("failed to remove node: %v from nodes.lookupbytype", node) } // 移除ns.lookupbyuuid中的node节点 if uuidnodes, ok := ns.LookupByUUID[ns.Nodes[i].UUID]; ok && len(uuidnodes) > 0 { @@ -64,7 +64,7 @@ func (ns *Nodes) Remove(node *Node) error { } } } else { - return errors.Errorf("failed to remove node: %v from nodes.lookupbyuuid **errstack**0", node) + return errors.Errorf("failed to remove node: %v from nodes.lookupbyuuid", node) } // 移除ns.nodes和ns.lookup中的node节点 ns.Nodes = append(ns.Nodes[:i], ns.Nodes[i+1:]...) @@ -73,5 +73,5 @@ func (ns *Nodes) Remove(node *Node) error { return nil } - return errors.Errorf("node %s not found**errstack**0", node.ID) + return errors.Errorf("node %s not found", node.ID) } diff --git a/server/handler/basicHandler.go b/server/handler/basicHandler.go index f4e755b..b7fdb1c 100644 --- a/server/handler/basicHandler.go +++ b/server/handler/basicHandler.go @@ -8,8 +8,8 @@ import ( "gitee.com/openeuler/PilotGo-plugin-topology/server/agentmanager" "gitee.com/openeuler/PilotGo-plugin-topology/server/db/graphmanager" "gitee.com/openeuler/PilotGo-plugin-topology/server/db/redismanager" - "gitee.com/openeuler/PilotGo-plugin-topology/server/errormanager" "gitee.com/openeuler/PilotGo-plugin-topology/server/pluginclient" + "gitee.com/openeuler/PilotGo-plugin-topology/server/resourcemanage" "gitee.com/openeuler/PilotGo/sdk/response" "github.com/gin-gonic/gin" "github.com/pkg/errors" @@ -20,31 +20,31 @@ func HeartbeatHandle(ctx *gin.Context) { // 写入redis的数据为 (heartbeat-: {"UUID": "f7504bef-76e9-446c-95ee-196878b398a1", "Addr": "10.44.55.66:9992", "HeartbeatInterval": 60, "Time": "2023-12-22T17:09:23+08:00"}) value := redismanager.AgentHeartbeat{} if err := ctx.ShouldBindJSON(&value); err != nil { - err := errors.New("bind json failed **errstackfatal**0") + err := errors.New("bind json failed") ctx.JSON(http.StatusInternalServerError, gin.H{ "code": -1, "error": err.Error(), "data": nil, }) - errormanager.ErrorTransmit(pluginclient.Global_Context, err, true) + resourcemanage.ERManager.ErrorTransmit("error", err, true, true) } key := "heartbeat-topoagent-" + value.UUID value.Time = time.Now() if agentmanager.Global_AgentManager == nil { - err := errors.New("Global_AgentManager is nil **errstackfatal**0") + err := errors.New("Global_AgentManager is nil") ctx.JSON(http.StatusInternalServerError, gin.H{ "code": -1, "error": err.Error(), "data": nil, }) - errormanager.ErrorTransmit(pluginclient.Global_Context, err, true) + resourcemanage.ERManager.ErrorTransmit("error", err, true, true) return } if agentmanager.Global_AgentManager.GetAgent_P(value.UUID) == nil { - err := errors.Errorf("unknown agent's heartbeat: %s, %s **warn**1", value.UUID, value.Addr) // err top - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + err := errors.Errorf("unknown agent's heartbeat: %s, %s", value.UUID, value.Addr) + resourcemanage.ERManager.ErrorTransmit("warn", err, false, false) ctx.JSON(http.StatusUnauthorized, gin.H{ "code": -1, "error": err.Error(), @@ -54,20 +54,20 @@ func HeartbeatHandle(ctx *gin.Context) { } if redismanager.Global_Redis == nil { - err := errors.New("Global_Redis is nil **errstackfatal**0") // err top + err := errors.New("Global_Redis is nil") ctx.JSON(http.StatusUnauthorized, gin.H{ "code": -1, "error": err.Error(), "data": nil, }) - errormanager.ErrorTransmit(pluginclient.Global_Context, err, true) + resourcemanage.ERManager.ErrorTransmit("error", err, true, true) return } err := redismanager.Global_Redis.Set(key, value) if err != nil { - err = errors.Wrap(err, " **errstack**2") // err top - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + err = errors.Wrap(err, " ") + resourcemanage.ERManager.ErrorTransmit("error", err, false, true) ctx.JSON(http.StatusInternalServerError, gin.H{ "code": -1, @@ -86,16 +86,16 @@ func HeartbeatHandle(ctx *gin.Context) { func TimestampsHandle(ctx *gin.Context) { if graphmanager.Global_GraphDB == nil { - err := errors.New("Global_GraphDB is nil **errstackfatal**0") // err top + err := errors.New("Global_GraphDB is nil") response.Fail(ctx, nil, err.Error()) - errormanager.ErrorTransmit(pluginclient.Global_Context, err, true) + resourcemanage.ERManager.ErrorTransmit("error", err, true, true) return } times, err := graphmanager.Global_GraphDB.Timestamps_query() if err != nil { - err = errors.Wrap(err, " **errstack**2") - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + err = errors.Wrap(err, " ") + resourcemanage.ERManager.ErrorTransmit("error", err, false, true) response.Fail(ctx, nil, err.Error()) return @@ -108,9 +108,9 @@ func AgentListHandle(ctx *gin.Context) { agentmap := make(map[string]string) if agentmanager.Global_AgentManager == nil { - err := errors.New("Global_AgentManager is nil **errstackfatal**0") + err := errors.New("Global_AgentManager is nil") response.Fail(ctx, nil, err.Error()) - errormanager.ErrorTransmit(pluginclient.Global_Context, err, true) + resourcemanage.ERManager.ErrorTransmit("error", err, true, true) return } @@ -130,16 +130,16 @@ func AgentListHandle(ctx *gin.Context) { func BatchListHandle(ctx *gin.Context) { if pluginclient.Global_Client == nil { - err := errors.New("Global_Client is nil **errstackfatal**0") + err := errors.New("Global_Client is nil") response.Fail(ctx, nil, err.Error()) - errormanager.ErrorTransmit(pluginclient.Global_Context, err, true) + resourcemanage.ERManager.ErrorTransmit("error", err, true, true) return } batchlist, err := pluginclient.Global_Client.BatchList() if err != nil { - err = errors.Errorf("%s **warn**0", err.Error()) - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + err = errors.New(err.Error()) + resourcemanage.ERManager.ErrorTransmit("warn", err, false, false) response.Fail(ctx, nil, err.Error()) return } @@ -157,24 +157,24 @@ func BatchMachineListHandle(ctx *gin.Context) { } if pluginclient.Global_Client == nil { - err := errors.New("Global_Client is nil **errstackfatal**0") + err := errors.New("Global_Client is nil") response.Fail(ctx, nil, err.Error()) - errormanager.ErrorTransmit(pluginclient.Global_Context, err, true) + resourcemanage.ERManager.ErrorTransmit("error", err, true, true) return } machine_uuids, err := pluginclient.Global_Client.BatchUUIDList(BatchId) if err != nil { - err = errors.Errorf("%s **errstack**0", err.Error()) - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + err = errors.New(err.Error()) + resourcemanage.ERManager.ErrorTransmit("error", err, false, true) response.Fail(ctx, nil, err.Error()) return } if agentmanager.Global_AgentManager == nil { - err := errors.New("Global_AgentManager is nil **errstackfatal**0") + err := errors.New("Global_AgentManager is nil") response.Fail(ctx, nil, err.Error()) - errormanager.ErrorTransmit(pluginclient.Global_Context, err, true) + resourcemanage.ERManager.ErrorTransmit("error", err, true, true) return } diff --git a/server/handler/collectDeployHandler.go b/server/handler/collectDeployHandler.go index 1180d0d..112bf75 100644 --- a/server/handler/collectDeployHandler.go +++ b/server/handler/collectDeployHandler.go @@ -9,8 +9,8 @@ import ( "github.com/pkg/errors" "gitee.com/openeuler/PilotGo-plugin-topology/server/conf" - "gitee.com/openeuler/PilotGo-plugin-topology/server/errormanager" "gitee.com/openeuler/PilotGo-plugin-topology/server/pluginclient" + "gitee.com/openeuler/PilotGo-plugin-topology/server/resourcemanage" "gitee.com/openeuler/PilotGo/sdk/common" "gitee.com/openeuler/PilotGo/sdk/response" "github.com/gin-gonic/gin" @@ -21,24 +21,24 @@ func DeployCollectEndpointHandle(ctx *gin.Context) { MachineUUIDs []string `json:"uuids"` }{} if err := ctx.ShouldBind(uuids); err != nil { - err = errors.Errorf("%s **errstack**0", err.Error()) - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + err = errors.New(err.Error()) + resourcemanage.ERManager.ErrorTransmit("error", err, false, true) response.Fail(ctx, nil, "parameter error") return } file, err := os.Open(strings.TrimSuffix(conf.Global_Config.Topo.Path, "/") + "/deploy-collect-endpoint.sh") if err != nil { - err = errors.Errorf("%s **errstack**0", err.Error()) - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + err = errors.New(err.Error()) + resourcemanage.ERManager.ErrorTransmit("error", err, false, true) response.Fail(ctx, nil, "open file error: "+errors.Cause(err).Error()) return } defer file.Close() script_bytes, err := io.ReadAll(file) if err != nil { - err = errors.Errorf("%s **errstack**0", err.Error()) - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + err = errors.New(err.Error()) + resourcemanage.ERManager.ErrorTransmit("error", err, false, true) response.Fail(ctx, nil, "read file error: "+errors.Cause(err).Error()) return } @@ -53,14 +53,14 @@ func DeployCollectEndpointHandle(ctx *gin.Context) { "--fleet=10.41.161.101:8220", }) if err != nil { - err = errors.Errorf("%s **errstack**0", err.Error()) - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + err = errors.New(err.Error()) + resourcemanage.ERManager.ErrorTransmit("error", err, false, true) response.Fail(ctx, nil, errors.Cause(err).Error()) return } for _, res := range cmdresults { - err := errors.Errorf("collect endpoint deploy: [retcode:%d][uuid:%s][ip:%s][stdout:%s][stderr:%s] **warn**0", res.RetCode, res.MachineUUID, res.MachineIP, res.Stdout, res.Stderr) - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + err := errors.Errorf("collect endpoint deploy: [retcode:%d][uuid:%s][ip:%s][stdout:%s][stderr:%s]", res.RetCode, res.MachineUUID, res.MachineIP, res.Stdout, res.Stderr) + resourcemanage.ERManager.ErrorTransmit("warn", err, false, false) } response.Success(ctx, nil, "collect endpoint deploy") @@ -72,24 +72,24 @@ func CollectEndpointHandle(ctx *gin.Context) { MachineUUIDs []string `json:"uuids"` }{} if err := ctx.ShouldBind(uuids); err != nil { - err = errors.Errorf("%s **errstack**0", err.Error()) - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + err = errors.New(err.Error()) + resourcemanage.ERManager.ErrorTransmit("error", err, false, true) response.Fail(ctx, nil, "parameter error") return } file, err := os.Open(strings.TrimSuffix(conf.Global_Config.Topo.Path, "/") + "/collect-endpoint.sh") if err != nil { - err = errors.Errorf("%s **errstack**0", err.Error()) - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + err = errors.New(err.Error()) + resourcemanage.ERManager.ErrorTransmit("error", err, false, true) response.Fail(ctx, nil, "open file error: "+errors.Cause(err).Error()) return } defer file.Close() script_bytes, err := io.ReadAll(file) if err != nil { - err = errors.Errorf("%s **errstack**0", err.Error()) - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + err = errors.New(err.Error()) + resourcemanage.ERManager.ErrorTransmit("error", err, false, true) response.Fail(ctx, nil, "read file error: "+errors.Cause(err).Error()) return } @@ -109,14 +109,14 @@ func CollectEndpointHandle(ctx *gin.Context) { }) } if err != nil { - err = errors.Errorf("%s **errstack**0", err.Error()) - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + err = errors.New(err.Error()) + resourcemanage.ERManager.ErrorTransmit("error", err, false, true) response.Fail(ctx, nil, errors.Cause(err).Error()) return } for _, res := range cmdresults { - err := errors.Errorf("collect endpoint deploy: [retcode:%d][uuid:%s][ip:%s][stdout:%s][stderr:%s] **warn**0", res.RetCode, res.MachineUUID, res.MachineIP, res.Stdout, res.Stderr) - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + err := errors.Errorf("collect endpoint deploy: [retcode:%d][uuid:%s][ip:%s][stdout:%s][stderr:%s]", res.RetCode, res.MachineUUID, res.MachineIP, res.Stdout, res.Stderr) + resourcemanage.ERManager.ErrorTransmit("warn", err, false, false) } response.Success(ctx, nil, fmt.Sprintf("collect endpoint %s", action)) diff --git a/server/handler/customTopoHandler.go b/server/handler/customTopoHandler.go index 5d10a78..7c57b87 100755 --- a/server/handler/customTopoHandler.go +++ b/server/handler/customTopoHandler.go @@ -2,12 +2,10 @@ package handler import ( "strconv" - "strings" "gitee.com/openeuler/PilotGo-plugin-topology/server/db/mysqlmanager" - "gitee.com/openeuler/PilotGo-plugin-topology/server/errormanager" "gitee.com/openeuler/PilotGo-plugin-topology/server/graph" - "gitee.com/openeuler/PilotGo-plugin-topology/server/pluginclient" + "gitee.com/openeuler/PilotGo-plugin-topology/server/resourcemanage" "gitee.com/openeuler/PilotGo-plugin-topology/server/service" "gitee.com/openeuler/PilotGo-plugin-topology/server/service/custom" "gitee.com/openeuler/PilotGo/sdk/response" @@ -19,33 +17,31 @@ func CustomTopoListHandle(ctx *gin.Context) { query := &response.PaginationQ{} err := ctx.ShouldBindQuery(query) if err != nil { - err = errors.New("failed to load parameters in url **errstack**2") // err top - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + err = errors.New("failed to load parameters in url") + resourcemanage.ERManager.ErrorTransmit("error", err, false, true) response.Fail(ctx, nil, errors.Cause(err).Error()) return } if query.PageSize == 0 && query.Page == 0 { - err := errors.New("query topo configuration list failed: page size and page can not be zero **errstack**1") // err top - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + err := errors.New("query topo configuration list failed: page size and page can not be zero") + resourcemanage.ERManager.ErrorTransmit("error", err, false, true) response.Fail(ctx, nil, errors.Cause(err).Error()) return } - tcs, total, err := custom.CustomTopoListService(query) + tcs, total, err, exit := custom.CustomTopoListService(query) if err != nil { - switch strings.Split(errors.Cause(err).Error(), "**")[1] { - case "errstack": - err = errors.Wrap(err, " **errstack**2") // err top - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + if exit { + err = errors.Wrap(err, " ") response.Fail(ctx, nil, errors.Cause(err).Error()) - return - case "errstackfatal": - err = errors.Wrap(err, " **errstackfatal**2") // err top - response.Fail(ctx, nil, errors.Cause(err).Error()) - errormanager.ErrorTransmit(pluginclient.Global_Context, err, true) + resourcemanage.ERManager.ErrorTransmit("error", err, true, true) return } + err = errors.Wrap(err, " ") + resourcemanage.ERManager.ErrorTransmit("error", err, false, true) + response.Fail(ctx, nil, errors.Cause(err).Error()) + return } response.DataPagination(ctx, tcs, total, query) @@ -55,33 +51,31 @@ func CreateCustomTopoHandle(ctx *gin.Context) { var tc *mysqlmanager.Topo_configuration = new(mysqlmanager.Topo_configuration) if err := ctx.ShouldBindJSON(tc); err != nil { - err = errors.Wrap(err, " **errstack**1") // err top - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + err = errors.Wrap(err, " ") + resourcemanage.ERManager.ErrorTransmit("error", err, false, true) response.Fail(ctx, nil, errors.Cause(err).Error()) return } if tc.Name == "" && tc.BatchId == 0 && len(tc.NodeRules) == 0 && len(tc.TagRules) == 0 { - err := errors.New("create topo configuration failed: topo configuration required **errstack**1") // err top - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + err := errors.New("create topo configuration failed: topo configuration required") + resourcemanage.ERManager.ErrorTransmit("error", err, false, true) response.Fail(ctx, nil, errors.Cause(err).Error()) return } - tcdb_id, err := custom.CreateCustomTopoService(tc) + tcdb_id, err, exit := custom.CreateCustomTopoService(tc) if err != nil { - switch strings.Split(errors.Cause(err).Error(), "**")[1] { - case "errstack": - err = errors.Wrap(err, "**errstack**1") // err top - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + if exit { + err = errors.Wrap(err, " ") response.Fail(ctx, nil, errors.Cause(err).Error()) - return - case "errstackfatal": - err = errors.Wrap(err, " **errstackfatal**2") // err top - response.Fail(ctx, nil, errors.Cause(err).Error()) - errormanager.ErrorTransmit(pluginclient.Global_Context, err, true) + resourcemanage.ERManager.ErrorTransmit("error", err, true, true) return } + err = errors.Wrap(err, " ") + resourcemanage.ERManager.ErrorTransmit("error", err, false, true) + response.Fail(ctx, nil, errors.Cause(err).Error()) + return } response.Success(ctx, tcdb_id, "successfully created action") @@ -96,33 +90,31 @@ func UpdateCustomTopoHandle(ctx *gin.Context) { // fmt.Printf("%+v\n", ctx.Request.Body) if err := ctx.ShouldBindJSON(&req_body); err != nil { - err = errors.Wrap(err, "**errstack**1") // err top - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + err = errors.Wrap(err, " ") + resourcemanage.ERManager.ErrorTransmit("error", err, false, true) response.Fail(ctx, nil, errors.Cause(err).Error()) return } if req_body.TC.Name == "" && req_body.TC.BatchId == 0 && len(req_body.TC.NodeRules) == 0 && len(req_body.TC.TagRules) == 0 { - err := errors.New("update topo configuration failed: topo configuration required **errstack**1") // err top - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + err := errors.New("update topo configuration failed: topo configuration required") + resourcemanage.ERManager.ErrorTransmit("error", err, false, true) response.Fail(ctx, nil, errors.Cause(err).Error()) return } - tcdb_id, err := custom.UpdateCustomTopoService(req_body.TC, *req_body.ID) + tcdb_id, err, exit := custom.UpdateCustomTopoService(req_body.TC, *req_body.ID) if err != nil { - switch strings.Split(errors.Cause(err).Error(), "**")[1] { - case "errstack": - err = errors.Wrap(err, "**errstack**2") // err top - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) - response.Fail(ctx, nil, errors.Cause(err).Error()) - return - case "errstackfatal": - err = errors.Wrap(err, " **errstackfatal**2") // err top + if exit { + err = errors.Wrap(err, " ") response.Fail(ctx, nil, errors.Cause(err).Error()) - errormanager.ErrorTransmit(pluginclient.Global_Context, err, true) + resourcemanage.ERManager.ErrorTransmit("error", err, true, true) return } + err = errors.Wrap(err, " ") + resourcemanage.ERManager.ErrorTransmit("error", err, false, true) + response.Fail(ctx, nil, errors.Cause(err).Error()) + return } response.Success(ctx, tcdb_id, "successfully updated action") @@ -138,8 +130,8 @@ func RunCustomTopoHandle(ctx *gin.Context) { tcid_str := ctx.Query("id") if tcid_str == "" { - err := errors.New("id is nil **errstack**2") // err top - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + err := errors.New("id is nil") + resourcemanage.ERManager.ErrorTransmit("error", err, false, true) doneChan <- custom_topodata response.Fail(ctx, nil, errors.Cause(err).Error()) return @@ -148,40 +140,32 @@ func RunCustomTopoHandle(ctx *gin.Context) { tcid_int, err := strconv.Atoi(tcid_str) if err != nil { - err = errors.Wrap(err, "**errstack**2") // err top - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + err = errors.Wrap(err, " ") + resourcemanage.ERManager.ErrorTransmit("error", err, false, true) doneChan <- custom_topodata response.Fail(ctx, nil, errors.Cause(err).Error()) return } - custom_topodata.Nodes, custom_topodata.Edges, custom_topodata.Combos, err = custom.RunCustomTopoService(uint(tcid_int)) + exit := false + custom_topodata.Nodes, custom_topodata.Edges, custom_topodata.Combos, err, exit = custom.RunCustomTopoService(uint(tcid_int)) if err != nil { - if len(strings.Split(errors.Cause(err).Error(), "**")) == 0 { - err = errors.Errorf("wrong err format: %s **warn**0", errors.Cause(err).Error()) - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) - doneChan <- custom_topodata - response.Fail(ctx, nil, errors.Cause(err).Error()) - return - } - switch strings.Split(errors.Cause(err).Error(), "**")[1] { - case "errstack": - err = errors.Wrap(err, " **errstack**2") - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + if exit { + err = errors.Wrap(err, " ") doneChan <- custom_topodata response.Fail(ctx, nil, errors.Cause(err).Error()) - return - case "errstackfatal": - err = errors.Wrap(err, " **errstackfatal**2") - doneChan <- custom_topodata - response.Fail(ctx, nil, errors.Cause(err).Error()) - errormanager.ErrorTransmit(pluginclient.Global_Context, err, true) + resourcemanage.ERManager.ErrorTransmit("error", err, true, true) return } + err = errors.Wrap(err, " ") + resourcemanage.ERManager.ErrorTransmit("error", err, false, true) + doneChan <- custom_topodata + response.Fail(ctx, nil, errors.Cause(err).Error()) + return } if len(custom_topodata.Nodes.Nodes) == 0 || len(custom_topodata.Edges.Edges) == 0 { - err := errors.New("nodes list is null or edges list is null **errstack**0") - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + err := errors.New("nodes list is null or edges list is null") + resourcemanage.ERManager.ErrorTransmit("error", err, false, true) doneChan <- custom_topodata response.Fail(ctx, nil, errors.Cause(err).Error()) return @@ -211,25 +195,23 @@ func DeleteCustomTopoHandle(ctx *gin.Context) { }{} if err := ctx.ShouldBindJSON(&req_body); err != nil { - err = errors.New(err.Error() + "**errstack**1") // err top - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + err = errors.New(err.Error()) + resourcemanage.ERManager.ErrorTransmit("error", err, false, true) response.Fail(ctx, nil, errors.Cause(err).Error()) return } - if err := custom.DeleteCustomTopoService(req_body.IDs); err != nil { - switch strings.Split(errors.Cause(err).Error(), "**")[1] { - case "errstack": - err = errors.Wrap(err, "**errstack**1") // err top - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) - response.Fail(ctx, nil, errors.Cause(err).Error()) - return - case "errstackfatal": - err = errors.Wrap(err, " **errstackfatal**2") // err top + if err, exit := custom.DeleteCustomTopoService(req_body.IDs); err != nil { + if exit { + err = errors.Wrap(err, " ") response.Fail(ctx, nil, errors.Cause(err).Error()) - errormanager.ErrorTransmit(pluginclient.Global_Context, err, true) + resourcemanage.ERManager.ErrorTransmit("error", err, true, true) return } + err = errors.Wrap(err, " ") + resourcemanage.ERManager.ErrorTransmit("error", err, false, true) + response.Fail(ctx, nil, errors.Cause(err).Error()) + return } response.Success(ctx, nil, "successfully deleted action") diff --git a/server/handler/publicTopoHandler.go b/server/handler/publicTopoHandler.go index 5a2dd67..0aa156b 100644 --- a/server/handler/publicTopoHandler.go +++ b/server/handler/publicTopoHandler.go @@ -1,10 +1,7 @@ package handler import ( - "strings" - - "gitee.com/openeuler/PilotGo-plugin-topology/server/errormanager" - "gitee.com/openeuler/PilotGo-plugin-topology/server/pluginclient" + "gitee.com/openeuler/PilotGo-plugin-topology/server/resourcemanage" "gitee.com/openeuler/PilotGo-plugin-topology/server/service/public" "gitee.com/openeuler/PilotGo/sdk/response" "github.com/gin-gonic/gin" @@ -17,19 +14,19 @@ import ( // if len(collect_errlist) != 0 || len(process_errlist) != 0 { // for i, cerr := range collect_errlist { -// collect_errlist[i] = errors.Wrap(cerr, "**errstack**4") // err top -// agentmanager.Topo.ErrCh <- collect_errlist[i] +// collect_errlist[i] = errors.Wrap(cerr, " ") +// resourcemanage.ERManager.ErrorTransmit("error", collect_errlist[i], false, true) // } // for i, perr := range process_errlist { -// process_errlist[i] = errors.Wrap(perr, "**errstack**10") // err top -// agentmanager.Topo.ErrCh <- process_errlist[i] +// process_errlist[i] = errors.Wrap(perr, " ") +// resourcemanage.ERManager.ErrorTransmit("error", process_errlist[i], false, true) // } // } // if len(nodes) == 0 || len(edges) == 0 { -// err := errors.New("nodes list is null or edges list is null **errstack**0") // err top -// agentmanager.Topo.ErrCh <- err +// err := errors.New("nodes list is null or edges list is null") +// resourcemanage.ERManager.ErrorTransmit("error", err, false, true) // ctx.JSON(http.StatusBadRequest, gin.H{ // "code": -1, @@ -51,26 +48,23 @@ import ( func SingleHostTreeHandle(ctx *gin.Context) { uuid := ctx.Param("uuid") - nodes, err := public.SingleHostTreeService(uuid) + nodes, err, exit := public.SingleHostTreeService(uuid) if err != nil { - switch strings.Split(errors.Cause(err).Error(), "**")[1] { - case "errstack": - err = errors.Wrap(err, " **errstack**2") // err top - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) - response.Fail(ctx, nil, err.Error()) - return - case "errstackfatal": - err = errors.Wrap(err, " **errstackfatal**2") // err top + if exit { + err = errors.Wrap(err, " ") response.Fail(ctx, nil, errors.Cause(err).Error()) - errormanager.ErrorTransmit(pluginclient.Global_Context, err, true) + resourcemanage.ERManager.ErrorTransmit("error", err, true, true) return } - + err = errors.Wrap(err, " ") + resourcemanage.ERManager.ErrorTransmit("error", err, false, true) + response.Fail(ctx, nil, err.Error()) + return } if nodes == nil { - err := errors.New("node tree is null **errstack**0") // err top - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + err := errors.New("node tree is null") + resourcemanage.ERManager.ErrorTransmit("error", err, false, true) response.Fail(ctx, nil, err.Error()) return @@ -96,26 +90,23 @@ func SingleHostTreeHandle(ctx *gin.Context) { } func MultiHostHandle(ctx *gin.Context) { - nodes, edges, combos, err := public.MultiHostService() + nodes, edges, combos, err, exit := public.MultiHostService() if err != nil { - switch strings.Split(errors.Cause(err).Error(), "**")[1] { - case "errstack": - err = errors.Wrap(err, " **errstack**2") // err top - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) - response.Fail(ctx, nil, err.Error()) - return - case "errstackfatal": - err = errors.Wrap(err, " **errstack**2") // err top + if exit { + err = errors.Wrap(err, " ") response.Fail(ctx, nil, errors.Cause(err).Error()) - errormanager.ErrorTransmit(pluginclient.Global_Context, err, true) + resourcemanage.ERManager.ErrorTransmit("error", err, true, true) return } - + err = errors.Wrap(err, " ") + resourcemanage.ERManager.ErrorTransmit("error", err, false, true) + response.Fail(ctx, nil, err.Error()) + return } if len(nodes) == 0 || len(edges) == 0 { - err := errors.New("nodes list is null or edges list is null **errstack**0") // err top - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + err := errors.New("nodes list is null or edges list is null") + resourcemanage.ERManager.ErrorTransmit("error", err, false, true) response.Fail(ctx, nil, err.Error()) return diff --git a/server/handler/router.go b/server/handler/router.go index fd26452..2e4b076 100644 --- a/server/handler/router.go +++ b/server/handler/router.go @@ -3,12 +3,12 @@ package handler import ( "context" "net/http" + "strings" "time" "github.com/gin-contrib/timeout" "gitee.com/openeuler/PilotGo-plugin-topology/server/conf" - "gitee.com/openeuler/PilotGo-plugin-topology/server/errormanager" "gitee.com/openeuler/PilotGo-plugin-topology/server/global" "gitee.com/openeuler/PilotGo-plugin-topology/server/pluginclient" "gitee.com/openeuler/PilotGo-plugin-topology/server/resourcemanage" @@ -19,8 +19,8 @@ import ( func InitWebServer() { if pluginclient.Global_Client == nil { - err := errors.New("Global_Client is nil **errstackfatal**2") // err top - errormanager.ErrorTransmit(pluginclient.Global_Context, err, true) + err := errors.New("Global_Client is nil") + resourcemanage.ERManager.ErrorTransmit("error", err, true, true) return } @@ -37,21 +37,31 @@ func InitWebServer() { resourcemanage.ERManager.Wg.Add(1) go func() { - defer resourcemanage.ERManager.Wg.Done() - if conf.Global_Config.Topo.Https_enabled { - if err := webserver.ListenAndServeTLS(conf.Global_Config.Topo.Addr, conf.Global_Config.Topo.Public_certificate, conf.Global_Config.Topo.Private_key); err != nil { - err = errors.Errorf("%s, addr: %s **errstackfatal**2", err.Error(), conf.Global_Config.Topo.Addr) // err top - errormanager.ErrorTransmit(pluginclient.Global_Context, err, true) + if err := webserver.ListenAndServeTLS(conf.Global_Config.Topo.Public_certificate, conf.Global_Config.Topo.Private_key); err != nil { + if strings.Contains(err.Error(), "Server closed") { + err = errors.New(err.Error()) + resourcemanage.ERManager.ErrorTransmit("info", err, false, false) + return + } + err = errors.Errorf("%s, addr: %s", err.Error(), conf.Global_Config.Topo.Addr) + resourcemanage.ERManager.ErrorTransmit("error", err, true, true) } } if err := webserver.ListenAndServe(); err != nil { - err = errors.Errorf("%s **errstackfatal**2", err.Error()) // err top - errormanager.ErrorTransmit(pluginclient.Global_Context, err, true) + if strings.Contains(err.Error(), "Server closed") { + err = errors.New(err.Error()) + resourcemanage.ERManager.ErrorTransmit("info", err, false, false) + return + } + err = errors.New(err.Error()) + resourcemanage.ERManager.ErrorTransmit("error", err, true, true) } }() go func() { + defer resourcemanage.ERManager.Wg.Done() + <-resourcemanage.ERManager.GoCancelCtx.Done() logger.Info("shutting down web server...") @@ -62,10 +72,9 @@ func InitWebServer() { if err := webserver.Shutdown(ctx); err != nil { logger.Error("web server shutdown error: %s", err.Error()) } else { - logger.Info("web server stopped gracefully") + logger.Info("web server stopped") } }() - } func InitRouter(router *gin.Engine) { diff --git a/server/handler/staticPro.go b/server/handler/staticPro.go index 61e63ce..2539e45 100644 --- a/server/handler/staticPro.go +++ b/server/handler/staticPro.go @@ -22,7 +22,7 @@ var StaticFiles embed.FS func StaticRouter(router *gin.Engine) { sf, err := fs.Sub(StaticFiles, "assets") if err != nil { - err = errors.Errorf("%s **errstack**2", err.Error()) // err top + err = errors.New(err.Error()) errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) return } diff --git a/server/resourcemanage/resourcemanage.go b/server/resourcemanage/resourcemanage.go index 6edea5e..c885c0e 100644 --- a/server/resourcemanage/resourcemanage.go +++ b/server/resourcemanage/resourcemanage.go @@ -5,6 +5,7 @@ import ( "fmt" "os" "sync" + "time" "gitee.com/openeuler/PilotGo/sdk/logger" "github.com/pkg/errors" @@ -27,11 +28,11 @@ type FinalError struct { } func (e *FinalError) Error() string { - return e.Err.Error() + return fmt.Sprintf("%+v", e.Err) } type ErrorReleaseManagement struct { - errChan chan error + ErrChan chan error cancelCtx context.Context cancelFunc context.CancelFunc @@ -51,9 +52,9 @@ func CreateErrorReleaseManager(_ctx context.Context, _releaseFunc ResourceReleas } ErrorM := &ErrorReleaseManagement{ - errChan: make(chan error, 20), - errEndChan: make(chan struct{}), - releaseFunc: _releaseFunc, + ErrChan: make(chan error, 20), + errEndChan: make(chan struct{}), + releaseFunc: _releaseFunc, } ErrorM.cancelCtx, ErrorM.cancelFunc = context.WithCancel(_ctx) ErrorM.GoCancelCtx, ErrorM.GoCancelFunc = context.WithCancel(_ctx) @@ -67,9 +68,9 @@ func (erm *ErrorReleaseManagement) errorFactory() { for { select { case <-erm.errEndChan: - logger.Info("errormanager exit") + logger.Info("error management stopped") return - case _error := <-erm.errChan: + case _error := <-erm.ErrChan: _terror, ok := _error.(*FinalError) if !ok { logger.Error("plain error: %s", _error.Error()) @@ -126,20 +127,24 @@ func (erm *ErrorReleaseManagement) ResourceRelease() { close(erm.errEndChan) - close(erm.errChan) + close(erm.ErrChan) + + time.Sleep(100 * time.Millisecond) } /* -@ctx: 插件服务端初始上下文(默认为pluginclient.Global_Context) +@severity: debug info warn error @err: 最终生成的error -@exit_after_print: 打印完错误链信息后是否结束主程序 +@exit_after_print: 打印完异常日志后是否结束主程序 + +@print_stack: 是否打印异常日志错误链,打印错误链时默认severity为error */ func (erm *ErrorReleaseManagement) ErrorTransmit(_severity string, _err error, _exit_after_print, _print_stack bool) { if _exit_after_print { ctx, cancel := context.WithCancel(erm.cancelCtx) - erm.errChan <- &FinalError{ + erm.ErrChan <- &FinalError{ Err: _err, Cancel: cancel, Severity: _severity, @@ -151,10 +156,11 @@ func (erm *ErrorReleaseManagement) ErrorTransmit(_severity string, _err error, _ os.Exit(1) } - erm.errChan <- &FinalError{ + erm.ErrChan <- &FinalError{ Err: _err, + Cancel: nil, + Severity: _severity, PrintStack: _print_stack, ExitAfterPrint: _exit_after_print, - Cancel: nil, } } diff --git a/server/service/custom/customService.go b/server/service/custom/customService.go index 12c0287..f9c2382 100755 --- a/server/service/custom/customService.go +++ b/server/service/custom/customService.go @@ -9,47 +9,47 @@ import ( "gitee.com/openeuler/PilotGo-plugin-topology/server/agentmanager" "gitee.com/openeuler/PilotGo-plugin-topology/server/db/mysqlmanager" "gitee.com/openeuler/PilotGo-plugin-topology/server/db/redismanager" - "gitee.com/openeuler/PilotGo-plugin-topology/server/errormanager" "gitee.com/openeuler/PilotGo-plugin-topology/server/generator" "gitee.com/openeuler/PilotGo-plugin-topology/server/global" "gitee.com/openeuler/PilotGo-plugin-topology/server/graph" "gitee.com/openeuler/PilotGo-plugin-topology/server/pluginclient" + "gitee.com/openeuler/PilotGo-plugin-topology/server/resourcemanage" "gitee.com/openeuler/PilotGo/sdk/response" "github.com/pkg/errors" ) -func RunCustomTopoService(tcid uint) (*graph.Nodes, *graph.Edges, []map[string]string, error) { +func RunCustomTopoService(tcid uint) (*graph.Nodes, *graph.Edges, []map[string]string, error, bool) { if pluginclient.Global_Client == nil { - err := errors.New("Global_Client is nil **errstackfatal**2") - return nil, nil, nil, err + err := errors.New("Global_Client is nil") + return nil, nil, nil, err, true } if agentmanager.Global_AgentManager == nil { - err := errors.New("Global_AgentManager is nil **errstackfatal**0") - return nil, nil, nil, err + err := errors.New("Global_AgentManager is nil") + return nil, nil, nil, err, true } if redismanager.Global_Redis == nil { - err := errors.New("global_redis is nil **errstackfatal**1") - return nil, nil, nil, err + err := errors.New("global_redis is nil") + return nil, nil, nil, err, true } if mysqlmanager.Global_Mysql == nil { - err := errors.New("global_mysql is nil **errstackfatal**1") - return nil, nil, nil, err + err := errors.New("global_mysql is nil") + return nil, nil, nil, err, true } tcdb, err := mysqlmanager.Global_Mysql.QuerySingleTopoConfiguration(tcid) if err != nil { - return nil, nil, nil, errors.Wrap(err, "**2") + return nil, nil, nil, errors.Wrap(err, " "), false } tc, err := mysqlmanager.Global_Mysql.DBToTopoConfiguration(tcdb) if err != nil { - return nil, nil, nil, errors.Wrap(err, "**2") + return nil, nil, nil, errors.Wrap(err, " "), false } machine_uuids, err := pluginclient.Global_Client.BatchUUIDList(strconv.Itoa(int(tc.BatchId))) if err != nil { - return nil, nil, nil, errors.Errorf("%s **errstack**0", err.Error()) + return nil, nil, nil, errors.New(err.Error()), false } // ctxv := context.WithValue(agentmanager.Topo.Tctx, "custom_name", "pilotgo-topo") @@ -59,39 +59,39 @@ func RunCustomTopoService(tcid uint) (*graph.Nodes, *graph.Edges, []map[string]s redismanager.Global_Redis.ActiveHeartbeatDetection(machine_uuids) running_agent_num := redismanager.Global_Redis.UpdateTopoRunningAgentList(machine_uuids, true) if running_agent_num == 0 { - return nil, nil, nil, errors.Errorf("no running agent for custom id %d **errstack**2", tc.ID) + return nil, nil, nil, errors.Errorf("no running agent for custom id %d", tc.ID), false } else if running_agent_num == -1 { - return nil, nil, nil, errors.New("redis client not init **errstack**1") + return nil, nil, nil, errors.New("redis client not init"), false } topogenerator := generator.CreateTopoGenerator(tc.TagRules, tc.NodeRules) nodes, edges, collect_errlist, process_errlist := topogenerator.ProcessingData(running_agent_num) if len(collect_errlist) != 0 { for i, cerr := range collect_errlist { - collect_errlist[i] = errors.Wrap(cerr, "**errstack**3") // err top - errormanager.ErrorTransmit(pluginclient.Global_Context, collect_errlist[i], false) + collect_errlist[i] = errors.Wrap(cerr, " ") + resourcemanage.ERManager.ErrorTransmit("error", collect_errlist[i], false, true) } collect_errlist_string := []string{} for _, e := range collect_errlist { collect_errlist_string = append(collect_errlist_string, e.Error()) } - return nil, nil, nil, errors.Errorf("collect data failed: %+v **errstack**10", strings.Join(collect_errlist_string, "/e/")) + return nil, nil, nil, errors.Errorf("collect data failed: %+v", strings.Join(collect_errlist_string, "/e/")), false } if len(process_errlist) != 0 { for i, perr := range process_errlist { - process_errlist[i] = errors.Wrap(perr, "**errstack**14") // err top - errormanager.ErrorTransmit(pluginclient.Global_Context, process_errlist[i], false) + process_errlist[i] = errors.Wrap(perr, " ") + resourcemanage.ERManager.ErrorTransmit("error", process_errlist[i], false, true) } process_errlist_string := []string{} for _, e := range process_errlist { process_errlist_string = append(process_errlist_string, e.Error()) } - return nil, nil, nil, errors.Errorf("process data failed: %+v **errstack**21", strings.Join(process_errlist_string, "/e/")) + return nil, nil, nil, errors.Errorf("process data failed: %+v", strings.Join(process_errlist_string, "/e/")), false } if nodes == nil || edges == nil { - err := errors.New("nodes or edges is nil **errstack**24") // err top - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) - return nil, nil, nil, err + err := errors.New("nodes or edges is nil") + resourcemanage.ERManager.ErrorTransmit("error", err, false, true) + return nil, nil, nil, err, false } combos := make([]map[string]string, 0) @@ -104,67 +104,67 @@ func RunCustomTopoService(tcid uint) (*graph.Nodes, *graph.Edges, []map[string]s } } - return nodes, edges, combos, nil + return nodes, edges, combos, nil, false } -func CustomTopoListService(query *response.PaginationQ) ([]*mysqlmanager.Topo_configuration, int, error) { +func CustomTopoListService(query *response.PaginationQ) ([]*mysqlmanager.Topo_configuration, int, error, bool) { tcs := make([]*mysqlmanager.Topo_configuration, 0) if mysqlmanager.Global_Mysql == nil { - err := errors.New("global_mysql is nil **errstackfatal**1") - return nil, 0, err + err := errors.New("global_mysql is nil") + return nil, 0, err, true } tcdbs, total, err := mysqlmanager.Global_Mysql.QueryTopoConfigurationList(query) if err != nil { - return nil, 0, errors.Wrap(err, "**2") + return nil, 0, errors.Wrap(err, " "), false } for _, tcdb := range tcdbs { tc, err := mysqlmanager.Global_Mysql.DBToTopoConfiguration(tcdb) if err != nil { - return nil, 0, errors.Wrap(err, "**2") + return nil, 0, errors.Wrap(err, " "), false } tcs = append(tcs, tc) } - return tcs, total, nil + return tcs, total, nil, false } -func CreateCustomTopoService(topoconfig *mysqlmanager.Topo_configuration) (int, error) { +func CreateCustomTopoService(topoconfig *mysqlmanager.Topo_configuration) (int, error, bool) { if mysqlmanager.Global_Mysql == nil { - return -1, errors.New("global_mysql is nil **errstackfatal**1") + return -1, errors.New("global_mysql is nil"), true } tcdb, err := mysqlmanager.Global_Mysql.TopoConfigurationToDB(topoconfig) if err != nil { - return -1, errors.Wrap(err, "**2") + return -1, errors.Wrap(err, " "), false } tcdb.CreatedAt = time.Now().Format("2006-01-02 15:04:05") tcdb.UpdatedAt = time.Now().Format("2006-01-02 15:04:05") tcdb_id, err := mysqlmanager.Global_Mysql.AddTopoConfiguration(tcdb) if err != nil { - return -1, errors.Wrap(err, "**2") + return -1, errors.Wrap(err, " "), false } - return tcdb_id, nil + return tcdb_id, nil, false } -func UpdateCustomTopoService(tc *mysqlmanager.Topo_configuration, tcdb_id_old uint) (int, error) { +func UpdateCustomTopoService(tc *mysqlmanager.Topo_configuration, tcdb_id_old uint) (int, error, bool) { if mysqlmanager.Global_Mysql == nil { - return -1, errors.New("global_mysql is nil **errstackfatal**1") + return -1, errors.New("global_mysql is nil"), true } tcdb, err := mysqlmanager.Global_Mysql.TopoConfigurationToDB(tc) if err != nil { - return -1, errors.Wrap(err, "**2") + return -1, errors.Wrap(err, " "), false } tcdb_old, err := mysqlmanager.Global_Mysql.QuerySingleTopoConfiguration(tcdb_id_old) if err != nil { - return -1, errors.Wrap(err, "**2") + return -1, errors.Wrap(err, " "), false } tcdb_old.UpdatedAt = time.Now().Format("2006-01-02 15:04:05") @@ -178,22 +178,22 @@ func UpdateCustomTopoService(tc *mysqlmanager.Topo_configuration, tcdb_id_old ui tcdb_old_id, err := mysqlmanager.Global_Mysql.AddTopoConfiguration(tcdb_old) if err != nil { - return -1, errors.Wrap(err, "**2") + return -1, errors.Wrap(err, " "), false } - return tcdb_old_id, nil + return tcdb_old_id, nil, false } -func DeleteCustomTopoService(ids []uint) error { +func DeleteCustomTopoService(ids []uint) (error, bool) { if mysqlmanager.Global_Mysql == nil { - return errors.New("global_mysql is nil **errstackfatal**1") + return errors.New("global_mysql is nil"), true } for _, tcid := range ids { if err := mysqlmanager.Global_Mysql.DeleteTopoConfiguration(tcid); err != nil { - return errors.Wrap(err, "**errstack**2") + return errors.Wrap(err, " "), false } } - return nil + return nil, false } diff --git a/server/service/periodcollect.go b/server/service/periodcollect.go index 5b776f7..e35e038 100644 --- a/server/service/periodcollect.go +++ b/server/service/periodcollect.go @@ -12,10 +12,8 @@ import ( "gitee.com/openeuler/PilotGo-plugin-topology/server/db/graphmanager" "gitee.com/openeuler/PilotGo-plugin-topology/server/db/mysqlmanager" "gitee.com/openeuler/PilotGo-plugin-topology/server/db/redismanager" - "gitee.com/openeuler/PilotGo-plugin-topology/server/errormanager" "gitee.com/openeuler/PilotGo-plugin-topology/server/generator" "gitee.com/openeuler/PilotGo-plugin-topology/server/graph" - "gitee.com/openeuler/PilotGo-plugin-topology/server/pluginclient" "gitee.com/openeuler/PilotGo-plugin-topology/server/resourcemanage" "gitee.com/openeuler/PilotGo/sdk/logger" "github.com/pkg/errors" @@ -23,22 +21,22 @@ import ( func InitPeriodCollectWorking(batch []string, noderules [][]mysqlmanager.Filter_rule) { if graphmanager.Global_GraphDB == nil { - err := errors.New("global_graphdb is nil **debug**0") - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + err := errors.New("global_graphdb is nil") + resourcemanage.ERManager.ErrorTransmit("debug", err, false, false) return } graphperiod := conf.Global_Config.Neo4j.Period if agentmanager.Global_AgentManager == nil { - err := errors.New("Global_AgentManager is nil **errstackfatal**0") - errormanager.ErrorTransmit(pluginclient.Global_Context, err, true) + err := errors.New("Global_AgentManager is nil") + resourcemanage.ERManager.ErrorTransmit("error", err, true, true) return } if redismanager.Global_Redis == nil { - err := errors.New("Global_Redis is nil **errstackfatal**1") - errormanager.ErrorTransmit(pluginclient.Global_Context, err, true) + err := errors.New("Global_Redis is nil") + resourcemanage.ERManager.ErrorTransmit("error", err, true, true) return } @@ -73,35 +71,35 @@ func DataProcessWorking(unixtime int64, agentnum int, graphdb graphmanager.Graph nodes, edges, collect_errlist, process_errlist := topogenerator.ProcessingData(agentnum) if len(collect_errlist) != 0 { for i, cerr := range collect_errlist { - collect_errlist[i] = errors.Wrap(cerr, "**errstack**3") - errormanager.ErrorTransmit(pluginclient.Global_Context, collect_errlist[i], false) + collect_errlist[i] = errors.Wrap(cerr, " ") + resourcemanage.ERManager.ErrorTransmit("error", collect_errlist[i], false, true) } collect_errlist_string := []string{} for _, e := range collect_errlist { collect_errlist_string = append(collect_errlist_string, e.Error()) } - return nil, nil, nil, errors.Errorf("collect data failed: %+v **errstack**10", strings.Join(collect_errlist_string, "/e/")) + return nil, nil, nil, errors.Errorf("collect data failed: %+v", strings.Join(collect_errlist_string, "/e/")) } if len(process_errlist) != 0 { for i, perr := range process_errlist { - process_errlist[i] = errors.Wrap(perr, "**errstack**14") - errormanager.ErrorTransmit(pluginclient.Global_Context, process_errlist[i], false) + process_errlist[i] = errors.Wrap(perr, " ") + resourcemanage.ERManager.ErrorTransmit("error", process_errlist[i], false, true) } process_errlist_string := []string{} for _, e := range process_errlist { process_errlist_string = append(process_errlist_string, e.Error()) } - return nil, nil, nil, errors.Errorf("process data failed: %+v **errstack**21", strings.Join(process_errlist_string, "/e/")) + return nil, nil, nil, errors.Errorf("process data failed: %+v", strings.Join(process_errlist_string, "/e/")) } if nodes == nil || edges == nil { - err := errors.New("nodes or edges is nil **errstack**24") - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + err := errors.New("nodes or edges is nil") + resourcemanage.ERManager.ErrorTransmit("error", err, false, true) return nil, nil, nil, err } if graphmanager.Global_GraphDB == nil { - err := errors.New("Global_GraphDB is nil **errstackfatal**0") - errormanager.ErrorTransmit(pluginclient.Global_Context, err, true) + err := errors.New("Global_GraphDB is nil") + resourcemanage.ERManager.ErrorTransmit("error", err, true, true) return nil, nil, nil, err } @@ -137,8 +135,8 @@ func DataProcessWorking(unixtime int64, agentnum int, graphdb graphmanager.Graph err := graphmanager.Global_GraphDB.Node_create(_unixtime, _node) if err != nil { - err = errors.Wrapf(err, "create neo4j node failed; %s **errstack**2", cqlIN) - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + err = errors.Wrapf(err, "create neo4j node failed; %s", cqlIN) + resourcemanage.ERManager.ErrorTransmit("error", err, false, true) } } }(__nodes) @@ -160,8 +158,8 @@ func DataProcessWorking(unixtime int64, agentnum int, graphdb graphmanager.Graph for _, _edge := range ___edges { err := graphmanager.Global_GraphDB.Edge_create(_unixtime, _edge) if err != nil { - err = errors.Wrapf(err, "create neo4j edge failed **errstack**2") - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + err = errors.Wrapf(err, "create neo4j edge failed") + resourcemanage.ERManager.ErrorTransmit("error", err, false, true) } } }(__edges) diff --git a/server/service/public/multihost.go b/server/service/public/multihost.go index 3444e19..6f6eb68 100755 --- a/server/service/public/multihost.go +++ b/server/service/public/multihost.go @@ -9,7 +9,7 @@ import ( "github.com/pkg/errors" ) -func MultiHostService() ([]*graph.Node, []*graph.Edge, []map[string]string, error) { +func MultiHostService() ([]*graph.Node, []*graph.Edge, []map[string]string, error, bool) { var latest string var nodes []*graph.Node var edges []*graph.Edge @@ -23,14 +23,14 @@ func MultiHostService() ([]*graph.Node, []*graph.Edge, []map[string]string, erro combos := make([]map[string]string, 0) if graphmanager.Global_GraphDB == nil { - err := errors.New("global_graphdb is nil **errstackfatal**1") - return nil, nil, nil, err + err := errors.New("global_graphdb is nil") + return nil, nil, nil, err, true } times, err := graphmanager.Global_GraphDB.Timestamps_query() if err != nil { - err = errors.Wrap(err, " **2") - return nil, nil, nil, err + err = errors.Wrap(err, " ") + return nil, nil, nil, err, false } if len(times) != 0 { @@ -40,14 +40,14 @@ func MultiHostService() ([]*graph.Node, []*graph.Edge, []map[string]string, erro latest = times[len(times)-2] } } else { - err := errors.New("the number of timestamp is zero **errstack**0") - return nil, nil, nil, err + err := errors.New("the number of timestamp is zero") + return nil, nil, nil, err, false } nodes, err = graphmanager.Global_GraphDB.MultiHost_node_query(latest) if err != nil { - err = errors.Wrap(err, " **2") - return nil, nil, nil, err + err = errors.Wrap(err, " ") + return nil, nil, nil, err, false } for _, _node := range nodes { @@ -56,8 +56,8 @@ func MultiHostService() ([]*graph.Node, []*graph.Edge, []map[string]string, erro edges, err = graphmanager.Global_GraphDB.MultiHost_relation_query(latest) if err != nil { - err = errors.Wrap(err, " **2") - return nil, nil, nil, err + err = errors.Wrap(err, " ") + return nil, nil, nil, err, false } for _, _edge := range edges { @@ -155,5 +155,5 @@ func MultiHostService() ([]*graph.Node, []*graph.Edge, []map[string]string, erro } } - return multi_nodes, multi_edges, combos, nil + return multi_nodes, multi_edges, combos, nil, false } diff --git a/server/service/public/multihostentire.go b/server/service/public/multihostentire.go index 43f4e54..bd89a09 100755 --- a/server/service/public/multihostentire.go +++ b/server/service/public/multihostentire.go @@ -16,11 +16,11 @@ package public // nodes, edges, collect_errlist, process_errlist := dataprocesser.Process_data(agentnum) // if len(collect_errlist) != 0 || len(process_errlist) != 0 { // for i, cerr := range collect_errlist { -// collect_errlist[i] = errors.Wrap(cerr, "**3") +// collect_errlist[i] = errors.Wrap(cerr, " ") // } // for i, perr := range process_errlist { -// process_errlist[i] = errors.Wrap(perr, "**7") +// process_errlist[i] = errors.Wrap(perr, " ") // } // } @@ -82,7 +82,7 @@ package public // edgeid := start_nodeid + "_belong_" + nodes.Lookup[start_nodeid].UUID + "_process_" + nodes.Lookup[start_nodeid].Metrics["Ppid"] // edge1, ok := edges.Lookup.Load(edgeid) // if !ok { -// fmt.Printf("%+v\n", errors.Errorf("faild to load edge from edges.lookup: %s**2", edgeid)) +// fmt.Printf("%+v\n", errors.Errorf("faild to load edge from edges.lookup: %s", edgeid)) // } // if _, ok := multi_edges_map[edge1.(*meta.Edge).ID]; !ok { @@ -107,7 +107,7 @@ package public // edgeid_to_1 := start_nodeid + "_belong_" + nodes.Lookup[start_nodeid].UUID + "_process_" + nodes.Lookup[start_nodeid].Metrics["Ppid"] // edge_to_1, ok := edges.Lookup.Load(edgeid_to_1) // if !ok { -// fmt.Printf("%+v\n", errors.Errorf("faild to load edge from edges.lookup: %s**2", edgeid_to_1)) +// fmt.Printf("%+v\n", errors.Errorf("faild to load edge from edges.lookup: %s", edgeid_to_1)) // } // if _, ok := multi_edges_map[edge_to_1.(*meta.Edge).ID]; !ok { @@ -127,7 +127,7 @@ package public // edge_to_host, ok := edges.Lookup.Load(edgeid_to_host) // if !ok { -// fmt.Printf("%+v\n", errors.Errorf("faild to load edge from edges.lookup: %s**2", edgeid_to_host)) +// fmt.Printf("%+v\n", errors.Errorf("faild to load edge from edges.lookup: %s", edgeid_to_host)) // } // if _, ok := multi_edges_map[edge_to_host.(*meta.Edge).ID]; !ok { diff --git a/server/service/public/singlehost.go b/server/service/public/singlehost.go index ca74bed..c26fcc3 100755 --- a/server/service/public/singlehost.go +++ b/server/service/public/singlehost.go @@ -17,11 +17,11 @@ package public // nodes, edges, collect_errlist, process_errlist := dataprocesser.Process_data(agentnum) // if len(collect_errlist) != 0 || len(process_errlist) != 0 { // for i, cerr := range collect_errlist { -// collect_errlist[i] = errors.Wrap(cerr, "**3") +// collect_errlist[i] = errors.Wrap(cerr, " ") // } // for i, perr := range process_errlist { -// process_errlist[i] = errors.Wrap(perr, "**7") +// process_errlist[i] = errors.Wrap(perr, " ") // } // } @@ -63,23 +63,23 @@ package public /* // if len(collect_errlist) != 0 && len(process_errlist) != 0 { // for i, cerr := range collect_errlist { - // collect_errlist[i] = errors.Wrap(cerr, "**3") + // collect_errlist[i] = errors.Wrap(cerr, " ") // } // for i, perr := range process_errlist { - // process_errlist[i] = errors.Wrap(perr, "**7") + // process_errlist[i] = errors.Wrap(perr, " ") // } // return nil, nil, collect_errlist, process_errlist // } else if len(collect_errlist) != 0 && len(process_errlist) == 0 { // for i, cerr := range collect_errlist { - // collect_errlist[i] = errors.Wrap(cerr, "**3") + // collect_errlist[i] = errors.Wrap(cerr, " ") // } // return nil, nil, collect_errlist, nil // } else if len(collect_errlist) == 0 && len(process_errlist) != 0 { // for i, perr := range process_errlist { - // process_errlist[i] = errors.Wrap(perr, "**7") + // process_errlist[i] = errors.Wrap(perr, " ") // } // return nil, nil, nil, process_errlist diff --git a/server/service/public/singlehosttree.go b/server/service/public/singlehosttree.go index c15ea98..4c78ab1 100755 --- a/server/service/public/singlehosttree.go +++ b/server/service/public/singlehosttree.go @@ -7,7 +7,7 @@ import ( "github.com/pkg/errors" ) -func SingleHostTreeService(uuid string) (*graph.TreeTopoNode, error) { +func SingleHostTreeService(uuid string) (*graph.TreeTopoNode, error, bool) { var latest string var treerootnode *graph.TreeTopoNode var single_nodes []*graph.Node @@ -17,14 +17,14 @@ func SingleHostTreeService(uuid string) (*graph.TreeTopoNode, error) { nodes_type_map := make(map[string][]*graph.Node) if graphmanager.Global_GraphDB == nil { - err := errors.New("global_graphdb is nil **errstackfatal**1") - return nil, err + err := errors.New("global_graphdb is nil") + return nil, err, true } times, err := graphmanager.Global_GraphDB.Timestamps_query() if err != nil { - err = errors.Wrap(err, " **2") - return nil, err + err = errors.Wrap(err, " ") + return nil, err, false } if len(times) != 0 { @@ -34,14 +34,14 @@ func SingleHostTreeService(uuid string) (*graph.TreeTopoNode, error) { latest = times[len(times)-2] } } else { - err := errors.New("the number of timestamp is zero **errstack**0") - return nil, err + err := errors.New("the number of timestamp is zero") + return nil, err, false } single_nodes, err = graphmanager.Global_GraphDB.SingleHost_node_query(uuid, latest) if err != nil { - err = errors.Wrap(err, " **2") - return nil, err + err = errors.Wrap(err, " ") + return nil, err, false } for _, node := range single_nodes { @@ -58,8 +58,8 @@ func SingleHostTreeService(uuid string) (*graph.TreeTopoNode, error) { } if treerootnode == nil { - err := errors.New("there are no host node in single_nodes **errstack**5") - return nil, err + err := errors.New("there are no host node in single_nodes") + return nil, err, false } for _, node := range nodes_type_map[global.NODE_RESOURCE] { @@ -86,5 +86,5 @@ func SingleHostTreeService(uuid string) (*graph.TreeTopoNode, error) { } } - return treerootnode, nil + return treerootnode, nil, false } diff --git a/server/service/topoDataBuffer.go b/server/service/topoDataBuffer.go index 3b4a435..054bca6 100644 --- a/server/service/topoDataBuffer.go +++ b/server/service/topoDataBuffer.go @@ -5,9 +5,8 @@ import ( "sync" "gitee.com/openeuler/PilotGo-plugin-topology/server/agentmanager" - "gitee.com/openeuler/PilotGo-plugin-topology/server/errormanager" "gitee.com/openeuler/PilotGo-plugin-topology/server/graph" - "gitee.com/openeuler/PilotGo-plugin-topology/server/pluginclient" + "gitee.com/openeuler/PilotGo-plugin-topology/server/resourcemanage" "github.com/pkg/errors" ) @@ -145,7 +144,7 @@ func UpdateGlobalTopoDataBuffer(custom_topodata *graph.TopoDataBuffer) { err := graph.Global_TopoDataBuffer.Nodes.Remove(global_node) if err != nil { err = errors.Wrap(err, "->") - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + resourcemanage.ERManager.ErrorTransmit("error", err, false, true) continue } global_edge_id_slice_any, ok := graph.Global_TopoDataBuffer.Edges.Node_Edges_map.Load(global_node.ID) @@ -161,7 +160,7 @@ func UpdateGlobalTopoDataBuffer(custom_topodata *graph.TopoDataBuffer) { err := graph.Global_TopoDataBuffer.Edges.Remove(global_edge.ID) if err != nil { err = errors.Wrap(err, "->") - errormanager.ErrorTransmit(pluginclient.Global_Context, err, false) + resourcemanage.ERManager.ErrorTransmit("error", err, false, true) } } } -- Gitee