DockerBuildCtrl.java 5.95 KB
package com.ui.ctrl;

import com.alibaba.fastjson.JSONArray;
import com.ui.contants.HttpUriContants;
import com.ui.http.HttpRestClient;
import com.ui.model.BaseResponse;
import com.ui.model.domain.BuildMessage;
import com.ui.model.domain.DockerProjectModel;
import com.ui.model.req.BuildRequest;
import com.ui.model.req.DockerJenkinsReq;
import com.ui.model.req.User;
import com.ui.model.req.*;
import com.ui.project.ProjectEnvironment;
import com.ui.project.ProjectOnline;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpSession;
import java.util.*;


@RestController
@RequestMapping("/dockerBuild")
public class DockerBuildCtrl {
    Logger log = LoggerFactory.getLogger(DockerBuildCtrl.class);

    @Autowired
    private HttpRestClient httpRestClient;

    @RequestMapping("/toProject")
    public ModelAndView toProject(Model model,String workJobId) {
        if(StringUtils.isNotBlank(workJobId)){
          //如果来源工单发布界面

        }
        model.addAttribute("environments", ProjectEnvironment.getDockerEnvironments());
        model.addAttribute("projectJobTypes", ProjectEnvironment.getDockerProjectJobTypes());
        return new ModelAndView("project/docker_project");
    }

    /**
     * 获取所有项目
     *
     * @return
     */
    @RequestMapping(value = "/getProjects")
    @ResponseBody
    public String getProjects(String projectJobType) {
        try {
            Map map = new HashMap<>();
            map.put("projectJobType",projectJobType);
            BaseResponse response=httpRestClient.defaultGet("/dockerProject/getDockerProjectByJobType", BaseResponse.class, map);
            return JSONArray.toJSON(response.getData()).toString();
        } catch (Exception ex) {
            return "failed";
        }
    }

    /**
     * deploy项目
     *
     * @return
     */
    @RequestMapping(value = "/build")
    @ResponseBody
    public ModelAndView build(String project_id, String project_name, String environment_name, String operate_name, String branch_name, String rollbackfile_name,String workid_name, Model model, HttpSession session) {
        Map map = new HashMap<>();
        map.put("ids",project_id);
        BaseResponse response=httpRestClient.defaultGet("/dockerProject/getDockerProjectByIds", BaseResponse.class, map);
        model.addAttribute("docker_project_list", JSONArray.toJSON(response.getData()));
        model.addAttribute("environment_name", environment_name);
        model.addAttribute("operate_name", operate_name);
        model.addAttribute("branch_name", branch_name);
        model.addAttribute("workid_name", workid_name);

        return new ModelAndView("project/docker_build");
    }

    /**
     * 镜像制作
     */
    @RequestMapping(value = "/createMirror")
    @ResponseBody
    public BaseResponse createMirror(DockerJenkinsReq dockerJenkinsReq,HttpSession session) {
        User user = (User) session.getAttribute("user");
        dockerJenkinsReq.setUserName(user.getName());
        dockerJenkinsReq.setUserMail(user.getEmail());
        return httpRestClient.defaultPost("/dockerProject/createMirror",dockerJenkinsReq,BaseResponse.class);
    }

    /**
     * 镜像制作
     */
    @RequestMapping(value = "/queryJenkinsStatus")
    @ResponseBody
    public BaseResponse queryJenkinsStatus(String buildId) {
        Map map = new HashMap<>();
        map.put("id",buildId);
        BaseResponse response=httpRestClient.defaultGet("/dockerProject/queryJenkinsStatus", BaseResponse.class, map);
        return response;
    }

    /**
     * qq发布
     */
    @RequestMapping(value = "/deployMirror")
    @ResponseBody
    public BaseResponse deployMirror(DockerJenkinsReq dockerJenkinsReq) {
        return httpRestClient.defaultPost("/dockerProject/deployMirror",dockerJenkinsReq,BaseResponse.class);
    }

    /**
     * qq发布
     */
    @RequestMapping(value = "/queryDockerServerStatus")
    @ResponseBody
    public BaseResponse queryDockerServerStatus(DockerJenkinsReq dockerJenkinsReq) {
        return httpRestClient.defaultPost("/dockerProject/queryDockerServerStatus",dockerJenkinsReq,BaseResponse.class);
    }



    @RequestMapping(value = "/toDockerInfoList")
    public ModelAndView toDockerInfoList(DockerJenkinsReq dockerJenkinsReq) {
        return new ModelAndView("project/docker_info");
    }

    /**
     * docker信息列表
     * @param req
     * @return
     * @throws Exception
     */
    @RequestMapping("/getDockerInfoList")
    @ResponseBody
    public BaseResponse getHostInfos(DockerInfoReq req) throws Exception {
        BaseResponse response = httpRestClient.defaultPost(HttpUriContants.DOCKER_INFO_LIST, req, BaseResponse.class);
        return response;
    }


    @RequestMapping("/toEditDockerInfo")
    public ModelAndView toEditDockerInfos(Map model) {
        return new ModelAndView("project/editDockerInfo",model);
    }


    @RequestMapping("/saveDockerInfo")
    @ResponseBody
    public BaseResponse saveDockerInfo(@RequestBody  DockerProjectModel req) throws Exception {
        BaseResponse response = httpRestClient.defaultPost(HttpUriContants.ADDORUPDATE_DOCKER_INFO, req, BaseResponse.class);
        return response;
    }


    @RequestMapping("/getDockerInfoById")
    @ResponseBody
    public BaseResponse getDockerInfoById(int id) throws Exception {
        BaseResponse response = httpRestClient.defaultGet(HttpUriContants.GET_DOCERK_INFO_BY_ID + "?id=" + id, BaseResponse.class);
        return response;
    }

    @RequestMapping("/delDockerInfoById")
    @ResponseBody
    public BaseResponse<Integer> delDockerInfoById(int id) throws Exception {
        BaseResponse response = httpRestClient.defaultGet(HttpUriContants.DEL_DOCKER_INFO_BYID + "?id=" + id, BaseResponse.class);
        return response;
    }
}