Revert "TSC-181 : ITM Yang Models Cleanup" 06/83206/1
authorFaseela K <faseela.k@ericsson.com>
Tue, 23 Jul 2019 09:52:23 +0000 (09:52 +0000)
committerFaseela K <faseela.k@ericsson.com>
Tue, 23 Jul 2019 09:52:23 +0000 (09:52 +0000)
This reverts commit e21274dbeb7bcad709a9ca438f8c1a968d053707.
Genius merge jobs are failing for some other reason, due to which the required artifacts for this change are not published. This is blocking everyone else, as builds are failing now, and hence reverting till the merge job issues are fixed

Change-Id: Ie9e0945d19d4a039c530fef0511c4a414750d944
Signed-off-by: Faseela K <faseela.k@ericsson.com>
elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/l2gw/utils/ElanL2GatewayUtils.java
elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/utils/TransportZoneNotificationUtil.java
vpnmanager/impl/src/test/java/org/opendaylight/netvirt/vpnmanager/test/VpnSubnetRouteHandlerTest.java

index 3bf0d79e302e7b8a789f97c55b3c3fd501367f7a..a315c4449c140b527a0ca5b588dae6204f5d0f2d 100644 (file)
@@ -76,7 +76,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rpc
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rpcs.rev160406.GetDpidFromInterfaceOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rpcs.rev160406.OdlInterfaceRpcService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.TransportZones;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.transport.zone.DeviceVteps;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.transport.zone.subnets.DeviceVteps;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.AddL2GwDeviceInputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.AddL2GwDeviceOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.ItmRpcService;
@@ -971,8 +971,10 @@ public class ElanL2GatewayUtils {
             }
             String psNodeId = globalNodeId + HwvtepHAUtil.PHYSICALSWITCH + psName;
             tzonesoptional.get().nonnullTransportZone().stream()
-                .filter(zone -> zone.getDeviceVteps() != null)
-                .flatMap(zone -> zone.getDeviceVteps().stream())
+                .filter(transportZone -> transportZone.getSubnets() != null)
+                .flatMap(transportZone -> transportZone.getSubnets().stream())
+                .filter(subnet -> subnet.getDeviceVteps() != null)
+                .flatMap(subnet -> subnet.getDeviceVteps().stream())
                 .filter(deviceVteps -> Objects.equals(getPsName(deviceVteps), psName)) //get device with same ps name
                 .filter(deviceVteps -> !Objects.equals(psNodeId, deviceVteps.getNodeId())
                         || !Objects.equals(tunnelIp, deviceVteps.getIpAddress()))//node id or tunnel ip is changed
index 5f26e458f6cdcf0b257deb6c5f135eba9f3c6e25..f41f42fc5d43fa2c8b9f0400150f529f1607df70 100644 (file)
@@ -14,6 +14,7 @@ import com.google.common.collect.MapDifference;
 import com.google.common.collect.MapDifference.ValueDifference;
 import com.google.common.collect.Maps;
 import java.math.BigInteger;
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
@@ -45,6 +46,8 @@ import org.opendaylight.ovsdb.utils.mdsal.utils.ControllerMdsalUtils;
 import org.opendaylight.ovsdb.utils.southbound.utils.SouthboundUtils;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddressBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefixBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.BridgeRefInfo;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.bridge.ref.info.BridgeRefEntry;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.bridge.ref.info.BridgeRefEntryKey;
@@ -58,9 +61,12 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.Transp
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.TransportZone;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.TransportZoneBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.TransportZoneKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.transport.zone.Vteps;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.transport.zone.VtepsBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.transport.zone.VtepsKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.transport.zone.Subnets;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.transport.zone.SubnetsBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.transport.zone.SubnetsKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.transport.zone.subnets.Vteps;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.transport.zone.subnets.VtepsBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.transport.zone.subnets.VtepsKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.elan.config.rev150710.ElanConfig;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.elan.rev150602.elan.interfaces.ElanInterface;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.l3vpn.rev130911.vpn.instance.op.data.vpn.instance.op.data.entry.vpn.to.dpn.list.VpnInterfaces;
@@ -124,8 +130,10 @@ public class TransportZoneNotificationUtil {
     }
 
     private static TransportZone createZone(String subnetIp, String zoneName) {
+        List<Subnets> subnets = new ArrayList<>();
+        subnets.add(buildSubnets(subnetIp));
         TransportZoneBuilder tzb = new TransportZoneBuilder().withKey(new TransportZoneKey(zoneName))
-                .setTunnelType(TunnelTypeVxlan.class).setZoneName(zoneName);
+                .setTunnelType(TunnelTypeVxlan.class).setZoneName(zoneName).setSubnets(subnets);
         return tzb.build();
     }
 
