package com.github.ltsopensource.admin.web.api; import com.github.ltsopensource.admin.access.domain.NodeOnOfflineLog; import com.github.ltsopensource.admin.cluster.BackendAppContext; import com.github.ltsopensource.admin.request.NodeGroupRequest; import com.github.ltsopensource.admin.request.NodeOnOfflineLogPaginationReq; import com.github.ltsopensource.admin.request.NodePaginationReq; import com.github.ltsopensource.admin.response.PaginationRsp; import com.github.ltsopensource.admin.web.AbstractMVC; import com.github.ltsopensource.admin.web.vo.RestfulResponse; import com.github.ltsopensource.core.cluster.Node; import com.github.ltsopensource.core.cluster.NodeType; import com.github.ltsopensource.core.commons.utils.CollectionUtils; import com.github.ltsopensource.core.domain.NodeGroupGetReq; import com.github.ltsopensource.queue.domain.NodeGroupPo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; import java.util.List; /** * @author Robert HG (254963746@qq.com) on 5/11/15. */ @RestController @RequestMapping("/node") public class NodeApi extends AbstractMVC { @Autowired private BackendAppContext appContext; @RequestMapping("node-list-get") public RestfulResponse getNodeList(NodePaginationReq request) { RestfulResponse response = new RestfulResponse(); request.setLimit(10000); PaginationRsp<Node> paginationRsp = appContext.getBackendRegistrySrv().getOnlineNodes(request); response.setSuccess(true); response.setResults(paginationRsp.getResults()); response.setRows(paginationRsp.getRows()); return response; } @RequestMapping("registry-re-subscribe") public RestfulResponse reSubscribe() { RestfulResponse response = new RestfulResponse(); appContext.getBackendRegistrySrv().reSubscribe(); response.setSuccess(true); return response; } @RequestMapping("node-group-get") public RestfulResponse getNodeGroup(NodeGroupRequest request) { RestfulResponse response = new RestfulResponse(); NodeGroupGetReq nodeGroupGetReq = new NodeGroupGetReq(); nodeGroupGetReq.setNodeGroup(request.getNodeGroup()); nodeGroupGetReq.setNodeType(request.getNodeType()); PaginationRsp<NodeGroupPo> paginationRsp = appContext.getNodeGroupStore().getNodeGroup(nodeGroupGetReq); response.setResults(paginationRsp.getResults()); response.setRows(paginationRsp.getRows()); response.setSuccess(true); return response; } @RequestMapping("node-group-add") public RestfulResponse addNodeGroup(NodeGroupRequest request) { RestfulResponse response = new RestfulResponse(); appContext.getNodeGroupStore().addNodeGroup(request.getNodeType(), request.getNodeGroup()); if (NodeType.TASK_TRACKER.equals(request.getNodeType())) { appContext.getExecutableJobQueue().createQueue(request.getNodeGroup()); } else if (NodeType.JOB_CLIENT.equals(request.getNodeType())) { appContext.getJobFeedbackQueue().createQueue(request.getNodeGroup()); } response.setSuccess(true); return response; } @RequestMapping("node-group-del") public RestfulResponse delNodeGroup(NodeGroupRequest request) { RestfulResponse response = new RestfulResponse(); appContext.getNodeGroupStore().removeNodeGroup(request.getNodeType(), request.getNodeGroup()); if (NodeType.TASK_TRACKER.equals(request.getNodeType())) { appContext.getExecutableJobQueue().removeQueue(request.getNodeGroup()); } else if (NodeType.JOB_CLIENT.equals(request.getNodeType())) { appContext.getJobFeedbackQueue().removeQueue(request.getNodeGroup()); } response.setSuccess(true); return response; } @RequestMapping("node-onoffline-log-get") public RestfulResponse delNodeGroup(NodeOnOfflineLogPaginationReq request) { RestfulResponse response = new RestfulResponse(); Long results = appContext.getBackendNodeOnOfflineLogAccess().count(request); response.setResults(results.intValue()); if (results > 0) { List<NodeOnOfflineLog> rows = appContext.getBackendNodeOnOfflineLogAccess().select(request); response.setRows(rows); } else { response.setRows(new ArrayList<Object>(0)); } response.setSuccess(true); return response; } }