Fixed missing tunnel type 06/20306/2
authorMartin Sunal <msunal@cisco.com>
Wed, 13 May 2015 23:48:02 +0000 (01:48 +0200)
committerMartin Sunal <msunal@cisco.com>
Wed, 13 May 2015 23:53:39 +0000 (01:53 +0200)
Change-Id: I23d5b1cad48f132f632da4e5b038953f0b9e0d32
Signed-off-by: Martin Sunal <msunal@cisco.com>
13 files changed:
commons/parent/pom.xml
renderers/ofoverlay/pom.xml
renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/flow/DestinationMapper.java
renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/flow/GroupTable.java
renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/flow/PolicyEnforcer.java
renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/flow/PortSecurity.java
renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/flow/SourceMapper.java
renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/node/SwitchManager.java
renderers/ofoverlay/src/main/yang/ofoverlay.yang
renderers/ofoverlay/src/test/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/flow/DestinationMapperTest.java
renderers/ofoverlay/src/test/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/flow/GroupTableTest.java
renderers/ofoverlay/src/test/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/flow/PolicyEnforcerTest.java
renderers/ofoverlay/src/test/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/flow/PortSecurityTest.java

index d859cae995a45b8b7a993fe6001ffa7f4eb34cbc..fdfb3de03d5d00a0f6b9a9cabc81f7bcf9a7c2af 100644 (file)
         <artifactId>openflowplugin-extension-nicira</artifactId>
         <version>${openflowplugin.version}</version>
       </dependency>
+      
+      <!-- OVSDB -->
+      <dependency>
+        <groupId>org.opendaylight.ovsdb</groupId>
+        <artifactId>southbound-api</artifactId>
+        <version>${ovsdb.southbound.version}</version>
+      </dependency>
+      
     </dependencies>
   </dependencyManagement>
 
index ddae38fd32fb8dbbfe8f244a310adccb3c871333..1b7fee0afa160a99576269b959b16fa653496553 100644 (file)
       <groupId>org.opendaylight.yangtools.model</groupId>
       <artifactId>yang-ext</artifactId>
     </dependency>
+  <dependency>
+    <groupId>org.opendaylight.ovsdb</groupId>
+    <artifactId>southbound-api</artifactId>
+  </dependency>
 
     <!-- project specific dependencies -->
     <dependency>
