From ce745ce9d2a4919534892f804e22408c00a42759 Mon Sep 17 00:00:00 2001 From: tjq Date: Sat, 10 Oct 2020 20:36:32 +0800 Subject: [PATCH] feat: support worker online #81 --- .../web/controller/ServerController.java | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/web/controller/ServerController.java b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/web/controller/ServerController.java index 6cf50dce..e6660eac 100644 --- a/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/web/controller/ServerController.java +++ b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/web/controller/ServerController.java @@ -2,20 +2,26 @@ package com.github.kfcfans.powerjob.server.web.controller; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.github.kfcfans.powerjob.common.PowerJobException; import com.github.kfcfans.powerjob.common.response.ResultDTO; import com.github.kfcfans.powerjob.common.utils.CommonUtils; import com.github.kfcfans.powerjob.common.utils.NetUtils; import com.github.kfcfans.powerjob.server.akka.OhMyServer; import com.github.kfcfans.powerjob.server.persistence.core.model.AppInfoDO; +import com.github.kfcfans.powerjob.server.persistence.core.model.JobInfoDO; import com.github.kfcfans.powerjob.server.persistence.core.repository.AppInfoRepository; +import com.github.kfcfans.powerjob.server.persistence.core.repository.JobInfoRepository; +import com.github.kfcfans.powerjob.server.service.ha.ClusterStatusHolder; import com.github.kfcfans.powerjob.server.service.ha.ServerSelectService; import com.github.kfcfans.powerjob.server.service.ha.WorkerManagerService; +import com.taobao.api.internal.cluster.ClusterManager; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; +import java.util.List; import java.util.Optional; import java.util.TimeZone; @@ -34,8 +40,10 @@ public class ServerController { private ServerSelectService serverSelectService; @Resource private AppInfoRepository appInfoRepository; + @Resource + private JobInfoRepository jobInfoRepository; - @GetMapping("assert") + @GetMapping("/assert") public ResultDTO assertAppName(String appName) { Optional appInfoOpt = appInfoRepository.findByAppName(appName); return appInfoOpt.map(appInfoDO -> ResultDTO.success(appInfoDO.getId())). @@ -53,6 +61,17 @@ public class ServerController { return ResultDTO.success(server); } + @GetMapping("/acquireWorkerList") + public ResultDTO> acquireWorkerList(Long appId, Long jobId) { + Optional jobInfoOpt = jobInfoRepository.findById(jobId); + JobInfoDO jobInfo = jobInfoOpt.orElseThrow(() -> new PowerJobException("can't find jobInfo by id: " + jobId)); + if (!jobInfo.getAppId().equals(appId)) { + throw new PowerJobException("Permission denied!"); + } + List sortedAvailableWorker = WorkerManagerService.getSortedAvailableWorker(appId, jobInfo.getMinCpuCores(), jobInfo.getMinMemorySpace(), jobInfo.getMinDiskSpace()); + return ResultDTO.success(sortedAvailableWorker); + } + @GetMapping("/hello") public ResultDTO ping(@RequestParam(required = false) boolean debug) { JSONObject res = new JSONObject();