New features 35/29235/5
authorKeith Burns (alagalah) <alagalah@gmail.com>
Wed, 4 Nov 2015 02:27:28 +0000 (18:27 -0800)
committerKeith Burns (alagalah) <alagalah@gmail.com>
Fri, 6 Nov 2015 18:29:40 +0000 (10:29 -0800)
- IOVisor renderer
- OVSSFC renderer
- Netconf renderer

Change-Id: Ie061a9dd99bd4fa6c1c77399e9616c9f9bb3eff3
Signed-off-by: Keith Burns (alagalah) <alagalah@gmail.com>
25 files changed:
artifacts/pom.xml
features/pom.xml
features/src/main/features/features.xml
renderers/iovisor/pom.xml [new file with mode: 0644]
renderers/iovisor/src/main/config/default-config.xml [new file with mode: 0644]
renderers/iovisor/src/main/java/org/opendaylight/controller/config/yang/config/iovisor_provider/impl/IovisorProviderModule.java [new file with mode: 0644]
renderers/iovisor/src/main/java/org/opendaylight/controller/config/yang/config/iovisor_provider/impl/IovisorProviderModuleFactory.java [new file with mode: 0644]
renderers/iovisor/src/main/java/org/opendaylight/groupbasedpolicy/renderer/iovisor/IovisorRenderer.java [new file with mode: 0644]
renderers/iovisor/src/main/yang/iovisor-provider-impl.yang [new file with mode: 0644]
renderers/iovisor/src/main/yang/iovisor.yang [new file with mode: 0644]
renderers/netconf/pom.xml [new file with mode: 0644]
renderers/netconf/src/main/config/default-config.xml [new file with mode: 0644]
renderers/netconf/src/main/java/org/opendaylight/controller/config/yang/config/netconf_provider/impl/NetconfProviderModule.java [new file with mode: 0644]
renderers/netconf/src/main/java/org/opendaylight/controller/config/yang/config/netconf_provider/impl/NetconfProviderModuleFactory.java [new file with mode: 0644]
renderers/netconf/src/main/java/org/opendaylight/groupbasedpolicy/renderer/netconf/NetconfRenderer.java [new file with mode: 0644]
renderers/netconf/src/main/yang/netconf-provider-impl.yang [new file with mode: 0644]
renderers/netconf/src/main/yang/netconf.yang [new file with mode: 0644]
renderers/ovssfc/pom.xml [new file with mode: 0644]
renderers/ovssfc/src/main/config/default-config.xml [new file with mode: 0644]
renderers/ovssfc/src/main/java/org/opendaylight/controller/config/yang/config/ovssfc_provider/impl/OvssfcProviderModule.java [new file with mode: 0644]
renderers/ovssfc/src/main/java/org/opendaylight/controller/config/yang/config/ovssfc_provider/impl/OvssfcProviderModuleFactory.java [new file with mode: 0644]
renderers/ovssfc/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ovssfc/OvssfcRenderer.java [new file with mode: 0644]
renderers/ovssfc/src/main/yang/ovssfc-provider-impl.yang [new file with mode: 0644]
renderers/ovssfc/src/main/yang/ovssfc.yang [new file with mode: 0644]
renderers/pom.xml

index 91f04572633cae48d57016a7bc7fc6c7be890b92..74e8b85f8a06167476b3ef75d85493e36e8b076f 100644 (file)
         <artifactId>faas-renderer</artifactId>
         <version>${project.version}</version>
       </dependency>
+      <dependency>
+        <groupId>${project.groupId}</groupId>
+        <artifactId>iovisor-renderer</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>${project.groupId}</groupId>
+        <artifactId>netconf-renderer</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>${project.groupId}</groupId>
+        <artifactId>ovssfc-renderer</artifactId>
+        <version>${project.version}</version>
+      </dependency>
       <dependency>
         <groupId>${project.groupId}</groupId>
         <artifactId>neutron-mapper</artifactId>
         <type>xml</type>
         <classifier>config</classifier>
       </dependency>
