Forráskód Böngészése

update common module

reghao 1 éve
szülő
commit
ba78966823

+ 3 - 0
common/src/main/java/cn/reghao/devops/common/agent/app/iface/AppStat.java

@@ -3,6 +3,8 @@ package cn.reghao.devops.common.agent.app.iface;
 import cn.reghao.devops.common.msg.event.EvtAppStat;
 import cn.reghao.devops.common.msg.event.EvtAppStatResult;
 
+import java.util.List;
+
 /**
  * 应用状态管理
  *
@@ -14,4 +16,5 @@ public interface AppStat {
     EvtAppStatResult stop(EvtAppStat evtAppStat) throws Exception;
     EvtAppStatResult restart(EvtAppStat evtAppStat) throws Exception;
     EvtAppStatResult stat(EvtAppStat evtAppStat) throws Exception;
+    List<EvtAppStatResult> stat() throws Exception;
 }

+ 7 - 0
common/src/main/java/cn/reghao/devops/common/agent/app/iface/impl/AppStatImpl.java

@@ -5,6 +5,8 @@ import cn.reghao.devops.common.msg.constant.PackType;
 import cn.reghao.devops.common.msg.event.EvtAppStat;
 import cn.reghao.devops.common.msg.event.EvtAppStatResult;
 
+import java.util.List;
+
 /**
  * @author reghao
  * @date 2023-03-06 16:19:24
@@ -63,4 +65,9 @@ public class AppStatImpl implements AppStat {
             throw new Exception("zip 打包没有实现");
         }
     }
+
+    @Override
+    public List<EvtAppStatResult> stat() throws Exception {
+        return dockerApp.stat();
+    }
 }

+ 16 - 4
common/src/main/java/cn/reghao/devops/common/agent/app/iface/impl/DockerApp.java

@@ -2,9 +2,9 @@ package cn.reghao.devops.common.agent.app.iface.impl;
 
 import cn.reghao.devops.common.docker.Docker;
 import cn.reghao.devops.common.docker.DockerImpl;
-import cn.reghao.devops.common.docker.po.Config;
-import cn.reghao.devops.common.docker.po.DockerAuth;
-import cn.reghao.devops.common.docker.po.HostConfig;
+import cn.reghao.devops.common.docker.model.Config;
+import cn.reghao.devops.common.docker.model.DockerAuth;
+import cn.reghao.devops.common.docker.model.HostConfig;
 import cn.reghao.devops.common.machine.Machine;
 import cn.reghao.devops.common.msg.constant.NodeStatus;
 import cn.reghao.devops.common.msg.event.EvtAppDeploy;
@@ -15,7 +15,9 @@ import cn.reghao.jutil.jdk.serializer.JsonConverter;
 import com.github.dockerjava.api.command.InspectContainerResponse;
 
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * @author reghao
@@ -83,10 +85,20 @@ public class DockerApp {
         return getStat(appId, containerInfo);
     }
 
+    public List<EvtAppStatResult> stat() throws Exception {
+        Docker docker = map.get("noAuth");
+        List<InspectContainerResponse> list = docker.psAll();
+        return list.stream().map(response -> {
+            String containerName = response.getName();
+            String appId = containerName.replace("/", "");
+            return getStat(appId, response);
+        }).collect(Collectors.toList());
+    }
+
     private EvtAppStatResult getStat(String appId, InspectContainerResponse containerInfo) {
         EvtAppStatResult appStatResult = new EvtAppStatResult(appId, Machine.ID);
         String image = containerInfo.getConfig().getImage();
-        if (image != null) {
+        if (image != null && image.contains(":")) {
             appStatResult.setCommitId(image.split(":")[1]);
         } else {
             appStatResult.setCommitId(NotAvailable.na.getDesc());

+ 19 - 3
common/src/main/java/cn/reghao/devops/common/agent/machine/MachineEvent.java

@@ -1,14 +1,17 @@
 package cn.reghao.devops.common.agent.machine;
 
+import cn.reghao.devops.common.agent.app.iface.AppStat;
 import cn.reghao.devops.common.machine.Machine;
 import cn.reghao.devops.common.msg.MessageSender;
 import cn.reghao.devops.common.msg.event.EvtAgentHeartbeat;
 import cn.reghao.devops.common.msg.event.EvtAgentStart;
+import cn.reghao.devops.common.msg.event.EvtAppStatResult;
 import cn.reghao.jutil.jdk.event.message.EventMessage;
 import cn.reghao.jutil.jdk.thread.ThreadPoolWrapper;
 import lombok.extern.slf4j.Slf4j;
 
 import java.io.IOException;
+import java.util.List;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
@@ -22,13 +25,16 @@ public class MachineEvent {
     private final ScheduledExecutorService scheduler;
     private ScheduledFuture<?> heartbeatFuture;
     private final Machine machine;
+    private final AppStat appStat;
     private final MessageSender messageSender;
     private final int heartbeatInterval;
     
-    public MachineEvent(MessageSender messageSender, Machine machine, ScheduledExecutorService scheduler, int heartbeatInterval) {
-        this.scheduler = scheduler;
-        this.machine = machine;
+    public MachineEvent(MessageSender messageSender, Machine machine, AppStat appStat,
+                        ScheduledExecutorService scheduler, int heartbeatInterval) {
         this.messageSender = messageSender;
+        this.machine = machine;
+        this.appStat = appStat;
+        this.scheduler = scheduler;
         this.heartbeatInterval = heartbeatInterval;
     }
 
@@ -37,6 +43,16 @@ public class MachineEvent {
         EventMessage eventMessage = EventMessage.evt(evtAgentStart);
         pub(eventMessage);
 
+        try {
+            List<EvtAppStatResult> list = appStat.stat();
+            list.forEach(evtAppStatResult -> {
+                EventMessage eventMessage1 = EventMessage.evt(evtAppStatResult);
+                pub(eventMessage1);
+            });
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
         agentHeartbeat();
     }
 

+ 1 - 1
common/src/main/java/cn/reghao/devops/common/msg/event/EvtAppDeploy.java

@@ -1,6 +1,6 @@
 package cn.reghao.devops.common.msg.event;
 
-import cn.reghao.devops.common.docker.po.DockerAuth;
+import cn.reghao.devops.common.docker.model.DockerAuth;
 import cn.reghao.jutil.jdk.event.message.Event;
 import lombok.Getter;
 import lombok.Setter;