List<VirtualNode> virtualNodes = virtualNetwork.getVirtualNodes().getVirtualNode();\r
List<IntentVnMappingResult> intentVnMappingResults = userIntentVnMapping.getIntentVnMappingResult();\r
\r
- VirtualNode virtualNode = ActionResolverUtils\r
+ VirtualNode sourceVirtualNode = ActionResolverUtils\r
.getSourceVirtualRouterOfFlow(virtualNodes, flow, nodes, intentVnMappingResults);\r
\r
- if ( null == virtualNode ) {\r
+ if ( null == sourceVirtualNode ) {\r
throw new IntentResolutionException("Can not get the source virtual node " +\r
"of the flow " + flow.getFlowId().getValue() + ".");\r
}\r
\r
+ VirtualNode destinationVirtualNode = ActionResolverUtils\r
+ .getDestinationVirtualRouterOfFlow(virtualNodes, flow, nodes, intentVnMappingResults);\r
+\r
+ if ( null == destinationVirtualNode ) {\r
+ throw new IntentResolutionException("Can not get the destination virtual node " +\r
+ "of the flow " + flow.getFlowId().getValue() + ".");\r
+ }\r
+\r
+ VNComputationUnit vnComputationUnit = vnComputationUnits.get(user.getUserId());\r
+\r
+ if ( null == vnComputationUnit ) {\r
+ throw new IntentResolutionException("Can not get the virtual network computation " +\r
+ "unit for the user " + user.getUserId().getValue() + ".");\r
+ }\r
+\r
+ VirtualPath virtualPath = vnComputationUnit\r
+ .computePath(sourceVirtualNode.getNodeId(), destinationVirtualNode.getNodeId());\r
+\r
+ if ( null == virtualPath || virtualPath.getVirtualLink().isEmpty() ) {\r
+ throw new IntentResolutionException("Can not compute an available virtual path in " +\r
+ "the virtual network for the flow " + flow.getFlowId().getValue() + ".");\r
+ }\r
+\r
+ virtualNetwork.getVirtualPaths().getVirtualPath().add(virtualPath);\r
+\r
List<VirtualResource> virtualResources = new ArrayList<VirtualResource>(1);\r
\r
VirtualResource virtualResource = new VirtualResourceBuilder()\r
.setVirtualResourceId(new VirtualResourceId(UUID.randomUUID().toString()))\r
- .setVirtualResourceType(VirtualResource.VirtualResourceType.Vnode)\r
- .setVirtualResourceEntityId(new VirtualResourceEntityId(virtualNode.getNodeId().getValue()))\r
+ .setVirtualResourceType(VirtualResource.VirtualResourceType.Vpath)\r
+ .setVirtualResourceEntityId(new VirtualResourceEntityId(virtualPath.getPathId().getValue()))\r
.setOrder(0L)\r
.build();\r
virtualResources.add(virtualResource);\r