From ae96f958875a16f9e1d161f8f2dc079d8df6bfae Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Fri, 12 Apr 2024 19:25:47 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=BD=91=E5=85=83=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E6=93=8D=E4=BD=9Cstart=20restart=20stop=20reboot=20poweroff?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../network_element/controller/ne_action.go | 49 +++++++++++++++++++ .../network_element/network_element.go | 5 ++ 2 files changed, 54 insertions(+) diff --git a/src/modules/network_element/controller/ne_action.go b/src/modules/network_element/controller/ne_action.go index 783e3c07..1336e5d6 100644 --- a/src/modules/network_element/controller/ne_action.go +++ b/src/modules/network_element/controller/ne_action.go @@ -155,3 +155,52 @@ func (s *NeActionController) Files(c *gin.Context) { "rows": splitRows, })) } + +// 网元服务操作 +// +// PUT /service +func (s *NeActionController) Service(c *gin.Context) { + language := ctx.AcceptLanguage(c) + var body struct { + NeType string `json:"neType" binding:"required"` + NeID string `json:"neId" binding:"required"` + Action string `json:"action" binding:"required,oneof=start restart stop reboot poweroff"` // 操作行为 + } + if err := c.ShouldBindBodyWith(&body, binding.JSON); err != nil { + c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400"))) + return + } + + // 查询网元获取IP + neInfo := s.neInfoService.SelectNeInfoByNeTypeAndNeID(body.NeType, body.NeID) + if neInfo.NeId != body.NeID || neInfo.IP == "" { + c.JSON(200, result.ErrMsg(i18n.TKey(language, "app.common.noNEInfo"))) + return + } + + neTypeLower := strings.ToLower(neInfo.NeType) + cmdStr := fmt.Sprintf("sudo service %s %s", neTypeLower, body.Action) + if neTypeLower == "omc" { + cmdStr = fmt.Sprintf("sudo /usr/local/bin/omcsvc.sh %s", body.Action) + } else if neTypeLower == "ims" { + if body.Action == "restart" { + cmdStr = "sudo ims-stop && sudo ims-start" + } else { + cmdStr = fmt.Sprintf("sudo ims-%s", body.Action) + } + } + + if body.Action == "reboot" { + cmdStr = "sudo shutdown -r now" + } + if body.Action == "poweroff" { + cmdStr = "sudo shutdown -h now" + } + + _, err := s.neInfoService.NeRunCMD(body.NeType, body.NeID, cmdStr) + if err != nil { + c.JSON(200, result.ErrMsg(err.Error())) + return + } + c.JSON(200, result.Ok(nil)) +} diff --git a/src/modules/network_element/network_element.go b/src/modules/network_element/network_element.go index fc4ad1aa..a803dc88 100644 --- a/src/modules/network_element/network_element.go +++ b/src/modules/network_element/network_element.go @@ -36,6 +36,11 @@ func Setup(router *gin.Engine) { collectlogs.OperateLog(collectlogs.OptionNew("log.operate.title.neAction", collectlogs.BUSINESS_TYPE_IMPORT)), controller.NewNeAction.PushFile, ) + neActionGroup.PUT("/service", + middleware.PreAuthorize(nil), + collectlogs.OperateLog(collectlogs.OptionNew("log.operate.title.neAction", collectlogs.BUSINESS_TYPE_OTHER)), + controller.NewNeAction.Service, + ) } // 网元信息