/*******************************************************************************
* ===========================================================
* Ankush : Big Data Cluster Management Solution
* ===========================================================
*
* (C) Copyright 2014, by Impetus Technologies
*
* This is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License (LGPL v3) as
* published by the Free Software Foundation;
*
* This software is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this software; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
******************************************************************************/
package com.impetus.ankush.common.controller.view;
import java.util.ArrayList;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;
@Controller
@RequestMapping("/commonMonitoring")
public class AnkushCommonMonitoring extends AbstractController {
/** The Constant logger. */
private static final Logger logger = LoggerFactory
.getLogger(AnkushHadoopClusterMonitoring.class);
/** Constructor. */
public AnkushCommonMonitoring() {
// TODO Auto-generated constructor stub
}
/** Main monitoring page. */
@RequestMapping(value = "/{clusterName}/C-D/{clusterId}/{clusterTechnology}", method = RequestMethod.GET)
public String common(ModelMap model,
@PathVariable("clusterId") String clusterId,
@PathVariable("clusterName") String clusterName,
@PathVariable("clusterTechnology") String clusterTechnology,
HttpServletRequest request) {
ArrayList<String> jsFiles = new ArrayList<String>();
logger.info("Inside common monitoring view");
jsFiles.removeAll(jsFiles);
jsFiles.add("commonMonitoring");
model.addAttribute("jsFiles", jsFiles);
model.addAttribute("page", "monitoringPage");
model.addAttribute("clusterId", clusterId);
model.addAttribute("clusterName", clusterName);
model.addAttribute("clusterTechnology", clusterTechnology);
return "commonMonitoringPages/monitoringPage";
}
/** Audit trail page. */
@RequestMapping(value = "/{clusterName}/auditTrails/C-D/{clusterId}/{clusterTechnology}", method = RequestMethod.GET)
public String auditTrail(ModelMap model,
@PathVariable("clusterId") String clusterId,
@PathVariable("clusterName") String clusterName,
@PathVariable("clusterTechnology") String clusterTechnology) {
logger.info("Inside Audit Trail view");
ArrayList<String> jsFiles = new ArrayList<String>();
jsFiles.add("commonMonitoring/auditTrails");
model.addAttribute("jsFiles", jsFiles);
model.addAttribute("clusterId", clusterId);
model.addAttribute("clusterName", clusterName);
model.addAttribute("clusterTechnology", clusterTechnology);
return "commonMonitoringPages/auditTrails";
}
@RequestMapping(value = "/{clusterName}/deploymentLogs/C-D/{clusterId}/{clusterTechnology}", method = RequestMethod.GET)
public String deploymentLogs(ModelMap model,
@PathVariable("clusterId") String clusterId,
@PathVariable("clusterName") String clusterName,
@PathVariable("clusterTechnology") String clusterTechnology) {
logger.info("Inside deploymentLogs view");
model.addAttribute("clusterId", clusterId);
model.addAttribute("clusterName", clusterName);
model.addAttribute("clusterTechnology", clusterTechnology);
ArrayList<String> jsFiles = new ArrayList<String>();
jsFiles.add("ankush.common");
model.addAttribute("jsFiles", jsFiles);
return "common/nodeStatus";
}
/** Audit trail child page. */
@RequestMapping(value = "/auditTrailDetails", method = RequestMethod.GET)
public String auditTrailDetail(ModelMap model) {
logger.info("Inside Audit Trails Details view");
return "commonMonitoringPages/auditTrailDetails";
}
/** Events page. */
@RequestMapping(value = "/{clusterName}/events/C-D/{clusterId}/{clusterTechnology}", method = RequestMethod.GET)
public String events(ModelMap model,
@PathVariable("clusterId") String clusterId,
@PathVariable("clusterName") String clusterName,
@PathVariable("clusterTechnology") String clusterTechnology) {
logger.info("Inside Events view");
ArrayList<String> jsFiles = new ArrayList<String>();
jsFiles.add("commonMonitoring/events");
model.addAttribute("jsFiles", jsFiles);
model.addAttribute("clusterId", clusterId);
model.addAttribute("clusterName", clusterName);
model.addAttribute("clusterTechnology", clusterTechnology);
return "commonMonitoringPages/events";
}
/** Operations page. */
@RequestMapping(value = "/{clusterName}/operations/C-D/{clusterId}/{clusterTechnology}", method = RequestMethod.GET)
public String operations(ModelMap model,
@PathVariable("clusterId") String clusterId,
@PathVariable("clusterName") String clusterName,
@PathVariable("clusterTechnology") String clusterTechnology) {
logger.info("Inside operations view");
ArrayList<String> jsFiles = new ArrayList<String>();
jsFiles.add("commonMonitoring/operations");
model.addAttribute("jsFiles", jsFiles);
model.addAttribute("page", "operations");
model.addAttribute("clusterId", clusterId);
model.addAttribute("clusterName", clusterName);
model.addAttribute("clusterTechnology", clusterTechnology);
return "commonMonitoringPages/operations";
}
/** Operations page. */
@RequestMapping(value = "/{clusterName}/operations/{operationId}/C-D/{clusterId}/{clusterTechnology}", method = RequestMethod.GET)
public String operationLogs(ModelMap model,
@PathVariable("clusterId") String clusterId,
@PathVariable("clusterName") String clusterName,
@PathVariable("clusterTechnology") String clusterTechnology,
@PathVariable("operationId") String operationId) {
logger.info("Inside operations view");
ArrayList<String> jsFiles = new ArrayList<String>();
jsFiles.add("ankush.common");
model.addAttribute("jsFiles", jsFiles);
model.addAttribute("page", "operations");
model.addAttribute("clusterId", clusterId);
model.addAttribute("clusterName", clusterName);
model.addAttribute("clusterTechnology", clusterTechnology);
model.addAttribute("operationId", operationId);
return "commonMonitoringPages/operationProgress";
}
/** parameter page. */
@RequestMapping(value = "/{clusterName}/{hybridTechnology}/parameters/C-D/{clusterId}/{clusterTechnology}", method = RequestMethod.GET)
public String parametersHybrid(ModelMap model,
@PathVariable("clusterId") String clusterId,
@PathVariable("clusterName") String clusterName,
@PathVariable("clusterTechnology") String clusterTechnology,
@PathVariable("hybridTechnology") String hybridTechnology) {
logger.info("Inside Events view");
ArrayList<String> jsFiles = new ArrayList<String>();
jsFiles.add("commonMonitoring/configurationParam");
model.addAttribute("jsFiles", jsFiles);
model.addAttribute("hybridTechnology", hybridTechnology);
model.addAttribute("clusterId", clusterId);
model.addAttribute("clusterName", clusterName);
model.addAttribute("clusterTechnology", clusterTechnology);
model.addAttribute("page", "hybridParameters");
return "commonMonitoringPages/parameters";
}
/** Logs page. */
@RequestMapping(value = "/{clusterName}/{hybridTechnology}/logs/C-D/{clusterId}/{clusterTechnology}", method = RequestMethod.GET)
public String logsHybrid(ModelMap model,
@PathVariable("clusterId") String clusterId,
@PathVariable("clusterName") String clusterName,
@PathVariable("clusterTechnology") String clusterTechnology,
@PathVariable("hybridTechnology") String hybridTechnology) {
logger.info("Inside Logs page view");
ArrayList<String> jsFiles = new ArrayList<String>();
jsFiles.add("commonMonitoring/logs");
model.addAttribute("jsFiles", jsFiles);
model.addAttribute("clusterId", clusterId);
model.addAttribute("clusterName", clusterName);
model.addAttribute("clusterTechnology", clusterTechnology);
model.addAttribute("hybridTechnology", hybridTechnology);
model.addAttribute("page", "hybridLogs");
return "commonMonitoringPages/logs";
}
/** Nodes page. */
@RequestMapping(value = "/{clusterName}/nodes/C-D/{clusterId}/{clusterTechnology}", method = RequestMethod.GET)
public String nodes(ModelMap model,
@PathVariable("clusterId") String clusterId,
@PathVariable("clusterName") String clusterName,
@PathVariable("clusterTechnology") String clusterTechnology) {
logger.info("Inside Nodes view");
ArrayList<String> jsFiles = new ArrayList<String>();
jsFiles.add("commonMonitoring/nodes");
model.addAttribute("jsFiles", jsFiles);
model.addAttribute("clusterId", clusterId);
model.addAttribute("clusterTechnology", clusterTechnology);
model.addAttribute("clusterName", clusterName);
model.addAttribute("page", "nodeList");
return "commonMonitoringPages/nodes";
}
/** Nodes child page or heatmap child page. */
@RequestMapping(value = "/{clusterName}/nodeDetails/C-D/{clusterId}/{clusterTechnology}/{hostName:.+}", method = RequestMethod.GET)
public String nodeDrillDown(ModelMap model,
@PathVariable("clusterId") String clusterId,
@PathVariable("clusterName") String clusterName,
@PathVariable("clusterTechnology") String clusterTechnology,
@PathVariable("hostName") String hostName) {
logger.info("Inside nodeDrillDown view");
model.addAttribute("clusterId", clusterId);
model.addAttribute("clusterTechnology", clusterTechnology);
model.addAttribute("clusterName", clusterName);
model.addAttribute("hostName", hostName);
model.addAttribute("page", "nodeDrillDown");
return "commonMonitoringPages/nodeDrillDown";
}
/** Configuration page. */
@RequestMapping(value = "/configuration", method = RequestMethod.GET)
public String configuration(ModelMap model) {
logger.info("Inside configuration view");
return "commonMonitoringPages/configuration";
}
/** Alert page. */
@RequestMapping(value = "/{clusterName}/alertsAndHighAvailability/C-D/{clusterId}/{clusterTechnology}", method = RequestMethod.GET)
public String alert(ModelMap model,
@PathVariable("clusterId") String clusterId,
@PathVariable("clusterName") String clusterName,
@PathVariable("clusterTechnology") String clusterTechnology) {
logger.info("Inside alert view");
ArrayList<String> jsFiles = new ArrayList<String>();
jsFiles.add("commonMonitoring/alerts");
jsFiles.add("ankush.validation");
model.addAttribute("jsFiles", jsFiles);
model.addAttribute("clusterId", clusterId);
model.addAttribute("clusterTechnology", clusterTechnology);
model.addAttribute("clusterName", clusterName);
return "commonMonitoringPages/alert";
}
/** Utilization Trend graphs details. */
@RequestMapping(value = "/{clusterName}/utilizationTrend/C-D/{clusterId}/{clusterTechnology}", method = RequestMethod.GET)
public String utilizationTrend(ModelMap model,
@PathVariable("clusterId") String clusterId,
@PathVariable("clusterName") String clusterName,
@PathVariable("clusterTechnology") String clusterTechnology) {
logger.info("Inside Utilization Trend Detailed Graph view");
model.addAttribute("clusterId", clusterId);
model.addAttribute("clusterTechnology", clusterTechnology);
model.addAttribute("clusterName", clusterName);
return "commonMonitoringPages/clusterUtilization";
}
@RequestMapping(value = "/{clusterName}/nodeDetails/nodeUtilizationTrend/C-D/{clusterId}/{clusterTechnology}/{hostName:.+}", method = RequestMethod.GET)
public String nodeUtilizationTrend(ModelMap model,
@PathVariable("clusterId") String clusterId,
@PathVariable("clusterName") String clusterName,
@PathVariable("clusterTechnology") String clusterTechnology,
@PathVariable("hostName") String hostName){
logger.info("Inside Node Utilization Trend Detailed Graph view");
model.addAttribute("clusterId", clusterId);
model.addAttribute("clusterTechnology", clusterTechnology);
model.addAttribute("clusterName", clusterName);
model.addAttribute("hostName", hostName);
model.addAttribute("page", "nodeUtilizationTrend");
return "commonMonitoringPages/nodeUtilizationTrends";
}
/** Cluster configuration page. */
@RequestMapping(value = "/clusterConf", method = RequestMethod.GET)
public String clusterConf(ModelMap model) {
logger.info("Inside Cluster Configuration Page view");
return "commonMonitoringPages/clusterConf";
}
/** Cluster configuration page. */
@RequestMapping(value = "/addNodes", method = RequestMethod.GET)
public String addNodes(ModelMap model) {
logger.info("Inside Add Node Page view");
return "commonMonitoringPages/addNodes";
}
@RequestMapping(value = "/commonNodeDetails", method = RequestMethod.GET)
public String commonNodeDetails(ModelMap model) {
logger.info("Inside Common Node Details Page view");
return "commonMonitoringPages/commonNodeDetails";
}
@RequestMapping(value = "/addNodeProgress", method = RequestMethod.GET)
public String addNodeProgress(ModelMap model) {
logger.info("Inside Common Node Details Page view");
return "commonMonitoringPages/addNodeProgress";
}
@RequestMapping(value = "/addNodeProgressLogs", method = RequestMethod.GET)
public String addNodeProgressLogs(ModelMap model) {
logger.info("Inside Common Node Details Page view");
return "common/nodeDeploymentLogs";
}
@RequestMapping(value = "/retrievedNodeDetail/{nodeIp:.+}", method = RequestMethod.GET)
public String nodeDetail(ModelMap model,
@PathVariable("nodeIp") String nodeIp) {
logger.info("Inside node details view");
model.addAttribute("title", "nodeDetail");
model.addAttribute("nodeIp", nodeIp);
return "hybridCluster/hybridClusterCreation/retrievedNodeDetail";
}
@Override
protected ModelAndView handleRequestInternal(HttpServletRequest request,
HttpServletResponse response) throws Exception {
// TODO Auto-generated method stub
return null;
}
}