From a016dd57e8539e5c5c3378cc29a47a90107b375c Mon Sep 17 00:00:00 2001 From: melserngawy Date: Thu, 19 Nov 2015 14:48:51 -0500 Subject: [PATCH] Fix gre tunnel connectivity Change-Id: I8e0579c14a9d1afc6a4e3f7cabafbffaa4d92f25 Signed-off-by: melserngawy --- .../unimgr/command/EvcCreateCommand.java | 28 ++++++++--------- .../unimgr/impl/UnimgrConstants.java | 4 ++- .../opendaylight/unimgr/impl/UnimgrUtils.java | 31 +++++++++++++++++++ 3 files changed, 48 insertions(+), 15 deletions(-) diff --git a/impl/src/main/java/org/opendaylight/unimgr/command/EvcCreateCommand.java b/impl/src/main/java/org/opendaylight/unimgr/command/EvcCreateCommand.java index d4ccafb7..e7dfdf69 100644 --- a/impl/src/main/java/org/opendaylight/unimgr/command/EvcCreateCommand.java +++ b/impl/src/main/java/org/opendaylight/unimgr/command/EvcCreateCommand.java @@ -41,9 +41,6 @@ public class EvcCreateCommand extends AbstractCreateCommand { if (created.getValue() != null && created.getValue() instanceof EvcAugmentation) { EvcAugmentation evc = (EvcAugmentation) created.getValue(); InstanceIdentifier evcKey = created.getKey(); - LOG.trace("New EVC created, source IP: {} destination IP {}.", - evc.getUniSource().iterator().next().getIpAddress().getIpv4Address(), - evc.getUniDest().iterator().next().getIpAddress().getIpv4Address()); // For now, we assume that there is 1 uni per source/destination if (evc.getUniDest() == null || evc.getUniDest().isEmpty()) { LOG.error("Destination UNI cannot be null."); @@ -53,19 +50,24 @@ public class EvcCreateCommand extends AbstractCreateCommand { LOG.error("Source UNI cannot be null."); break; } + LOG.trace("New EVC created, source IP: {} destination IP {}.", + evc.getUniSource().iterator().next().getIpAddress().getIpv4Address(), + evc.getUniDest().iterator().next().getIpAddress().getIpv4Address()); InstanceIdentifier sourceUniIid; InstanceIdentifier destinationUniIid; //FIXME we are assuming that there is only 1 UNI source and destination // per evc - if (evc.getUniSource().iterator().next().getUni() != null) { - sourceUniIid = evc.getUniSource().iterator().next().getUni().firstIdentifierOf(Node.class); + InstanceIdentifier iidSource = evc.getUniSource().iterator().next().getUni(); + if (iidSource != null) { + sourceUniIid = iidSource.firstIdentifierOf(Node.class); } else { sourceUniIid = UnimgrMapper.getUniIid(dataBroker, evc.getUniSource().iterator().next().getIpAddress(), LogicalDatastoreType.OPERATIONAL); } - if (evc.getUniDest().iterator().next().getUni() != null) { - destinationUniIid = evc.getUniDest().iterator().next().getUni().firstIdentifierOf(Node.class); + InstanceIdentifier iidDest = evc.getUniDest().iterator().next().getUni(); + if (iidDest != null) { + destinationUniIid = iidDest.firstIdentifierOf(Node.class); } else { destinationUniIid = UnimgrMapper.getUniIid(dataBroker, evc.getUniDest().iterator().next().getIpAddress(), @@ -120,25 +122,23 @@ public class EvcCreateCommand extends AbstractCreateCommand { uniSource.getAugmentation(UniAugmentation.class), sourceBr, UnimgrConstants.DEFAULT_BRIDGE_NAME, - UnimgrConstants.DEFAULT_TUNNEL_IFACE, - UnimgrConstants.DEFAULT_GRE_NAME); + UnimgrConstants.DEFAULT_TUNNEL_IFACE); UnimgrUtils.createGreTunnel(dataBroker, uniSource.getAugmentation(UniAugmentation.class), uniDestination.getAugmentation(UniAugmentation.class), sourceBr, UnimgrConstants.DEFAULT_BRIDGE_NAME, - "gre0"); - UnimgrUtils.createTerminationPointNode(dataBroker, + UnimgrConstants.DEFAULT_GRE_TUNNEL_NAME); + UnimgrUtils.createTerminationPointNode(dataBroker, uniSource.getAugmentation(UniAugmentation.class), destinationBr, UnimgrConstants.DEFAULT_BRIDGE_NAME, - UnimgrConstants.DEFAULT_TUNNEL_IFACE, - UnimgrConstants.DEFAULT_GRE_NAME); + UnimgrConstants.DEFAULT_TUNNEL_IFACE); UnimgrUtils.createGreTunnel(dataBroker, uniDestination.getAugmentation(UniAugmentation.class), uniSource.getAugmentation(UniAugmentation.class), destinationBr, UnimgrConstants.DEFAULT_BRIDGE_NAME, - "gre0"); + UnimgrConstants.DEFAULT_GRE_TUNNEL_NAME); UnimgrUtils.updateEvcNode(LogicalDatastoreType.CONFIGURATION, evcKey, evc, diff --git a/impl/src/main/java/org/opendaylight/unimgr/impl/UnimgrConstants.java b/impl/src/main/java/org/opendaylight/unimgr/impl/UnimgrConstants.java index 38fd796b..13ca5967 100644 --- a/impl/src/main/java/org/opendaylight/unimgr/impl/UnimgrConstants.java +++ b/impl/src/main/java/org/opendaylight/unimgr/impl/UnimgrConstants.java @@ -29,7 +29,7 @@ public class UnimgrConstants { public static final Ipv4Address LOCAL_IP = new Ipv4Address("127.0.0.1"); - public static final String DEFAULT_BRIDGE_NAME = "br0"; + public static final String DEFAULT_BRIDGE_NAME = "ovsbr0"; // public static final String DEFAULT_BRIDGE2_NAME = "br2"; @@ -40,4 +40,6 @@ public class UnimgrConstants { public static final String DEFAULT_TUNNEL_IFACE = "eth1"; public static final String DEFAULT_GRE_NAME = "gre"; + + public static final String DEFAULT_GRE_TUNNEL_NAME = "gre1"; } diff --git a/impl/src/main/java/org/opendaylight/unimgr/impl/UnimgrUtils.java b/impl/src/main/java/org/opendaylight/unimgr/impl/UnimgrUtils.java index 6b0ee474..3bb5f3cd 100644 --- a/impl/src/main/java/org/opendaylight/unimgr/impl/UnimgrUtils.java +++ b/impl/src/main/java/org/opendaylight/unimgr/impl/UnimgrUtils.java @@ -432,6 +432,37 @@ public class UnimgrUtils { transaction.submit(); } + /** + * Creates and Submit a termination point Node without specifying its interface type. + * @param dataBroker The instance of the data broker to create transactions + * @param uni The UNI's data + * @param bridgeNode The Bridge node + * @param bridgeName The Bridge name (example: br0) + * @param portName The Port name (example: eth0) + */ + public static void createTerminationPointNode(DataBroker dataBroker, + Uni uni, + Node bridgeNode, + String bridgeName, + String portName) { + InstanceIdentifier tpIid = UnimgrMapper + .getTerminationPointIid(bridgeNode, + portName); + OvsdbTerminationPointAugmentationBuilder tpAugmentationBuilder = + new OvsdbTerminationPointAugmentationBuilder(); + tpAugmentationBuilder.setName(portName); + tpAugmentationBuilder.setInterfaceType(null); + TerminationPointBuilder tpBuilder = new TerminationPointBuilder(); + tpBuilder.setKey(InstanceIdentifier.keyOf(tpIid)); + tpBuilder.addAugmentation(OvsdbTerminationPointAugmentation.class, + tpAugmentationBuilder.build()); + WriteTransaction transaction = dataBroker.newWriteOnlyTransaction(); + transaction.put(LogicalDatastoreType.CONFIGURATION, + tpIid, + tpBuilder.build()); + transaction.submit(); + } + /** * Deletes a generic node * @param dataBroker The instance of the data broker to create transactions -- 2.36.6