Bug 3341: Partial fix, wires topology-lldp-discovery 98/21698/2
authorEd Warnicke <hagbard@gmail.com>
Sun, 31 May 2015 04:19:34 +0000 (21:19 -0700)
committerEd Warnicke <hagbard@gmail.com>
Tue, 2 Jun 2015 20:15:27 +0000 (13:15 -0700)
This patch is a partial fix to Bug 3341.
It wires topology-lldp-discovery with the config subsystem,
and makes it require-capabilities the models it depends on.

Change-Id: I9a70ea5bda5b5720e86d4591f29737eaa4d7ea7a
Signed-off-by: Ed Warnicke <hagbard@gmail.com>
applications/topology-lldp-discovery/pom.xml
applications/topology-lldp-discovery/src/main/config/default-config.xml [new file with mode: 0644]
applications/topology-lldp-discovery/src/main/java/org/opendaylight/openflowplugin/applications/topology/lldp/LLDPActivator.java
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 [new file with mode: 0644]
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 [new file with mode: 0644]
applications/topology-lldp-discovery/src/main/yang/topology-lldp-discovery-impl.yang [new file with mode: 0644]
features/src/main/resources/features.xml
openflowplugin-it/src/test/resources/controller.xml

index 3d85e279ce5471d8dd63ad68aa7a3b3fff35b537..a836d1bf8e2d63a6d24fd7af50c2ef8caaf7fc1a 100644 (file)
@@ -2,14 +2,28 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <groupId>org.opendaylight.openflowplugin</groupId>
-    <artifactId>applications</artifactId>
-    <version>0.2.0-SNAPSHOT</version>
+    <groupId>org.opendaylight.controller</groupId>
+    <artifactId>config-parent</artifactId>
+    <version>0.4.0-SNAPSHOT</version>
+    <relativePath/>
   </parent>
   <groupId>org.opendaylight.openflowplugin.applications</groupId>
   <artifactId>topology-lldp-discovery</artifactId>
+  <version>0.2.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
 
+  <dependencyManagement>
+    <dependencies>
+      <dependency>
+        <groupId>org.opendaylight.openflowplugin</groupId>
+        <artifactId>openflowplugin-artifacts</artifactId>
+        <version>${project.version}</version>
+        <type>pom</type>
+        <scope>import</scope>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
+
   <dependencies>
     <dependency>
       <groupId>com.google.guava</groupId>
@@ -34,6 +48,7 @@
     <dependency>
       <groupId>org.opendaylight.controller</groupId>
       <artifactId>liblldp</artifactId>
+      <version>0.9.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.opendaylight.openflowplugin.model</groupId>
 
   </dependencies>
 
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.felix</groupId>
-        <artifactId>maven-bundle-plugin</artifactId>
-        <extensions>true</extensions>
-        <configuration>
-          <instructions>
-            <Bundle-Activator>org.opendaylight.openflowplugin.applications.topology.lldp.LLDPActivator</Bundle-Activator>
-            <Export-Package>org.opendaylight.openflowplugin.applications.topology.lldp.utils</Export-Package>
-            <Embed-Dependency>commons-lang</Embed-Dependency>
-            <Bundle-Name>${project.groupId}.${project.artifactId}</Bundle-Name>
-          </instructions>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
-
-
   <scm>
     <connection>scm:git:ssh://git.opendaylight.org:29418/openflowplugin.git</connection>
     <developerConnection>scm:git:ssh://git.opendaylight.org:29418/openflowplugin.git</developerConnection>
diff --git a/applications/topology-lldp-discovery/src/main/config/default-config.xml b/applications/topology-lldp-discovery/src/main/config/default-config.xml
new file mode 100644 (file)
index 0000000..f91c773
--- /dev/null
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- vi: set et smarttab sw=4 tabstop=4: -->
+<!--
+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
+-->
+<snapshot>
+  <required-capabilities>
+    <!--<capability>urn:opendaylight:params:xml:ns:yang:southbound:impl?module=southbound-impl&amp;revision=2015-01-05</capability>-->
+    <capability>urn:opendaylight:inventory?module=opendaylight-inventory&amp;revision=2013-08-19</capability>
+    <capability>urn:opendaylight:flow:inventory?module=flow-node-inventory&amp;revision=2013-08-19</capability>
+    <capability>urn:opendaylight:flow:types?module=opendaylight-flow-types&amp;revision=2013-10-26</capability>
+    <capability>urn:opendaylight:packet:service?module=packet-processing&amp;revision=2013-07-09</capability>
+  </required-capabilities>
+  <configuration>
+
+    <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
+      <modules xmlns="urn:opendaylight:params:xml:ns:yang:controller:config">
+        <module>
+          <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:impl">prefix:topology-lldp-discovery-impl</type>
+          <name>topology-lldp-discovery-default</name>
+          <broker>
+            <type xmlns:binding="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">binding:binding-broker-osgi-registry</type>
+            <name>binding-osgi-broker</name>
+          </broker>
+        </module>
+      </modules>
+    </data>
+  </configuration>
+</snapshot>
index c6f8eb3f56f17552bbbe3b9fd4092842441318e0..f73eb0b35be74adf11ee4d0ef99fabc05797c32f 100644 (file)
@@ -7,13 +7,15 @@
  */
 package org.opendaylight.openflowplugin.applications.topology.lldp;
 
