Using Table Ids from NwConstants.java
[netvirt.git] / vpnservice / natservice / natservice-impl / src / main / java / org / opendaylight / netvirt / natservice / internal / ExternalNetworksChangeListener.java
index 74cef73863be022e58fc0772358e09a1eb24cc40..acf9e5fd702087baa6c05cd9cccee11ec0049742 100644 (file)
@@ -15,6 +15,7 @@ import org.opendaylight.controller.md.sal.binding.api.DataChangeListener;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
 import org.opendaylight.genius.datastoreutils.AsyncDataTreeChangeListenerBase;\r
 import org.opendaylight.genius.mdsalutil.MDSALUtil;\r
+import org.opendaylight.genius.mdsalutil.NwConstants;\r
 import org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager;\r
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rpcs.rev160406.GetDpidFromInterfaceInput;\r
@@ -243,11 +244,15 @@ public class ExternalNetworksChangeListener extends AsyncDataTreeChangeListenerB
 \r
             BigInteger dpnId = new BigInteger("0");\r
             InstanceIdentifier<RouterToNaptSwitch> routerToNaptSwitch = NatUtil.buildNaptSwitchRouterIdentifier(routerId.getValue());\r
-            Optional<RouterToNaptSwitch> rtrToNapt = MDSALUtil.read(dataBroker, LogicalDatastoreType.OPERATIONAL, routerToNaptSwitch );\r
+            Optional<RouterToNaptSwitch> rtrToNapt = MDSALUtil.read(dataBroker, LogicalDatastoreType.CONFIGURATION, routerToNaptSwitch );\r
             if(rtrToNapt.isPresent()) {\r
                 dpnId = rtrToNapt.get().getPrimarySwitchId();\r
             }\r
             LOG.debug("NAT Service : got primarySwitch as dpnId{} ", dpnId);\r
+            if (dpnId == null || dpnId.equals(BigInteger.ZERO)) {\r
+                LOG.debug("NAT Service : primary napt Switch not found for router {} in associateExternalNetworkWithVPN", routerId);\r
+                return;\r
+            }\r
 \r
             Long routerIdentifier = NatUtil.getVpnId(dataBroker, routerId.getValue());\r
             InstanceIdentifierBuilder<org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111.intext.ip.map.IpMapping> idBuilder =\r
@@ -260,7 +265,7 @@ public class ExternalNetworksChangeListener extends AsyncDataTreeChangeListenerB
                       String externalIp = ipMap.getExternalIp();\r
                       LOG.debug("NAT Service : got externalIp as {}", externalIp);\r
                       LOG.debug("NAT Service : About to call advToBgpAndInstallFibAndTsFlows for dpnId {}, vpnName {} and externalIp {}", dpnId, vpnName, externalIp);\r
-                      externalRouterListener.advToBgpAndInstallFibAndTsFlows(dpnId, NatConstants.INBOUND_NAPT_TABLE, vpnName, NatUtil.getVpnId(dataBroker, routerId.getValue()), externalIp, vpnService, fibService, bgpManager, dataBroker, LOG);\r
+                      externalRouterListener.advToBgpAndInstallFibAndTsFlows(dpnId, NwConstants.INBOUND_NAPT_TABLE, vpnName, NatUtil.getVpnId(dataBroker, routerId.getValue()), externalIp, vpnService, fibService, bgpManager, dataBroker, LOG);\r
                   }\r
             } else {\r
                 LOG.warn("NAT Service : No ipMapping present fot the routerId {}", routerId);\r