@RequestMapping(value = "/clients", method = RequestMethod.GET) public JsonResponse clients(@RequestParam("appId") Long appId){ Response<List<ClientInfo>> clientsResp = clusterService.listClients(appId); if (!clientsResp.isSuccess()){ Logs.error("failed to list clients of app(id={}), cause: {}", appId, clientsResp.getErr()); return JsonResponse.notOk(messages.get("clients.list.failed")); } return JsonResponse.ok(clientsResp.getData()); } }
@RequestMapping(value = "/servers", method = RequestMethod.GET) public JsonResponse servers(){ Response<List<ServerInfo>> serversResp = clusterService.listServers(); if (!serversResp.isSuccess()){ Logs.error("failed to list servers, cause: {}", serversResp.getErr()); return JsonResponse.notOk(messages.get("servers.list.failed")); } return JsonResponse.ok(serversResp.getData()); }
@Override public Response<Boolean> scheduleJobIfPossible(Long jobId) { try { String scheduleServer = jobServerDao.findServerByJobId(jobId); if (!Strings.isNullOrEmpty(scheduleServer)){ // re scheduling reloadJob(jobId); return Response.ok(true); } // get current server list Response<List<String>> listResp = clusterService.listSimpleServers(); if (!listResp.isSuccess()){ Logs.error("failed to list servers when schedule job(id={}) possible, cause: {}, but ignore", jobId, listResp.getErr()); return Response.ok(true); } List<String> servers = listResp.getData(); if (CollectionUtil.isNullOrEmpty(servers)){ // no available server, don't need schedule Logs.warn("There are no available server when schedule job(id={}) possible, but ignore.", jobId); return Response.ok(true); } return scheduleJob(jobId); } catch (Exception e) { Logs.error("failed to schedule job if possible(jobId={})", jobId); return Response.notOk("job.schedule.failed"); } }
@Override public Response<Boolean> scheduleJob(Long jobId) { try { // get current server list Response<List<String>> listResp = clusterService.listSimpleServers(); if (!listResp.isSuccess()){ return Response.notOk(listResp.getErr()); } List<String> servers = listResp.getData(); if (CollectionUtil.isNullOrEmpty(servers)){ // no available server, don't need schedule Logs.warn("There are no available servers when schedule job(id={}).", jobId); return Response.notOk("server.no.available"); } String targetServer = balancer.balance(servers); return Response.ok(doScheduleJob(jobId, targetServer)); } catch (Exception e) { Logs.error("failed to schedule job(jobId={})", jobId); return Response.notOk("job.schedule.failed"); } }
@Override public Response<List<JobAssignDto>> listJobAssigns(Long jobId) { try { Response<JobDetail> jobDetailResp = findJobDetailById(jobId); if (!jobDetailResp.isSuccess()){ return Response.notOk(jobDetailResp.getErr()); } JobDetail jobDetail = jobDetailResp.getData(); // get all alive clients Response<List<ClientInfo>> clientInfosResp = clusterService.listClients(jobDetail.getApp().getId()); if (!clientInfosResp.isSuccess()){ return Response.notOk(clientInfosResp.getErr()); } List<ClientInfo> clientInfos = clientInfosResp.getData(); if (CollectionUtil.isNullOrEmpty(clientInfos)){ return Response.ok(Collections.<JobAssignDto>emptyList()); } Set<String> assigns = jobAssignDao.listAssigns(jobId); List<JobAssignDto> jobAssignDtos = renderJobAssignDtos(clientInfos, assigns); return Response.ok(jobAssignDtos); } catch (Exception e){ Logs.error("failed to paging the job assigns(jobId={}), cause: {}", jobId, Throwables.getStackTraceAsString(e)); return Response.notOk("job.assign.find.failed"); } }