mirror of
https://github.com/ctripcorp/zeus.git
synced 2024-09-21 16:16:09 +08:00
update
This commit is contained in:
parent
75e0b994c7
commit
942cbd9566
|
@ -75,11 +75,7 @@ public class TaskExecutorImpl implements TaskExecutor {
|
|||
if (resLock.tryLock()){
|
||||
resLocks.add(resLock);
|
||||
}else {
|
||||
for (DistLock lock : resLocks){
|
||||
lock.unlock();
|
||||
}
|
||||
buildLock.unlock();
|
||||
return;
|
||||
throw new Exception("Get Resources Failed! ResourceId : " + res);
|
||||
}
|
||||
}
|
||||
executeJob(slbId);
|
||||
|
@ -89,12 +85,13 @@ public class TaskExecutorImpl implements TaskExecutor {
|
|||
} catch (Exception e) {
|
||||
logger.warn("Executor Job Failed! TaskWorker: " + slbId, e);
|
||||
} finally {
|
||||
if (lockflag) {
|
||||
buildLock.unlock();
|
||||
}
|
||||
for (DistLock lock : resLocks){
|
||||
lock.unlock();
|
||||
}
|
||||
if (lockflag) {
|
||||
buildLock.unlock();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -7,11 +7,13 @@ import com.ctrip.zeus.executor.TaskManager;
|
|||
import com.ctrip.zeus.model.entity.*;
|
||||
import com.ctrip.zeus.model.transform.DefaultSaxParser;
|
||||
import com.ctrip.zeus.restful.message.ResponseHandler;
|
||||
import com.ctrip.zeus.service.activate.ActivateService;
|
||||
import com.ctrip.zeus.service.activate.ActiveConfService;
|
||||
import com.ctrip.zeus.service.model.ArchiveService;
|
||||
import com.ctrip.zeus.service.model.GroupRepository;
|
||||
import com.ctrip.zeus.service.model.SlbRepository;
|
||||
import com.ctrip.zeus.service.query.GroupCriteriaQuery;
|
||||
import com.ctrip.zeus.service.query.SlbCriteriaQuery;
|
||||
import com.ctrip.zeus.service.task.constant.TaskOpsType;
|
||||
import com.ctrip.zeus.service.validate.SlbValidator;
|
||||
import com.ctrip.zeus.tag.TagBox;
|
||||
|
@ -32,10 +34,7 @@ import javax.ws.rs.QueryParam;
|
|||
import javax.ws.rs.core.Context;
|
||||
import javax.ws.rs.core.HttpHeaders;
|
||||
import javax.ws.rs.core.Response;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* Created by fanqq on 2015/3/20.
|
||||
|
@ -48,7 +47,7 @@ public class ActivateResource {
|
|||
@Resource
|
||||
private TagBox tagBox;
|
||||
@Resource
|
||||
private SlbRepository slbRepository;
|
||||
private SlbCriteriaQuery slbCriteriaQuery;
|
||||
@Resource
|
||||
private GroupRepository groupRepository;
|
||||
@Resource
|
||||
|
@ -63,6 +62,8 @@ public class ActivateResource {
|
|||
private ActiveConfService activeConfService;
|
||||
@Resource
|
||||
private GroupCriteriaQuery groupCriteriaQuery;
|
||||
@Resource
|
||||
private ActivateService activateService;
|
||||
|
||||
|
||||
private static DynamicIntProperty lockTimeout = DynamicPropertyFactory.getInstance().getIntProperty("lock.timeout", 5000);
|
||||
|
@ -82,7 +83,7 @@ public class ActivateResource {
|
|||
{
|
||||
for (String slbName : slbNames)
|
||||
{
|
||||
_slbIds.add(slbRepository.get(slbName).getId());
|
||||
_slbIds.add(slbCriteriaQuery.queryByName(slbName));
|
||||
}
|
||||
}
|
||||
for (Long id : _slbIds){
|
||||
|
@ -172,5 +173,49 @@ public class ActivateResource {
|
|||
return responseHandler.handle(resultList,hh.getMediaType());
|
||||
|
||||
}
|
||||
@GET
|
||||
@Path("/vs")
|
||||
@Authorize(name="activate")
|
||||
public Response activateVirtualServer(@Context HttpServletRequest request,
|
||||
@Context HttpHeaders hh,
|
||||
@QueryParam("vsId") Long vsId)throws Exception {
|
||||
Archive archive = archiveService.getLatestVsArchive(vsId);
|
||||
Long slbId = slbCriteriaQuery.queryByVs(vsId);
|
||||
List<VirtualServer> vses = activateService.getActivatedVirtualServer(vsId);
|
||||
List<Long> taskIds = new ArrayList<>();
|
||||
if ((vses.size()==1&&vses.get(0).getSlbId().equals(slbId))||vses.size() == 0){
|
||||
OpsTask task = new OpsTask();
|
||||
task.setSlbVirtualServerId(vsId);
|
||||
task.setCreateTime(new Date());
|
||||
task.setOpsType(TaskOpsType.ACTIVATE_VS);
|
||||
task.setTargetSlbId(slbId);
|
||||
task.setVersion(archive.getVersion());
|
||||
taskIds.add(taskManager.addTask(task));
|
||||
}else if (vses.size()==1 && !vses.get(0).getSlbId().equals(slbId)){
|
||||
VirtualServer vs = vses.get(0);
|
||||
OpsTask deactivateTask = new OpsTask();
|
||||
deactivateTask.setSlbVirtualServerId(vsId);
|
||||
deactivateTask.setCreateTime(new Date());
|
||||
deactivateTask.setOpsType(TaskOpsType.DEACTIVATE_VS);
|
||||
deactivateTask.setTargetSlbId(vs.getSlbId());
|
||||
taskIds.add(taskManager.addTask(deactivateTask));
|
||||
|
||||
OpsTask activateTask = new OpsTask();
|
||||
activateTask.setSlbVirtualServerId(vsId);
|
||||
activateTask.setCreateTime(new Date());
|
||||
activateTask.setOpsType(TaskOpsType.ACTIVATE_VS);
|
||||
activateTask.setTargetSlbId(slbId);
|
||||
activateTask.setResources(String.valueOf(vs.getSlbId()));
|
||||
taskIds.add(taskManager.addTask(activateTask));
|
||||
}else {
|
||||
throw new ValidationException("Activated Date Of Virtual Server ["+vsId +"] Is Incorrect.");
|
||||
}
|
||||
List<TaskResult> results = taskManager.getResult(taskIds,30000L);
|
||||
TaskResultList resultList = new TaskResultList();
|
||||
for (TaskResult t : results){
|
||||
resultList.addTaskResult(t);
|
||||
}
|
||||
resultList.setTotal(results.size());
|
||||
return responseHandler.handle(resultList,hh.getMediaType());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,9 +1,13 @@
|
|||
package com.ctrip.zeus.restful.resource;
|
||||
|
||||
import com.ctrip.zeus.auth.Authorize;
|
||||
import com.ctrip.zeus.exceptions.ValidationException;
|
||||
import com.ctrip.zeus.executor.TaskManager;
|
||||
import com.ctrip.zeus.model.entity.Archive;
|
||||
import com.ctrip.zeus.model.entity.Group;
|
||||
import com.ctrip.zeus.model.entity.VirtualServer;
|
||||
import com.ctrip.zeus.restful.message.ResponseHandler;
|
||||
import com.ctrip.zeus.service.activate.ActivateService;
|
||||
import com.ctrip.zeus.service.activate.ActiveConfService;
|
||||
import com.ctrip.zeus.service.model.GroupRepository;
|
||||
import com.ctrip.zeus.service.task.constant.TaskOpsType;
|
||||
|
@ -25,6 +29,7 @@ import javax.ws.rs.core.Context;
|
|||
import javax.ws.rs.core.HttpHeaders;
|
||||
import javax.ws.rs.core.Response;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
|
@ -45,6 +50,8 @@ public class DeactivateResource {
|
|||
private ActiveConfService activeConfService;
|
||||
@Resource
|
||||
private TaskManager taskManager;
|
||||
@Resource
|
||||
private ActivateService activateService;
|
||||
|
||||
|
||||
private static DynamicIntProperty lockTimeout = DynamicPropertyFactory.getInstance().getIntProperty("lock.timeout", 5000);
|
||||
|
@ -98,4 +105,29 @@ public class DeactivateResource {
|
|||
return responseHandler.handle(resultList, hh.getMediaType());
|
||||
}
|
||||
|
||||
@GET
|
||||
@Path("/vs")
|
||||
@Authorize(name="activate")
|
||||
public Response deactivateVirtualServer(@Context HttpServletRequest request,
|
||||
@Context HttpHeaders hh,
|
||||
@QueryParam("vsId") Long vsId,
|
||||
@QueryParam("slbId") Long slbId)throws Exception {
|
||||
List<VirtualServer> vses = activateService.getActivatedVirtualServer(vsId);
|
||||
Long taskId = null;
|
||||
for (VirtualServer vs : vses){
|
||||
if (vs.getSlbId().equals(slbId)){
|
||||
OpsTask activateTask = new OpsTask();
|
||||
activateTask.setSlbVirtualServerId(vsId);
|
||||
activateTask.setCreateTime(new Date());
|
||||
activateTask.setOpsType(TaskOpsType.DEACTIVATE_VS);
|
||||
activateTask.setTargetSlbId(slbId);
|
||||
taskId = taskManager.addTask(activateTask);
|
||||
}
|
||||
}
|
||||
if (taskId == null){
|
||||
throw new ValidationException("Not Found Activated VsId "+vsId + "In Slb "+ slbId);
|
||||
}
|
||||
TaskResult results = taskManager.getResult(taskId,30000L);
|
||||
return responseHandler.handle(results,hh.getMediaType());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -143,7 +143,7 @@ public interface ActivateService extends Repository {
|
|||
* @return groups
|
||||
*/
|
||||
|
||||
public VirtualServer getActivatedVirtualServer(Long vsId)throws Exception;
|
||||
public List<VirtualServer> getActivatedVirtualServer(Long vsId)throws Exception;
|
||||
/**
|
||||
* get activated vs by slbId
|
||||
* @param slbId , the vsId
|
||||
|
|
|
@ -86,7 +86,7 @@ public class ActivateServiceImpl implements ActivateService {
|
|||
|
||||
@Override
|
||||
public void activeVirtualServer(long vsId, int version, Long slbId) throws Exception {
|
||||
Archive archive = archiveService.getVirtualServerArchive(vsId,version);
|
||||
Archive archive = archiveService.getVsArchive(vsId, version);
|
||||
AssertUtils.assertNotNull(archive, "[activate]get Virtual Server Archive return Null! VsId: " + vsId);
|
||||
ConfSlbVirtualServerActiveDo confSlbVirtualServerActiveDo = new ConfSlbVirtualServerActiveDo();
|
||||
confSlbVirtualServerActiveDo.setContent(archive.getContent())
|
||||
|
@ -178,7 +178,7 @@ public class ActivateServiceImpl implements ActivateService {
|
|||
@Override
|
||||
public VirtualServer getActivatingVirtualServer(Long vsId, int version) {
|
||||
try {
|
||||
Archive archive = archiveService.getVirtualServerArchive(vsId, version);
|
||||
Archive archive = archiveService.getVsArchive(vsId, version);
|
||||
if (archive == null ){
|
||||
return null;
|
||||
}
|
||||
|
@ -273,9 +273,13 @@ public class ActivateServiceImpl implements ActivateService {
|
|||
}
|
||||
|
||||
@Override
|
||||
public VirtualServer getActivatedVirtualServer(Long vsId) throws Exception {
|
||||
ConfSlbVirtualServerActiveDo confSlbVirtualServerActiveDo = confSlbVirtualServerActiveDao.findBySlbVirtualServerId(vsId,ConfSlbVirtualServerActiveEntity.READSET_FULL);
|
||||
return DefaultSaxParser.parseEntity(VirtualServer.class, confSlbVirtualServerActiveDo.getContent());
|
||||
public List<VirtualServer> getActivatedVirtualServer(Long vsId) throws Exception {
|
||||
List<VirtualServer>res = new ArrayList<>();
|
||||
List<ConfSlbVirtualServerActiveDo> confSlbVirtualServerActiveDos = confSlbVirtualServerActiveDao.findBySlbVirtualServerId(vsId,ConfSlbVirtualServerActiveEntity.READSET_FULL);
|
||||
for (ConfSlbVirtualServerActiveDo c : confSlbVirtualServerActiveDos){
|
||||
res.add(DefaultSaxParser.parseEntity(VirtualServer.class, c.getContent()));
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -41,5 +41,5 @@ public interface ArchiveService {
|
|||
|
||||
Archive getVsArchive(Long vsId, int version) throws Exception;
|
||||
|
||||
Archive getLatestArchive(Long vsId) throws Exception;
|
||||
Archive getLatestVsArchive(Long vsId) throws Exception;
|
||||
}
|
||||
|
|
|
@ -137,7 +137,7 @@ public class ArchiveServiceImpl implements ArchiveService {
|
|||
}
|
||||
|
||||
@Override
|
||||
public Archive getLatestArchive(Long vsId) throws Exception {
|
||||
public Archive getLatestVsArchive(Long vsId) throws Exception {
|
||||
MetaVsArchiveDo d = archiveVsDao.findMaxVersionByVs(vsId, ArchiveVsEntity.READSET_FULL);
|
||||
return new Archive().setId(d.getVsId()).setContent(d.getContent()).setVersion(d.getVersion());
|
||||
}
|
||||
|
|
|
@ -128,7 +128,7 @@
|
|||
]]>
|
||||
</statement>
|
||||
</query>
|
||||
<query name="find-by-slb-virtual-server-id" type="SELECT">
|
||||
<query name="find-by-slb-virtual-server-id" type="SELECT" multiple="true">
|
||||
<param name="slb-virtual-server-id"/>
|
||||
<statement>
|
||||
<![CDATA[
|
||||
|
|
Loading…
Reference in a new issue