+      <dependency>
+        <groupId>${project.groupId}</groupId>
+        <artifactId>ovssfc-renderer</artifactId>
+        <version>${project.version}</version>
+        <type>xml</type>
+        <classifier>config</classifier>
+      </dependency>      
+      <dependency>
+        <groupId>${project.groupId}</groupId>
+        <artifactId>iovisor-renderer</artifactId>
+        <version>${project.version}</version>
+        <type>xml</type>
+        <classifier>config</classifier>
+      </dependency>      
+      <dependency>
+        <groupId>${project.groupId}</groupId>
+        <artifactId>netconf-renderer</artifactId>
+        <version>${project.version}</version>
+        <type>xml</type>
+        <classifier>config</classifier>
+      </dependency>
       <dependency>
         <groupId>${project.groupId}</groupId>
         <artifactId>neutron-mapper</artifactId>
index 1de575c1c7e801136bf75de7847c1eec67eda666..7d0d5b93208b8756fb15b04a75b1214bd1099748 100644 (file)
       <groupId>org.opendaylight.groupbasedpolicy</groupId>
       <artifactId>ofoverlay-renderer</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.opendaylight.groupbasedpolicy</groupId>
+      <artifactId>ovssfc-renderer</artifactId>
+    </dependency>
     <dependency>
       <groupId>org.opendaylight.groupbasedpolicy</groupId>
       <artifactId>faas-renderer</artifactId>
+    </dependency>
+     <dependency>
+      <groupId>org.opendaylight.groupbasedpolicy</groupId>
+      <artifactId>netconf-renderer</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.opendaylight.groupbasedpolicy</groupId>
+      <artifactId>iovisor-renderer</artifactId>
     </dependency>
     <dependency>
       <groupId>org.opendaylight.groupbasedpolicy</groupId>
       <type>xml</type>
       <classifier>config</classifier>
     </dependency>
+    <dependency>
+      <groupId>org.opendaylight.groupbasedpolicy</groupId>
+      <artifactId>ovssfc-renderer</artifactId>
+      <type>xml</type>
+      <classifier>config</classifier>
+    </dependency>
     <dependency>
       <groupId>org.opendaylight.groupbasedpolicy</groupId>
       <artifactId>faas-renderer</artifactId>
       <type>xml</type>
       <classifier>config</classifier>
     </dependency>
+    <dependency>
+      <groupId>org.opendaylight.groupbasedpolicy</groupId>
+      <artifactId>netconf-renderer</artifactId>
+      <type>xml</type>
+      <classifier>config</classifier>
+    </dependency>
+    <dependency>
+      <groupId>org.opendaylight.groupbasedpolicy</groupId>
+      <artifactId>iovisor-renderer</artifactId>
+      <type>xml</type>
+      <classifier>config</classifier>
+    </dependency>
     <dependency>
       <groupId>org.opendaylight.groupbasedpolicy</groupId>
       <artifactId>neutron-mapper</artifactId>
index c4ffef0dcf35438b6457c452738d02b5983af500..f8150b02488394db336e7d65374697cb33c68f92 100644 (file)
         <configfile finalname="${config.configfile.directory}/15-groupbasedpolicy-ofoverlay.xml">mvn:org.opendaylight.groupbasedpolicy/ofoverlay-renderer/{{VERSION}}/xml/config</configfile>
     </feature>
 
+    <!--
+        The OpenFlow Overlay renderer with SFC.
+
+        This can be added to the base to enable a
+        Network Virtualization behavior using OpenFlow that integrates with the SFC project
+    -->
+    <feature name='odl-groupbasedpolicy-ovssfc' version='${project.version}' description='OpenDaylight :: groupbasedpolicy :: OpenFlow Overlay SFC Renderer'>
+        <feature version="${project.version}">odl-groupbasedpolicy-base</feature>
+        <feature version="${openflowplugin.version}">odl-openflowplugin-flow-services</feature>
+        <feature version='${openflowplugin.version}'>odl-openflowplugin-nxm-extensions</feature>
+        <feature version='${ovsdb.southbound.version}'>odl-ovsdb-southbound-impl</feature>
+        <feature version='${sfc.version}'>odl-sfcofl2</feature>
+        <feature version='${sfc.version}'>odl-sfc-ui</feature>
+        <bundle>mvn:commons-net/commons-net/{{VERSION}}</bundle>
+        <bundle>mvn:org.opendaylight.groupbasedpolicy/ovssfc-renderer/{{VERSION}}</bundle>
+        <configfile finalname="${config.configfile.directory}/15-groupbasedpolicy-ovssfc.xml">mvn:org.opendaylight.groupbasedpolicy/ovssfc-renderer/{{VERSION}}/xml/config</configfile>
+    </feature>
+
     <!--
         The FAAS renderer.
 
         <configfile finalname="${config.configfile.directory}/15-groupbasedpolicy-faas.xml">mvn:org.opendaylight.groupbasedpolicy/faas-renderer/{{VERSION}}/xml/config</configfile>
     </feature>
 
