Skip to content

Commit

Permalink
Updating features.xml & pom.xml files for trapd kafka blueprints.
Browse files Browse the repository at this point in the history
  • Loading branch information
DP044946 authored and soleger committed Jul 16, 2016
1 parent b223221 commit 52d7b53
Show file tree
Hide file tree
Showing 7 changed files with 307 additions and 5 deletions.
6 changes: 6 additions & 0 deletions container/features/src/main/resources/features-minion.xml
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,12 @@
<bundle>blueprint:mvn:org.opennms.features.events/org.opennms.features.events.traps/${project.version}/xml/blueprint-trapd-handler-minion</bundle>
</feature>

<feature name="opennms-trapd-handler-kafka" description="OpenNMS :: Trapd :: Handler :: Kafka" version="${project.version}">
<feature>camel-blueprint</feature>
<feature>opennms-trapd</feature>
<bundle>blueprint:mvn:org.opennms.features.events/org.opennms.features.events.traps/${project.version}/xml/blueprint-trapd-handler-kafka</bundle>
</feature>

<feature name="minion-heartbeat" description="OpenNMS :: Minion :: HeartBeat" version="${project.version}">
<feature>camel-blueprint</feature>
<feature>minion-core-api</feature>
Expand Down
8 changes: 7 additions & 1 deletion container/features/src/main/resources/features.xml
Original file line number Diff line number Diff line change
Expand Up @@ -797,6 +797,7 @@
<feature>camel-blueprint</feature>
<feature>camel-http</feature>
<feature>opennms-activemq-component</feature>

<!--
These classes are in the system classpath inside OpenNMS
<feature>opennms-trapd</feature>
Expand All @@ -808,10 +809,15 @@
<feature name="opennms-trapd-handler-kafka" description="OpenNMS :: Trapd :: Handler :: Kafka" version="${project.version}">
<feature>camel-blueprint</feature>
<feature>opennms-trapd</feature>

<bundle>blueprint:mvn:org.opennms.features.events/org.opennms.features.events.traps/${project.version}/xml/blueprint-trapd-handler-kafka</bundle>
</feature>

<feature name="opennms-trapd-handler-kafka-default" description="OpenNMS :: Trapd :: Handler :: Kafka :: default" version="${project.version}">
<feature>camel-blueprint</feature>
<feature>opennms-trapd</feature>
<bundle>blueprint:mvn:org.opennms.features.events/org.opennms.features.events.traps/${project.version}/xml/blueprint-trapd-handler-kafka-default</bundle>
</feature>

<feature name="opennms-trapd-listener" description="OpenNMS :: Trapd :: Listener" version="${project.version}">
<feature>camel-blueprint</feature>
<feature>opennms-trapd</feature>
Expand Down
64 changes: 64 additions & 0 deletions features/events/traps/blueprint-trapd-handler-kafka-default.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0"
xmlns:ext="http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.1.0"
xsi:schemaLocation="
http://www.osgi.org/xmlns/blueprint/v1.0.0
http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0
http://aries.apache.org/schemas/blueprint-cm/blueprint-cm-1.1.0.xsd
http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.1.0
http://aries.apache.org/schemas/blueprint-ext/blueprint-ext-1.1.xsd
">

<cm:property-placeholder id="trapHandlerDefaultProperties" persistent-id="org.opennms.netmgt.trapd.handler.kafka" update-strategy="reload">
<cm:default-properties>
<cm:property name="kafkahost" value="127.0.0.1" />
<cm:property name="kafkaport" value="9092" />
<cm:property name="kafkatopic" value="trapd" />
<cm:property name="zookeeperhost" value="127.0.0.1"/>
<cm:property name="zookeeperport" value="2181"/>
<cm:property name="groupId" value="trapdconsumer"/>
</cm:default-properties>
</cm:property-placeholder>

<bean id="trapdIpMgr" class="org.opennms.netmgt.trapd.TrapdIpManagerDaoImpl"/>

<bean id="eventCreator" class="org.opennms.netmgt.trapd.EventCreator">
<argument ref="trapdIpMgr"/>
</bean>

<!-- Get a reference to the org.opennms.netmgt.events.api.EventForwarder -->
<reference id="eventForwarder" interface="org.opennms.netmgt.events.api.EventForwarder" availability="mandatory"/>

