From 2f7ee3947a80de32871fcb176d11ca40d61631b5 Mon Sep 17 00:00:00 2001 From: Ed Warnicke Date: Sun, 31 May 2015 09:38:47 -0700 Subject: [PATCH] Bug 3341: Partial fix, wires topology-manager This patch is a partial fix to Bug 3341. It wires topology-manager with the config subsystem, and makes it require-capabilities the models it depends on. Change-Id: I26baef419534f7d05d56350847d2248844f91a1d Signed-off-by: Ed Warnicke --- applications/topology-manager/pom.xml | 37 +++++++++---------- .../src/main/config/default-config.xml | 34 +++++++++++++++++ .../manager/FlowCapableTopologyProvider.java | 20 ++-------- .../TopologyLldpDiscoveryImplModule.java | 26 +++++++++++++ ...opologyLldpDiscoveryImplModuleFactory.java | 13 +++++++ .../src/main/yang/topology-manager-impl.yang | 35 ++++++++++++++++++ features/src/main/resources/features.xml | 1 + 7 files changed, 129 insertions(+), 37 deletions(-) create mode 100644 applications/topology-manager/src/main/config/default-config.xml create mode 100644 applications/topology-manager/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/topology/manager/impl/rev150530/TopologyLldpDiscoveryImplModule.java create mode 100644 applications/topology-manager/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/topology/manager/impl/rev150530/TopologyLldpDiscoveryImplModuleFactory.java create mode 100644 applications/topology-manager/src/main/yang/topology-manager-impl.yang diff --git a/applications/topology-manager/pom.xml b/applications/topology-manager/pom.xml index 5a89417dad..b0076b7b12 100644 --- a/applications/topology-manager/pom.xml +++ b/applications/topology-manager/pom.xml @@ -2,14 +2,28 @@ 4.0.0 - org.opendaylight.openflowplugin - applications - 0.1.0-SNAPSHOT + org.opendaylight.controller + config-parent + 0.3.0-SNAPSHOT + org.opendaylight.openflowplugin.applications topology-manager + 0.1.0-SNAPSHOT bundle + + + + org.opendaylight.openflowplugin + openflowplugin-artifacts + ${project.version} + pom + import + + + + com.google.guava @@ -55,23 +69,6 @@ test - - - - - org.apache.felix - maven-bundle-plugin - - - org.opendaylight.openflowplugin.applications.topology.manager.FlowCapableTopologyProvider - org.opendaylight.openflowplugin.applications.topology.manager - - - - - - - scm:git:ssh://git.opendaylight.org:29418/openflowplugin.git scm:git:ssh://git.opendaylight.org:29418/openflowplugin.git diff --git a/applications/topology-manager/src/main/config/default-config.xml b/applications/topology-manager/src/main/config/default-config.xml new file mode 100644 index 0000000000..4c21c68308 --- /dev/null +++ b/applications/topology-manager/src/main/config/default-config.xml @@ -0,0 +1,34 @@ + + + + + + + urn:opendaylight:inventory?module=opendaylight-inventory&revision=2013-08-19 + urn:opendaylight:flow:inventory?module=flow-node-inventory&revision=2013-08-19 + urn:opendaylight:flow:types?module=opendaylight-flow-types&revision=2013-10-26 + urn:TBD:params:xml:ns:yang:network-topology?module=network-topology&revision=2013-10-21 + urn:opendaylight:flow:topology:discovery?module=flow-topology-discovery&revision=2013-08-19 + + + + + + + prefix:topology-manager-impl + topology-manager-default + + binding:binding-broker-osgi-registry + binding-osgi-broker + + + + + + diff --git a/applications/topology-manager/src/main/java/org/opendaylight/openflowplugin/applications/topology/manager/FlowCapableTopologyProvider.java b/applications/topology-manager/src/main/java/org/opendaylight/openflowplugin/applications/topology/manager/FlowCapableTopologyProvider.java index 5a00b50f9f..0f62513555 100644 --- a/applications/topology-manager/src/main/java/org/opendaylight/openflowplugin/applications/topology/manager/FlowCapableTopologyProvider.java +++ b/applications/topology-manager/src/main/java/org/opendaylight/openflowplugin/applications/topology/manager/FlowCapableTopologyProvider.java @@ -8,11 +8,12 @@ package org.opendaylight.openflowplugin.applications.topology.manager; import java.util.concurrent.ExecutionException; + import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.sal.binding.api.AbstractBindingAwareProvider; 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.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TopologyId; @@ -26,7 +27,7 @@ import org.osgi.framework.BundleContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class FlowCapableTopologyProvider extends AbstractBindingAwareProvider implements AutoCloseable { +public class FlowCapableTopologyProvider implements BindingAwareProvider, AutoCloseable { private static final Logger LOG = LoggerFactory.getLogger(FlowCapableTopologyProvider.class); private ListenerRegistration listenerRegistration; private Thread thread; @@ -100,19 +101,4 @@ public class FlowCapableTopologyProvider extends AbstractBindingAwareProvider im } } } - - /** - * Gets called during stop bundle - * - * @param context The execution context of the bundle being stopped. - */ - @Override - public void stopImpl(final BundleContext context) { - try { - this.close(); - } catch (InterruptedException e) { - LOG.warn("Failed to stop provider: {}", e.getMessage()); - LOG.debug("Failed to stop provider.. ", e); - } - } } diff --git a/applications/topology-manager/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/topology/manager/impl/rev150530/TopologyLldpDiscoveryImplModule.java b/applications/topology-manager/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/topology/manager/impl/rev150530/TopologyLldpDiscoveryImplModule.java new file mode 100644 index 0000000000..fb0c504c66 --- /dev/null +++ b/applications/topology-manager/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/topology/manager/impl/rev150530/TopologyLldpDiscoveryImplModule.java @@ -0,0 +1,26 @@ +package org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.manager.impl.rev150530; + +import org.opendaylight.openflowplugin.applications.topology.manager.FlowCapableTopologyProvider; + +public class TopologyLldpDiscoveryImplModule extends org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.manager.impl.rev150530.AbstractTopologyLldpDiscoveryImplModule { + public TopologyLldpDiscoveryImplModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) { + super(identifier, dependencyResolver); + } + + public TopologyLldpDiscoveryImplModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.manager.impl.rev150530.TopologyLldpDiscoveryImplModule oldModule, java.lang.AutoCloseable oldInstance) { + super(identifier, dependencyResolver, oldModule, oldInstance); + } + + @Override + public void customValidation() { + // add custom validation form module attributes here. + } + + @Override + public java.lang.AutoCloseable createInstance() { + FlowCapableTopologyProvider provider = new FlowCapableTopologyProvider(); + getBrokerDependency().registerProvider(provider); + return provider; + } + +} diff --git a/applications/topology-manager/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/topology/manager/impl/rev150530/TopologyLldpDiscoveryImplModuleFactory.java b/applications/topology-manager/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/topology/manager/impl/rev150530/TopologyLldpDiscoveryImplModuleFactory.java new file mode 100644 index 0000000000..a98e3802f5 --- /dev/null +++ b/applications/topology-manager/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/topology/manager/impl/rev150530/TopologyLldpDiscoveryImplModuleFactory.java @@ -0,0 +1,13 @@ +/* +* Generated file +* +* Generated from: yang module name: topology-manager-impl yang module local name: topology-manager-impl +* Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator +* Generated at: Sat May 30 21:28:43 PDT 2015 +* +* 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.manager.impl.rev150530; +public class TopologyLldpDiscoveryImplModuleFactory extends org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.manager.impl.rev150530.AbstractTopologyLldpDiscoveryImplModuleFactory { + +} diff --git a/applications/topology-manager/src/main/yang/topology-manager-impl.yang b/applications/topology-manager/src/main/yang/topology-manager-impl.yang new file mode 100644 index 0000000000..e6fe667f35 --- /dev/null +++ b/applications/topology-manager/src/main/yang/topology-manager-impl.yang @@ -0,0 +1,35 @@ +module topology-manager-impl { + yang-version 1; + namespace "urn:opendaylight:params:xml:ns:yang:topology-manager:impl"; + prefix "topology-manager-impl"; + + import config { prefix config; revision-date 2013-04-05; } + import opendaylight-md-sal-binding { prefix md-sal-binding; revision-date 2013-10-28;} + + description + "Service definition for topology-manager"; + + revision "2015-05-30" { + description + "Initial revision"; + } + + identity topology-manager-impl { + base config:module-type; + config:java-name-prefix TopologyLldpDiscoveryImpl; + } + + augment "/config:modules/config:module/config:configuration" { + case topology-manager-impl { + when "/config:modules/config:module/config:type = 'topology-manager-impl'"; + container broker { + uses config:service-ref { + refine type { + mandatory true; + config:required-identity md-sal-binding:binding-broker-osgi-registry; + } + } + } + } + } +} diff --git a/features/src/main/resources/features.xml b/features/src/main/resources/features.xml index 419b9480bc..c6b646ba72 100644 --- a/features/src/main/resources/features.xml +++ b/features/src/main/resources/features.xml @@ -60,6 +60,7 @@ mvn:org.opendaylight.controller/liblldp/${sal.api.version} mvn:org.opendaylight.openflowplugin.applications/forwardingrules-manager-config/${project.version}/xml/config mvn:org.opendaylight.openflowplugin.applications/topology-lldp-discovery/${project.version}/xml/config + mvn:org.opendaylight.openflowplugin.applications/topology-manager/${project.version}/xml/config