From: Deepthi V V Date: Thu, 21 Jan 2016 15:20:44 +0000 (+0530) Subject: BUG 5044: Neutron vpn should create vpn interface name with tap port name. X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=vpnservice.git;a=commitdiff_plain;h=35a4833050305a6426ec0b937942f1d6f8578102 BUG 5044: Neutron vpn should create vpn interface name with tap port name. - Fix for vpn interface creation with tap port name instead of tap port name:vlanid - Switch id should be fetched from interface state event object rather than reading interface state from datastore. Change-Id: If92a6803b6e0f4bec363d346c92c4e543ec298c2 Signed-off-by: Deepthi V V --- diff --git a/fibmanager/fibmanager-impl/src/main/java/org/opendaylight/vpnservice/fibmanager/NexthopManager.java b/fibmanager/fibmanager-impl/src/main/java/org/opendaylight/vpnservice/fibmanager/NexthopManager.java index 28ea399d..a3cd7c4e 100644 --- a/fibmanager/fibmanager-impl/src/main/java/org/opendaylight/vpnservice/fibmanager/NexthopManager.java +++ b/fibmanager/fibmanager-impl/src/main/java/org/opendaylight/vpnservice/fibmanager/NexthopManager.java @@ -362,11 +362,13 @@ public class NexthopManager implements AutoCloseable { localDpnId, remoteDpnId, vpnId, prefixIp, nextHopIp); LOG.trace("getRemoteNextHopPointer: Calling ITM with localDpnId {} ", localDpnId); - try{ - // here use the config for tunnel type param - tunnelIfName = getTunnelInterfaceName(remoteDpnId, IpAddressBuilder.getDefaultInstance(nextHopIp)); - }catch(Exception ex){ - LOG.error("Error while retrieving nexthop pointer for DC Gateway : ", ex.getMessage()); + if (nextHopIp != null && !nextHopIp.isEmpty()) { + try{ + // here use the config for tunnel type param + tunnelIfName = getTunnelInterfaceName(remoteDpnId, IpAddressBuilder.getDefaultInstance(nextHopIp)); + }catch(Exception ex){ + LOG.error("Error while retrieving nexthop pointer for nexthop {} : ", nextHopIp, ex.getMessage()); + } } return tunnelIfName; } diff --git a/neutronvpn/neutronvpn-impl/src/main/java/org/opendaylight/vpnservice/neutronvpn/NeutronvpnManager.java b/neutronvpn/neutronvpn-impl/src/main/java/org/opendaylight/vpnservice/neutronvpn/NeutronvpnManager.java index 505d128a..e7399566 100644 --- a/neutronvpn/neutronvpn-impl/src/main/java/org/opendaylight/vpnservice/neutronvpn/NeutronvpnManager.java +++ b/neutronvpn/neutronvpn-impl/src/main/java/org/opendaylight/vpnservice/neutronvpn/NeutronvpnManager.java @@ -369,10 +369,9 @@ public class NeutronvpnManager implements NeutronvpnService, AutoCloseable { return; } String portname = NeutronvpnUtils.uuidToTapPortName(port.getUuid()); - String name = new StringBuilder(portname).append(":0").toString(); List adjList = new ArrayList(); InstanceIdentifier vpnIfIdentifier = InstanceIdentifier.builder(VpnInterfaces.class). - child(VpnInterface.class, new VpnInterfaceKey(name)).build(); + child(VpnInterface.class, new VpnInterfaceKey(portname)).build(); // find router associated to vpn Uuid routerId = NeutronvpnUtils.getRouterforVpn(broker, vpnId); Router rtr = null; @@ -392,7 +391,7 @@ public class NeutronvpnManager implements NeutronvpnService, AutoCloseable { // create extra route adjacency if (rtr != null && rtr.getRoutes() != null) { List routeList = rtr.getRoutes(); - List erAdjList = addAdjacencyforExtraRoute(routeList, false, name); + List erAdjList = addAdjacencyforExtraRoute(routeList, false, portname); if (erAdjList != null) { adjList.addAll(erAdjList); } @@ -400,18 +399,18 @@ public class NeutronvpnManager implements NeutronvpnService, AutoCloseable { } // create vpn-interface on this neutron port Adjacencies adjs = new AdjacenciesBuilder().setAdjacency(adjList).build(); - VpnInterfaceBuilder vpnb = new VpnInterfaceBuilder().setKey(new VpnInterfaceKey(name)). - setName(name).setVpnInstanceName(vpnId.getValue()).addAugmentation(Adjacencies.class, adjs); + VpnInterfaceBuilder vpnb = new VpnInterfaceBuilder().setKey(new VpnInterfaceKey(portname)). + setName(portname).setVpnInstanceName(vpnId.getValue()).addAugmentation(Adjacencies.class, adjs); VpnInterface vpnIf = vpnb.build(); - NeutronvpnUtils.lockVpnInterface(lockManager, name); + NeutronvpnUtils.lockVpnInterface(lockManager, portname); try { logger.debug("Creating vpn interface {}", vpnIf); MDSALUtil.syncWrite(broker, LogicalDatastoreType.CONFIGURATION, vpnIfIdentifier, vpnIf); } catch (Exception ex) { - logger.error("Creation of vpninterface {} failed due to {}", name, ex); + logger.error("Creation of vpninterface {} failed due to {}", portname, ex); } finally { - NeutronvpnUtils.unlockVpnInterface(lockManager, name); + NeutronvpnUtils.unlockVpnInterface(lockManager, portname); } } @@ -419,18 +418,17 @@ public class NeutronvpnManager implements NeutronvpnService, AutoCloseable { if (port != null) { String pname = NeutronvpnUtils.uuidToTapPortName(port.getUuid()); - String name = new StringBuilder(pname).append(":0").toString(); InstanceIdentifier vpnIfIdentifier = InstanceIdentifier.builder(VpnInterfaces.class). - child(VpnInterface.class, new VpnInterfaceKey(name)).build(); + child(VpnInterface.class, new VpnInterfaceKey(pname)).build(); - NeutronvpnUtils.lockVpnInterface(lockManager, name); + NeutronvpnUtils.lockVpnInterface(lockManager, pname); try { - logger.debug("Deleting vpn interface {}", name); + logger.debug("Deleting vpn interface {}", pname); MDSALUtil.syncDelete(broker, LogicalDatastoreType.CONFIGURATION, vpnIfIdentifier); } catch (Exception ex) { - logger.error("Deletion of vpninterface {} failed due to {}", name, ex); + logger.error("Deletion of vpninterface {} failed due to {}", pname, ex); } finally { - NeutronvpnUtils.unlockVpnInterface(lockManager, name); + NeutronvpnUtils.unlockVpnInterface(lockManager, pname); } } } @@ -689,30 +687,29 @@ public class NeutronvpnManager implements NeutronvpnService, AutoCloseable { String destination = parts[1]; String tapPortName = NeutronvpnUtils.getNeutronPortNamefromPortFixedIp(broker, nextHop); - String ifname = new StringBuilder(tapPortName).append(":0").toString(); logger.trace("Adding extra route with nexthop {}, destination {}, ifName {}", nextHop, - destination, ifname); + destination, tapPortName); Adjacency erAdj = new AdjacencyBuilder().setIpAddress(destination).setNextHopIp(nextHop).setKey (new AdjacencyKey(destination)).build(); if (rtrUp == false) { - if (ifname.equals(vpnifname)) { + if (tapPortName.equals(vpnifname)) { adjList.add(erAdj); } continue; } InstanceIdentifier vpnIfIdentifier = InstanceIdentifier.builder(VpnInterfaces.class). - child(VpnInterface.class, new VpnInterfaceKey(ifname)).build(); + child(VpnInterface.class, new VpnInterfaceKey(tapPortName)).build(); Optional optionalVpnInterface = NeutronvpnUtils.read(broker, LogicalDatastoreType .CONFIGURATION, vpnIfIdentifier); if (optionalVpnInterface.isPresent()) { Adjacencies erAdjs = new AdjacenciesBuilder().setAdjacency(Arrays.asList(erAdj)).build(); - VpnInterface vpnIf = new VpnInterfaceBuilder().setKey(new VpnInterfaceKey(ifname)) + VpnInterface vpnIf = new VpnInterfaceBuilder().setKey(new VpnInterfaceKey(tapPortName)) .addAugmentation(Adjacencies.class, erAdjs).build(); MDSALUtil.syncUpdate(broker, LogicalDatastoreType.CONFIGURATION, vpnIfIdentifier, vpnIf); logger.trace("extra route {} added successfully", route); } else { logger.error("VM adjacency for interface {} not present ; cannot add extra route adjacency", - ifname); + tapPortName); } } else { logger.error("Incorrect input received for extra route. {}", parts); @@ -735,11 +732,10 @@ public class NeutronvpnManager implements NeutronvpnService, AutoCloseable { String destination = parts[1]; String tapPortName = NeutronvpnUtils.getNeutronPortNamefromPortFixedIp(broker, nextHop); - String ifname = new StringBuilder(tapPortName).append(":0").toString(); logger.trace("Removing extra route with nexthop {}, destination {}, ifName {}", nextHop, - destination, ifname); + destination, tapPortName); InstanceIdentifier adjacencyIdentifier = InstanceIdentifier.builder(VpnInterfaces.class). - child(VpnInterface.class, new VpnInterfaceKey(ifname)).augmentation(Adjacencies.class) + child(VpnInterface.class, new VpnInterfaceKey(tapPortName)).augmentation(Adjacencies.class) .child(Adjacency.class, new AdjacencyKey(destination)).build(); MDSALUtil.syncDelete(broker, LogicalDatastoreType.CONFIGURATION, adjacencyIdentifier); logger.trace("extra route {} deleted successfully", route); diff --git a/vpnmanager/vpnmanager-impl/src/main/java/org/opendaylight/vpnservice/InterfaceStateChangeListener.java b/vpnmanager/vpnmanager-impl/src/main/java/org/opendaylight/vpnservice/InterfaceStateChangeListener.java index 599f7038..206f884a 100644 --- a/vpnmanager/vpnmanager-impl/src/main/java/org/opendaylight/vpnservice/InterfaceStateChangeListener.java +++ b/vpnmanager/vpnmanager-impl/src/main/java/org/opendaylight/vpnservice/InterfaceStateChangeListener.java @@ -76,14 +76,14 @@ public class InterfaceStateChangeListener extends AbstractDataChangeListener matches = new ArrayList(); BigInteger metadata = MetaDataUtil.getMetaDataForLPortDispatcher(lPortTag, ++sIndex, BigInteger.valueOf(vpnId)); BigInteger metadataMask = MetaDataUtil.getMetaDataMaskForLPortDispatcher(MetaDataUtil.METADATA_MASK_SERVICE_INDEX, @@ -327,7 +329,6 @@ public class VpnInterfaceManager extends AbstractDataChangeListener