From d9ad30f72702b88ca697ba08edb033062f7ca17f Mon Sep 17 00:00:00 2001 From: zhanghan2021 Date: Tue, 5 Dec 2023 16:54:26 +0800 Subject: [PATCH] remove pilotgo server code and update vendor --- atune/server/config.yml.templete | 2 - atune/server/config/config.go | 12 +-- atune/server/go.mod | 2 +- atune/server/go.sum | 2 + atune/server/main.go | 1 - atune/server/service/fileservice.go | 2 +- .../openeuler/PilotGo/sdk/common/extention.go | 15 ++++ .../openeuler/PilotGo/sdk/common/tag.go | 14 +++ .../PilotGo/sdk/plugin/client/client.go | 37 ++++++-- .../PilotGo/sdk/plugin/client/config.go | 2 +- .../PilotGo/sdk/plugin/client/event.go | 6 +- .../PilotGo/sdk/plugin/client/extention.go | 9 ++ .../PilotGo/sdk/plugin/client/handler.go | 90 ++++++++++++++++++- .../PilotGo/sdk/plugin/client/machine.go | 2 +- .../PilotGo/sdk/plugin/client/plugin.go | 10 ++- .../PilotGo/sdk/plugin/client/script.go | 6 +- .../PilotGo/sdk/plugin/client/service.go | 6 +- .../PilotGo/sdk/utils/httputils/request.go | 1 + atune/server/vendor/modules.txt | 2 +- 19 files changed, 189 insertions(+), 32 deletions(-) create mode 100644 atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/common/extention.go create mode 100644 atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/common/tag.go create mode 100644 atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/extention.go diff --git a/atune/server/config.yml.templete b/atune/server/config.yml.templete index b10e418d..79a1592f 100644 --- a/atune/server/config.yml.templete +++ b/atune/server/config.yml.templete @@ -3,8 +3,6 @@ plugin_atune: plugin_type: "iframe" # iframe micro-app http_server: addr: "localhost:8099" -pilotgo_server: - addr: "0.0.0.0:8888" log: level: debug driver: file #可选stdout和file。stdout:输出到终端控制台;file:输出到path下的指定文件。 diff --git a/atune/server/config/config.go b/atune/server/config/config.go index 711c840c..d8f3228f 100644 --- a/atune/server/config/config.go +++ b/atune/server/config/config.go @@ -17,9 +17,6 @@ type PluginAtune struct { type HttpServer struct { Addr string `yaml:"addr"` } -type PilotGoServer struct { - Addr string `yaml:"addr"` -} type MysqlDBInfo struct { HostName string `yaml:"host"` @@ -30,11 +27,10 @@ type MysqlDBInfo struct { } type ServerConfig struct { - PluginAtune *PluginAtune `yaml:"plugin_atune"` - HttpServer *HttpServer `yaml:"http_server"` - PilotGoServer *PilotGoServer `yaml:"pilotgo_server"` - Logopts *logger.LogOpts `yaml:"log"` - Mysql *MysqlDBInfo `yaml:"mysql"` + PluginAtune *PluginAtune `yaml:"plugin_atune"` + HttpServer *HttpServer `yaml:"http_server"` + Logopts *logger.LogOpts `yaml:"log"` + Mysql *MysqlDBInfo `yaml:"mysql"` } const config_file = "./config.yml" diff --git a/atune/server/go.mod b/atune/server/go.mod index c79bccdd..d2b859c9 100644 --- a/atune/server/go.mod +++ b/atune/server/go.mod @@ -3,7 +3,7 @@ module openeuler.org/PilotGo/atune-plugin go 1.18 require ( - gitee.com/openeuler/PilotGo/sdk v0.0.0-20231024072151-019ddee0ae4b + gitee.com/openeuler/PilotGo/sdk v0.0.0-20231130033012-9175e9682d48 github.com/gin-gonic/gin v1.9.1 gopkg.in/yaml.v2 v2.4.0 gorm.io/driver/mysql v1.5.1 diff --git a/atune/server/go.sum b/atune/server/go.sum index edd4f75a..9bc5d54c 100644 --- a/atune/server/go.sum +++ b/atune/server/go.sum @@ -1,5 +1,7 @@ gitee.com/openeuler/PilotGo/sdk v0.0.0-20231024072151-019ddee0ae4b h1:OfObzXpfq6qAEcH9tlzqIYUjfZe4mKR37DgCMpmzYO0= gitee.com/openeuler/PilotGo/sdk v0.0.0-20231024072151-019ddee0ae4b/go.mod h1:zEVmY3l48/CvR2kIM3DJpD/jWTG1qkOxRoHJii/D0us= +gitee.com/openeuler/PilotGo/sdk v0.0.0-20231130033012-9175e9682d48 h1:I8Sko0e1yoimn3A2G8r1mfTVxMxaOYmkpbSVndnx2Rg= +gitee.com/openeuler/PilotGo/sdk v0.0.0-20231130033012-9175e9682d48/go.mod h1:zEVmY3l48/CvR2kIM3DJpD/jWTG1qkOxRoHJii/D0us= github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM= github.com/bytedance/sonic v1.9.1 h1:6iJ6NqdoxCDr6mbY8h18oSO+cShGSMRGCEo7F2h0x8s= github.com/bytedance/sonic v1.9.1/go.mod h1:i736AoUSYt75HyZLoJW9ERYxcy6eaN6h4BZXU064P/U= diff --git a/atune/server/main.go b/atune/server/main.go index aae52d20..8cd555f1 100644 --- a/atune/server/main.go +++ b/atune/server/main.go @@ -30,7 +30,6 @@ func main() { } plugin.GlobalClient = client.DefaultClient(plugin.Init(config.Config().PluginAtune)) - plugin.GlobalClient.Server = config.Config().PilotGoServer.Addr err := router.HttpServerInit(config.Config().HttpServer) if err != nil { diff --git a/atune/server/service/fileservice.go b/atune/server/service/fileservice.go index 011b1365..bcd329e8 100644 --- a/atune/server/service/fileservice.go +++ b/atune/server/service/fileservice.go @@ -21,7 +21,7 @@ func Upload(cookie string, filePath string, filename string) error { return err } - upload_addr := "http://" + plugin.GlobalClient.Server + "/api/v1/upload?filename=" + filename + upload_addr := "http://" + plugin.GlobalClient.Server() + "/api/v1/upload?filename=" + filename request, err := http.NewRequest("POST", upload_addr, bodyBuf) if err != nil { return err diff --git a/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/common/extention.go b/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/common/extention.go new file mode 100644 index 00000000..8f6d040e --- /dev/null +++ b/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/common/extention.go @@ -0,0 +1,15 @@ +package common + +const ( + // 单机/多机操作扩展,增加选择单机/多机时对机器的操作功能 + ExtentionMachine = "machine" + // 批处理扩展,增加选择批次时对批次的操作 + ExtentionBatch = "batch" +) + +type Extention struct { + PluginName string `json:"plugin_name"` + Name string `json:"name"` + Type string `json:"type"` + URL string `json:"url"` +} diff --git a/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/common/tag.go b/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/common/tag.go new file mode 100644 index 00000000..dab5e54e --- /dev/null +++ b/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/common/tag.go @@ -0,0 +1,14 @@ +package common + +const ( + TypeOk = "ok" + TypeWarn = "warn" + TypeError = "error" +) + +type Tag struct { + UUID string `json:"machineuuid"` + PluginName string `json:"plugin_name"` + Type string `json:"type"` + Data string `json:"data"` +} diff --git a/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/client.go b/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/client.go index fc3a573e..c35c4605 100644 --- a/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/client.go +++ b/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/client.go @@ -5,10 +5,14 @@ import ( "github.com/gin-gonic/gin" ) +type GetTagsCallback func([]string) []common.Tag + type Client struct { - Server string PluginInfo *PluginInfo + // 远程PilotGo server地址 + server string + // 用于event消息处理 eventChan chan *common.EventMessage eventCallbackMap map[int]EventCallback @@ -16,14 +20,17 @@ type Client struct { // 用于异步command及script执行结果处理机 asyncCmdResultChan chan *common.AsyncCmdResult cmdProcessorCallbackMap map[string]CallbackHandler + + // 用于处理主机标签 + getTagsCallback GetTagsCallback + + // 用于平台扩展点功能 + extentions []*common.Extention } var global_client *Client -var BaseInfo *PluginInfo func DefaultClient(desc *PluginInfo) *Client { - BaseInfo = desc - global_client = &Client{ PluginInfo: desc, @@ -41,17 +48,33 @@ func GetClient() *Client { return global_client } +func (client *Client) Server() string { + return client.server +} + // RegisterHandlers 注册一些插件标准的API接口,清单如下: // GET /plugin_manage/info func (client *Client) RegisterHandlers(router *gin.Engine) { // 提供插件基本信息 - mg := router.Group("/plugin_manage/") + mg := router.Group("/plugin_manage/", func(c *gin.Context) { + c.Set("__internal__client_instance", client) + }) { mg.GET("/info", InfoHandler) + // 绑定PilotGo server + mg.PUT("/bind", BindHandler) } api := router.Group("/plugin_manage/api/v1/") { + api.GET("/extentions", func(c *gin.Context) { + c.Set("__internal__client_instance", client) + }, ExtentionsHandler) + + api.GET("/gettags", func(c *gin.Context) { + c.Set("__internal__client_instance", client) + }, TagsHandler) + api.POST("/event", func(c *gin.Context) { c.Set("__internal__client_instance", client) }, EventHandler) @@ -73,3 +96,7 @@ func (client *Client) RegisterHandlers(router *gin.Engine) { client.startEventProcessor() client.startCommandResultProcessor() } + +func (client *Client) OnGetTags(callback GetTagsCallback) { + client.getTagsCallback = callback +} diff --git a/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/config.go b/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/config.go index cf87dbce..35dcdfd5 100644 --- a/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/config.go +++ b/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/config.go @@ -9,7 +9,7 @@ import ( ) func (c *Client) ApplyConfig(batch *common.Batch, path, content string) error { - url := c.Server + "/api/v1/pluginapi/apply_config" + url := c.Server() + "/api/v1/pluginapi/apply_config" r, err := httputils.Put(url, nil) if err != nil { return err diff --git a/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/event.go b/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/event.go index 6ad1ef72..4ec5f1b7 100644 --- a/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/event.go +++ b/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/event.go @@ -20,7 +20,7 @@ func (c *Client) ListenEvent(eventTypes []int, callbacks []EventCallback) error eventtypes = append(eventtypes, strconv.Itoa(i)) } - url := c.Server + "/api/v1/pluginapi/listener?eventTypes=" + strings.Join(eventtypes, ",") + url := c.Server() + "/api/v1/pluginapi/listener?eventTypes=" + strings.Join(eventtypes, ",") r, err := httputils.Put(url, &httputils.Params{ Body: c.PluginInfo, }) @@ -59,7 +59,7 @@ func (c *Client) UnListenEvent(eventTypes []int) error { eventtypes = append(eventtypes, strconv.Itoa(i)) } - url := c.Server + "/api/v1/pluginapi/listener?eventTypes=" + strings.Join(eventtypes, ",") + url := c.Server() + "/api/v1/pluginapi/listener?eventTypes=" + strings.Join(eventtypes, ",") r, err := httputils.Delete(url, &httputils.Params{ Body: c.PluginInfo, }) @@ -94,7 +94,7 @@ func (c *Client) UnListenEvent(eventTypes []int) error { // 发布event事件 func (c *Client) PublishEvent(msg common.EventMessage) error { - url := c.Server + "/api/v1/pluginapi/publish_event" + url := c.Server() + "/api/v1/pluginapi/publish_event" r, err := httputils.Put(url, &httputils.Params{ Body: &msg, }) diff --git a/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/extention.go b/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/extention.go new file mode 100644 index 00000000..4460e210 --- /dev/null +++ b/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/extention.go @@ -0,0 +1,9 @@ +package client + +import ( + "gitee.com/openeuler/PilotGo/sdk/common" +) + +func (c *Client) RegisterExtention(exts []*common.Extention) { + c.extentions = exts +} diff --git a/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/handler.go b/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/handler.go index 34b796a3..2ad545b1 100644 --- a/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/handler.go +++ b/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/handler.go @@ -11,6 +11,7 @@ import ( "gitee.com/openeuler/PilotGo/sdk/common" "gitee.com/openeuler/PilotGo/sdk/logger" + "gitee.com/openeuler/PilotGo/sdk/response" "github.com/gin-gonic/gin" ) @@ -33,7 +34,41 @@ func ReverseProxyHandler(c *gin.Context) { } func InfoHandler(c *gin.Context) { - c.JSON(http.StatusOK, BaseInfo) + v, ok := c.Get("__internal__client_instance") + if !ok { + response.Fail(c, gin.H{"status": false}, "未获取到client值信息") + return + } + client, ok := v.(*Client) + if !ok { + response.Fail(c, gin.H{"status": false}, "client信息错误") + return + } + + info := &PluginFullInfo{ + PluginInfo: *client.PluginInfo, + Extentions: client.extentions, + } + + c.JSON(http.StatusOK, info) +} + +func BindHandler(c *gin.Context) { + port := c.Query("port") + + v, ok := c.Get("__internal__client_instance") + if !ok { + response.Fail(c, gin.H{"status": false}, "未获取到client值信息") + return + } + client, ok := v.(*Client) + if !ok { + response.Fail(c, gin.H{"status": false}, "client信息错误") + return + } + client.server = strings.Split(c.Request.RemoteAddr, ":")[0] + ":" + port + + response.Success(c, nil, "bind server success") } func EventHandler(c *gin.Context) { @@ -60,6 +95,21 @@ func EventHandler(c *gin.Context) { client.ProcessEvent(&msg) } +func ExtentionsHandler(c *gin.Context) { + v, ok := c.Get("__internal__client_instance") + if !ok { + response.Fail(c, gin.H{"status": false}, "未获取到client值信息") + return + } + client, ok := v.(*Client) + if !ok { + response.Fail(c, gin.H{"status": false}, "client信息错误") + return + } + + response.Success(c, client.extentions, "") +} + func CommandResultHandler(c *gin.Context) { j, err := io.ReadAll(c.Request.Body) // 接收数据 if err != nil { @@ -86,3 +136,41 @@ func CommandResultHandler(c *gin.Context) { client.ProcessCommandResult(&result) } + +func TagsHandler(c *gin.Context) { + j, err := io.ReadAll(c.Request.Body) // 接收数据 + if err != nil { + logger.Error("没获取到:%s", err.Error()) + response.Fail(c, gin.H{"status": false}, "没获取到:"+err.Error()) + return + } + uuidTags := &struct { + UUIDS []string `json:"uuids"` + }{} + if err := json.Unmarshal(j, &uuidTags); err != nil { + logger.Error("反序列化结果失败%s", err.Error()) + response.Fail(c, gin.H{"status": false}, "反序列化结果失败:"+err.Error()) + return + } + + v, ok := c.Get("__internal__client_instance") + if !ok { + logger.Error("%v", "未获取到client值信息") + response.Fail(c, gin.H{"status": false}, "未获取到client值信息") + return + } + client, ok := v.(*Client) + if !ok { + logger.Error("%v", "client获取失败") + response.Fail(c, gin.H{"status": false}, "client获取失败") + return + } + + if client.getTagsCallback != nil { + result := client.getTagsCallback(uuidTags.UUIDS) + response.Success(c, result, "") + } else { + logger.Error("get tags callback not set") + response.Fail(c, gin.H{"status": false}, "get tags callback not set") + } +} diff --git a/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/machine.go b/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/machine.go index 64bcdb54..6e7fce91 100644 --- a/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/machine.go +++ b/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/machine.go @@ -8,7 +8,7 @@ import ( ) func (c *Client) MachineList() ([]*common.MachineNode, error) { - url := "http://" + c.Server + "/api/v1/pluginapi/machine_list" + url := "http://" + c.Server() + "/api/v1/pluginapi/machine_list" r, err := httputils.Get(url, nil) if err != nil { return nil, err diff --git a/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/plugin.go b/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/plugin.go index edee734f..b3a9f50d 100644 --- a/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/plugin.go +++ b/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/plugin.go @@ -3,9 +3,11 @@ package client import ( "encoding/json" + "gitee.com/openeuler/PilotGo/sdk/common" "gitee.com/openeuler/PilotGo/sdk/utils/httputils" ) +// 用于初始化Client type PluginInfo struct { Name string `json:"name"` Version string `json:"version"` @@ -17,8 +19,14 @@ type PluginInfo struct { ReverseDest string `json:"reverse_dest"` } +// 用于插件与PilotGo server通讯 +type PluginFullInfo struct { + PluginInfo + Extentions []*common.Extention +} + func (c *Client) GetPluginInfo(name string) (*PluginInfo, error) { - url := c.Server + "/api/v1/pluginapi/plugins" + url := c.Server() + "/api/v1/pluginapi/plugins" r, err := httputils.Get(url, nil) if err != nil { return nil, err diff --git a/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/script.go b/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/script.go index 2b1038f9..1477090a 100644 --- a/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/script.go +++ b/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/script.go @@ -16,7 +16,7 @@ type CallbackHandler struct { type RunCommandCallback func([]*common.RunResult) func (c *Client) RunCommand(batch *common.Batch, cmd string) ([]*common.CmdResult, error) { - url := "http://" + c.Server + "/api/v1/pluginapi/run_command" + url := "http://" + c.Server() + "/api/v1/pluginapi/run_command" p := &common.CmdStruct{ Batch: batch, @@ -49,7 +49,7 @@ type ScriptStruct struct { } func (c *Client) RunScript(batch *common.Batch, script string, params []string) ([]*common.CmdResult, error) { - url := "http://" + c.Server + "/api/v1/pluginapi/run_script" + url := "http://" + c.Server() + "/api/v1/pluginapi/run_script" p := &ScriptStruct{ Batch: batch, @@ -77,7 +77,7 @@ func (c *Client) RunScript(batch *common.Batch, script string, params []string) } func (c *Client) RunCommandAsync(batch *common.Batch, cmd string, callback RunCommandCallback) error { - url := "http://" + c.Server + "/api/v1/pluginapi/run_command_async?plugin_name=" + c.PluginInfo.Name + url := "http://" + c.Server() + "/api/v1/pluginapi/run_command_async?plugin_name=" + c.PluginInfo.Name p := &common.CmdStruct{ Batch: batch, diff --git a/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/service.go b/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/service.go index 29135073..b9a9cbfe 100644 --- a/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/service.go +++ b/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/plugin/client/service.go @@ -8,7 +8,7 @@ import ( ) func (c *Client) ServiceStatus(batch *common.Batch, servicename string) ([]*common.ServiceResult, error) { - url := c.Server + "/api/v1/pluginapi/service/:name" + url := c.Server() + "/api/v1/pluginapi/service/:name" p := &common.ServiceStruct{ Batch: batch, @@ -31,7 +31,7 @@ func (c *Client) ServiceStatus(batch *common.Batch, servicename string) ([]*comm } func (c *Client) StartService(batch *common.Batch, serviceName string) ([]*common.ServiceResult, error) { - url := c.Server + "/api/v1/pluginapi/start_service" + url := c.Server() + "/api/v1/pluginapi/start_service" p := &common.ServiceStruct{ Batch: batch, @@ -54,7 +54,7 @@ func (c *Client) StartService(batch *common.Batch, serviceName string) ([]*commo } func (c *Client) StopService(batch *common.Batch, serviceName string) ([]*common.ServiceResult, error) { - url := c.Server + "/api/v1/pluginapi/stop_service" + url := c.Server() + "/api/v1/pluginapi/stop_service" p := &common.ServiceStruct{ Batch: batch, diff --git a/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/utils/httputils/request.go b/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/utils/httputils/request.go index 1093f485..3c371e3f 100644 --- a/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/utils/httputils/request.go +++ b/atune/server/vendor/gitee.com/openeuler/PilotGo/sdk/utils/httputils/request.go @@ -57,6 +57,7 @@ func request(method, url string, param *Params) (*Response, error) { } hc := &http.Client{Transport: &http.Transport{ + DisableKeepAlives: true, TLSClientConfig: &tls.Config{ InsecureSkipVerify: true, }, diff --git a/atune/server/vendor/modules.txt b/atune/server/vendor/modules.txt index e3c2b759..5d4beaed 100644 --- a/atune/server/vendor/modules.txt +++ b/atune/server/vendor/modules.txt @@ -1,4 +1,4 @@ -# gitee.com/openeuler/PilotGo/sdk v0.0.0-20231024072151-019ddee0ae4b +# gitee.com/openeuler/PilotGo/sdk v0.0.0-20231130033012-9175e9682d48 ## explicit; go 1.17 gitee.com/openeuler/PilotGo/sdk/common gitee.com/openeuler/PilotGo/sdk/logger -- Gitee