Fix for bug 4287 and bug 4302 52/27652/2
authorPeter Palmar <peter.palmar@pantheon.sk>
Thu, 10 Sep 2015 10:55:36 +0000 (12:55 +0200)
committerMartin Sunal <msunal@cisco.com>
Wed, 30 Sep 2015 21:17:46 +0000 (21:17 +0000)
Change-Id: I1d4d82ab4b39b92f3116db5c3bc50a188ff0b3b4
Signed-off-by: Peter Palmar <peter.palmar@pantheon.sk>
neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/NeutronNetworkAware.java
neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/NeutronPortAware.java
neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/NeutronSubnetAware.java

index 61a044a76846cb8bdf397070ce9500481a278466..a4bfad2c94a695401fe34faa3342f9a8f2826749 100644 (file)
@@ -194,8 +194,9 @@ public class NeutronNetworkAware implements INeutronNetworkAware {
         ReadWriteTransaction rwTx = dataProvider.newReadWriteTransaction();
         TenantId tenantId = new TenantId(Utils.normalizeUuid(network.getTenantID()));
         L2FloodDomainId l2FdId = new L2FloodDomainId(network.getID());
+        InstanceIdentifier<NetworkMapping> networkMappingIid = NeutronMapperIidFactory.networkMappingIid(l2FdId);
         Optional<NetworkMapping> potentionalNetworkMapping = DataStoreHelper.readFromDs(
-                LogicalDatastoreType.OPERATIONAL, NeutronMapperIidFactory.networkMappingIid(l2FdId), rwTx);
+                LogicalDatastoreType.OPERATIONAL, networkMappingIid, rwTx);
         if (!potentionalNetworkMapping.isPresent()) {
             LOG.warn("Illegal state - network-mapping {} does not exist.", l2FdId.getValue());
             rwTx.cancel();
@@ -235,7 +236,8 @@ public class NeutronNetworkAware implements INeutronNetworkAware {
             return;
         }
 
+        rwTx.delete(LogicalDatastoreType.OPERATIONAL, networkMappingIid);
+
         DataStoreHelper.submitToDs(rwTx);
     }
-
 }
index dc9e8842a8350e9f84753d03e7e1aa09ab693fcb..86fc91c845d4f7bf5336db2cada62b652240feec 100644 (file)
@@ -504,16 +504,19 @@ public class NeutronPortAware implements INeutronPortAware {
             return;
         }
 
-        EndpointKey epKey = new EndpointKey(fwCtx.getL2BridgeDomain().getId(), new MacAddress(port.getMacAddress()));
-        deleteNeutronGbpMapping(port, epKey, rwTx);
         UnregisterEndpointInput unregisterEpRpcInput = createUnregisterEndpointInput(port, fwCtx);
+        boolean isEndpointUnregistered = false;
         try {
-            RpcResult<Void> rpcResult = epService.unregisterEndpoint(unregisterEpRpcInput).get();
-            if (!rpcResult.isSuccessful()) {
-                LOG.warn("Illegal state - RPC unregisterEndpoint failed. Input of RPC: {}", unregisterEpRpcInput);
-            }
+            isEndpointUnregistered = epService.unregisterEndpoint(unregisterEpRpcInput).get().isSuccessful();
         } catch (InterruptedException | ExecutionException e) {
-            LOG.error("addPort - RPC invocation failed.", e);
+            LOG.error("unregisterEndpoint - RPC invocation failed.", e);
+        }
+        if (isEndpointUnregistered) {
+            EndpointKey epKey = new EndpointKey(fwCtx.getL2BridgeDomain().getId(), new MacAddress(port.getMacAddress()));
+            deleteNeutronGbpMapping(port, epKey, rwTx);
+            DataStoreHelper.submitToDs(rwTx);
+        } else {
+            LOG.warn("Illegal state - RPC unregisterEndpoint failed. Input of RPC: {}", unregisterEpRpcInput);
             rwTx.cancel();
         }
     }
index 0e5cffd3bc8ba11c442d6172031c80a3e4ab5f4c..9793efea337757f24a549eebc36364d22e2132c2 100644 (file)
@@ -68,13 +68,12 @@ public class NeutronSubnetAware implements INeutronSubnetAware {
         Subnet subnet = createSubnet(neutronSubnet);
         rwTx.put(LogicalDatastoreType.CONFIGURATION, IidFactory.subnetIid(tenantId, subnetId), subnet, true);
         DataStoreHelper.submitToDs(rwTx);
-        rwTx = dataProvider.newReadWriteTransaction();
-
-        L2FloodDomainId l2FdId = new L2FloodDomainId(subnet.getParent().getValue());
-        ForwardingCtx fwCtx = MappingUtils.createForwardingContext(tenantId, l2FdId, rwTx);
 
+        rwTx = dataProvider.newReadWriteTransaction();
         if (isExternalNetwork(subnet.getParent(), rwTx)) {
             LOG.trace("neutronSubnetCreated - adding L3 Endpoint");
+            L2FloodDomainId l2FdId = new L2FloodDomainId(subnet.getParent().getValue());
+            ForwardingCtx fwCtx = MappingUtils.createForwardingContext(tenantId, l2FdId, rwTx);
             IpAddress defaultGateway = Utils.createIpAddress(neutronSubnet.getGatewayIP());
             //Create L3Endpoint for defaultGateway and write to externalGateways to L3Endpoints in neutron-gbp datastore
             NetworkDomainId containment = new NetworkDomainId(neutronSubnet.getID());