<!-- Get a reference to the org.opennms.netmgt.config.api.EventConfDao -->
<reference id="eventConfDao" interface="org.opennms.netmgt.config.api.EventConfDao" availability="mandatory"/>

<!-- Get a reference to the org.opennms.netmgt.config.TrapdConfig -->
<reference id="trapdConfig" interface="org.opennms.netmgt.config.TrapdConfig" availability="mandatory"/>

<bean id="newSuspectOnTrap" factory-ref="trapdConfig" factory-method="getNewSuspectOnTrap"/>

<bean id="processorFactory" class="org.opennms.netmgt.trapd.TrapQueueProcessorFactory">
<property name="eventConfDao" ref="eventConfDao"/>
<property name="eventForwarder" ref="eventForwarder"/>
<property name="newSuspect" ref="newSuspectOnTrap"/>
</bean>

<bean id="trapNotificationHandlerDefault" class="org.opennms.netmgt.trapd.TrapNotificationHandlerDefaultImpl">
<property name="eventCreator" ref="eventCreator"/>
<property name="processorFactory" ref="processorFactory"/>
</bean>

<camelContext id="trapNotificationHandlerDefaultContext" xmlns="http://camel.apache.org/schema/blueprint">
<propertyPlaceholder id="properties" location="blueprint:trapHandlerDefaultProperties" />

<route id="receiveTrapConnection">
<from uri="kafka:{{kafkahost}}:{{kafkaport}}?topic={{kafkatopic}}&amp;zookeeperHost={{zookeeperhost}}&amp;zookeeperPort={{zookeeperport}}&amp;groupId={{groupId}}"/>
<convertBodyTo type="org.opennms.netmgt.snmp.TrapNotification"/>
<bean ref="trapNotificationHandlerDefault"/>
</route>
</camelContext>

</blueprint>
2 changes: 1 addition & 1 deletion features/events/traps/blueprint-trapd-handler-kafka.xml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
<setHeader headerName="kafka.PARTITION_KEY">
<!-- TODO: Partition by remote address -->
<!-- <simple>${body.remoteAddress}</simple> -->
<simple>${body.hostname}</simple>
<simple>${body.sourceAddress}</simple>
</setHeader>
<log message="address: ${body.sourceAddress}"/>
<log message="port: ${body.port}"/>
Expand Down
13 changes: 10 additions & 3 deletions features/events/traps/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@
<Bundle-RequiredExecutionEnvironment>JavaSE-1.8</Bundle-RequiredExecutionEnvironment>
<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
<Bundle-Version>${project.version}</Bundle-Version>
<!-- <Export-Package>org.opennms.netmgt.config.api.EventConfDao,org.opennms.netmgt.config.TrapdConfig,org.opennms.netmgt.events.api.EventForwarder,org.opennms.netmgt.trapd.*</Export-Package> -->
<Export-Package>org.opennms.netmgt.config.api.*,org.opennms.netmgt.config.*,org.opennms.netmgt.events.api.EventForwarder,org.opennms.netmgt.trapd.*</Export-Package>

