From: Tom Pantelis Date: Tue, 10 May 2016 14:23:14 +0000 (-0400) Subject: Add blueprint wiring for the TopologyLldpDiscovery app X-Git-Tag: release/boron~206^2~1 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=b97a2c388d9a027d27d76f1b99e67b405d90cb9d;p=openflowplugin.git Add blueprint wiring for the TopologyLldpDiscovery app Change-Id: Iae04ce7a7dc6b6f2389d4792a8c16de1605c9cdd Signed-off-by: Tom Pantelis --- diff --git a/applications/topology-lldp-discovery/src/main/config/default-config.xml b/applications/topology-lldp-discovery/src/main/config/default-config.xml index cf7005a47b..1fc3a7af5e 100644 --- a/applications/topology-lldp-discovery/src/main/config/default-config.xml +++ b/applications/topology-lldp-discovery/src/main/config/default-config.xml @@ -6,6 +6,9 @@ Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html + +NOTE: This file is deprecated as wiring is now done via blueprint. This file is kept for + backwards compatibility. Runtime modifications are not honored. --> diff --git a/applications/topology-lldp-discovery/src/main/java/org/opendaylight/openflowplugin/applications/topology/lldp/LLDPActivator.java b/applications/topology-lldp-discovery/src/main/java/org/opendaylight/openflowplugin/applications/topology/lldp/LLDPActivator.java index 79f100fa07..3e5fb3bf10 100644 --- a/applications/topology-lldp-discovery/src/main/java/org/opendaylight/openflowplugin/applications/topology/lldp/LLDPActivator.java +++ b/applications/topology-lldp-discovery/src/main/java/org/opendaylight/openflowplugin/applications/topology/lldp/LLDPActivator.java @@ -7,39 +7,35 @@ */ package org.opendaylight.openflowplugin.applications.topology.lldp; -import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext; -import org.opendaylight.controller.sal.binding.api.BindingAwareProvider; import org.opendaylight.controller.sal.binding.api.NotificationProviderService; -import org.opendaylight.controller.sal.binding.api.data.DataProviderService; +import org.opendaylight.yangtools.concepts.ListenerRegistration; +import org.opendaylight.yangtools.yang.binding.NotificationListener; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class LLDPActivator implements BindingAwareProvider, AutoCloseable { +public class LLDPActivator implements AutoCloseable { private static final Logger LOG = LoggerFactory.getLogger(LLDPActivator.class); - private static LLDPDiscoveryProvider provider = new LLDPDiscoveryProvider(); + private static String lldpSecureKey; - public LLDPActivator(String secureKey) { + private final ListenerRegistration lldpNotificationRegistration; + + public LLDPActivator(NotificationProviderService notificationService, LLDPDiscoveryListener lldpDiscoveryListener, + String secureKey) { lldpSecureKey = secureKey; - } - public void onSessionInitiated(final ProviderContext session) { - DataProviderService dataService = session.getSALService(DataProviderService.class); - provider.setDataService(dataService); - NotificationProviderService notificationService = session.getSALService(NotificationProviderService.class); - provider.setNotificationService(notificationService); - provider.start(); + LOG.info("Starting LLDPActivator with lldpSecureKey: {}", lldpSecureKey); + + lldpNotificationRegistration = notificationService.registerNotificationListener(lldpDiscoveryListener); + + LOG.info("LLDPDiscoveryListener started."); } @Override - public void close() throws Exception { - if(provider != null) { - try { - provider.close(); - } catch (Exception e) { - LOG.warn("Exception when closing down topology-lldp-discovery",e); - } - } + public void close() { + lldpNotificationRegistration.close(); + + LOG.info("LLDPDiscoveryListener stopped."); } public static String getLldpSecureKey() { diff --git a/applications/topology-lldp-discovery/src/main/java/org/opendaylight/openflowplugin/applications/topology/lldp/LLDPDiscoveryListener.java b/applications/topology-lldp-discovery/src/main/java/org/opendaylight/openflowplugin/applications/topology/lldp/LLDPDiscoveryListener.java index 08c3c9c4a9..097d0edc4e 100644 --- a/applications/topology-lldp-discovery/src/main/java/org/opendaylight/openflowplugin/applications/topology/lldp/LLDPDiscoveryListener.java +++ b/applications/topology-lldp-discovery/src/main/java/org/opendaylight/openflowplugin/applications/topology/lldp/LLDPDiscoveryListener.java @@ -17,16 +17,18 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.Pa import org.slf4j.Logger; import org.slf4j.LoggerFactory; -class LLDPDiscoveryListener implements PacketProcessingListener { +public class LLDPDiscoveryListener implements PacketProcessingListener { private static final Logger LOG = LoggerFactory.getLogger(LLDPDiscoveryListener.class); - private LLDPLinkAger lldpLinkAger; - private NotificationProviderService notificationService; + private final LLDPLinkAger lldpLinkAger; + private final NotificationProviderService notificationService; - LLDPDiscoveryListener(NotificationProviderService notificationService) { + public LLDPDiscoveryListener(NotificationProviderService notificationService, LLDPLinkAger lldpLinkAger) { this.notificationService = notificationService; + this.lldpLinkAger = lldpLinkAger; } + @Override public void onPacketReceived(PacketReceived lldp) { NodeConnectorRef src = LLDPDiscoveryUtils.lldpToNodeConnectorRef(lldp.getPayload(), true); if(src != null) { @@ -39,8 +41,4 @@ class LLDPDiscoveryListener implements PacketProcessingListener { lldpLinkAger.put(ld); } } - - public void setLldpLinkAger(LLDPLinkAger lldpLinkAger) { - this.lldpLinkAger = lldpLinkAger; - } -} +} \ No newline at end of file diff --git a/applications/topology-lldp-discovery/src/main/java/org/opendaylight/openflowplugin/applications/topology/lldp/LLDPDiscoveryProvider.java b/applications/topology-lldp-discovery/src/main/java/org/opendaylight/openflowplugin/applications/topology/lldp/LLDPDiscoveryProvider.java deleted file mode 100644 index c6203efec0..0000000000 --- a/applications/topology-lldp-discovery/src/main/java/org/opendaylight/openflowplugin/applications/topology/lldp/LLDPDiscoveryProvider.java +++ /dev/null @@ -1,66 +0,0 @@ -/** - * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ -package org.opendaylight.openflowplugin.applications.topology.lldp; - -import org.opendaylight.controller.sal.binding.api.NotificationProviderService; -import org.opendaylight.controller.sal.binding.api.data.DataProviderService; -import org.opendaylight.openflowplugin.applications.topology.lldp.utils.LLDPDiscoveryUtils; -import org.opendaylight.yangtools.concepts.ListenerRegistration; -import org.opendaylight.yangtools.yang.binding.NotificationListener; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class LLDPDiscoveryProvider implements AutoCloseable { - private static final Logger LOG = LoggerFactory.getLogger(LLDPDiscoveryProvider.class); - private DataProviderService dataService; - private NotificationProviderService notificationService; - - private ListenerRegistration listenerRegistration; - private LLDPLinkAger lldpLinkAger; - - public DataProviderService getDataService() { - return this.dataService; - } - - public void setDataService(final DataProviderService dataService) { - this.dataService = dataService; - } - - public NotificationProviderService getNotificationService() { - return this.notificationService; - } - - public void setNotificationService(final NotificationProviderService notificationService) { - this.notificationService = notificationService; - } - - public void start() { - lldpLinkAger = new LLDPLinkAger(LLDPDiscoveryUtils.LLDP_INTERVAL, LLDPDiscoveryUtils.LLDP_EXPIRATION_TIME); - lldpLinkAger.setNotificationService(notificationService); - - LLDPDiscoveryListener committer = new LLDPDiscoveryListener(notificationService); - committer.setLldpLinkAger(lldpLinkAger); - - ListenerRegistration registerNotificationListener = - notificationService.registerNotificationListener(committer); - this.listenerRegistration = registerNotificationListener; - LOG.info("LLDPDiscoveryListener Started."); - } - - public void close() { - try { - LOG.info("LLDPDiscoveryListener stopped."); - if (this.listenerRegistration!=null) { - this.listenerRegistration.close(); - } - lldpLinkAger.close(); - } catch (Exception e) { - throw new Error(e); - } - } -} diff --git a/applications/topology-lldp-discovery/src/main/java/org/opendaylight/openflowplugin/applications/topology/lldp/LLDPLinkAger.java b/applications/topology-lldp-discovery/src/main/java/org/opendaylight/openflowplugin/applications/topology/lldp/LLDPLinkAger.java index 67b74995f7..9acd4b2de3 100644 --- a/applications/topology-lldp-discovery/src/main/java/org/opendaylight/openflowplugin/applications/topology/lldp/LLDPLinkAger.java +++ b/applications/topology-lldp-discovery/src/main/java/org/opendaylight/openflowplugin/applications/topology/lldp/LLDPLinkAger.java @@ -20,15 +20,17 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.topology.discovery.rev public class LLDPLinkAger implements AutoCloseable { private final long linkExpirationTime; - private Map linkToDate; - private Timer timer; - private NotificationProviderService notificationService; + private final Map linkToDate; + private final Timer timer; + private final NotificationProviderService notificationService; /** * default ctor - start timer */ - public LLDPLinkAger(final long lldpInterval, final long linkExpirationTime) { + public LLDPLinkAger(final long lldpInterval, final long linkExpirationTime, + final NotificationProviderService notificationService) { this.linkExpirationTime = linkExpirationTime; + this.notificationService = notificationService; linkToDate = new ConcurrentHashMap<>(); timer = new Timer(); timer.schedule(new LLDPAgingTask(), 0, lldpInterval); @@ -46,10 +48,6 @@ public class LLDPLinkAger implements AutoCloseable { linkToDate.clear(); } - public void setNotificationService(NotificationProviderService notificationService) { - this.notificationService = notificationService; - } - private class LLDPAgingTask extends TimerTask { @Override diff --git a/applications/topology-lldp-discovery/src/main/java/org/opendaylight/openflowplugin/applications/topology/lldp/utils/LLDPDiscoveryUtils.java b/applications/topology-lldp-discovery/src/main/java/org/opendaylight/openflowplugin/applications/topology/lldp/utils/LLDPDiscoveryUtils.java index 8112bcc2df..29c99eca6f 100644 --- a/applications/topology-lldp-discovery/src/main/java/org/opendaylight/openflowplugin/applications/topology/lldp/utils/LLDPDiscoveryUtils.java +++ b/applications/topology-lldp-discovery/src/main/java/org/opendaylight/openflowplugin/applications/topology/lldp/utils/LLDPDiscoveryUtils.java @@ -7,31 +7,31 @@ */ package org.opendaylight.openflowplugin.applications.topology.lldp.utils; -import org.apache.commons.lang3.ArrayUtils; -import java.nio.charset.Charset; import com.google.common.hash.HashCode; +import com.google.common.hash.HashFunction; +import com.google.common.hash.Hasher; +import com.google.common.hash.Hashing; +import java.lang.management.ManagementFactory; +import java.nio.charset.Charset; +import java.security.NoSuchAlgorithmException; +import java.util.Arrays; +import org.apache.commons.lang3.ArrayUtils; +import org.opendaylight.controller.liblldp.BitBufferHelper; +import org.opendaylight.controller.liblldp.CustomTLVKey; import org.opendaylight.controller.liblldp.Ethernet; import org.opendaylight.controller.liblldp.LLDP; -import org.opendaylight.controller.liblldp.BitBufferHelper; import org.opendaylight.controller.liblldp.LLDPTLV; import org.opendaylight.controller.liblldp.NetUtils; -import com.google.common.hash.Hasher; -import com.google.common.hash.Hashing; -import com.google.common.hash.HashFunction; import org.opendaylight.openflowplugin.applications.topology.lldp.LLDPActivator; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorRef; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnector; -import java.util.Arrays; -import java.security.NoSuchAlgorithmException; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnectorKey; -import java.lang.management.ManagementFactory; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; -import org.opendaylight.controller.liblldp.CustomTLVKey; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -39,12 +39,6 @@ import org.slf4j.LoggerFactory; public class LLDPDiscoveryUtils { private static final Logger LOG = LoggerFactory.getLogger(LLDPDiscoveryUtils.class); - // Send LLDP every five seconds - public static final Long LLDP_INTERVAL = (long) (1000*5); - - // Let up to three intervals pass before we decide we are expired. - public static final Long LLDP_EXPIRATION_TIME = LLDP_INTERVAL*3; - public static String macToString(byte[] mac) { StringBuilder b = new StringBuilder(); for (int i = 0; i < mac.length; i++) { diff --git a/applications/topology-lldp-discovery/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/topology/lldp/discovery/impl/rev150530/TopologyLldpDiscoveryImplModule.java b/applications/topology-lldp-discovery/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/topology/lldp/discovery/impl/rev150530/TopologyLldpDiscoveryImplModule.java index eed30f9e41..447dda656c 100644 --- a/applications/topology-lldp-discovery/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/topology/lldp/discovery/impl/rev150530/TopologyLldpDiscoveryImplModule.java +++ b/applications/topology-lldp-discovery/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/topology/lldp/discovery/impl/rev150530/TopologyLldpDiscoveryImplModule.java @@ -1,8 +1,12 @@ package org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.lldp.discovery.impl.rev150530; -import org.opendaylight.openflowplugin.applications.topology.lldp.LLDPActivator; +import org.opendaylight.controller.sal.common.util.NoopAutoCloseable; -public class TopologyLldpDiscoveryImplModule extends org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.lldp.discovery.impl.rev150530.AbstractTopologyLldpDiscoveryImplModule { +/** + * @deprecated Replaced by blueprint wiring + */ +@Deprecated +public class TopologyLldpDiscoveryImplModule extends AbstractTopologyLldpDiscoveryImplModule { public TopologyLldpDiscoveryImplModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) { super(identifier, dependencyResolver); } @@ -12,15 +16,8 @@ public class TopologyLldpDiscoveryImplModule extends org.opendaylight.yang.gen.v } @Override - public void customValidation() { - // add custom validation form module attributes here. + public AutoCloseable createInstance() { + // LLDPActivator instance is created via blueprint so this in a no-op. + return NoopAutoCloseable.INSTANCE; } - - @Override - public java.lang.AutoCloseable createInstance() { - LLDPActivator provider = new LLDPActivator(getLldpSecureKey()); - getBrokerDependency().registerProvider(provider); - return provider; - } - } diff --git a/applications/topology-lldp-discovery/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/topology/lldp/discovery/impl/rev150530/TopologyLldpDiscoveryImplModuleFactory.java b/applications/topology-lldp-discovery/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/topology/lldp/discovery/impl/rev150530/TopologyLldpDiscoveryImplModuleFactory.java index e9670e2f12..d335fc564e 100644 --- a/applications/topology-lldp-discovery/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/topology/lldp/discovery/impl/rev150530/TopologyLldpDiscoveryImplModuleFactory.java +++ b/applications/topology-lldp-discovery/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/topology/lldp/discovery/impl/rev150530/TopologyLldpDiscoveryImplModuleFactory.java @@ -8,6 +8,11 @@ * Do not modify this file unless it is present under src/main directory */ package org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.lldp.discovery.impl.rev150530; -public class TopologyLldpDiscoveryImplModuleFactory extends org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.lldp.discovery.impl.rev150530.AbstractTopologyLldpDiscoveryImplModuleFactory { + +/** + * @deprecated Replaced by blueprint wiring + */ +@Deprecated +public class TopologyLldpDiscoveryImplModuleFactory extends AbstractTopologyLldpDiscoveryImplModuleFactory { } diff --git a/applications/topology-lldp-discovery/src/main/resources/org/opendaylight/blueprint/topology-lldp-discovery.xml b/applications/topology-lldp-discovery/src/main/resources/org/opendaylight/blueprint/topology-lldp-discovery.xml new file mode 100644 index 0000000000..12ac1290ed --- /dev/null +++ b/applications/topology-lldp-discovery/src/main/resources/org/opendaylight/blueprint/topology-lldp-discovery.xml @@ -0,0 +1,39 @@ + + + + + + + + aa9251f8-c7c0-4322-b8d6-c3a84593bda3 + + ]]> + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/applications/topology-lldp-discovery/src/main/yang/topology-lldp-discovery-config.yang b/applications/topology-lldp-discovery/src/main/yang/topology-lldp-discovery-config.yang new file mode 100644 index 0000000000..0e1189e419 --- /dev/null +++ b/applications/topology-lldp-discovery/src/main/yang/topology-lldp-discovery-config.yang @@ -0,0 +1,21 @@ +module topology-lldp-discovery-config { + yang-version 1; + namespace "urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config"; + prefix "topology-lldp-discovery-config"; + + description + "Configuration for Topology LLDP discovery application."; + + revision "2016-05-11" { + description + "Initial revision."; + } + + container topology-lldp-discovery-config { + leaf lldp-secure-key { + description "Provided key will be used to generate LLDP custom security hash"; + type string; + mandatory true; + } + } +} \ No newline at end of file diff --git a/applications/topology-lldp-discovery/src/main/yang/topology-lldp-discovery-impl.yang b/applications/topology-lldp-discovery/src/main/yang/topology-lldp-discovery-impl.yang index 709da19ae0..8daf876115 100644 --- a/applications/topology-lldp-discovery/src/main/yang/topology-lldp-discovery-impl.yang +++ b/applications/topology-lldp-discovery/src/main/yang/topology-lldp-discovery-impl.yang @@ -17,6 +17,7 @@ module topology-lldp-discovery-impl { identity topology-lldp-discovery-impl { base config:module-type; config:java-name-prefix TopologyLldpDiscoveryImpl; + status deprecated; } augment "/config:modules/config:module/config:configuration" {