package com.github.ltsopensource.admin.web.api;
import com.github.ltsopensource.admin.cluster.BackendAppContext;
import com.github.ltsopensource.admin.request.MDataPaginationReq;
import com.github.ltsopensource.admin.web.AbstractMVC;
import com.github.ltsopensource.admin.web.support.Builder;
import com.github.ltsopensource.admin.web.vo.RestfulResponse;
import com.github.ltsopensource.core.commons.utils.CollectionUtils;
import com.github.ltsopensource.core.commons.utils.StringUtils;
import com.github.ltsopensource.monitor.access.domain.MDataPo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @author Robert HG (254963746@qq.com) on 8/21/15.
*/
@RestController
public class MonitorApi extends AbstractMVC {
@Autowired
private BackendAppContext appContext;
@RequestMapping(value = "/monitor/monitor-data-get", method = {RequestMethod.POST, RequestMethod.GET})
public RestfulResponse monitorDataGet(MDataPaginationReq request) {
RestfulResponse response = new RestfulResponse();
if (request.getNodeType() == null) {
return Builder.build(false, "nodeType can not be null.");
}
if (request.getStartTime() == null || request.getEndTime() == null) {
return Builder.build(false, "Search time range must be input.");
}
if (StringUtils.isNotEmpty(request.getIdentity())) {
request.setNodeGroup(null);
}
List<? extends MDataPo> rows = null;
switch (request.getNodeType()) {
case JOB_CLIENT:
rows = appContext.getBackendJobClientMAccess().querySum(request);
break;
case JOB_TRACKER:
rows = appContext.getBackendJobTrackerMAccess().querySum(request);
break;
case TASK_TRACKER:
rows = appContext.getBackendTaskTrackerMAccess().querySum(request);
break;
}
response.setSuccess(true);
response.setRows(rows);
response.setResults(CollectionUtils.sizeOf(rows));
return response;
}
@RequestMapping(value = "/monitor/jvm-monitor-data-get", method = {RequestMethod.POST, RequestMethod.GET})
public RestfulResponse jvmMDataGet(MDataPaginationReq request) {
RestfulResponse response = new RestfulResponse();
if (request.getJvmType() == null) {
return Builder.build(false, "jvmType can not be null.");
}
if (request.getStartTime() == null || request.getEndTime() == null) {
return Builder.build(false, "Search time range must be input.");
}
if (StringUtils.isNotEmpty(request.getIdentity())) {
request.setNodeGroup(null);
}
List<? extends MDataPo> rows = null;
switch (request.getJvmType()) {
case GC:
rows = appContext.getBackendJVMGCAccess().queryAvg(request);
break;
case MEMORY:
rows = appContext.getBackendJVMMemoryAccess().queryAvg(request);
break;
case THREAD:
rows = appContext.getBackendJVMThreadAccess().queryAvg(request);
break;
}
response.setSuccess(true);
response.setRows(rows);
response.setResults(CollectionUtils.sizeOf(rows));
return response;
}
}