-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.controller.sal.binding.api.data.DataProviderService;
-import org.osgi.framework.BundleContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
-public class LLDPActivator extends AbstractBindingAwareProvider {
+public class LLDPActivator implements BindingAwareProvider, AutoCloseable {
+    private static final Logger LOG = LoggerFactory.getLogger(LLDPActivator.class);
     private static LLDPDiscoveryProvider provider = new LLDPDiscoveryProvider();
 
     public void onSessionInitiated(final ProviderContext session) {
@@ -24,7 +26,14 @@ public class LLDPActivator extends AbstractBindingAwareProvider {
         provider.start();
     }
 
-    protected void stopImpl(final BundleContext context) {
-        provider.close();
+    @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);
+            }
+        }
     }
 }
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
new file mode 100644 (file)
index 0000000..0db029e
--- /dev/null
@@ -0,0 +1,26 @@
+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;
+
+public class TopologyLldpDiscoveryImplModule extends org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.lldp.discovery.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.lldp.discovery.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() {
+        LLDPActivator provider = new LLDPActivator();
+        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
new file mode 100644 (file)
index 0000000..e9670e2
--- /dev/null
@@ -0,0 +1,13 @@
+/*
+* Generated file
+*
+* Generated from: yang module name: topology-lldp-discovery-impl yang module local name: topology-lldp-discovery-impl
+* Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator
+* Generated at: Sat May 30 20:35:29 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.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 {
+
+}
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
new file mode 100644 (file)
index 0000000..547392b
--- /dev/null
@@ -0,0 +1,35 @@
+module topology-lldp-discovery-impl {
+    yang-version 1;
+    namespace "urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:impl";
+    prefix "topology-lldp-discovery-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-lldp-discovery";
+
+    revision "2015-05-30" {
+        description
+            "Initial revision";
+    }
+
+    identity topology-lldp-discovery-impl {
+        base config:module-type;
+        config:java-name-prefix TopologyLldpDiscoveryImpl;
+    }
+
+    augment "/config:modules/config:module/config:configuration" {
+        case topology-lldp-discovery-impl {
+            when "/config:modules/config:module/config:type = 'topology-lldp-discovery-impl'";
+            container broker {
+                uses config:service-ref {
+                    refine type {
+                        mandatory true;
+                        config:required-identity md-sal-binding:binding-broker-osgi-registry;
+                    }
+                }
+            }
+        }
+    }
+}
index 3a1bd9baab633c0ff86b6e2a1183cfc684d8ee6b..419b9480bc1016e71ea5ad695391e57db39da0f1 100644 (file)
@@ -59,6 +59,7 @@
         <bundle>mvn:org.opendaylight.openflowplugin.applications/forwardingrules-manager/${project.version}</bundle>
         <bundle>mvn:org.opendaylight.controller/liblldp/${sal.api.version}</bundle>
         <configfile finalname="etc/opendaylight/karaf/30-forwardingrules-manager.xml">mvn:org.opendaylight.openflowplugin.applications/forwardingrules-manager-config/${project.version}/xml/config</configfile>
+        <configfile finalname="etc/opendaylight/karaf/72-topology-lldp-discovery.xml">mvn:org.opendaylight.openflowplugin.applications/topology-lldp-discovery/${project.version}/xml/config</configfile>
     </feature>
 
     <feature name='odl-openflowplugin-nsf-model' version='${project.version}'
         <bundle>mvn:org.opendaylight.openflowplugin.applications/topology-lldp-discovery/${project.version}</bundle>
         <bundle>mvn:org.opendaylight.openflowplugin.applications/lldp-speaker/${project.version}</bundle>
         <configfile finalname="etc/opendaylight/karaf/71-lldp-speaker.xml">mvn:org.opendaylight.openflowplugin.applications/lldp-speaker/${project.version}/xml/config</configfile>
+        <configfile finalname="etc/opendaylight/karaf/72-topology-lldp-discovery.xml">mvn:org.opendaylight.openflowplugin.applications/topology-lldp-discovery/${project.version}/xml/config</configfile>
     </feature>
 
 </features>
index e41f125cf41cc14d4f82ba5afe2c7a06de8c5dad..7ea725a64b949792bac3c2baf8448c9a490c2f48 100644 (file)
                             <name>binding-osgi-broker</name>
                           </broker>
                         </module>
+                        <module>
+                          <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:impl">prefix:topology-lldp-discovery-impl</type>
+                          <name>topology-lldp-discovery-default</name>
+                          <broker>
+                            <type xmlns:binding="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">binding:binding-broker-osgi-registry</type>
+                            <name>binding-osgi-broker</name>
+                          </broker>
+                        </module>
                     </modules>
 
                     <services xmlns="urn:opendaylight:params:xml:ns:yang:controller:config">