|
|
@@ -6,14 +6,18 @@ import ch.qos.logback.classic.LoggerContext;
|
|
|
import cn.reghao.bnt.agent.event.ws.WsClient;
|
|
|
import cn.reghao.bnt.agent.config.ConfigFile;
|
|
|
import cn.reghao.bnt.agent.config.DagentConfig;
|
|
|
+import cn.reghao.bnt.agent.task.ImageCleanTask;
|
|
|
import cn.reghao.bnt.common.agent.app.iface.AppDeploy;
|
|
|
import cn.reghao.bnt.common.agent.app.iface.AppStat;
|
|
|
import cn.reghao.bnt.common.agent.app.iface.impl.AppDeployService;
|
|
|
import cn.reghao.bnt.common.agent.app.iface.impl.AppStatService;
|
|
|
import cn.reghao.bnt.common.agent.app.iface.impl.DockerApp;
|
|
|
+import cn.reghao.bnt.common.docker.Docker;
|
|
|
+import cn.reghao.bnt.common.docker.DockerImpl;
|
|
|
import cn.reghao.bnt.common.msg.MessageSender;
|
|
|
import cn.reghao.jutil.jdk.serializer.JsonConverter;
|
|
|
import cn.reghao.jutil.jdk.string.StringRegexp;
|
|
|
+import cn.reghao.jutil.jdk.thread.ThreadPoolWrapper;
|
|
|
import cn.reghao.jutil.jdk.util.SingleInstance;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
@@ -24,10 +28,14 @@ import java.net.InetAddress;
|
|
|
import java.net.InetSocketAddress;
|
|
|
import java.net.Socket;
|
|
|
import java.nio.charset.StandardCharsets;
|
|
|
+import java.util.concurrent.ScheduledExecutorService;
|
|
|
+import java.util.concurrent.TimeUnit;
|
|
|
|
|
|
@Slf4j
|
|
|
public class AgentApp {
|
|
|
static MessageSender messageSender;
|
|
|
+ static ScheduledExecutorService scheduler = ThreadPoolWrapper.scheduledThreadPool("heartbeat", 5);
|
|
|
+ static Docker docker = new DockerImpl();
|
|
|
|
|
|
static void setLogLevel() {
|
|
|
LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
|
|
|
@@ -57,12 +65,12 @@ public class AgentApp {
|
|
|
}
|
|
|
|
|
|
static MessageSender getMessageSender(DagentConfig dagentConfig) {
|
|
|
- DockerApp dockerApp = new DockerApp();
|
|
|
+ DockerApp dockerApp = new DockerApp(docker);
|
|
|
AppDeploy appDeploy = new AppDeployService(dockerApp);
|
|
|
AppStat appStat = new AppStatService(dockerApp);
|
|
|
|
|
|
if (tryConnect(dagentConfig.getManagerAddress(), dagentConfig.getManagerPort())) {
|
|
|
- messageSender = new WsClient(dagentConfig, appDeploy, appStat);
|
|
|
+ messageSender = new WsClient(dagentConfig, scheduler, appDeploy, appStat);
|
|
|
return messageSender;
|
|
|
}
|
|
|
|
|
|
@@ -98,6 +106,8 @@ public class AgentApp {
|
|
|
messageSender.connect();
|
|
|
}
|
|
|
|
|
|
+ ImageCleanTask cleanTask = new ImageCleanTask(docker);
|
|
|
+ scheduler.scheduleAtFixedRate(cleanTask, 1, 12, TimeUnit.HOURS);
|
|
|
shutdownGracefully();
|
|
|
SingleInstance.onlyOne(60001);
|
|
|
}
|