[dev] update version to 1.2.0, start to test container

This commit is contained in:
tjq 2020-05-18 09:52:25 +08:00
parent dccec9767f
commit 5dff657eef
11 changed files with 69 additions and 21 deletions

View File

@ -10,11 +10,11 @@
<modelVersion>4.0.0</modelVersion>
<artifactId>oh-my-scheduler-client</artifactId>
<version>1.1.1</version>
<version>1.2.0</version>
<packaging>jar</packaging>
<properties>
<oms.common.version>1.1.1</oms.common.version>
<oms.common.version>1.2.0</oms.common.version>
<junit.version>5.6.1</junit.version>
</properties>

View File

@ -10,7 +10,7 @@
<modelVersion>4.0.0</modelVersion>
<artifactId>oh-my-scheduler-common</artifactId>
<version>1.1.1</version>
<version>1.2.0</version>
<packaging>jar</packaging>
<properties>

View File

@ -0,0 +1,19 @@
package com.github.kfcfans.oms.common.request;
import com.github.kfcfans.oms.common.OmsSerializable;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 服务器销毁容器请求
*
* @author tjq
* @since 2020/5/18
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ServerDestroyContainerRequest implements OmsSerializable {
private String containerName;
}

View File

@ -10,13 +10,13 @@
<modelVersion>4.0.0</modelVersion>
<artifactId>oh-my-scheduler-server</artifactId>
<version>1.1.1</version>
<version>1.2.0</version>
<packaging>jar</packaging>
<properties>
<swagger.version>2.9.2</swagger.version>
<springboot.version>2.2.6.RELEASE</springboot.version>
<oms.common.version>1.1.1</oms.common.version>
<oms.common.version>1.2.0</oms.common.version>
<mysql.version>8.0.19</mysql.version>
<h2.db.version>1.4.200</h2.db.version>
<zip4j.version>2.5.2</zip4j.version>

View File

