<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>
<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>
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;
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;
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;
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;
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;
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;
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));
}
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;
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 =
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;
// 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());
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;
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;
/**
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();
}
/**
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;
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) {
}
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()) {
}
}
}
- 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);
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() {
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;}
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 {
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
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
}\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
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
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
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
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
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
.getTcpDestinationPort())\r
)) {\r
count += 1;\r
- } \r
+ }\r
}\r
return count;\r
}\r
.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
\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
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
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
.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