Ver Fonte

优化机器模块代码

reghao há 4 anos atrás
pai
commit
9a6044a315

+ 2 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/page/AppConfigPageController.java

@@ -194,7 +194,8 @@ public class AppConfigPageController {
             list = Collections.emptyList();
         }
 
-        List<KeyValue> machines = hostQuery.findByEnv(EnvList.test.name()).stream()
+        String env = app.getEnv();
+        List<KeyValue> machines = hostQuery.findByEnv(env).stream()
                 .map(machineHost -> {
                     String machineId = machineHost.getMachineId();
                     String machineIpv4 = machineHost.getMachineIpv4();

+ 15 - 7
dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/controller/page/MachineHostPageController.java

@@ -7,6 +7,7 @@ import cn.reghao.autodop.dmaster.machine.model.po.MachineHost;
 import cn.reghao.autodop.dmaster.machine.model.po.SshAuth;
 import cn.reghao.autodop.dmaster.machine.model.vo.MachineHostVO;
 import cn.reghao.autodop.dmaster.machine.model.vo.MachineInfoVO;
+import cn.reghao.autodop.dmaster.machine.model.vo.MachineSshAuth;
 import cn.reghao.autodop.dmaster.machine.service.page.MachineHostPage;
 import cn.reghao.autodop.dmaster.machine.service.ssh.Keys;
 import cn.reghao.autodop.dmaster.util.db.PageList;
@@ -24,6 +25,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * @author reghao
@@ -82,15 +84,22 @@ public class MachineHostPageController {
     @ApiOperation(value = "SSH 认证设置页面")
     @GetMapping("/sshauth/{machineId}")
     public String sshAuthPage(@PathVariable("machineId") String machineId, Model model) {
-        SshAuth sshAuth = machineHostPage.setSshAuthPage(machineId);
-
-        List<KeyValue> ipv4List = new ArrayList<>();
-        String machineIpv4 = "";
+        MachineSshAuth machineSshAuth = machineHostPage.setSshAuthPage(machineId);
+        List<KeyValue> ipv4List = machineSshAuth.getIpv4List().stream()
+                .map(ipv4 -> new KeyValue(ipv4, ipv4)).collect(Collectors.toList());
+
+        String machineIpv4;
+        SshAuth sshAuth = machineSshAuth.getSshAuth();
+        if (sshAuth != null) {
+            machineIpv4 = sshAuth.getIpv4();
+        } else {
+            machineIpv4 = ipv4List.get(0).getValue();
+        }
 
         model.addAttribute("machineId", machineId);
         model.addAttribute("machineIpv4", machineIpv4);
         model.addAttribute("ipv4List", ipv4List);
-        model.addAttribute("sshAuth", sshAuth);
+        model.addAttribute("sshAuth", machineSshAuth.getSshAuth());
         return "/machine/host/sshauth";
     }
 
@@ -118,10 +127,9 @@ public class MachineHostPageController {
             return "/error";
         }
 
-        String machineIpv4 = machineHost.getMachineIpv4();
         SshConnData sshConnData = new SshConnData();
         sshConnData.setOps(Keys.OPS_CONNECT);
-        sshConnData.setHost(machineIpv4);
+        sshConnData.setHost(sshAuth.getIpv4());
         sshConnData.setPort(sshAuth.getPort());
         sshConnData.setUsername(sshAuth.getUsername());
         sshConnData.setPassword(sshAuth.getPassword());

+ 18 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/model/vo/MachineSshAuth.java

@@ -0,0 +1,18 @@
+package cn.reghao.autodop.dmaster.machine.model.vo;
+
+import cn.reghao.autodop.dmaster.machine.model.po.SshAuth;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author reghao
+ * @date 2021-10-18 15:06:23
+ */
+@AllArgsConstructor
+@Data
+public class MachineSshAuth {
+    private SshAuth sshAuth;
+    private List<String> ipv4List;
+}

+ 4 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/service/MachineServiceImpl.java

@@ -32,6 +32,10 @@ public class MachineServiceImpl implements MachineService {
 
     @Override
     public void setSshAuth(String machineId, SshAuth sshAuth) {
+        // TODO 检测主机可达, 端口可达, 协议正确
+        String ipv4 = sshAuth.getIpv4();
+        int port = sshAuth.getPort();
+
         MachineHost machineHost = hostQuery.findByMachineId(machineId);
         machineHost.setSshAuth(sshAuth);
         hostCrud.save(machineHost);

+ 2 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/service/page/MachineHostPage.java

@@ -1,9 +1,9 @@
 package cn.reghao.autodop.dmaster.machine.service.page;
 
 import cn.reghao.autodop.dmaster.machine.model.po.MachineHost;
-import cn.reghao.autodop.dmaster.machine.model.po.SshAuth;
 import cn.reghao.autodop.dmaster.machine.model.vo.MachineHostVO;
 import cn.reghao.autodop.dmaster.machine.model.vo.MachineInfoVO;
+import cn.reghao.autodop.dmaster.machine.model.vo.MachineSshAuth;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
 
@@ -15,7 +15,7 @@ public interface MachineHostPage {
     Page<MachineHostVO> indexPage(String env, PageRequest pageRequest);
     Page<MachineHostVO> searchResultPage(String machineIpv4);
     String setEnvPage(String machineId);
-    SshAuth setSshAuthPage(String machineId);
+    MachineSshAuth setSshAuthPage(String machineId);
     void setNotifyPage(String machineId);
     MachineHost sshTerminalPage(String machineId);
     MachineInfoVO hostDetailPage(String machineId);

+ 7 - 3
dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/service/page/MachineHostPageImpl.java

@@ -9,6 +9,7 @@ import cn.reghao.autodop.dmaster.machine.model.po.NetworkInfo;
 import cn.reghao.autodop.dmaster.machine.model.po.SshAuth;
 import cn.reghao.autodop.dmaster.machine.model.vo.MachineHostVO;
 import cn.reghao.autodop.dmaster.machine.model.vo.MachineInfoVO;
+import cn.reghao.autodop.dmaster.machine.model.vo.MachineSshAuth;
 import cn.reghao.autodop.dmaster.notification.db.repository.NotifyGroupRepository;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageImpl;
@@ -61,12 +62,15 @@ public class MachineHostPageImpl implements MachineHostPage {
     }
 
     @Override
-    public SshAuth setSshAuthPage(String machineId) {
+    public MachineSshAuth setSshAuthPage(String machineId) {
+        SshAuth sshAuth = hostQuery.findByMachineId(machineId).getSshAuth();
         MachineInfo machineInfo = infoQuery.findByMachineId(machineId);
         List<String> ipv4List = machineInfo.getNetworkInfos().stream()
                 .map(NetworkInfo::getIpv4).collect(Collectors.toList());
-
-        return hostQuery.findByMachineId(machineId).getSshAuth();
+        List<String> ipv4List1 = machineInfo.getNetworkInfos().stream()
+                .map(NetworkInfo::getPublicIpv4).collect(Collectors.toList());
+        ipv4List.addAll(ipv4List1);
+        return new MachineSshAuth(sshAuth, ipv4List);
     }
 
     @Override

+ 0 - 5
dmaster/src/main/resources/templates/machine/host/index.html

@@ -53,7 +53,6 @@
                     <th data-field="osVersion">系统版本</th>
                     <th>所属环境</th>
                     <th>SSH 认证</th>
-                    <th>通知组</th>
                     <th>操作</th>
                 </tr>
                 </thead>
@@ -76,10 +75,6 @@
                         <a class="open-popup" data-title="设置 SSH 帐号"
                            th:attr="data-url=@{'/machine/host/sshauth/'+${item.machineId}}" href="#">设置</a>
                     </td>
-                    <td>
-                        <a class="open-popup" data-title="设置通知组"
-                           th:attr="data-url=@{'/machine/host/notify/'+${item.machineId}}" href="#">设置</a>
-                    </td>
                     <td>
                         <a class="open-popup" data-title="WebTerminal" th:attr="data-url=@{'/machine/host/webssh/'+${item.machineId}}"
                            href="#">SSH 终端</a>

+ 1 - 1
dmaster/src/main/resources/templates/machine/host/sshauth.html

@@ -8,7 +8,7 @@
         <div class="layui-form-item">
             <label class="layui-form-label required">选择地址</label>
             <div class="layui-input-inline">
-                <select name="machineIpv4">
+                <select name="ipv4">
                     <option th:each="item : ${ipv4List}" th:value="${item.key}" th:selected="${machineIpv4} eq ${item.key}">[[${item.value}]]</option>
                 </select>
             </div>