X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=nemo-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fnemo%2Fintent%2Fcomputation%2FVNMappingUnit.java;h=bad4d7d2d13f2ca3491efbf91f76fd499a50f86f;hb=cf9670255dfab1dc71c97277ddadf078a898a5c1;hp=7413a49bb3525c3badb09798a8b132de3183056c;hpb=919b8abb1e2b54cc7818e489e197f97e3c77d93c;p=nemo.git diff --git a/nemo-impl/src/main/java/org/opendaylight/nemo/intent/computation/VNMappingUnit.java b/nemo-impl/src/main/java/org/opendaylight/nemo/intent/computation/VNMappingUnit.java index 7413a49..bad4d7d 100644 --- a/nemo-impl/src/main/java/org/opendaylight/nemo/intent/computation/VNMappingUnit.java +++ b/nemo-impl/src/main/java/org/opendaylight/nemo/intent/computation/VNMappingUnit.java @@ -247,6 +247,7 @@ public class VNMappingUnit implements AutoCloseable { public void virtualNetworkMapping(VirtualNetwork virtualNetwork, List unmappedVirtualLinks, UserVnPnMapping userVnPnMapping, List physicalPaths) throws VNMappingException { + UserId userId = virtualNetwork.getUserId(); List virtualLinks = virtualNetwork.getVirtualLinks().getVirtualLink(); List vnPnMappingResults = userVnPnMapping.getVnPnMappingResult(); PhysicalPath physicalPath; @@ -258,11 +259,17 @@ public class VNMappingUnit implements AutoCloseable { physicalPath = virtualLinkMapping(virtualNetwork.getNetworkId(), virtualLink, userVnPnMapping); if ( null == physicalPath ) { + // If mapping failed, reset the user physical resources. + pnResourcesTracker.resetResource(userId); + throw new VNMappingException("Failed mapping for the virtual link " + virtualLink.getLinkId().getValue() + " in the virtual network " + virtualNetwork.getNetworkId().getValue()); } + // Keep physical resource. + pnResourcesTracker.addPhysicalPath(userId, physicalPath); + physicalPaths.add(physicalPath); newVirtualLink = new VirtualLinkBuilder(virtualLink)