From 2c81867c23eae5fb1b8208696663bbbb5226a78c Mon Sep 17 00:00:00 2001 From: Ronald Roskens Date: Sun, 9 Sep 2012 19:18:13 -0500 Subject: [PATCH] Add two new admin pages used to build an event, and then send it on. --- opennms-webapp/src/main/webapp/admin/index.jsp | 1 + opennms-webapp/src/main/webapp/admin/postevent.jsp | 154 +++++++++ opennms-webapp/src/main/webapp/admin/sendevent.jsp | 351 +++++++++++++++++++++ 3 files changed, 506 insertions(+) create mode 100644 opennms-webapp/src/main/webapp/admin/postevent.jsp create mode 100644 opennms-webapp/src/main/webapp/admin/sendevent.jsp diff --git a/opennms-webapp/src/main/webapp/admin/index.jsp b/opennms-webapp/src/main/webapp/admin/index.jsp index 0339678..2bab9b7 100644 --- a/opennms-webapp/src/main/webapp/admin/index.jsp +++ b/opennms-webapp/src/main/webapp/admin/index.jsp @@ -143,6 +143,7 @@ +
  • Send Event
  • Configure Notifications
  • Scheduled Outages
  • diff --git a/opennms-webapp/src/main/webapp/admin/postevent.jsp b/opennms-webapp/src/main/webapp/admin/postevent.jsp new file mode 100644 index 0000000..a536152 --- /dev/null +++ b/opennms-webapp/src/main/webapp/admin/postevent.jsp @@ -0,0 +1,154 @@ +<%-- +/******************************************************************************* + * This file is part of OpenNMS(R). + * + * Copyright (C) 2012 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2012 The OpenNMS Group, Inc. + * + * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. + * + * OpenNMS(R) is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published + * by the Free Software Foundation, either version 3 of the License, + * or (at your option) any later version. + * + * OpenNMS(R) 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with OpenNMS(R). If not, see: + * http://www.gnu.org/licenses/ + * + * For more information contact: + * OpenNMS(R) Licensing + * http://www.opennms.org/ + * http://www.opennms.com/ + *******************************************************************************/ + +--%> +<%@page language="java" + contentType="text/html" + session="true" + import=" + java.io.*, + java.util.*, + java.net.InetAddress, + java.net.UnknownHostException, + org.opennms.web.api.Util, + org.opennms.netmgt.EventConstants, + org.opennms.netmgt.xml.event.Event, + org.opennms.netmgt.xml.event.Parm, + org.opennms.netmgt.xml.event.Value, + org.apache.commons.lang.StringUtils + " +%> +<% + HttpSession user = request.getSession(true); + + String uei = StringUtils.trimToEmpty(request.getParameter("uei")); + if (StringUtils.isBlank(uei)) { + response.sendRedirect("setupevent.jsp"); + return; + } + + Event event = new Event(); + event.setSource("Web UI"); + event.setUei(uei); + event.setTime(EventConstants.formatToString(new java.util.Date())); + + String nodeID = StringUtils.trimToEmpty(request.getParameter("nodeid")); + if (StringUtils.isNotBlank(nodeID)) { + try { + long nodeid = Long.parseLong(nodeID); + event.setNodeid(nodeid); + } catch (NumberFormatException e) { + throw new ServletException("Invalid node id value: " + nodeID, e); + } + } + + String host = StringUtils.trimToEmpty(request.getParameter("host")); + if (StringUtils.isNotBlank(host)) { + event.setHost(host); + } + + String intface = StringUtils.trimToEmpty(request.getParameter("interface")); + if (StringUtils.isNotBlank(host)) { + event.setInterface(intface); + } + + String service = StringUtils.trimToEmpty(request.getParameter("service")); + if (StringUtils.isNotBlank(service)) { + event.setService(service); + } + + String severity = StringUtils.trimToEmpty(request.getParameter("severity")); + if (StringUtils.isNotBlank(severity)) { + event.setSeverity(severity); + } + + String description = StringUtils.trimToEmpty(request.getParameter("description")); + if (StringUtils.isNotBlank(description)) { + event.setDescr(description); + } + + String operinstruct = StringUtils.trimToEmpty(request.getParameter("operinstruct")); + if (StringUtils.isNotBlank(operinstruct)) { + event.setOperinstruct(operinstruct); + } + + StringBuffer sb = new StringBuffer(); + + Enumeration pNames = request.getParameterNames(); + for(String pName : Collections.list(pNames)) { + if (pName.matches("^parm(\\d+)\\.name$")) { + String parmName = StringUtils.trimToEmpty(request.getParameter(pName)); + if (StringUtils.isNotBlank(parmName)) { + String vName = pName.replaceAll("\\.name$", ".value"); + String parmValue = StringUtils.trimToEmpty(request.getParameter(vName)); + sb.append(" <parm name=\""+parmName+"\" value=\""+parmValue+"\" />\n"); + + final Value value = new Value(); + value.setContent(parmValue); + + final Parm parm = new Parm(); + parm.setParmName(parmName); + parm.setValue(value); + + event.addParm(parm); + } + } + } + + try { + Util.createEventProxy().send(event); + } catch (Throwable e) { + throw new ServletException("Could not send event " + event.getUei(), e); + } +%> + + + + + + + + +

    Event Sent...

    + +
    +<event>
    +  <uei><%=uei%></uei>
    +  <nodeid><%=nodeID%></nodeid>
    +  <host><%=host%></host>
    +  <interface><%=intface%></interface>
    +  <service><%=service%></service>
    +  <severity><%=severity%></severity>
    +  <descr><%=description%></descr>
    +  <operinstr><%=operinstruct%></operinstr>
    +<%=sb%>
    +</event>
    +
    + + diff --git a/opennms-webapp/src/main/webapp/admin/sendevent.jsp b/opennms-webapp/src/main/webapp/admin/sendevent.jsp new file mode 100644 index 0000000..83c59c7 --- /dev/null +++ b/opennms-webapp/src/main/webapp/admin/sendevent.jsp @@ -0,0 +1,351 @@ +<%-- +/******************************************************************************* + * This file is part of OpenNMS(R). + * + * Copyright (C) 2012 The OpenNMS Group, Inc. + * OpenNMS(R) is Copyright (C) 1999-2012 The OpenNMS Group, Inc. + * + * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. + * + * OpenNMS(R) is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published + * by the Free Software Foundation, either version 3 of the License, + * or (at your option) any later version. + * + * OpenNMS(R) 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with OpenNMS(R). If not, see: + * http://www.gnu.org/licenses/ + * + * For more information contact: + * OpenNMS(R) Licensing + * http://www.opennms.org/ + * http://www.opennms.com/ + *******************************************************************************/ + +--%> +<%@page language="java" + contentType="text/html" + session="true" + import=" + java.io.*, + java.util.*, java.util.Map.Entry, + java.net.InetAddress, java.net.UnknownHostException, + org.opennms.netmgt.config.*, + org.opennms.netmgt.config.notifications.*, + org.opennms.core.utils.BundleLists, + org.opennms.core.utils.ConfigFileConstants, + org.opennms.netmgt.xml.eventconf.Event, + org.springframework.core.io.FileSystemResource + " +%> +<%! + private DefaultEventConfDao m_eventConfDao; + + public void init() throws ServletException { + try { + m_eventConfDao = new DefaultEventConfDao(); + m_eventConfDao.setConfigResource(new FileSystemResource(ConfigFileConstants.getFile(ConfigFileConstants.EVENT_CONF_FILE_NAME))); + m_eventConfDao.afterPropertiesSet(); + } catch (Throwable e) { + throw new ServletException("Cannot load configuration file", e); + } + } +%> +<% + HttpSession user = request.getSession(true); + + String hostName = "localhost"; + try { + java.net.InetAddress localMachine = java.net.InetAddress.getLocalHost(); + hostName = localMachine.getHostName(); + } catch(java.net.UnknownHostException uhe) { + //handle exception + } +%> + + + + + + + + + + + + + + + + + + +

    Send Event to OpenNMS

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    Events

    + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    + +
    +
    + Add additional parameter +
    +

    Description

    + +
    +

    Severity:

    + +
    +

    Operator Instructions

    + +
    + +
    + Send Event ››› +
    +
    + + + +<%! + public String buildEventSelect() + throws IOException, FileNotFoundException + { + List events = m_eventConfDao.getEventsByLabel(); + StringBuffer buffer = new StringBuffer(); + + List excludeList = getExcludeList(); + TreeMap sortedMap = new TreeMap(); + + Iterator i = events.iterator(); + + while(i.hasNext()) { + org.opennms.netmgt.xml.eventconf.Event e = (org.opennms.netmgt.xml.eventconf.Event)i.next(); + + String uei = e.getUei(); + //System.out.println(uei); + + String label = e.getEventLabel(); + //System.out.println(label); + + String trimmedUei = stripUei(uei); + //System.out.println(trimmedUei); + + if (!excludeList.contains(trimmedUei)) { + sortedMap.put(label,uei); + System.out.println("sortedMap.put('"+label+"', '"+uei+"')"); + } + } + for(Map.Entry me : sortedMap.entrySet()) { + buffer.append(""); + } + + return buffer.toString(); + } + + public String stripUei(String uei) + { + String leftover = uei; + + for (int i = 0; i < 3; i++) + { + leftover = leftover.substring(leftover.indexOf('/')+1); + } + + return leftover; + } + + public List getExcludeList() + throws IOException, FileNotFoundException + { + List excludes = new ArrayList(); + + Properties excludeProperties = new Properties(); + excludeProperties.load( new FileInputStream( ConfigFileConstants.getFile(ConfigFileConstants.EXCLUDE_UEI_FILE_NAME ))); + String[] ueis = BundleLists.parseBundleList( excludeProperties.getProperty( "excludes" )); + + for (int i = 0; i < ueis.length; i++) + { + excludes.add(ueis[i]); + } + + return excludes; + } +%> -- 1.7.11.4