Authored by qinchao

docker支持集群回滚

... ... @@ -523,7 +523,7 @@ public class DockerProjectCtrl {
*/
@RequestMapping(value = "/rollback")
@ResponseBody
public BaseResponse rollback(String projectId, String environment, String rollbackImageStore) {
public BaseResponse rollback(String projectId, String environment,String clusters_name, String rollbackImageStore) {
BaseResponse rtn=new BaseResponse();
DockerProjectModel model=dockerProjectMapper.selectById(Integer.parseInt(projectId));
if(model==null){
... ... @@ -532,34 +532,39 @@ public class DockerProjectCtrl {
return rtn;
}
String clusterId=model.getDockerOnlineClusterId();
String namespace=model.getDockerOnlineNameSpace();
if(environment!=null&&environment.toUpperCase().indexOf("GRAY")>0){
clusterId=model.getDockerGrayClusterId();
namespace=model.getDockerGrayNameSpace();
}
String serviceName=model.getDockerProjectName();
if(!dockerServerDeployService.checkAppIsExist(clusterId,namespace,serviceName)){
rtn.setCode(201);
rtn.setMessage("Docker服务不存在,请联系运维人员");
return rtn;
}
Map<String,Object> statusMap=dockerServerDeployService.checkAppStatusIsNormal(clusterId,namespace,serviceName);
boolean normalStatusFlag=(boolean)statusMap.get("result");
if(!normalStatusFlag){
rtn.setCode(201);
rtn.setMessage("Docker服务非Normal状态,发布中止!");
return rtn;
}
JSONArray containerJa=(JSONArray)statusMap.get("containerJa");
String[] clusterIdArray=clusters_name.split(",");
for(String clusterId:clusterIdArray){
if(StringUtils.isBlank(clusterId)){
continue;
}
if(!dockerServerDeployService.checkAppIsExist(clusterId,namespace,serviceName)){
rtn.setCode(201);
rtn.setMessage("Docker服务不存在,请联系运维人员");
return rtn;
}
//更改路径,更改之后自动重新部署
boolean currentImageLatestFlag=dockerServerDeployService.modifyImageStore(clusterId, namespace, serviceName, containerJa,rollbackImageStore);
if(!currentImageLatestFlag){
rtn.setCode(201);
rtn.setMessage("Docker服务修改镜像服务发生异常");
return rtn;
Map<String,Object> statusMap=dockerServerDeployService.checkAppStatusIsNormal(clusterId,namespace,serviceName);
boolean normalStatusFlag=(boolean)statusMap.get("result");
if(!normalStatusFlag){
rtn.setCode(201);
rtn.setMessage("Docker服务非Normal状态,发布中止!");
return rtn;
}
JSONArray containerJa=(JSONArray)statusMap.get("containerJa");
//更改路径,更改之后自动重新部署
boolean currentImageLatestFlag=dockerServerDeployService.modifyImageStore(clusterId, namespace, serviceName, containerJa,rollbackImageStore);
if(!currentImageLatestFlag){
rtn.setCode(201);
rtn.setMessage("Docker服务修改镜像服务发生异常");
return rtn;
}
}
return rtn;
}
... ...