+    <!--
+        The IOVisor renderer.
+
+        This renderer maps GBP service model to agents of the IOVisor Linux Foundation project.
+    -->
+    <feature name='odl-groupbasedpolicy-iovisor' version='${project.version}' description='OpenDaylight :: groupbasedpolicy :: IOVisor Renderer'>
+        <feature version="${project.version}">odl-groupbasedpolicy-base</feature>
+        <bundle>mvn:org.opendaylight.groupbasedpolicy/iovisor-renderer/{{VERSION}}</bundle>
+        <configfile finalname="${config.configfile.directory}/15-groupbasedpolicy-iovisor.xml">mvn:org.opendaylight.groupbasedpolicy/iovisor-renderer/{{VERSION}}/xml/config</configfile>
+    </feature>
+
+    <!--
+        The NETCONF renderer.
+
+        This renderer maps GBP service model to NETCONF based network elements.
+    -->
+    <feature name='odl-groupbasedpolicy-netconf' version='${project.version}' description='OpenDaylight :: groupbasedpolicy :: NETCONF Renderer'>
+        <feature version="${project.version}">odl-groupbasedpolicy-base</feature>
+        <bundle>mvn:org.opendaylight.groupbasedpolicy/netconf-renderer/{{VERSION}}</bundle>
+        <configfile finalname="${config.configfile.directory}/15-groupbasedpolicy-netconf.xml">mvn:org.opendaylight.groupbasedpolicy/netconf-renderer/{{VERSION}}/xml/config</configfile>
+    </feature>
+
+
     <!--
          The Neutron provider
     -->
