Modify the second virtualNetworkMapping method in VNMappingUnit. 87/31887/1
authorFengkai Li <lifengkai@huawei.com>
Sat, 26 Dec 2015 06:14:33 +0000 (14:14 +0800)
committerFengkai Li <lifengkai@huawei.com>
Sat, 26 Dec 2015 06:17:52 +0000 (14:17 +0800)
And add some log in PNResourcesTracker.

Change-Id: Ia6c7aa76ec8f1988815616af6d388a4f69e2db5c
Signed-off-by: Fengkai Li <lifengkai@huawei.com>
nemo-impl/src/main/java/org/opendaylight/nemo/intent/computation/PNResourcesTracker.java
nemo-impl/src/main/java/org/opendaylight/nemo/intent/computation/VNMappingUnit.java

index 3308797b9808d728a8d401366b1928ab4af0a62f..566f4efe6d519a243d1311dd3a9655845eda1418 100644 (file)
@@ -129,6 +129,9 @@ public class PNResourcesTracker {
             if (physicalResources.contains(resourceId)) {\r
                 physicalResourceMap.remove(userId);\r
                 try {\r
+                    log.info("Physical network changed and affected the virtual network of " +\r
+                            "user {}, start remapping.", userId.getValue());\r
+\r
                     intentResolver.resolveIntent(userId);\r
                 } catch (Exception e) {\r
                     e.printStackTrace();\r
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