Add COE service-implementation mode 44/73644/6
authorFaseela K <faseela.k@ericsson.com>
Mon, 2 Jul 2018 12:00:17 +0000 (17:30 +0530)
committerSam Hague <shague@redhat.com>
Wed, 4 Jul 2018 18:13:18 +0000 (18:13 +0000)
COE has currently two approaches for service
implementation. It can either use kubernetes's default
kube proxy mode, or its own custom odl-kube-proxy
mode. This patch adds a mechanism to choose between the
two options available.

Change-Id: I686eb9de5eb86cef9058e3802a19b8367333f21c
Signed-off-by: Faseela K <faseela.k@ericsson.com>
Signed-off-by: Michael Vorburger <vorburger@redhat.com>
coe/impl/pom.xml
coe/impl/src/main/java/org/opendaylight/netvirt/coe/listeners/PodListener.java
coe/impl/src/main/resources/initial/netvirt-coe-config.xml [new file with mode: 0644]
coe/impl/src/main/resources/org/opendaylight/blueprint/coe-renderer.xml
coe/impl/src/main/yang/coe-config.yang [new file with mode: 0644]
features/odl-netvirt-coe/pom.xml
features/odl-netvirt-coe/src/main/feature/feature.xml [new file with mode: 0644]

index 307c2d4f5d56c6c9dc22a9fe5377b47f3a0c3cfa..b59f1bc114cef8f2d45977535ca90bc955113ddb 100644 (file)
@@ -103,6 +103,28 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
                     </dependency>
                 </dependencies>
             </plugin>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>build-helper-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>attach-artifacts</id>
+                        <goals>
+                            <goal>attach-artifact</goal>
+                        </goals>
+                        <phase>package</phase>
+                        <configuration>
+                            <artifacts>
+                                <artifact>
+                                    <file>${project.build.directory}/classes/initial/netvirt-coe-config.xml</file>
+                                    <type>xml</type>
+                                    <classifier>config</classifier>
+                                </artifact>
+                            </artifacts>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
         </plugins>
     </build>
 </project>
index 6bd5238487b7412db7fa766cddc0e4006af87a4b..c5e94965dc7ecd608a7b932f6baca5f14cbc2448 100644 (file)
@@ -37,6 +37,7 @@ import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev14081
 import org.opendaylight.yang.gen.v1.urn.opendaylight.coe.northbound.pod.rev170611.Coe;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.coe.northbound.pod.rev170611.coe.Pods;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.coe.northbound.pod.rev170611.pod_attributes.Interface;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.coe.config.rev180703.CoeConfig;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.elan.rev150602.elan.instances.ElanInstance;
 import org.opendaylight.yangtools.concepts.ListenerRegistration;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
@@ -50,12 +51,15 @@ public class PodListener implements DataTreeChangeListener<Pods> {
     private ListenerRegistration<PodListener> listenerRegistration;
     private final JobCoordinator jobCoordinator;
     private final ManagedNewTransactionRunner txRunner;
+    private final CoeConfig coeConfig;
 
     @Inject
-    public PodListener(final DataBroker dataBroker, JobCoordinator jobCoordinator) {
+    public PodListener(final DataBroker dataBroker, JobCoordinator jobCoordinator,
+                       CoeConfig coeConfig) {
         registerListener(LogicalDatastoreType.CONFIGURATION, dataBroker);
         this.txRunner = new ManagedNewTransactionRunnerImpl(dataBroker);
         this.jobCoordinator = jobCoordinator;
+        this.coeConfig = coeConfig;
     }
 
     protected InstanceIdentifier<Pods> getWildCardPath() {
diff --git a/coe/impl/src/main/resources/initial/netvirt-coe-config.xml b/coe/impl/src/main/resources/initial/netvirt-coe-config.xml
new file mode 100644 (file)
index 0000000..bde598c
--- /dev/null
@@ -0,0 +1,3 @@
+<coe-config xmlns="urn:opendaylight:netvirt:coe:config">
+  <service-implementation-mode>kube-proxy</service-implementation-mode>
+</coe-config>
index 46bf47131d9ffaf0fbf230d88dfe4cc20151376a..73076cd2ba28fc66b4884bd4eb7e0282758dc078 100644 (file)
@@ -20,4 +20,11 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
                interface="org.opendaylight.infrautils.caches.CacheProvider"/>
     <reference id="iMdsalApiManager"
                interface="org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager"/>
+
+    <odl:clustered-app-config id="coeConfig"
+                              binding-class="org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.coe.config.rev180703.CoeConfig"
+                              default-config-file-name="netvirt-coe-config.xml"
+                              update-strategy="none">
+    </odl:clustered-app-config>
+
 </blueprint>
diff --git a/coe/impl/src/main/yang/coe-config.yang b/coe/impl/src/main/yang/coe-config.yang
new file mode 100644 (file)
index 0000000..15c9e87
--- /dev/null
@@ -0,0 +1,24 @@
+module coe-config {
+    yang-version 1;
+    namespace "urn:opendaylight:netvirt:coe:config";
+    prefix "coe-config";
+
+    description
+        "Configuration for coe.";
+
+    revision "2018-07-03" {
+        description
+                "Initial revision.";
+    }
+
+    container coe-config {
+        config true;
+        leaf service-implementation-mode {
+            type enumeration {
+                enum "kube-proxy";
+                enum "odl-kube-proxy";
+            }
+            default "kube-proxy";
+        }
+    }
+}
index d7d353043928d7d639f8f835fca8d4e8ad08d39f..604efb63cce0d3b3e5cc954c8d4489244ecea13b 100644 (file)
             <artifactId>coe-impl</artifactId>
             <version>${project.version}</version>
         </dependency>
+        <dependency>
+            <!-- finalname="etc/opendaylight/datastore/initial/config/netvirt-coe-config.xml" -->
+            <groupId>org.opendaylight.netvirt</groupId>
+            <artifactId>coe-impl</artifactId>
+            <version>${project.version}</version>
+            <type>xml</type>
+            <classifier>config</classifier>
+        </dependency>
     </dependencies>
 </project>
diff --git a/features/odl-netvirt-coe/src/main/feature/feature.xml b/features/odl-netvirt-coe/src/main/feature/feature.xml
new file mode 100644 (file)
index 0000000..c057080
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<features name="odl-netvirt-${project.version}" xmlns="http://karaf.apache.org/xmlns/features/v1.2.0">
+    <feature name="odl-netvirt-coe" version="${project.version}">
+        <configfile finalname="etc/opendaylight/datastore/initial/config/netvirt-coe-config.xml">
+            mvn:org.opendaylight.netvirt/coe-impl/${project.version}/xml/config
+        </configfile>
+    </feature>
+</features>