diff --git a/renderers/iovisor/pom.xml b/renderers/iovisor/pom.xml
new file mode 100644 (file)
index 0000000..a492d31
--- /dev/null
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (c) 2015 Cisco Systems. 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 -->
+<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.groupbasedpolicy</groupId>
+    <artifactId>groupbasedpolicy-renderers</artifactId>
+    <version>0.3.0-SNAPSHOT</version>
+    <relativePath>../</relativePath>
+  </parent>
+
+  <artifactId>iovisor-renderer</artifactId>
+  <packaging>bundle</packaging>
+
+  <properties>
+  </properties>
+
+  <dependencies>
+    <!-- testing dependencies -->
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.mockito</groupId>
+      <artifactId>mockito-all</artifactId>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+</project>
diff --git a/renderers/iovisor/src/main/config/default-config.xml b/renderers/iovisor/src/main/config/default-config.xml
new file mode 100644 (file)
index 0000000..16a4a75
--- /dev/null
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- vi: set et smarttab sw=4 tabstop=4: -->
+<!--
+ Copyright (c) 2015 Cisco Systems.  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>
+    <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:iovisor="urn:opendaylight:params:xml:ns:yang:controller:config:iovisor-provider:impl">
+                        iovisor:iovisor-provider-impl
+                    </type>
+                    <name>iovisor-provider-impl</name>
+
+                    <rpc-registry>
+                        <type xmlns:binding="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">binding:binding-rpc-registry</type>
+                        <name>binding-rpc-broker</name>
+                    </rpc-registry>
+
+                    <data-broker>
+                      <type xmlns:binding="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">binding:binding-async-data-broker</type>
+                      <name>binding-data-broker</name>
+                    </data-broker>
+
+                </module>
+            </modules>
+        </data>
+
+    </configuration>
+
+    <required-capabilities>
+        <capability>urn:opendaylight:params:xml:ns:yang:controller:config:iovisor-provider:impl?module=iovisor-provider-impl&amp;revision=2015-10-30</capability>
+    </required-capabilities>
+
+</snapshot>
\ No newline at end of file
diff --git a/renderers/iovisor/src/main/java/org/opendaylight/controller/config/yang/config/iovisor_provider/impl/IovisorProviderModule.java b/renderers/iovisor/src/main/java/org/opendaylight/controller/config/yang/config/iovisor_provider/impl/IovisorProviderModule.java
new file mode 100644 (file)
index 0000000..6e1e808
--- /dev/null
@@ -0,0 +1,22 @@
+package org.opendaylight.controller.config.yang.config.iovisor_provider.impl;
+public class IovisorProviderModule extends org.opendaylight.controller.config.yang.config.iovisor_provider.impl.AbstractIovisorProviderModule {
+    public IovisorProviderModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
+        super(identifier, dependencyResolver);
+    }
+
+    public IovisorProviderModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, org.opendaylight.controller.config.yang.config.iovisor_provider.impl.IovisorProviderModule 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() {
+        // TODO:implement
+        throw new java.lang.UnsupportedOperationException();
+    }
+
+}
diff --git a/renderers/iovisor/src/main/java/org/opendaylight/controller/config/yang/config/iovisor_provider/impl/IovisorProviderModuleFactory.java b/renderers/iovisor/src/main/java/org/opendaylight/controller/config/yang/config/iovisor_provider/impl/IovisorProviderModuleFactory.java
new file mode 100644 (file)
index 0000000..79f18bb
--- /dev/null
@@ -0,0 +1,13 @@
+/*
+* Generated file
+*
+* Generated from: yang module name: iovisor-provider-impl yang module local name: iovisor-provider-impl
+* Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator
+* Generated at: Tue Nov 03 20:21:10 PST 2015
+*
+* Do not modify this file unless it is present under src/main directory
+*/
+package org.opendaylight.controller.config.yang.config.iovisor_provider.impl;
+public class IovisorProviderModuleFactory extends org.opendaylight.controller.config.yang.config.iovisor_provider.impl.AbstractIovisorProviderModuleFactory {
+
+}
diff --git a/renderers/iovisor/src/main/java/org/opendaylight/groupbasedpolicy/renderer/iovisor/IovisorRenderer.java b/renderers/iovisor/src/main/java/org/opendaylight/groupbasedpolicy/renderer/iovisor/IovisorRenderer.java
new file mode 100644 (file)
index 0000000..e0b1bf8
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2015 Cisco Systems. 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.groupbasedpolicy.renderer.iovisor;
+
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.controller.md.sal.binding.api.NotificationService;
+import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Renderer that converts GBP services to IOVisor Agents
+ */
+public class IovisorRenderer implements AutoCloseable {
+
+    private static final Logger LOG = LoggerFactory.getLogger(IovisorRenderer.class);
+
+    private final DataBroker dataBroker;
+    private final ScheduledExecutorService executor;
+
+
+    public IovisorRenderer(final DataBroker dataProvider, RpcProviderRegistry rpcRegistry,
+            NotificationService notificationService) {
+        super();
+        this.dataBroker = dataProvider;
+
+        int numCPU = Runtime.getRuntime().availableProcessors();
+        executor = Executors.newScheduledThreadPool(numCPU * 2);
+
+        LOG.info("IOVisor Renderer has Started");
+    }
+
+    @Override
+    public void close() throws Exception {
+        executor.shutdownNow();
+    }
+
+}
diff --git a/renderers/iovisor/src/main/yang/iovisor-provider-impl.yang b/renderers/iovisor/src/main/yang/iovisor-provider-impl.yang
new file mode 100644 (file)
index 0000000..3df9a8d
--- /dev/null
@@ -0,0 +1,58 @@
+/*
+ * Copyright (c) 2015 Cisco System.  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
+ */
+
+module iovisor-provider-impl {
+    yang-version 1;
+    namespace "urn:opendaylight:params:xml:ns:yang:controller:config:iovisor-provider:impl";
+    prefix "iovisor-provider-impl";
+
+    import config { prefix config; revision-date 2013-04-05; }
+    import opendaylight-md-sal-binding { prefix mdsal; revision-date 2013-10-28; }
+    import opendaylight-sal-binding-broker-impl { prefix sal-broker; revision-date 2013-10-28; }
+
+    description
+        "This module contains the base YANG definitions for iovisor-provider
+        impl implementation.";
+
+    revision "2015-10-30" {
+        description
+                "Initial revision.";
+    }
+
+    identity iovisor-provider-impl {
+        base "config:module-type";
+
+        config:java-name-prefix IovisorProvider;
+    }
+
+    // Augments the 'configuration' choice node under modules/module.
+    augment "/config:modules/config:module/config:configuration" {
+        case iovisor-provider-impl {
+            when "/config:modules/config:module/config:type = 'iovisor-provider-impl'";
+
+            //wires in the data-broker service 
+            container data-broker {
+                uses config:service-ref {
+                    refine type {
+                        mandatory true;
+                        config:required-identity mdsal:binding-async-data-broker;
+                    }
+                }
+            }
+            // RPC Registry
+            container rpc-registry {
+                uses config:service-ref {
+                    refine type {
+                        mandatory true;
+                        config:required-identity mdsal:binding-rpc-registry;
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/renderers/iovisor/src/main/yang/iovisor.yang b/renderers/iovisor/src/main/yang/iovisor.yang
new file mode 100644 (file)
index 0000000..c163c3a
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+ * 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
+ */
+
+module iovisor {
+    yang-version 1;
+
+    namespace "urn:opendaylight:groupbasedpolicy:iovisor";
+    prefix "iovisor";
+
+    description
+        "This module defines the group-based policy iovisor renderer model.";
+
+    revision "2015-10-30" {
+        description
+                "Initial revision.";
+    }
+
+    container iovisor-renderer {
+        leaf iovisor-renderer-name {
+            type string;
+        }
+    }
+}
diff --git a/renderers/netconf/pom.xml b/renderers/netconf/pom.xml
new file mode 100644 (file)
index 0000000..cba1364
--- /dev/null
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (c) 2015 Cisco Systems. 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 -->
+<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.groupbasedpolicy</groupId>
+    <artifactId>groupbasedpolicy-renderers</artifactId>
+    <version>0.3.0-SNAPSHOT</version>
+    <relativePath>../</relativePath>
+  </parent>
+
+  <artifactId>netconf-renderer</artifactId>
+  <packaging>bundle</packaging>
+
+  <properties>
+  </properties>
+
+  <dependencies>
+    <!-- testing dependencies -->
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.mockito</groupId>
+      <artifactId>mockito-all</artifactId>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+</project>
diff --git a/renderers/netconf/src/main/config/default-config.xml b/renderers/netconf/src/main/config/default-config.xml
new file mode 100644 (file)
index 0000000..4d6fd13
--- /dev/null
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- vi: set et smarttab sw=4 tabstop=4: -->
+<!--
+ Copyright (c) 2015 Cisco Systems.  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>
+    <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:netconf="urn:opendaylight:params:xml:ns:yang:controller:config:netconf-provider:impl">
+                        netconf:netconf-provider-impl
+                    </type>
+                    <name>netconf-provider-impl</name>
+
+                    <rpc-registry>
+                        <type xmlns:binding="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">binding:binding-rpc-registry</type>
+                        <name>binding-rpc-broker</name>
+                    </rpc-registry>
+
+                    <data-broker>
+                      <type xmlns:binding="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">binding:binding-async-data-broker</type>
+                      <name>binding-data-broker</name>
+                    </data-broker>
+
+                </module>
+            </modules>
+        </data>
+
+    </configuration>
+
+    <required-capabilities>
+        <capability>urn:opendaylight:params:xml:ns:yang:controller:config:netconf-provider:impl?module=netconf-provider-impl&amp;revision=2015-10-30</capability>
+    </required-capabilities>
+
+</snapshot>
\ No newline at end of file
diff --git a/renderers/netconf/src/main/java/org/opendaylight/controller/config/yang/config/netconf_provider/impl/NetconfProviderModule.java b/renderers/netconf/src/main/java/org/opendaylight/controller/config/yang/config/netconf_provider/impl/NetconfProviderModule.java
new file mode 100644 (file)
index 0000000..7431bc9
--- /dev/null
@@ -0,0 +1,22 @@
+package org.opendaylight.controller.config.yang.config.netconf_provider.impl;
+public class NetconfProviderModule extends org.opendaylight.controller.config.yang.config.netconf_provider.impl.AbstractNetconfProviderModule {
+    public NetconfProviderModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
+        super(identifier, dependencyResolver);
+    }
+
+    public NetconfProviderModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, org.opendaylight.controller.config.yang.config.netconf_provider.impl.NetconfProviderModule 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() {
+        // TODO:implement
+        throw new java.lang.UnsupportedOperationException();
+    }
+
+}
diff --git a/renderers/netconf/src/main/java/org/opendaylight/controller/config/yang/config/netconf_provider/impl/NetconfProviderModuleFactory.java b/renderers/netconf/src/main/java/org/opendaylight/controller/config/yang/config/netconf_provider/impl/NetconfProviderModuleFactory.java
new file mode 100644 (file)
index 0000000..e50d50b
--- /dev/null
@@ -0,0 +1,13 @@
+/*
+* Generated file
+*
+* Generated from: yang module name: netconf-provider-impl yang module local name: netconf-provider-impl
+* Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator
+* Generated at: Tue Nov 03 20:22:37 PST 2015
+*
+* Do not modify this file unless it is present under src/main directory
+*/
+package org.opendaylight.controller.config.yang.config.netconf_provider.impl;
+public class NetconfProviderModuleFactory extends org.opendaylight.controller.config.yang.config.netconf_provider.impl.AbstractNetconfProviderModuleFactory {
+
+}
diff --git a/renderers/netconf/src/main/java/org/opendaylight/groupbasedpolicy/renderer/netconf/NetconfRenderer.java b/renderers/netconf/src/main/java/org/opendaylight/groupbasedpolicy/renderer/netconf/NetconfRenderer.java
new file mode 100644 (file)
index 0000000..8f91860
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2015 Cisco Systems. 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.groupbasedpolicy.renderer.netconf;
+
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.controller.md.sal.binding.api.NotificationService;
+import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Renderer that converts GBP services to NETCONF devices
+ */
+public class NetconfRenderer implements AutoCloseable {
+
+    private static final Logger LOG = LoggerFactory.getLogger(NetconfRenderer.class);
+
+    private final DataBroker dataBroker;
+    private final ScheduledExecutorService executor;
+
+
+    public NetconfRenderer(final DataBroker dataProvider, RpcProviderRegistry rpcRegistry,
+            NotificationService notificationService) {
+        super();
+        this.dataBroker = dataProvider;
+
+        int numCPU = Runtime.getRuntime().availableProcessors();
+        executor = Executors.newScheduledThreadPool(numCPU * 2);
+
+        LOG.info("Netconf Renderer has Started");
+    }
+
+    @Override
+    public void close() throws Exception {
+        executor.shutdownNow();
+    }
+
+}
diff --git a/renderers/netconf/src/main/yang/netconf-provider-impl.yang b/renderers/netconf/src/main/yang/netconf-provider-impl.yang
new file mode 100644 (file)
index 0000000..31999bc
--- /dev/null
@@ -0,0 +1,58 @@
+/*
+ * Copyright (c) 2015 Cisco System.  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
+ */
+
+module netconf-provider-impl {
+    yang-version 1;
+    namespace "urn:opendaylight:params:xml:ns:yang:controller:config:netconf-provider:impl";
+    prefix "netconf-provider-impl";
+
+    import config { prefix config; revision-date 2013-04-05; }
+    import opendaylight-md-sal-binding { prefix mdsal; revision-date 2013-10-28; }
+    import opendaylight-sal-binding-broker-impl { prefix sal-broker; revision-date 2013-10-28; }
+
+    description
+        "This module contains the base YANG definitions for netconf-provider
+        impl implementation.";
+
+    revision "2015-10-30" {
+        description
+                "Initial revision.";
+    }
+
+    identity netconf-provider-impl {
+        base "config:module-type";
+
+        config:java-name-prefix NetconfProvider;
+    }
+
+    // Augments the 'configuration' choice node under modules/module.
+    augment "/config:modules/config:module/config:configuration" {
+        case netconf-provider-impl {
+            when "/config:modules/config:module/config:type = 'netconf-provider-impl'";
+
+            //wires in the data-broker service 
+            container data-broker {
+                uses config:service-ref {
+                    refine type {
+                        mandatory true;
+                        config:required-identity mdsal:binding-async-data-broker;
+                    }
+                }
+            }
+            // RPC Registry
+            container rpc-registry {
+                uses config:service-ref {
+                    refine type {
+                        mandatory true;
+                        config:required-identity mdsal:binding-rpc-registry;
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/renderers/netconf/src/main/yang/netconf.yang b/renderers/netconf/src/main/yang/netconf.yang
new file mode 100644 (file)
index 0000000..0902f86
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+ * 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
+ */
+
+module netconf {
+    yang-version 1;
+
+    namespace "urn:opendaylight:groupbasedpolicy:netconf";
+    prefix "netconf";
+
+    description
+        "This module defines the group-based policy netconf renderer model.";
+
+    revision "2015-10-30" {
+        description
+                "Initial revision.";
+    }
+
+    container netconf-renderer {
+        leaf netconf-renderer-name {
+            type string;
+        }
+    }
+}
diff --git a/renderers/ovssfc/pom.xml b/renderers/ovssfc/pom.xml
new file mode 100644 (file)
index 0000000..0c7bd3b
--- /dev/null
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (c) 2015 Cisco Systems. 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 -->
+<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.groupbasedpolicy</groupId>
+    <artifactId>groupbasedpolicy-renderers</artifactId>
+    <version>0.3.0-SNAPSHOT</version>
+    <relativePath>../</relativePath>
+  </parent>
+
+  <artifactId>ovssfc-renderer</artifactId>
+  <packaging>bundle</packaging>
+
+  <properties>
+  </properties>
+
+  <dependencies>
+    <!-- testing dependencies -->
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.mockito</groupId>
+      <artifactId>mockito-all</artifactId>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+</project>
diff --git a/renderers/ovssfc/src/main/config/default-config.xml b/renderers/ovssfc/src/main/config/default-config.xml
new file mode 100644 (file)
index 0000000..d305182
--- /dev/null
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- vi: set et smarttab sw=4 tabstop=4: -->
+<!--
+ Copyright (c) 2015 Cisco Systems.  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>
+    <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:ovssfc="urn:opendaylight:params:xml:ns:yang:controller:config:ovssfc-provider:impl">
+                        ovssfc:ovssfc-provider-impl
+                    </type>
+                    <name>ovssfc-provider-impl</name>
+
+                    <rpc-registry>
+                        <type xmlns:binding="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">binding:binding-rpc-registry</type>
+                        <name>binding-rpc-broker</name>
+                    </rpc-registry>
+
+                    <data-broker>
+                      <type xmlns:binding="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">binding:binding-async-data-broker</type>
+                      <name>binding-data-broker</name>
+                    </data-broker>
+
+                </module>
+            </modules>
+        </data>
+
+    </configuration>
+
+    <required-capabilities>
+        <capability>urn:opendaylight:params:xml:ns:yang:controller:config:ovssfc-provider:impl?module=ovssfc-provider-impl&amp;revision=2015-10-30</capability>
+    </required-capabilities>
+
+</snapshot>
\ No newline at end of file
diff --git a/renderers/ovssfc/src/main/java/org/opendaylight/controller/config/yang/config/ovssfc_provider/impl/OvssfcProviderModule.java b/renderers/ovssfc/src/main/java/org/opendaylight/controller/config/yang/config/ovssfc_provider/impl/OvssfcProviderModule.java
new file mode 100644 (file)
index 0000000..db4754e
--- /dev/null
@@ -0,0 +1,22 @@
+package org.opendaylight.controller.config.yang.config.ovssfc_provider.impl;
+public class OvssfcProviderModule extends org.opendaylight.controller.config.yang.config.ovssfc_provider.impl.AbstractOvssfcProviderModule {
+    public OvssfcProviderModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
+        super(identifier, dependencyResolver);
+    }
+
+    public OvssfcProviderModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, org.opendaylight.controller.config.yang.config.ovssfc_provider.impl.OvssfcProviderModule 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() {
+        // TODO:implement
+        throw new java.lang.UnsupportedOperationException();
+    }
+
+}
diff --git a/renderers/ovssfc/src/main/java/org/opendaylight/controller/config/yang/config/ovssfc_provider/impl/OvssfcProviderModuleFactory.java b/renderers/ovssfc/src/main/java/org/opendaylight/controller/config/yang/config/ovssfc_provider/impl/OvssfcProviderModuleFactory.java
new file mode 100644 (file)
index 0000000..fc50fef
--- /dev/null
@@ -0,0 +1,13 @@
+/*
+* Generated file
+*
+* Generated from: yang module name: ovssfc-provider-impl yang module local name: ovssfc-provider-impl
+* Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator
+* Generated at: Tue Nov 03 20:21:14 PST 2015
+*
+* Do not modify this file unless it is present under src/main directory
+*/
+package org.opendaylight.controller.config.yang.config.ovssfc_provider.impl;
+public class OvssfcProviderModuleFactory extends org.opendaylight.controller.config.yang.config.ovssfc_provider.impl.AbstractOvssfcProviderModuleFactory {
+
+}
diff --git a/renderers/ovssfc/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ovssfc/OvssfcRenderer.java b/renderers/ovssfc/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ovssfc/OvssfcRenderer.java
new file mode 100644 (file)
index 0000000..4c1875b
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2015 Cisco Systems. 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.groupbasedpolicy.renderer.iovisor;
+
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.controller.md.sal.binding.api.NotificationService;
+import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Renderer that converts GBP services to IOVisor Agents
+ */
+public class OvssfcRenderer implements AutoCloseable {
+
+    private static final Logger LOG = LoggerFactory.getLogger(OvssfcRenderer.class);
+
+    private final DataBroker dataBroker;
+    private final ScheduledExecutorService executor;
+
+
+    public OvssfcRenderer(final DataBroker dataProvider, RpcProviderRegistry rpcRegistry,
+            NotificationService notificationService) {
+        super();
+        this.dataBroker = dataProvider;
+
+        int numCPU = Runtime.getRuntime().availableProcessors();
+        executor = Executors.newScheduledThreadPool(numCPU * 2);
+
+        LOG.info("IOVisor Renderer has Started");
+    }
+
+    @Override
+    public void close() throws Exception {
+        executor.shutdownNow();
+    }
+
+}
diff --git a/renderers/ovssfc/src/main/yang/ovssfc-provider-impl.yang b/renderers/ovssfc/src/main/yang/ovssfc-provider-impl.yang
new file mode 100644 (file)
index 0000000..568a8a8
--- /dev/null
@@ -0,0 +1,58 @@
+/*
+ * Copyright (c) 2015 Cisco System.  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
+ */
+
+module ovssfc-provider-impl {
+    yang-version 1;
+    namespace "urn:opendaylight:params:xml:ns:yang:controller:config:ovssfc-provider:impl";
+    prefix "ovssfc-provider-impl";
+
+    import config { prefix config; revision-date 2013-04-05; }
+    import opendaylight-md-sal-binding { prefix mdsal; revision-date 2013-10-28; }
+    import opendaylight-sal-binding-broker-impl { prefix sal-broker; revision-date 2013-10-28; }
+
+    description
+        "This module contains the base YANG definitions for ovssfc-provider
+        impl implementation.";
+
+    revision "2015-10-30" {
+        description
+                "Initial revision.";
+    }
+
+    identity ovssfc-provider-impl {
+        base "config:module-type";
+
+        config:java-name-prefix OvssfcProvider;
+    }
+
+    // Augments the 'configuration' choice node under modules/module.
+    augment "/config:modules/config:module/config:configuration" {
+        case ovssfc-provider-impl {
+            when "/config:modules/config:module/config:type = 'ovssfc-provider-impl'";
+
+            //wires in the data-broker service 
+            container data-broker {
+                uses config:service-ref {
+                    refine type {
+                        mandatory true;
+                        config:required-identity mdsal:binding-async-data-broker;
+                    }
+                }
+            }
+            // RPC Registry
+            container rpc-registry {
+                uses config:service-ref {
+                    refine type {
+                        mandatory true;
+                        config:required-identity mdsal:binding-rpc-registry;
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/renderers/ovssfc/src/main/yang/ovssfc.yang b/renderers/ovssfc/src/main/yang/ovssfc.yang
new file mode 100644 (file)
index 0000000..72dcfe0
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+ * 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
+ */
+
+module ovssfc {
+    yang-version 1;
+
+    namespace "urn:opendaylight:groupbasedpolicy:ovssfc";
+    prefix "ovssfc";
+
+    description
+        "This module defines the group-based policy ovssfc renderer model.";
+
+    revision "2015-10-30" {
+        description
+                "Initial revision.";
+    }
+
+    container ovssfc-renderer {
+        leaf ovssfc-renderer-name {
+            type string;
+        }
+    }
+}
index 94bb8e78b23a4ea2039dc1ea103b8b04379422ba..7c6d1efcac1ee2a4d8fb6ac4d4173929ffa81dbb 100644 (file)
@@ -22,6 +22,9 @@
   <modules>
     <module>ofoverlay</module>
     <module>faas</module>
+    <module>iovisor</module>
+    <module>ovssfc</module>
+    <module>netconf</module>
   </modules>
 
   <dependencies>