@@ -382,7 +390,13 @@ public class TransportZoneNotificationUtil {
      * @return Whether a vtep was added or not.
      */
     private boolean addVtep(TransportZone zone, String subnetIp, BigInteger dpnId, @Nullable String localIp) {
-        for (Vteps existingVtep : zone.nonnullVteps()) {
+        List<Subnets> zoneSubnets = zone.getSubnets();
+        if (zoneSubnets == null) {
+            return false;
+        }
+
+        Subnets subnets = getOrAddSubnet(zoneSubnets, subnetIp);
+        for (Vteps existingVtep : subnets.nonnullVteps()) {
             if (Objects.equals(existingVtep.getDpnId(), dpnId)) {
                 return false;
             }
@@ -391,8 +405,8 @@ public class TransportZoneNotificationUtil {
         if (localIp != null) {
             IpAddress nodeIp = IpAddressBuilder.getDefaultInstance(localIp);
             VtepsBuilder vtepsBuilder = new VtepsBuilder().setDpnId(dpnId).setIpAddress(nodeIp)
-                    .setOptionOfTunnel(elanConfig.isUseOfTunnels());
-            zone.getVteps().add(vtepsBuilder.build());
+                    .setPortname(TUNNEL_PORT).setOptionOfTunnel(elanConfig.isUseOfTunnels());
+            subnets.getVteps().add(vtepsBuilder.build());
             return true;
         }
 
@@ -402,10 +416,36 @@ public class TransportZoneNotificationUtil {
     private static void removeVtep(String zoneName, BigInteger dpId, @NonNull TypedWriteTransaction<Configuration> tx) {
         InstanceIdentifier<Vteps> path = InstanceIdentifier.builder(TransportZones.class)
                 .child(TransportZone.class, new TransportZoneKey(zoneName))
-                .child(Vteps.class, new VtepsKey(dpId)).build();
+                .child(Subnets.class, new SubnetsKey(IpPrefixBuilder.getDefaultInstance(ALL_SUBNETS)))
+                .child(Vteps.class, new VtepsKey(dpId, TUNNEL_PORT)).build();
         tx.delete(path);
     }
 
+    // search for relevant subnets for the given subnetIP, add one if it is
+    // necessary
+    private static Subnets getOrAddSubnet(@NonNull List<Subnets> subnets, @NonNull String subnetIp) {
+        IpPrefix subnetPrefix = IpPrefixBuilder.getDefaultInstance(subnetIp);
+
+        for (Subnets subnet : subnets) {
+            if (Objects.equals(subnet.getPrefix(), subnetPrefix)) {
+                return subnet;
+            }
+        }
+
+        Subnets retSubnet = buildSubnets(subnetIp);
+        subnets.add(retSubnet);
+
+        return retSubnet;
+    }
+
+    private static Subnets buildSubnets(String subnetIp) {
+        SubnetsBuilder subnetsBuilder = new SubnetsBuilder().setDeviceVteps(new ArrayList<>())
+                .setGatewayIp(IpAddressBuilder.getDefaultInstance(ALL_SUBNETS_GW))
+                .withKey(new SubnetsKey(IpPrefixBuilder.getDefaultInstance(subnetIp))).setVlanId(0)
+                .setVteps(new ArrayList<>());
+        return subnetsBuilder.build();
+    }
+
     @Nullable
     private String getDpnLocalIp(BigInteger dpId) throws ReadFailedException {
         Optional<Node> node = getPortsNode(dpId);
index e2072aac1410c9f94614d1880745fcd0ab6a012c..b8c562fb9d95503687511cdadf4b36fcdacef2dd 100644 (file)
@@ -302,7 +302,7 @@ public class VpnSubnetRouteHandlerTest {
         dpntePsInfo = new DPNTEPsInfoBuilder().setDPNID(dpId).setUp(true).withKey(new DPNTEPsInfoKey(dpId))
             .setTunnelEndPoints(tunnelEndPoints).build();
         tunlEndPts =
-            new TunnelEndPointsBuilder().setInterfaceName(interfaceName).setIpAddress(ipAddress).build();
+            new TunnelEndPointsBuilder().setInterfaceName(interfaceName).setVLANID(10).setIpAddress(ipAddress).build();
         tunnelEndPoints.add(tunlEndPts);
         ipv4Family = new Ipv4FamilyBuilder().setRouteDistinguisher(routeDistinguishers).build();
         vpnInstnce = new org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.instances