Просмотр исходного кода

更新 keepalived 通知接口

reghao 2 лет назад
Родитель
Сommit
97d113715e

+ 11 - 2
manager/src/main/java/cn/reghao/devops/manager/machine/controller/ClusterController.java

@@ -1,10 +1,13 @@
 package cn.reghao.devops.manager.machine.controller;
 
+import cn.reghao.devops.manager.machine.model.dto.KeepalivedState;
+import cn.reghao.devops.manager.machine.service.ClusterService;
 import cn.reghao.jutil.jdk.result.WebResult;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.http.MediaType;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 /**
@@ -16,10 +19,16 @@ import org.springframework.web.bind.annotation.*;
 @RestController
 @RequestMapping("/api/cluster")
 public class ClusterController {
+    private final ClusterService clusterService;
+
+    public ClusterController(ClusterService clusterService) {
+        this.clusterService = clusterService;
+    }
+
     @ApiOperation(value = "设置机器环境")
     @PostMapping(value = "/notify/keepalived", produces = MediaType.APPLICATION_JSON_VALUE)
-    public String notify(@RequestParam("lvs") String lvs, @RequestParam("type") String type) {
-        log.info("{} -> {}", lvs, type);
+    public String notify(@Validated KeepalivedState keepalivedState) {
+        clusterService.stateNotify(keepalivedState);
         return WebResult.success();
     }
 }

+ 19 - 0
manager/src/main/java/cn/reghao/devops/manager/machine/model/dto/KeepalivedState.java

@@ -0,0 +1,19 @@
+package cn.reghao.devops.manager.machine.model.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * @author reghao
+ * @date 2024-01-05 09:16:24
+ */
+@Setter
+@Getter
+public class KeepalivedState {
+    @NotBlank
+    private String host;
+    @NotBlank
+    private String state;
+}

+ 29 - 0
manager/src/main/java/cn/reghao/devops/manager/machine/service/ClusterService.java

@@ -0,0 +1,29 @@
+package cn.reghao.devops.manager.machine.service;
+
+import cn.reghao.devops.manager.machine.model.dto.KeepalivedState;
+import cn.reghao.devops.manager.notification.NotifyService;
+import cn.reghao.devops.manager.notification.notifier.ding.DingMsg;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author reghao
+ * @date 2024-01-05 09:09:46
+ */
+@Service
+public class ClusterService {
+    private final NotifyService notifyService;
+
+    public ClusterService(NotifyService notifyService) {
+        this.notifyService = notifyService;
+    }
+
+    public void stateNotify(KeepalivedState keepalivedState) {
+        String host = keepalivedState.getHost();
+        String state = keepalivedState.getState();
+
+        String title = "keepalived 事件通知";
+        String text = String.format("keepalived 节点 %s 切换为 %s", host, state);
+        DingMsg dingMsg = new DingMsg(title, text);
+        notifyService.notify(dingMsg);
+    }
+}