Modify the second virtualNetworkMapping method in VNMappingUnit.
[nemo.git] / nemo-impl / src / main / java / org / opendaylight / nemo / intent / computation / VNMappingUnit.java
index 7413a49bb3525c3badb09798a8b132de3183056c..bad4d7d2d13f2ca3491efbf91f76fd499a50f86f 100644 (file)
@@ -247,6 +247,7 @@ public class VNMappingUnit implements AutoCloseable {
     public void virtualNetworkMapping(VirtualNetwork virtualNetwork, List<VirtualLink> unmappedVirtualLinks,\r
                                       UserVnPnMapping userVnPnMapping, List<PhysicalPath> physicalPaths)\r
             throws VNMappingException {\r
+        UserId userId = virtualNetwork.getUserId();\r
         List<VirtualLink> virtualLinks = virtualNetwork.getVirtualLinks().getVirtualLink();\r
         List<VnPnMappingResult> vnPnMappingResults = userVnPnMapping.getVnPnMappingResult();\r
         PhysicalPath physicalPath;\r
@@ -258,11 +259,17 @@ public class VNMappingUnit implements AutoCloseable {
             physicalPath = virtualLinkMapping(virtualNetwork.getNetworkId(), virtualLink, userVnPnMapping);\r
 \r
             if ( null == physicalPath ) {\r
+                // If mapping failed, reset the user physical resources.\r
+                pnResourcesTracker.resetResource(userId);\r
+\r
                 throw new VNMappingException("Failed mapping for the virtual link " +\r
                         virtualLink.getLinkId().getValue() + " in the virtual network " +\r
                         virtualNetwork.getNetworkId().getValue());\r
             }\r
 \r
+            // Keep physical resource.\r
+            pnResourcesTracker.addPhysicalPath(userId, physicalPath);\r
+\r
             physicalPaths.add(physicalPath);\r
 \r
             newVirtualLink = new VirtualLinkBuilder(virtualLink)\r