Moving vpn-instance yang from VPNMgr > NeutronVPN
[netvirt.git] / vpnmanager / impl / src / main / java / org / opendaylight / netvirt / vpnmanager / VpnUtil.java
index e0979ae7cd5b50e328cab29206a70f4bbe73326d..f65c08621e5b7d9d09b35c1f939cfe2fdd9c95d7 100644 (file)
@@ -87,11 +87,7 @@ import org.opendaylight.netvirt.vpnmanager.api.InterfaceUtils;
 import org.opendaylight.netvirt.vpnmanager.api.VpnExtraRouteHelper;
 import org.opendaylight.netvirt.vpnmanager.api.VpnHelper;
 import org.opendaylight.netvirt.vpnmanager.iplearn.model.MacEntry;
-import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.VpnAfConfig;
-import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.VpnInstances;
 import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.VpnInterfaces;
-import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.instances.VpnInstance;
-import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.instances.VpnInstanceKey;
 import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.interfaces.VpnInterface;
 import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.interfaces.VpnInterfaceBuilder;
 import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.interfaces.VpnInterfaceKey;
@@ -221,6 +217,10 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev16011
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111.external.subnets.SubnetsKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111.napt.switches.RouterToNaptSwitch;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111.napt.switches.RouterToNaptSwitchKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.l3vpn.rev200204.VpnAfConfig;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.l3vpn.rev200204.VpnInstances;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.l3vpn.rev200204.vpn.instances.VpnInstance;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.l3vpn.rev200204.vpn.instances.VpnInstanceKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.NetworkAttributes.NetworkType;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.NetworkMaps;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.NeutronVpnPortipPortData;
@@ -337,11 +337,11 @@ public final class VpnUtil {
     }
 
     static VpnInterfaceOpDataEntry getVpnInterfaceOpDataEntry(String intfName, String vpnName, AdjacenciesOp aug,
-                                                       Uint64 dpnId, long lportTag,
-                                                       String gwMac) {
+                                                              Uint64 dpnId, long lportTag,
+                                                              String gwMac, String gwIp) {
         return new VpnInterfaceOpDataEntryBuilder().withKey(new VpnInterfaceOpDataEntryKey(intfName, vpnName))
-            .setDpnId(dpnId).addAugmentation(AdjacenciesOp.class, aug)
-                .setLportTag(lportTag).setGatewayMacAddress(gwMac).build();
+                .setDpnId(dpnId).addAugmentation(AdjacenciesOp.class, aug)
+                .setLportTag(lportTag).setGatewayMacAddress(gwMac).setGatewayIpAddress(gwIp).build();
     }
 
     Optional<VpnInterfaceOpDataEntry> getVpnInterfaceOpDataEntry(String vpnInterfaceName, String vpnName) {
@@ -437,13 +437,19 @@ public final class VpnUtil {
     }
 
     @NonNull
+    @SuppressWarnings("checkstyle:IllegalCatch")
     List<VpnInstanceOpDataEntry> getAllVpnInstanceOpData() {
-        InstanceIdentifier<VpnInstanceOpData> id = InstanceIdentifier.builder(VpnInstanceOpData.class).build();
-        Optional<VpnInstanceOpData> vpnInstanceOpDataOptional = read(LogicalDatastoreType.OPERATIONAL, id);
-        return
-            vpnInstanceOpDataOptional.isPresent() && vpnInstanceOpDataOptional.get().getVpnInstanceOpDataEntry() != null
-                ? vpnInstanceOpDataOptional.get().getVpnInstanceOpDataEntry()
-                : emptyList();
+        try {
+            InstanceIdentifier<VpnInstanceOpData> id = InstanceIdentifier.builder(VpnInstanceOpData.class).build();
+            Optional<VpnInstanceOpData> vpnInstanceOpDataOptional = read(LogicalDatastoreType.OPERATIONAL, id);
+            return
+                    vpnInstanceOpDataOptional.isPresent() && vpnInstanceOpDataOptional.get()
+                            .getVpnInstanceOpDataEntry() != null ? vpnInstanceOpDataOptional.get()
+                            .getVpnInstanceOpDataEntry() : emptyList();
+        } catch (Exception e) {
+            LOG.error("getAllVpnInstanceOpData: Could not retrieve all vpn instance op data subtree...", e);
+            return emptyList();
+        }
     }
 
     @NonNull
@@ -1757,17 +1763,30 @@ public final class VpnUtil {
         return isVpnPendingDelete;
     }
 
+    @SuppressWarnings("checkstyle:IllegalCatch")
     public List<VpnInstanceOpDataEntry> getVpnsImportingMyRoute(final String vpnName) {
         List<VpnInstanceOpDataEntry> vpnsToImportRoute = new ArrayList<>();
+        final VpnInstanceOpDataEntry vpnInstanceOpDataEntry;
         final String vpnRd = getVpnRd(vpnName);
         if (vpnRd == null) {
             LOG.error("getVpnsImportingMyRoute: vpn {} not present in config DS.", vpnName);
             return vpnsToImportRoute;
         }
-        final VpnInstanceOpDataEntry vpnInstanceOpDataEntry = getVpnInstanceOpData(vpnRd);
-        if (vpnInstanceOpDataEntry == null) {
-            LOG.error("getVpnsImportingMyRoute: Could not retrieve vpn instance op data for {}"
-                    + " to check for vpns importing the routes", vpnName);
+        if (vpnRd.equals(vpnName)) {
+            LOG.error("getVpnsImportingMyRoute: Internal vpn {} do not export/import routes", vpnName);
+            return vpnsToImportRoute;
+        }
+        try {
+            final VpnInstanceOpDataEntry opDataEntry = getVpnInstanceOpData(vpnRd);
+            if (opDataEntry == null) {
+                LOG.error("getVpnsImportingMyRoute: Could not retrieve vpn instance op data for vpn {} rd {}"
+                        + " to check for vpns importing the routes", vpnName, vpnRd);
+                return vpnsToImportRoute;
+            }
+            vpnInstanceOpDataEntry = opDataEntry;
+        } catch (Exception e) {
+            LOG.error("getVpnsImportingMyRoute: DSException when retrieving vpn instance op data for vpn {} rd {}"
+                    + " to check for vpns importing the routes", vpnName, vpnRd);
             return vpnsToImportRoute;
         }
         Predicate<VpnInstanceOpDataEntry> excludeVpn = input -> {
@@ -2247,15 +2266,15 @@ public final class VpnUtil {
         }
     }
 
-    Set<org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.af.config.vpntargets.VpnTarget>
-        getRtListForVpn(String vpnName) {
-        Set<org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.af.config.vpntargets
+    Set<org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.l3vpn.rev200204.vpn.af.config
+            .vpntargets.VpnTarget> getRtListForVpn(String vpnName) {
+        Set<org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.l3vpn.rev200204.vpn.af.config.vpntargets
                 .VpnTarget> rtList = new HashSet<>();
         InstanceIdentifier<VpnInstance> vpnInstanceId = InstanceIdentifier.builder(VpnInstances.class)
                 .child(VpnInstance.class, new VpnInstanceKey(vpnName)).build();
         Optional<VpnInstance> vpnInstanceOptional = read(LogicalDatastoreType.CONFIGURATION, vpnInstanceId);
         if (vpnInstanceOptional.isPresent()) {
-            org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.af.config.VpnTargets
+            org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.l3vpn.rev200204.vpn.af.config.VpnTargets
                     vpnTargets = vpnInstanceOptional.get().getIpv4Family().getVpnTargets();
             if (vpnTargets != null && vpnTargets.getVpnTarget() != null) {
                 rtList.addAll(vpnTargets.getVpnTarget());
@@ -2289,10 +2308,10 @@ public final class VpnUtil {
                 .child(RouteTarget.class, new RouteTargetKey(rt, rtType)).build();
     }
 
-    Set<RouteTarget> getRouteTargetSet(Set<org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815
-            .vpn.af.config.vpntargets.VpnTarget> vpnTargets) {
+    Set<RouteTarget> getRouteTargetSet(Set<org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.l3vpn
+            .rev200204.vpn.af.config.vpntargets.VpnTarget> vpnTargets) {
         Set<RouteTarget> routeTargetSet = new HashSet<>();
-        for (org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.af.config.vpntargets
+        for (org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.l3vpn.rev200204.vpn.af.config.vpntargets
                 .VpnTarget rt : vpnTargets) {
             String rtValue = rt.getVrfRTValue();
             switch (rt.getVrfRTType()) {