Pārlūkot izejas kodu

1.MachineQuery 引入 List<KeyValue> getMachineApps(String machineId) 方法
2.在机器列表页面显示某台机器被哪些 app 使用

reghao 1 gadu atpakaļ
vecāks
revīzija
d50492d9d0

+ 9 - 0
mgr/src/main/java/cn/reghao/devops/mgr/mgr/machine/controller/page/MachineHostPageController.java

@@ -69,6 +69,15 @@ public class MachineHostPageController {
         return "/devops/machine/host/index";
     }
 
+    @ApiOperation(value = "使用某机器的应用列表页面")
+    @PreAuthorize("hasRole('ROLE_ADMIN')")
+    @GetMapping("/app/{machineId}")
+    public String machineAppPage(@PathVariable("machineId") String machineId, Model model) {
+        List<KeyValue> list = machineQuery.getMachineApps(machineId);
+        model.addAttribute("list", list);
+        return "/devops/machine/host/apps";
+    }
+
     @ApiOperation(value = "机器所属环境设置页面")
     @PreAuthorize("hasRole('ROLE_ADMIN')")
     @GetMapping("/env/{machineId}")

+ 1 - 0
mgr/src/main/java/cn/reghao/devops/mgr/mgr/machine/db/query/MachineQuery.java

@@ -17,6 +17,7 @@ import java.util.List;
  */
 public interface MachineQuery {
     Page<MachineHostVO> getMachineHostByPage(String env, Pageable pageable);
+    List<KeyValue> getMachineApps(String machineId);
     List<MachineStat> getMachineStats();
     MachineHost getMachineHost(String machineId);
     MachineSshAuth getMachineSshAuth(String machineId);

+ 17 - 4
mgr/src/main/java/cn/reghao/devops/mgr/mgr/machine/db/query/impl/MachineQueryImpl.java

@@ -21,10 +21,7 @@ import org.springframework.data.jpa.domain.Specification;
 import org.springframework.stereotype.Service;
 
 import javax.persistence.criteria.*;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -58,6 +55,22 @@ public class MachineQueryImpl implements MachineQuery {
         });
     }
 
+    @Override
+    public List<KeyValue> getMachineApps(String machineId) {
+        MachineHost machineHost = machineHostRepository.findByMachineId(machineId);
+        if (machineHost == null) {
+            return Collections.emptyList();
+        }
+
+        return deployConfigRepository.findByMachineHost(machineHost).stream()
+                .map(appDeployConfig -> {
+                    String appId = appDeployConfig.getAppConfig().getAppId();
+                    String appName = appDeployConfig.getAppConfig().getAppName();
+                    return new KeyValue(appId, appName);
+                })
+                .collect(Collectors.toList());
+    }
+
     @Override
     public List<MachineStat> getMachineStats() {
         PageRequest pageRequest = PageRequest.of(0, 100);

+ 32 - 0
mgr/src/main/resources/templates/devops/machine/host/apps.html

@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<html xmlns:th="http://www.thymeleaf.org">
+<head th:replace="/common/template :: header(~{::title},~{::link},~{::style})">
+    <style>
+        a{
+            color: #009688;
+        }
+        a:hover{
+            color: #004a43;
+            text-decoration: underline;
+        }
+    </style>
+</head>
+<body>
+<div class="timo-detail-page">
+    <table class="layui-table">
+        <thead>
+        <tr>
+            <th>应用 ID</th>
+            <th>应用名</th>
+        </tr>
+        </thead>
+        <tbody>
+        <tr th:each="item:${list}">
+            <td>[[${item.key}]]</td>
+            <td>[[${item.value}]]</td>
+        </tr>
+        </tbody>
+    </table>
+</div>
+</body>
+</html>

+ 5 - 1
mgr/src/main/resources/templates/devops/machine/host/index.html

@@ -77,7 +77,11 @@
                     <td th:text="${item.osName}">系统名字</td>
                     <td th:text="${item.osVersion}">系统版本</td>
                     <td th:text="${item.agentVersion}">Agent 版本</td>
-                    <td style="color: red" th:text="${item.used}">使用量</td>
+                    <td>
+                        <span style="color: red" th:text="${item.used}"></span>
+                        <a class="open-popup" th:attr="data-title=@{'使用 ' + ${item.machineIpv4} + ' 的应用'},
+                        data-url=@{'/machine/host/app/'+${item.machineId}}" data-size="640,480" href="#">查看</a>
+                    </td>
                     <td>
                         <a class="open-popup" data-title="设置机器所属环境"
                            th:attr="data-url=@{'/machine/host/env/'+${item.machineId}}" href="#">设置</a>