</instructions>
</configuration>
</plugin>
Expand Down Expand Up @@ -79,19 +82,23 @@
<type>xml</type>
<classifier>blueprint-trapd-handler-kafka</classifier>
</artifact>
<artifact>
<file>blueprint-trapd-handler-kafka-default.xml</file>
<type>xml</type>
<classifier>blueprint-trapd-handler-kafka-default</classifier>
</artifact>
</artifacts>
</configuration>
</execution>
</executions>
</plugin>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-kafka</artifactId>
<version>${camelVersion}</version>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>javax.xml.bind</groupId>
Expand Down Expand Up @@ -247,7 +254,7 @@
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-test</artifactId>
<version>2.0.0-incubating</version>
<version>${curatorVersion}</version>
<scope>test</scope>
<exclusions>
<exclusion>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,218 @@
///*******************************************************************************
// * This file is part of OpenNMS(R).
// *
// * Copyright (C) 2016-2016 The OpenNMS Group, Inc.
// * OpenNMS(R) is Copyright (C) 1999-2016 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 Affero 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 Affero General Public License for more details.
// *
// * You should have received a copy of the GNU Affero General Public License
// * along with OpenNMS(R). If not, see:
// * http://www.gnu.org/licenses/
// *
// * For more information contact:
// * OpenNMS(R) Licensing <license@opennms.org>
// * http://www.opennms.org/
// * http://www.opennms.com/
// *******************************************************************************/
//
//package org.opennms.netmgt.trapd;
//
//import java.util.Dictionary;
//import java.util.Map;
//import java.util.Properties;
//
//import org.apache.activemq.broker.BrokerService;
//import org.apache.camel.component.mock.MockEndpoint;
//import org.apache.camel.test.blueprint.CamelBlueprintTestSupport;
//import org.apache.camel.util.KeyValueHolder;
//import org.junit.AfterClass;
//import org.junit.BeforeClass;
//import org.junit.Test;
//import org.junit.runner.RunWith;
//import org.mockito.MockitoAnnotations;
//import org.opennms.core.test.OpenNMSJUnit4ClassRunner;
//import org.opennms.core.utils.InetAddressUtils;
//import org.opennms.netmgt.config.TrapdConfig;
//import org.opennms.netmgt.config.api.EventConfDao;
//import org.opennms.netmgt.dao.mock.MockEventIpcManager;
//import org.opennms.netmgt.dao.mock.MockEventIpcManager.EmptyEventConfDao;
//import org.opennms.netmgt.events.api.EventForwarder;
//import org.opennms.netmgt.events.api.EventIpcManager;
//import org.opennms.netmgt.snmp.BasicTrapProcessor;
//import org.opennms.netmgt.snmp.TrapNotification;
//import org.opennms.netmgt.snmp.snmp4j.Snmp4JTrapNotifier;
//import org.opennms.netmgt.xml.event.Event;
//import org.opennms.netmgt.xml.event.Log;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.snmp4j.PDU;
//import org.snmp4j.mp.SnmpConstants;
//import org.snmp4j.smi.IpAddress;
//import org.snmp4j.smi.OID;
//import org.snmp4j.smi.OctetString;
//import org.snmp4j.smi.TimeTicks;
//import org.snmp4j.smi.VariableBinding;
//import org.springframework.test.context.ContextConfiguration;
//
//@RunWith(OpenNMSJUnit4ClassRunner.class)
//@ContextConfiguration(locations = { "classpath:/META-INF/opennms/emptyContext.xml" })
//public class TrapdHandlerKafkaDefaultIT extends CamelBlueprintTestSupport {
//
// private boolean mockInitialized = false;
//
// private static final Logger LOG = LoggerFactory.getLogger(TrapdHandlerKafkaDefaultIT.class);
//
// private static BrokerService m_broker = null;
//
// private EventIpcManager m_eventIpcManager = new MockEventIpcManager();
//
// /**
// * Use Aries Blueprint synchronous mode to avoid a blueprint deadlock bug.
// *
// * @see https://issues.apache.org/jira/browse/ARIES-1051
// * @see https://access.redhat.com/site/solutions/640943
// */
// @Override
// public void doPreSetup() throws Exception {
// System.setProperty("org.apache.aries.blueprint.synchronous",
// Boolean.TRUE.toString());
// System.setProperty("de.kalpatec.pojosr.framework.events.sync",
// Boolean.TRUE.toString());
//
// if (!mockInitialized) {
// MockitoAnnotations.initMocks(this);
// mockInitialized = true;
// }
// }
//
// @Override
// public boolean isUseAdviceWith() {
// return true;
// }
//
// @Override
// public boolean isUseDebugger() {
// // must enable debugger
// return true;
// }
//
// @Override
// public String isMockEndpoints() {
// return "*";
// }
//
// @SuppressWarnings("rawtypes")
// @Override
// protected void addServicesOnStartup(Map<String, KeyValueHolder<Object, Dictionary>> services) {
//
// // Create a mock TrapdConfigBean
// TrapdConfigBean config = new TrapdConfigBean();
// //config.setSnmpTrapPort(10514);
// //config.setSnmpTrapAddress("127.0.0.1");
// config.setNewSuspectOnTrap(false);
//
// services.put(
// TrapdConfig.class.getName(),
// new KeyValueHolder<Object, Dictionary>(config, new Properties())
// );
//
// services.put(
// EventForwarder.class.getName(),
// new KeyValueHolder<Object, Dictionary>(new EventForwarder() {
// @Override
// public void sendNow(Log eventLog) {
// // Do nothing
// LOG.info("Got an event log: " + eventLog.toString());
// }
//
// @Override
// public void sendNow(Event event) {
// // Do nothing
// LOG.info("Got an event: " + event.toString());
// }
// }, new Properties())
// );
//
// services.put(EventConfDao.class.getName(), new KeyValueHolder<Object, Dictionary>(new EmptyEventConfDao(), new Properties()));
// }
//
// // The location of our Blueprint XML files to be used for testing
// @Override
// protected String getBlueprintDescriptor() {
// return "file:blueprint-trapd-handler-kafka-default.xml,file:src/test/resources/blueprint-empty-camel-context.xml";
// }
//
// @BeforeClass
// public static void startActiveMQ() throws Exception {
// m_broker = new BrokerService();
// m_broker.addConnector("tcp://127.0.0.1:61616");
// m_broker.start();
// }
//
// @AfterClass
// public static void stopActiveMQ() throws Exception {
// if (m_broker != null) {
// m_broker.stop();
// }
// }
//
// @Test
// public void testTrapd() throws Exception {
// // Expect one TrapNotification message to be broadcast on the messaging channel
// MockEndpoint broadcastTrapd = getMockEndpoint("mock:activemq:broadcastTrap", false);
// broadcastTrapd.setExpectedMessageCount(1);
//
// MockEndpoint trapHandler = getMockEndpoint("mock:seda:trapHandler", false);
// trapHandler.setExpectedMessageCount(1);
//
// /*
// MockTrapdIpMgr m_trapdIpMgr=new MockTrapdIpMgr();
//
// m_trapdIpMgr.clearKnownIpsMap();
// m_trapdIpMgr.setNodeId("127.0.0.1", 1);
// */
//
// // create instance of snmp4JV2cTrap
// PDU snmp4JV2cTrapPdu = new PDU();
//
// OID oid = new OID(".1.3.6.1.2.1.1.3.0");
// snmp4JV2cTrapPdu.add(new VariableBinding(SnmpConstants.sysUpTime, new TimeTicks(5000)));
// snmp4JV2cTrapPdu.add(new VariableBinding(SnmpConstants.snmpTrapOID, new OID(oid)));
// snmp4JV2cTrapPdu.add(new VariableBinding(SnmpConstants.snmpTrapAddress,
// new IpAddress("127.0.0.1")));
//
// snmp4JV2cTrapPdu.add(new VariableBinding(new OID(oid), new OctetString("Major")));
// snmp4JV2cTrapPdu.setType(PDU.NOTIFICATION);
//
// TrapNotification snmp4JV2cTrap = new Snmp4JTrapNotifier.Snmp4JV2TrapInformation(
// InetAddressUtils.ONE_TWENTY_SEVEN, new String("public"),
// snmp4JV2cTrapPdu, new BasicTrapProcessor());
//
// // Send the TrapNotification
// template.sendBody("activemq:broadcastTrap?disableReplyTo=true", snmp4JV2cTrap);
//
// assertMockEndpointsSatisfied();
//
// // Check that the input for the seda:trapHandler endpoint matches
// // the TrapQProcessor that we simulated via ActiveMQ
// TrapNotification result = trapHandler.getReceivedExchanges().get(0).getIn().getBody(TrapNotification.class);
// LOG.info("Result: " + result);
//
// // Assert that the trap's content is correct
// BasicTrapProcessor processor = (BasicTrapProcessor)result.getTrapProcessor();
// assertEquals("v2", processor.getVersion());
//
// // TODO: Use an EventAnticipator to assert that a trap event was created
// }
//}
1 change: 1 addition & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1284,6 +1284,7 @@
<commonsLoggingVersion>99.99.99-use-jcl-over-slf4j</commonsLoggingVersion>
<commonsMath3Version>3.5</commonsMath3Version>
<commonsValidatorVersion>1.3.1</commonsValidatorVersion>
<curatorVersion>3.1.0</curatorVersion>
<c3p0Version>0.9.5.2</c3p0Version>
<cxfVersion>3.1.5</cxfVersion>
<dnsjavaVersion>2.1.3</dnsjavaVersion>
Expand Down

0 comments on commit 52d7b53

Please sign in to comment.