@ -15,7 +15,8 @@ import lombok.Getter;
public enum ContainerStatus {
ENABLE(1),
DISABLE(2);
DISABLE(2),
DELETED(99);
private int v;

View File

@ -2,13 +2,16 @@ package com.github.kfcfans.oms.server.service;
import akka.actor.ActorSelection;
import com.github.kfcfans.oms.common.model.GitRepoInfo;
import com.github.kfcfans.oms.common.model.SystemMetrics;
import com.github.kfcfans.oms.common.request.ServerDeployContainerRequest;
import com.github.kfcfans.oms.common.request.ServerDestroyContainerRequest;
import com.github.kfcfans.oms.common.utils.CommonUtils;
import com.github.kfcfans.oms.common.utils.JsonUtils;
import com.github.kfcfans.oms.common.utils.NetUtils;
import com.github.kfcfans.oms.server.akka.OhMyServer;
import com.github.kfcfans.oms.server.akka.actors.ServerActor;
import com.github.kfcfans.oms.server.common.constans.ContainerSourceType;
import com.github.kfcfans.oms.server.common.constans.ContainerStatus;
import com.github.kfcfans.oms.server.common.utils.OmsFileUtils;
import com.github.kfcfans.oms.server.persistence.core.model.ContainerInfoDO;
import com.github.kfcfans.oms.server.persistence.core.repository.ContainerInfoRepository;
@ -103,6 +106,30 @@ public class ContainerService {
containerInfoRepository.saveAndFlush(container);
}
/**
* 删除容器通知 Worker 销毁容器 & 删除数据库
* @param appId 应用ID用于保护性判断
* @param containerId 容器ID
*/
public void delete(Long appId, Long containerId) {
ContainerInfoDO container = containerInfoRepository.findById(containerId).orElseThrow(() -> new IllegalArgumentException("can't find container by id: " + containerId));
if (!Objects.equals(appId, container.getAppId())) {
throw new RuntimeException("Permission Denied!");
}
ServerDestroyContainerRequest destroyRequest = new ServerDestroyContainerRequest(container.getContainerName());
WorkerManagerService.getActiveWorkerInfo(container.getAppId()).keySet().forEach(akkaAddress -> {
ActorSelection workerActor = OhMyServer.getWorkerActor(akkaAddress);
workerActor.tell(destroyRequest, null);
});
log.info("[ContainerService] delete container: {}.", container);
// 硬删除算了...留着好像也没什么用
containerInfoRepository.deleteById(containerId);
}
/**
* 上传用于部署的容器的 Jar 文件
* @param file 接受的文件

View File

@ -66,6 +66,12 @@ public class ContainerController {
return ResultDTO.success(null);
}
@GetMapping("/delete")
public ResultDTO<Void> deleteContainer(Long appId, Long containerId) {
containerService.delete(appId, containerId);
return ResultDTO.success(null);
}
@GetMapping("/list")
public ResultDTO<List<ContainerInfoVO>> listContainers(Long appId) {
List<ContainerInfoVO> res = containerInfoRepository.findByAppId(appId).stream().map(ContainerController::convert).collect(Collectors.toList());
@ -79,14 +85,6 @@ public class ContainerController {
return ResultDTO.success(mock);
}
@GetMapping("/delete")
public ResultDTO<Void> deleteContainer(Long appId, Long containerId) {
// TODO: 先停止各个Worker的容器实例
containerInfoRepository.deleteById(containerId);
return ResultDTO.success(null);
}
private static ContainerInfoVO convert(ContainerInfoDO containerInfoDO) {
ContainerInfoVO vo = new ContainerInfoVO();
BeanUtils.copyProperties(containerInfoDO, vo);

View File

@ -14,8 +14,6 @@ import java.util.Date;
public class ContainerInfoVO {
private Long id;
// 所属的应用ID
private Long appId;
private String containerName;
@ -24,12 +22,15 @@ public class ContainerInfoVO {
// sourceType 决定JarFile -> String存储文件名称Git -> JSON包括 URLbranchusernamepassword
private String sourceInfo;
// jar的MD5唯一作为 GridFS 的文件名
private String md5;
// 版本 Jar包使用md5Git使用commitId前者32位后者40位不会产生碰撞
private String version;
// 状态枚举值为 ContainerStatus
private Integer status;
// 上一次部署时间
private Date lastDeployTime;
private Date gmtCreate;
private Date gmtModified;
}

View File

@ -14,7 +14,7 @@
<properties>
<springboot.version>2.2.6.RELEASE</springboot.version>
<oms.worker.version>1.1.1</oms.worker.version>
<oms.worker.version>1.2.0</oms.worker.version>
<fastjson.version>1.2.68</fastjson.version>
<!-- 部署时跳过该module -->

View File

@ -10,12 +10,12 @@
<modelVersion>4.0.0</modelVersion>
<artifactId>oh-my-scheduler-worker</artifactId>
<version>1.1.1</version>
<version>1.2.0</version>
<packaging>jar</packaging>
<properties>
<spring.version>5.2.4.RELEASE</spring.version>
<oms.common.version>1.1.1</oms.common.version>
<oms.common.version>1.2.0</oms.common.version>
<h2.db.version>1.4.200</h2.db.version>
<hikaricp.version>3.4.2</hikaricp.version>
<junit.version>5.6.1</junit.version>

View File

@ -8,6 +8,7 @@ import com.github.kfcfans.oms.common.utils.CommonUtils;
import com.github.kfcfans.oms.common.utils.JsonUtils;
import com.github.kfcfans.oms.worker.actors.ProcessorTrackerActor;
import com.github.kfcfans.oms.worker.actors.TaskTrackerActor;
import com.github.kfcfans.oms.worker.actors.WorkerActor;
import com.github.kfcfans.oms.worker.background.OmsLogHandler;
import com.github.kfcfans.oms.worker.background.ServerDiscoveryService;
import com.github.kfcfans.oms.worker.background.WorkerHealthReporter;
@ -97,6 +98,7 @@ public class OhMyWorker implements ApplicationContextAware, InitializingBean, Di
actorSystem = ActorSystem.create(RemoteConstant.WORKER_ACTOR_SYSTEM_NAME, akkaFinalConfig);
actorSystem.actorOf(Props.create(TaskTrackerActor.class), RemoteConstant.Task_TRACKER_ACTOR_NAME);
actorSystem.actorOf(Props.create(ProcessorTrackerActor.class), RemoteConstant.PROCESSOR_TRACKER_ACTOR_NAME);
actorSystem.actorOf(Props.create(WorkerActor.class), RemoteConstant.WORKER_ACTOR_NAME);
log.info("[OhMyWorker] akka-remote listening address: {}", workerAddress);
log.info("[OhMyWorker] akka ActorSystem({}) initialized successfully.", actorSystem);