mirror of
https://github.com/PowerJob/PowerJob.git
synced 2025-07-17 00:00:04 +08:00
[dev] update version to 1.2.0, start to test container
This commit is contained in:
parent
dccec9767f
commit
5dff657eef
@ -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>
|
||||
|
||||
|
@ -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>
|
||||
|
@ -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;
|
||||
}
|
@ -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>
|
||||
|
@ -15,7 +15,8 @@ import lombok.Getter;
|
||||
public enum ContainerStatus {
|
||||
|
||||
ENABLE(1),
|
||||
DISABLE(2);
|
||||
DISABLE(2),
|
||||
DELETED(99);
|
||||
|
||||
private int v;
|
||||
|
||||
|
@ -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 接受的文件
|
||||
|
@ -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);
|
||||
|
@ -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,包括 URL,branch,username,password
|
||||
private String sourceInfo;
|
||||
|
||||
// jar的MD5,唯一,作为 GridFS 的文件名
|
||||
private String md5;
|
||||
// 版本 (Jar包使用md5,Git使用commitId,前者32位,后者40位,不会产生碰撞)
|
||||
private String version;
|
||||
|
||||
// 状态,枚举值为 ContainerStatus
|
||||
private Integer status;
|
||||
|
||||
// 上一次部署时间
|
||||
private Date lastDeployTime;
|
||||
|
||||
private Date gmtCreate;
|
||||
private Date gmtModified;
|
||||
}
|
||||
|
@ -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 -->
|
||||
|
@ -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>
|
||||
|
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user