index 9feec5ee3ea993a70f3c3f16b0ee069ea24c8d4a..376126b349465eb4d297e4f050eb7cd6f34b5a39 100644 (file)
@@ -99,6 +99,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev14
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.NxmNxReg5;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.NxmNxReg6;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.NxmNxReg7;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.overlay.rev150105.TunnelTypeVxlan;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.slf4j.Logger;
@@ -698,8 +699,8 @@ public class DestinationMapper extends FlowTable {
         String nextHop;
 
         // BEGIN TUNNEL HANDLING
-        IpAddress tunDst = ctx.getSwitchManager().getTunnelIP(ofc.getNodeId());
-        NodeConnectorId tunPort = ctx.getSwitchManager().getTunnelPort(nodeId);
+        IpAddress tunDst = ctx.getSwitchManager().getTunnelIP(ofc.getNodeId(), TunnelTypeVxlan.class);
+        NodeConnectorId tunPort = ctx.getSwitchManager().getTunnelPort(nodeId, TunnelTypeVxlan.class);
         if (tunDst == null) {
             LOG.warn("Failed to get Tunnel IP for NodeId {} with EP {}", nodeId, ep);
             return null;
@@ -843,8 +844,8 @@ public class DestinationMapper extends FlowTable {
         String nextHop;
 
         // BEGIN TUNNEL HANDLING
-        IpAddress tunDst = ctx.getSwitchManager().getTunnelIP(ofc.getNodeId());
-        NodeConnectorId tunPort = ctx.getSwitchManager().getTunnelPort(nodeId);
+        IpAddress tunDst = ctx.getSwitchManager().getTunnelIP(ofc.getNodeId(), TunnelTypeVxlan.class);
+        NodeConnectorId tunPort = ctx.getSwitchManager().getTunnelPort(nodeId, TunnelTypeVxlan.class);
         if (tunDst == null) {
             LOG.warn("Failed to get Tunnel IP for NodeId {} with L3Address {}", nodeId, destL3Address);
             return null;
index 1c2e1ad5127fc2d59395fe52399d0e80d3070eb8..f6fdca2524c50787d14916697813eecd0ad5230d 100644 (file)
@@ -46,6 +46,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.overlay.rev150105.TunnelTypeVxlan;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -189,9 +190,9 @@ public class GroupTable extends OfTable {
                         bucketId |= 1L << 31;
 
                         IpAddress tunDst =
-                                ctx.getSwitchManager().getTunnelIP(destNode);
+                                ctx.getSwitchManager().getTunnelIP(destNode, TunnelTypeVxlan.class);
                         NodeConnectorId tunPort =
-                                ctx.getSwitchManager().getTunnelPort(nodeId);
+                                ctx.getSwitchManager().getTunnelPort(nodeId, TunnelTypeVxlan.class);
                         if (tunDst == null || tunPort == null)
                             continue;
                         Action tundstAction = null;
index d895c4a2e2c6801f97d8ebb3c289c50a646588cc..212130fc8ad60f24fd7e13ffac94280d91dded0a 100644 (file)
@@ -67,6 +67,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev14
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.NxmNxReg3;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.NxmNxReg5;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.NxmNxReg7;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.overlay.rev150105.TunnelTypeVxlan;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -97,7 +98,7 @@ public class PolicyEnforcer extends FlowTable {
 
         flowMap.writeFlow(nodeId, TABLE_ID, dropFlow(Integer.valueOf(1), null));
 
-        NodeConnectorId tunPort = ctx.getSwitchManager().getTunnelPort(nodeId);
+        NodeConnectorId tunPort = ctx.getSwitchManager().getTunnelPort(nodeId, TunnelTypeVxlan.class);
         if (tunPort != null) {
             flowMap.writeFlow(nodeId, TABLE_ID, allowFromTunnel(tunPort));
         }
index 044834f837e8f06aa235eea2160dbec35b1c9c61..00a08a7834832a74f015af81bccdc3a0226af3d9 100644 (file)
@@ -30,6 +30,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.ArpMatchBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv4MatchBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv6MatchBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.overlay.rev150105.TunnelTypeVxlan;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -56,7 +57,7 @@ public class PortSecurity extends FlowTable {
     public void sync(NodeId nodeId, PolicyInfo policyInfo, FlowMap flowMap) {
 
         // Allow traffic from tunnel and external ports
-        NodeConnectorId tunnelIf = ctx.getSwitchManager().getTunnelPort(nodeId);
+        NodeConnectorId tunnelIf = ctx.getSwitchManager().getTunnelPort(nodeId, TunnelTypeVxlan.class);
         if (tunnelIf != null)
             flowMap.writeFlow(nodeId, TABLE_ID, allowFromPort(tunnelIf));
         Set<NodeConnectorId> external =
index e469a5df070a69380b8f7cb7d61329381f72900c..9972a9d739179bf1231c37c3f84699012b9475b6 100644 (file)
@@ -43,6 +43,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev14
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.NxmNxReg4;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.NxmNxReg5;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.NxmNxReg6;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.overlay.rev150105.TunnelTypeVxlan;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -119,7 +120,7 @@ public class SourceMapper extends FlowTable {
 
                     // Please do not check for remote v local nodeID, we need local to local tunnels
                     // in the case of chaining - The Great Dr Sunal.
-                    NodeConnectorId tunPort = ctx.getSwitchManager().getTunnelPort(remoteNodeId);
+                    NodeConnectorId tunPort = ctx.getSwitchManager().getTunnelPort(remoteNodeId, TunnelTypeVxlan.class);
                     if (tunPort == null) {
                         LOG.trace("No tunnel port for tunnel in SourceMapper between local:{} and remote:{}",
                                 nodeId.getValue(), remoteNodeId.getValue());
index 0f11cab8459c98327c8475d0846e074d48f27d47..5b571ba944a9ce40e070f35442a47bce386a9a2c 100644 (file)
@@ -28,12 +28,16 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.Fl
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnector;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.OfOverlayConfig.EncapsulationFormat;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.OfOverlayNodeConfig;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.nodes.node.Tunnel;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.nodes.node.TunnelBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnector;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnectorKey;
 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.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.overlay.rev150105.TunnelTypeBase;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.overlay.rev150105.TunnelTypeVxlan;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -43,6 +47,7 @@ import com.google.common.base.Objects;
 import com.google.common.base.Predicate;
 import com.google.common.collect.FluentIterable;
 import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Maps;
 
 /**
@@ -107,21 +112,31 @@ public class SwitchManager implements AutoCloseable {
         SwitchState state = switches.get(nodeId);
         if (state == null)
             return Collections.emptySet();
-        return state.externalPorts;
+        return ImmutableSet.copyOf(state.externalPorts);
     }
 
-    public synchronized NodeConnectorId getTunnelPort(NodeId nodeId) {
+    public synchronized NodeConnectorId getTunnelPort(NodeId nodeId, Class<? extends TunnelTypeBase> tunnelType) {
         SwitchState state = switches.get(nodeId);
-        if (state == null)
+        if (state == null) {
+            return null;
+        }
+        TunnelBuilder tunnel = state.tunnelBuilderByType.get(tunnelType);
+        if (tunnel == null) {
             return null;
-        return state.tunnelPort;
+        }
+        return tunnel.getNodeConnectorId();
     }
 
-    public synchronized IpAddress getTunnelIP(NodeId nodeId) {
+    public synchronized IpAddress getTunnelIP(NodeId nodeId, Class<? extends TunnelTypeBase> tunnelType) {
         SwitchState state = switches.get(nodeId);
-        if (state == null || state.nodeConfig == null)
+        if (state == null) {
             return null;
-        return state.nodeConfig.getTunnelIp();
+        }
+        TunnelBuilder tunnel = state.tunnelBuilderByType.get(tunnelType);
+        if (tunnel == null) {
+            return null;
+        }
+        return tunnel.getIp();
     }
 
     /**
@@ -228,7 +243,7 @@ public class SwitchManager implements AutoCloseable {
         private OfOverlayNodeConfig nodeConfig;
         private Map<InstanceIdentifier<NodeConnector>, FlowCapableNodeConnector> fcncByNcIid = Maps.newHashMap();
 
-        NodeConnectorId tunnelPort;
+        Map<Class<? extends TunnelTypeBase>, TunnelBuilder> tunnelBuilderByType = new HashMap<>();
         Set<NodeConnectorId> externalPorts = new HashSet<>();
 
         SwitchStatus status;
@@ -244,14 +259,14 @@ public class SwitchManager implements AutoCloseable {
         public SwitchState(NodeId node, NodeConnectorId tunnelPort, Set<NodeConnectorId> externalPorts,
                 OfOverlayNodeConfig nodeConfig) {
             this.nodeId = node;
-            this.tunnelPort = tunnelPort;
-            this.externalPorts = externalPorts;
             this.nodeConfig = nodeConfig;
+            update();
+            this.externalPorts = externalPorts;
         }
 
         private void update() {
-            HashSet<NodeConnectorId> externalPorts = new HashSet<>();
-            NodeConnectorId tunnelPort = null;
+            tunnelBuilderByType = new HashMap<>();
+            externalPorts = new HashSet<>();
             for (Entry<InstanceIdentifier<NodeConnector>, FlowCapableNodeConnector> fcncByNcIidEntry : fcncByNcIid.entrySet()) {
                 FlowCapableNodeConnector fcnc = fcncByNcIidEntry.getValue();
                 if (fcnc.getName() == null) {
@@ -259,8 +274,13 @@ public class SwitchManager implements AutoCloseable {
                 }
                 InstanceIdentifier<NodeConnector> ncIid = fcncByNcIidEntry.getKey();
                 NodeConnectorId ncId = ncIid.firstKeyOf(NodeConnector.class, NodeConnectorKey.class).getId();
-                if (fcnc.getName().matches(".*(vxlan|tun).*")) {
-                    tunnelPort = ncId;
+                if (fcnc.getName().matches(".*(vxlan).*")) {
+                    TunnelBuilder tunnelBuilder = tunnelBuilderByType.get(TunnelTypeVxlan.class);
+                    if (tunnelBuilder == null) {
+                        tunnelBuilder = new TunnelBuilder().setTunnelType(TunnelTypeVxlan.class);
+                        tunnelBuilderByType.put(TunnelTypeVxlan.class, tunnelBuilder);
+                    }
+                    tunnelBuilder.setNodeConnectorId(ncId);
                 }
                 if (nodeConfig != null && nodeConfig.getExternalInterfaces() != null) {
                     for (String pattern : nodeConfig.getExternalInterfaces()) {
@@ -271,14 +291,30 @@ public class SwitchManager implements AutoCloseable {
                     }
                 }
             }
-            this.tunnelPort = tunnelPort;
-            this.externalPorts = Collections.unmodifiableSet(externalPorts);
+            if (nodeConfig != null && nodeConfig.getTunnel() != null) {
+                for (Tunnel tunnel : nodeConfig.getTunnel()) {
+                    TunnelBuilder tunnelBuilder = tunnelBuilderByType.get(tunnel.getTunnelType());
+                    if (tunnelBuilder == null) {
+                        tunnelBuilder = new TunnelBuilder();
+                        tunnelBuilderByType.put(tunnel.getTunnelType(), tunnelBuilder);
+                    }
+                    if (tunnel.getIp() != null) {
+                        tunnelBuilder.setIp(tunnel.getIp());
+                    }
+                    if (tunnel.getNodeConnectorId() != null) {
+                        tunnelBuilder.setNodeConnectorId(tunnel.getNodeConnectorId());
+                    }
+                    if (tunnel.getPort() != null) {
+                        tunnelBuilder.setPort(tunnel.getPort());
+                    }
+                }
+            }
         }
 
         private void updateStatus() {
-            boolean tunnelPortWithIpExists = tunnelPortWithIpExists();
+            boolean tunnelWithIpAndNcExists = tunnelWithIpAndNcExists();
             if (fcNode != null) {
-                if (tunnelPortWithIpExists) {
+                if (tunnelWithIpAndNcExists) {
                     setStatus(SwitchStatus.READY);
                 } else {
                     setStatus(SwitchStatus.PREPARING);
@@ -296,15 +332,23 @@ public class SwitchManager implements AutoCloseable {
             this.status = newStatus;
         }
 
-        private boolean tunnelPortWithIpExists() {
-            boolean tunnelPortWithIpExists = false;
-            if (tunnelPort != null && nodeConfig != null && nodeConfig.getTunnelIp() != null) {
-                tunnelPortWithIpExists = true;
+        private boolean tunnelWithIpAndNcExists() {
+            if (tunnelBuilderByType.isEmpty()) {
+                LOG.trace("No tunnel on switch {}", nodeId.getValue());
+                return false;
+            }
+            LOG.trace("Iterating over tunnel till tunnel with IP and node-connector is not found.");
+            for (TunnelBuilder tb : tunnelBuilderByType.values()) {
+                if (tb.getIp() != null && tb.getNodeConnectorId() != null) {
+                    LOG.trace("Tunnel found. Type: {} IP: {} Port: {} Node-connector: {}", tb.getTunnelType()
+                        .getSimpleName(), tb.getIp(), tb.getPort(), tb.getNodeConnectorId());
+                    return true;
+                } else {
+                    LOG.trace("Tunnel which is not completed: Type: {} IP: {} Port: {} Node-connector: {}",
+                            tb.getTunnelType().getSimpleName(), tb.getIp(), tb.getPort(), tb.getNodeConnectorId());
+                }
             }
-            LOG.trace("Status of tunnel on switch {} - tunnelPort: {} tunnelIp: {}", nodeId.getValue(),
-                    tunnelPort == null ? null : tunnelPort.getValue(),
-                    nodeConfig == null ? null : nodeConfig.getTunnelIp());
-            return tunnelPortWithIpExists;
+            return false;
         }
 
         public boolean isConfigurationEmpty() {
index d2b7d4989a6e8b1ff6951c5ce0994029bc0ec379..9fd7523d60f13254efd11b5402cc70c3ab5eee26 100644 (file)
@@ -15,7 +15,8 @@ module ofoverlay {
     import ietf-inet-types { prefix "inet"; revision-date 2010-09-24; }
 
     import yang-ext {prefix ext; revision-date "2013-07-09";}
-    import opendaylight-inventory {prefix inv;revision-date "2013-08-19";}
+    import opendaylight-inventory {prefix inv; revision-date "2013-08-19";}
+    import overlay {prefix ovsdb-overlay; revision-date 2015-01-05;}
 
     import gbp-common {prefix gbp-common;}
     import endpoint {prefix endpoint;}
@@ -148,11 +149,19 @@ module ofoverlay {
 
     augment "/inv:nodes/inv:node" {
         ext:augment-identifier "of-overlay-node-config";
-
-        leaf tunnel-ip {
-            description
-                "The IP address used for tunnel termination on this switch";
-            type inet:ip-address;
+        list tunnel {
+            key "tunnel-type";
+            uses ovsdb-overlay:tunnel-type-attributes;
+            uses ovsdb-overlay:ip-port-locator;
+            leaf node-connector-id {
+                description
+                    "The node connector where is the tunnel located. The
+                     format is openflow:[dpid]:[port] where the dpid is
+                     the value of the switch DPID cast to a long, and port
+                     is the openflow port number of the interface where
+                     the endpoint is connected.";
+                type inv:node-connector-id;
+            }
         }
         container ovsdb-config {
             leaf ip {
index c8f442b1022b10494be6867c21d1c4662628cc3b..a50eabc7e132c09099bf1e8ea0697c00ebe3a64c 100755 (executable)
@@ -29,6 +29,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.Endpoint;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.EndpointBuilder;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.OfOverlayNodeConfigBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.nodes.node.TunnelBuilder;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.Contract;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;\r
@@ -36,6 +37,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv6Match;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.NxmNxReg0;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.NxmNxReg7;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.overlay.rev150105.TunnelTypeVxlan;\r
 import org.slf4j.Logger;\r
 import org.slf4j.LoggerFactory;\r
 \r
@@ -241,16 +243,24 @@ public class DestinationMapperTest extends FlowTableTest {
     }\r
 \r
     private void addSwitches() {\r
-        switchManager.addSwitch(nodeId, tunnelId,\r
-                Collections.<NodeConnectorId> emptySet(),\r
-                new OfOverlayNodeConfigBuilder()\r
-                        .setTunnelIp(new IpAddress(new Ipv4Address("1.2.3.4")))\r
-                        .build());\r
-        switchManager.addSwitch(remoteNodeId, remoteTunnelId,\r
-                Collections.<NodeConnectorId> emptySet(),\r
-                new OfOverlayNodeConfigBuilder()\r
-                        .setTunnelIp(new IpAddress(new Ipv4Address("1.2.3.5")))\r
-                        .build());\r
+        switchManager.addSwitch(\r
+                nodeId,\r
+                tunnelId,\r
+                Collections.<NodeConnectorId>emptySet(),\r
+                new OfOverlayNodeConfigBuilder().setTunnel(\r
+                        ImmutableList.of(new TunnelBuilder().setIp(new IpAddress(new Ipv4Address("1.2.3.4")))\r
+                            .setTunnelType(TunnelTypeVxlan.class)\r
+                            .setNodeConnectorId(tunnelId)\r
+                            .build())).build());\r
+        switchManager.addSwitch(\r
+                remoteNodeId,\r
+                remoteTunnelId,\r
+                Collections.<NodeConnectorId>emptySet(),\r
+                new OfOverlayNodeConfigBuilder().setTunnel(\r
+                        ImmutableList.of(new TunnelBuilder().setIp(new IpAddress(new Ipv4Address("1.2.3.5")))\r
+                            .setTunnelType(TunnelTypeVxlan.class)\r
+                            .setNodeConnectorId(tunnelId)\r
+                            .build())).build());\r
     }\r
 \r
     @Test\r
index fc088f002b75f2b639eb07c81c5dac9bd69770cf..b3244c0d02236dbc6717c863fb12115c8bb2c9ef 100755 (executable)
@@ -23,8 +23,10 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupId;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.Endpoint;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.OfOverlayNodeConfigBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.nodes.node.TunnelBuilder;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.Contract;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.overlay.rev150105.TunnelTypeVxlan;\r
 import org.slf4j.Logger;\r
 import org.slf4j.LoggerFactory;\r
 \r
@@ -54,17 +56,24 @@ public class GroupTableTest extends OfTableTest {
         endpointManager.addEndpoint(localEp);\r
         Endpoint remoteEp = remoteEP(remoteNodeId).build();\r
         endpointManager.addEndpoint(remoteEp);\r
-\r
-        switchManager.addSwitch(nodeId, tunnelId,\r
-                                Collections.<NodeConnectorId>emptySet(),\r
-                                new OfOverlayNodeConfigBuilder()\r
-                                    .setTunnelIp(new IpAddress(new Ipv4Address("1.2.3.4")))\r
-                                    .build());\r
-        switchManager.addSwitch(remoteNodeId, remoteTunnelId,\r
-                                Collections.<NodeConnectorId>emptySet(),\r
-                                new OfOverlayNodeConfigBuilder()\r
-                                    .setTunnelIp(new IpAddress(new Ipv4Address("1.2.3.5")))\r
-                                    .build());\r
+        switchManager.addSwitch(\r
+                nodeId,\r
+                tunnelId,\r
+                Collections.<NodeConnectorId>emptySet(),\r
+                new OfOverlayNodeConfigBuilder().setTunnel(\r
+                        ImmutableList.of(new TunnelBuilder().setIp(new IpAddress(new Ipv4Address("1.2.3.4")))\r
+                            .setTunnelType(TunnelTypeVxlan.class)\r
+                            .setNodeConnectorId(tunnelId)\r
+                            .build())).build());\r
+        switchManager.addSwitch(\r
+                remoteNodeId,\r
+                remoteTunnelId,\r
+                Collections.<NodeConnectorId>emptySet(),\r
+                new OfOverlayNodeConfigBuilder().setTunnel(\r
+                        ImmutableList.of(new TunnelBuilder().setIp(new IpAddress(new Ipv4Address("1.2.3.5")))\r
+                            .setTunnelType(TunnelTypeVxlan.class)\r
+                            .setNodeConnectorId(tunnelId)\r
+                            .build())).build());\r
 \r
         policyResolver.addTenant(baseTenant().setContract(\r
                 ImmutableList.<Contract>of(baseContract(null).build())).build());\r
index 03658e4ebc4f90343a812c03649d84e1b133cc80..377f4a8819731945e5d551099a54ab1c17ef76bd 100755 (executable)
@@ -32,6 +32,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.SubjectName;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.Endpoint;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.OfOverlayNodeConfigBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.nodes.node.TunnelBuilder;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.HasDirection.Direction;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.Matcher.MatchType;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.action.refs.ActionRefBuilder;\r
@@ -56,6 +57,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev14
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.NxmNxReg3;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.NxmNxReg7;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.general.rev140714.GeneralAugMatchNodesNodeTableFlow;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.overlay.rev150105.TunnelTypeVxlan;\r
 import org.slf4j.Logger;\r
 import org.slf4j.LoggerFactory;\r
 \r
@@ -66,20 +68,25 @@ import static org.junit.Assert.*;
 import static org.opendaylight.groupbasedpolicy.renderer.ofoverlay.flow.FlowUtils.*;\r
 \r
 public class PolicyEnforcerTest extends FlowTableTest {\r
-    protected static final Logger LOG = \r
+    protected static final Logger LOG =\r
             LoggerFactory.getLogger(PolicyEnforcerTest.class);\r
 \r
+    @Override\r
     @Before\r
     public void setup() throws Exception {\r
         initCtx();\r
         table = new PolicyEnforcer(ctx);\r
         super.setup();\r
-        \r
-        switchManager.addSwitch(nodeId, tunnelId, \r
-                                Collections.<NodeConnectorId>emptySet(),\r
-                                new OfOverlayNodeConfigBuilder()\r
-                                    .setTunnelIp(new IpAddress(new Ipv4Address("1.2.3.4")))\r
-                                    .build());\r
+\r
+        switchManager.addSwitch(\r
+                nodeId,\r
+                tunnelId,\r
+                Collections.<NodeConnectorId>emptySet(),\r
+                new OfOverlayNodeConfigBuilder().setTunnel(\r
+                        ImmutableList.of(new TunnelBuilder().setIp(new IpAddress(new Ipv4Address("1.2.3.4")))\r
+                            .setTunnelType(TunnelTypeVxlan.class)\r
+                            .setNodeConnectorId(tunnelId)\r
+                            .build())).build());\r
     }\r
 \r
     @Test\r
@@ -212,7 +219,7 @@ public class PolicyEnforcerTest extends FlowTableTest {
                                 .getTcpDestinationPort())\r
                         )) {\r
                 count += 1;\r
-            } \r
+            }\r
         }\r
         return count;\r
     }\r
@@ -235,7 +242,7 @@ public class PolicyEnforcerTest extends FlowTableTest {
             .setCondition(ImmutableList.of(cond1.getName(), cond2.getName()))\r
             .setEndpointGroup(eg2)\r
             .build();\r
-        endpointManager.addEndpoint(ep2);        \r
+        endpointManager.addEndpoint(ep2);\r
 \r
         TenantBuilder tb = baseTenant()\r
             .setContract(ImmutableList.of(new ContractBuilder()\r
@@ -264,13 +271,13 @@ public class PolicyEnforcerTest extends FlowTableTest {
 \r
         PolicyInfo policy = policyResolver.getCurrentPolicy();\r
         List<ConditionName> ep1c = endpointManager.getCondsForEndpoint(ep1);\r
-        ConditionGroup cg1 = \r
-                policy.getEgCondGroup(new EgKey(tb.getId(), \r
+        ConditionGroup cg1 =\r
+                policy.getEgCondGroup(new EgKey(tb.getId(),\r
                                                 ep1.getEndpointGroup()),\r
                                       ep1c);\r
         List<ConditionName> ep2c = endpointManager.getCondsForEndpoint(ep2);\r
-        ConditionGroup cg2 = \r
-                policy.getEgCondGroup(new EgKey(tb.getId(), \r
+        ConditionGroup cg2 =\r
+                policy.getEgCondGroup(new EgKey(tb.getId(),\r
                                                 ep2.getEndpointGroup()),\r
                                       ep2c);\r
         int cg1Id = OrdinalFactory.getCondGroupOrdinal(cg1);\r
@@ -283,14 +290,14 @@ public class PolicyEnforcerTest extends FlowTableTest {
         assertNotEquals(cg1Id, cg2Id);\r
 \r
         MatchBuilder mb = new MatchBuilder();\r
-        FlowUtils.addNxRegMatch(mb, \r
+        FlowUtils.addNxRegMatch(mb,\r
                                 RegMatch.of(NxmNxReg0.class, Long.valueOf(eg1Id)),\r
                                 RegMatch.of(NxmNxReg1.class, Long.valueOf(cg1Id)),\r
                                 RegMatch.of(NxmNxReg2.class, Long.valueOf(eg2Id)),\r
                                 RegMatch.of(NxmNxReg3.class, Long.valueOf(cg2Id)));\r
         GeneralAugMatchNodesNodeTableFlow m1 =\r
                 mb.getAugmentation(GeneralAugMatchNodesNodeTableFlow.class);\r
-        FlowUtils.addNxRegMatch(mb, \r
+        FlowUtils.addNxRegMatch(mb,\r
                                 RegMatch.of(NxmNxReg0.class, Long.valueOf(eg2Id)),\r
                                 RegMatch.of(NxmNxReg1.class, Long.valueOf(cg2Id)),\r
                                 RegMatch.of(NxmNxReg2.class, Long.valueOf(eg1Id)),\r
index c3805160b57c16d49da9357c4c7affcded95e0bc..38103e02f6b8cb442e3ff60c88f1275677a6f56c 100755 (executable)
@@ -26,11 +26,14 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoint.fields.L3AddressBuilder;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.Endpoint;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.OfOverlayContext;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.OfOverlayNodeConfigBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.nodes.node.TunnelBuilder;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.ArpMatch;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv4Match;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv6Match;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.overlay.rev150105.TunnelTypeVxlan;\r
 import org.slf4j.Logger;\r
 import org.slf4j.LoggerFactory;\r
 \r
@@ -80,7 +83,11 @@ public class PortSecurityTest extends FlowTableTest {
             .addSwitch(new NodeId("openflow:1"),\r
                        new NodeConnectorId("openflow:1:1"),\r
                        ImmutableSet.of(new NodeConnectorId("openflow:1:2")),\r
-                       null);\r
+                       new OfOverlayNodeConfigBuilder().setTunnel(\r
+                               ImmutableList.of(new TunnelBuilder()\r
+                                   .setTunnelType(TunnelTypeVxlan.class)\r
+                                   .setNodeConnectorId(new NodeConnectorId("openflow:1:1"))\r
+                                   .build())).build());\r
         FlowMap fm = dosync(null);\r
         assertNotEquals(0 ,fm.getTableForNode(nodeId, (short) 0).getFlow().size());\r
 \r