Adding nemo engine.
[nemo.git] / nemo-impl / src / main / java / org / opendaylight / nemo / intent / ConnectionMapper.java
1 /*\r
2  * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
3  *\r
4  * This program and the accompanying materials are made available under the\r
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
6  * and is available at http://www.eclipse.org/legal/epl-v10.html\r
7  */\r
8 \r
9 package org.opendaylight.nemo.intent;\r
10 \r
11 import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
12 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.VirtualNetwork;\r
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.links.VirtualLink;\r
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.links.VirtualLinkBuilder;\r
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.nodes.VirtualNode;\r
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.VirtualPort;\r
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.VirtualPortBuilder;\r
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.intent.vn.mapping.results.UserIntentVnMapping;\r
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.intent.vn.mapping.results.user.intent.vn.mapping.IntentVnMappingResult;\r
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.intent.vn.mapping.results.user.intent.vn.mapping.IntentVnMappingResultBuilder;\r
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.intent.vn.mapping.results.user.intent.vn.mapping.intent.vn.mapping.result.VirtualResource;\r
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.intent.vn.mapping.results.user.intent.vn.mapping.intent.vn.mapping.result.VirtualResourceBuilder;\r
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.*;\r
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.*;\r
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Connection;\r
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node;\r
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;\r
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.Property;\r
29 import org.slf4j.Logger;\r
30 import org.slf4j.LoggerFactory;\r
31 \r
32 import java.util.ArrayList;\r
33 import java.util.List;\r
34 import java.util.UUID;\r
35 \r
36 /**\r
37  * Resolve the user's connection intent. Create the virtual link according\r
38  * to the connection if necessary, and then map the created virtual link\r
39  * into the physical network. Finally, store these intent mapping results\r
40  * into the data store.\r
41  *\r
42  * @author Zhigang Ji\r
43  */\r
44 public class ConnectionMapper {\r
45     private static final Logger LOG = LoggerFactory.getLogger(ConnectionMapper.class);\r
46 \r
47     private final DataBroker dataBroker;\r
48 \r
49     /**\r
50      * The node mapper to resolve the user's node intent.\r
51      */\r
52     private NodeMapper nodeMapper;\r
53 \r
54     public ConnectionMapper(DataBroker dataBroker, NodeMapper nodeMapper) {\r
55         super();\r
56 \r
57         this.dataBroker = dataBroker;\r
58         this.nodeMapper = nodeMapper;\r
59 \r
60         LOG.debug("Initialized the renderer common connection mapper.");\r
61 \r
62         return;\r
63     }\r
64 \r
65     /**\r
66      * Resolve the user's connection intent, perform the intent mapping\r
67      * if necessary, and store the intent mapping results into data store.\r
68      *\r
69      * @param user The user for the connection.\r
70      * @param connection The connection to be resolved.\r
71      * @param virtualNetwork The virtual network for the user.\r
72      * @param userIntentVnMapping The intent-vn mapping for the user.\r
73      */\r
74     protected void resolveConnection(User user, Connection connection,\r
75                                      VirtualNetwork virtualNetwork,\r
76                                      UserIntentVnMapping userIntentVnMapping)\r
77             throws IntentResolutionException {\r
78         ConnectionType connectionType = connection.getConnectionType();\r
79 \r
80         if ( connectionType.equals(new ConnectionType("p2p")) ) {\r
81             resolveP2PConnection(user, connection, virtualNetwork, userIntentVnMapping, false, true, true);\r
82 \r
83             return;\r
84         }\r
85 \r
86         if ( connectionType.equals(new ConnectionType("p2mp")) ) {\r
87             resolveP2MPConnection(user, connection, virtualNetwork, userIntentVnMapping);\r
88 \r
89             return;\r
90         }\r
91 \r
92         if ( connectionType.equals(new ConnectionType("mesh")) ) {\r
93             resolveMeshConnection(user, connection, virtualNetwork, userIntentVnMapping);\r
94 \r
95             return;\r
96         }\r
97 \r
98         throw new IntentResolutionException("Unknown connection type.");\r
99 \r
100 //        return;\r
101     }\r
102 \r
103     /**\r
104      * TODO\r
105      *\r
106      * @param user TODO\r
107      * @param connection TODO\r
108      * @param virtualNetwork TODO\r
109      * @param userIntentVnMapping TODO\r
110      * @param tempConnection TODO\r
111      * @param resolvingEndNode1 TODO\r
112      * @param resolvingEndNode2 TODO\r
113      * @return TODO\r
114      */\r
115     private List<VirtualLink> resolveP2PConnection(User user, Connection connection,\r
116                                                    VirtualNetwork virtualNetwork,\r
117                                                    UserIntentVnMapping userIntentVnMapping,\r
118                                                    boolean tempConnection,\r
119                                                    boolean resolvingEndNode1,\r
120                                                    boolean resolvingEndNode2)\r
121             throws IntentResolutionException {\r
122         List<Node> nodes = user.getObjects().getNode();\r
123         NodeId nodeId = connection.getEndNode().get(0).getNodeId();\r
124         Node endNode1 = IntentResolverUtils.getNode(nodes, nodeId);\r
125 \r
126         if ( null == endNode1 ) {\r
127             throw new IntentResolutionException("The end-node " + nodeId.getValue() +\r
128                     " of the connection " + connection.getConnectionId().getValue() +\r
129                     " does not exist.");\r
130         }\r
131 \r
132         nodeId = connection.getEndNode().get(1).getNodeId();\r
133         Node endNode2 = IntentResolverUtils.getNode(nodes, nodeId);\r
134 \r
135         if ( null == endNode2 ) {\r
136             throw new IntentResolutionException("The end-node " + nodeId.getValue() +\r
137                     " of the connection " + connection.getConnectionId().getValue() +\r
138                     " does not exist.");\r
139         }\r
140 \r
141         NodeType hostNodeType = new NodeType("host");\r
142         NodeType layer2GroupNodeType = new NodeType("l2-group");\r
143         NodeType layer3GroupNodeType = new NodeType("l3-group");\r
144         NodeType externalGroupNodeType = new NodeType("ext-group");\r
145         NodeType serviceChainGroupNodeType = new NodeType("chain-group");\r
146         NodeType firewallNodeType = new NodeType("fw");\r
147         NodeType loadbalancerNodeType = new NodeType("lb");\r
148         NodeType cacheNodeType = new NodeType("cache");\r
149 \r
150         if ( endNode1.getNodeType().equals(hostNodeType) ) {\r
151             throw new IntentResolutionException("The end-node " + endNode1.getNodeId().getValue() +\r
152                     " of the connection " + connection.getConnectionId().getValue() +\r
153                     " can not be host type.");\r
154         }\r
155 \r
156         if ( endNode1.getNodeType().equals(layer2GroupNodeType) ) {\r
157             if ( endNode2.getNodeType().equals(hostNodeType) ) {\r
158                 throw new IntentResolutionException("The end-node " + endNode2.getNodeId().getValue() +\r
159                         " of the connection " + connection.getConnectionId().getValue() +\r
160                         " can not be host type.");\r
161             }\r
162 \r
163             if ( endNode2.getNodeType().equals(layer2GroupNodeType) ) {\r
164                 return resolveP2PConnectionBetweenLayer2Groups(user, connection,\r
165                         endNode1, endNode2, virtualNetwork, userIntentVnMapping,\r
166                         tempConnection, resolvingEndNode1, resolvingEndNode2);\r
167             }\r
168 \r
169             if ( endNode2.getNodeType().equals(layer3GroupNodeType) ) {\r
170                 return resolveP2PConnectionBetweenLayer2AndLayer3Groups(user, connection,\r
171                         endNode1, endNode2, virtualNetwork, userIntentVnMapping,\r
172                         tempConnection, resolvingEndNode1, resolvingEndNode2);\r
173             }\r
174 \r
175             if ( endNode2.getNodeType().equals(externalGroupNodeType) ) {\r
176                 if ( IntentResolverUtils.checkExternalLayer3Group(endNode2) ) {\r
177                     return resolveP2PConnectionBetweenLayer2AndExternalLayer3Groups(user, connection,\r
178                             endNode1, endNode2, virtualNetwork, userIntentVnMapping,\r
179                             tempConnection, resolvingEndNode1, resolvingEndNode2);\r
180                 } else {\r
181                     return resolveP2PConnectionBetweenLayer2AndExternalLayer2Groups(user, connection,\r
182                             endNode1, endNode2, virtualNetwork, userIntentVnMapping,\r
183                             tempConnection, resolvingEndNode1, resolvingEndNode2);\r
184                 }\r
185             }\r
186 \r
187             if ( endNode2.getNodeType().equals(serviceChainGroupNodeType) ) {\r
188                 return null;\r
189             }\r
190 \r
191             if ( endNode2.getNodeType().equals(firewallNodeType) ) {\r
192                 throw new IntentResolutionException("The end-node " + endNode2.getNodeId().getValue() +\r
193                         " of the connection " + connection.getConnectionId().getValue() +\r
194                         " can not be fw type.");\r
195             }\r
196 \r
197             if ( endNode2.getNodeType().equals(loadbalancerNodeType) ) {\r
198                 throw new IntentResolutionException("The end-node " + endNode2.getNodeId().getValue() +\r
199                         " of the connection " + connection.getConnectionId().getValue() +\r
200                         " can not be lb type.");\r
201             }\r
202 \r
203             if ( endNode2.getNodeType().equals(cacheNodeType) ) {\r
204                 throw new IntentResolutionException("The end-node " + endNode2.getNodeId().getValue() +\r
205                         " of the connection " + connection.getConnectionId().getValue() +\r
206                         " can not be cache type.");\r
207             }\r
208         }\r
209 \r
210         if ( endNode1.getNodeType().equals(layer3GroupNodeType) ) {\r
211             if ( endNode2.getNodeType().equals(hostNodeType) ) {\r
212                 throw new IntentResolutionException("The end-node " + endNode2.getNodeId().getValue() +\r
213                         " of the connection " + connection.getConnectionId().getValue() +\r
214                         " can not be host type.");\r
215             }\r
216 \r
217             if ( endNode2.getNodeType().equals(layer2GroupNodeType) ) {\r
218                 return resolveP2PConnectionBetweenLayer2AndLayer3Groups(user, connection,\r
219                         endNode2, endNode1, virtualNetwork, userIntentVnMapping,\r
220                         tempConnection, resolvingEndNode1, resolvingEndNode2);\r
221             }\r
222 \r
223             if ( endNode2.getNodeType().equals(layer3GroupNodeType) ) {\r
224                 return resolveP2PConnectionBetweenLayer3Groups(user, connection, endNode1,\r
225                         endNode2, virtualNetwork, userIntentVnMapping,\r
226                         tempConnection, resolvingEndNode1, resolvingEndNode2);\r
227             }\r
228 \r
229             if ( endNode2.getNodeType().equals(externalGroupNodeType) ) {\r
230                 if ( IntentResolverUtils.checkExternalLayer3Group(endNode2) ) {\r
231                     return resolveP2PConnectionBetweenLayer3AndExternalLayer3Groups(user, connection,\r
232                             endNode1, endNode2, virtualNetwork, userIntentVnMapping,\r
233                             tempConnection, resolvingEndNode1, resolvingEndNode2);\r
234                 } else {\r
235                     return resolveP2PConnectionBetweenLayer3AndExternalLayer2Groups(user, connection,\r
236                             endNode1, endNode2, virtualNetwork, userIntentVnMapping,\r
237                             tempConnection, resolvingEndNode1, resolvingEndNode2);\r
238                 }\r
239             }\r
240 \r
241             if ( endNode2.getNodeType().equals(serviceChainGroupNodeType) ) {\r
242                 return null;\r
243             }\r
244 \r
245             if ( endNode2.getNodeType().equals(firewallNodeType) ) {\r
246                 throw new IntentResolutionException("The end-node " + endNode2.getNodeId().getValue() +\r
247                         " of the connection " + connection.getConnectionId().getValue() +\r
248                         " can not be fw type.");\r
249             }\r
250 \r
251             if ( endNode2.getNodeType().equals(loadbalancerNodeType) ) {\r
252                 throw new IntentResolutionException("The end-node " + endNode2.getNodeId().getValue() +\r
253                         " of the connection " + connection.getConnectionId().getValue() +\r
254                         " can not be lb type.");\r
255             }\r
256 \r
257             if ( endNode2.getNodeType().equals(cacheNodeType) ) {\r
258                 throw new IntentResolutionException("The end-node " + endNode2.getNodeId().getValue() +\r
259                         " of the connection " + connection.getConnectionId().getValue() +\r
260                         " can not be cache type.");\r
261             }\r
262         }\r
263 \r
264         if ( endNode1.getNodeType().equals(externalGroupNodeType) ) {\r
265             if ( endNode2.getNodeType().equals(hostNodeType) ) {\r
266                 throw new IntentResolutionException("The end-node " + endNode2.getNodeId().getValue() +\r
267                         " of the connection " + connection.getConnectionId().getValue() +\r
268                         " can not be host type.");\r
269             }\r
270 \r
271             if ( endNode2.getNodeType().equals(serviceChainGroupNodeType) ) {\r
272                 return null;\r
273             }\r
274 \r
275             if ( endNode2.getNodeType().equals(firewallNodeType) ) {\r
276                 throw new IntentResolutionException("The end-node " + endNode2.getNodeId().getValue() +\r
277                         " of the connection " + connection.getConnectionId().getValue() +\r
278                         " can not be fw type.");\r
279             }\r
280 \r
281             if ( endNode2.getNodeType().equals(loadbalancerNodeType) ) {\r
282                 throw new IntentResolutionException("The end-node " + endNode2.getNodeId().getValue() +\r
283                         " of the connection " + connection.getConnectionId().getValue() +\r
284                         " can not be lb type.");\r
285             }\r
286 \r
287             if ( endNode2.getNodeType().equals(cacheNodeType) ) {\r
288                 throw new IntentResolutionException("The end-node " + endNode2.getNodeId().getValue() +\r
289                         " of the connection " + connection.getConnectionId().getValue() +\r
290                         " can not be cache type.");\r
291             }\r
292 \r
293             if ( IntentResolverUtils.checkExternalLayer3Group(endNode1) ) {\r
294                 if ( endNode2.getNodeType().equals(layer2GroupNodeType) ) {\r
295                     return resolveP2PConnectionBetweenLayer2AndExternalLayer3Groups(user, connection,\r
296                             endNode2, endNode1, virtualNetwork, userIntentVnMapping,\r
297                             tempConnection, resolvingEndNode1, resolvingEndNode2);\r
298                 }\r
299 \r
300                 if ( endNode2.getNodeType().equals(layer3GroupNodeType) ) {\r
301                     return resolveP2PConnectionBetweenLayer3AndExternalLayer3Groups(user, connection,\r
302                             endNode2, endNode1, virtualNetwork, userIntentVnMapping,\r
303                             tempConnection, resolvingEndNode1, resolvingEndNode2);\r
304                 }\r
305 \r
306                 if ( endNode2.getNodeType().equals(externalGroupNodeType) ) {\r
307                     if ( IntentResolverUtils.checkExternalLayer3Group(endNode2) ) {\r
308                         return resolveP2PConnectionBetweenExternalLayer3Groups(user, connection,\r
309                                 endNode1, endNode2, virtualNetwork, userIntentVnMapping,\r
310                                 tempConnection, resolvingEndNode1, resolvingEndNode2);\r
311                     } else {\r
312                         return resolveP2PConnectionBetweenExternalLayer2AndLayer3Groups(user, connection,\r
313                                 endNode2, endNode1, virtualNetwork, userIntentVnMapping,\r
314                                 tempConnection, resolvingEndNode1, resolvingEndNode2);\r
315                     }\r
316                 }\r
317             } else {\r
318                 if ( endNode2.getNodeType().equals(layer2GroupNodeType) ) {\r
319                     return resolveP2PConnectionBetweenLayer2AndExternalLayer2Groups(user, connection,\r
320                             endNode2, endNode1, virtualNetwork, userIntentVnMapping,\r
321                             tempConnection, resolvingEndNode1, resolvingEndNode2);\r
322                 }\r
323 \r
324                 if ( endNode2.getNodeType().equals(layer3GroupNodeType) ) {\r
325                     return resolveP2PConnectionBetweenLayer3AndExternalLayer2Groups(user, connection,\r
326                             endNode2, endNode1, virtualNetwork, userIntentVnMapping,\r
327                             tempConnection, resolvingEndNode1, resolvingEndNode2);\r
328                 }\r
329 \r
330                 if ( endNode2.getNodeType().equals(externalGroupNodeType) ) {\r
331                     if ( IntentResolverUtils.checkExternalLayer3Group(endNode2) ) {\r
332                         return resolveP2PConnectionBetweenExternalLayer2AndLayer3Groups(user, connection,\r
333                                 endNode1, endNode2, virtualNetwork, userIntentVnMapping,\r
334                                 tempConnection, resolvingEndNode1, resolvingEndNode2);\r
335                     } else {\r
336                         return resolveP2PConnectionBetweenExternalLayer2Groups(user, connection,\r
337                                 endNode1, endNode2, virtualNetwork, userIntentVnMapping,\r
338                                 tempConnection, resolvingEndNode1, resolvingEndNode2);\r
339                     }\r
340                 }\r
341             }\r
342         }\r
343 \r
344         if ( endNode1.getNodeType().equals(serviceChainGroupNodeType) ) {\r
345             return null;\r
346         }\r
347 \r
348         if ( endNode1.getNodeType().equals(firewallNodeType) ) {\r
349             throw new IntentResolutionException("The end-node " + endNode1.getNodeId().getValue() +\r
350                     " of the connection " + connection.getConnectionId().getValue() +\r
351                     " can not be fw type.");\r
352         }\r
353 \r
354         if ( endNode1.getNodeType().equals(loadbalancerNodeType) ) {\r
355             throw new IntentResolutionException("The end-node " + endNode1.getNodeId().getValue() +\r
356                     " of the connection " + connection.getConnectionId().getValue() +\r
357                     " can not be lb type.");\r
358         }\r
359 \r
360         if ( endNode1.getNodeType().equals(cacheNodeType) ) {\r
361             throw new IntentResolutionException("The end-node " + endNode1.getNodeId().getValue() +\r
362                     " of the connection " + connection.getConnectionId().getValue() +\r
363                     " can not be cache type.");\r
364         }\r
365 \r
366         throw new IntentResolutionException("Unknown node type for the end-nodes of the connection " +\r
367                 connection.getConnectionId().getValue() + ".");\r
368 \r
369 //        return null;\r
370     }\r
371 \r
372     /**\r
373      * TODO\r
374      *\r
375      * @param user TODO\r
376      * @param connection TODO\r
377      * @param virtualNetwork TODO\r
378      * @param userIntentVnMapping TODO\r
379      */\r
380     private void resolveP2MPConnection(User user, Connection connection,\r
381                                        VirtualNetwork virtualNetwork,\r
382                                        UserIntentVnMapping userIntentVnMapping)\r
383             throws IntentResolutionException {\r
384         // TODO: 1、注意root是external layer2 group的情况,只能映射一次。\r
385 \r
386         return;\r
387     }\r
388 \r
389     /**\r
390      * TODO\r
391      *\r
392      * @param user TODO\r
393      * @param connection TODO\r
394      * @param virtualNetwork TODO\r
395      * @param userIntentVnMapping TODO\r
396      */\r
397     private void resolveMeshConnection(User user, Connection connection,\r
398                                        VirtualNetwork virtualNetwork,\r
399                                        UserIntentVnMapping userIntentVnMapping)\r
400             throws IntentResolutionException {\r
401         // TODO: 1、注意各个end node是external layer2 group的情况,只能映射一次。\r
402 \r
403         return;\r
404     }\r
405 \r
406     /**\r
407      * TODO\r
408      *\r
409      * @param user TODO\r
410      * @param connection TODO\r
411      * @param endNode1 TODO\r
412      * @param endNode2 TODO\r
413      * @param virtualNetwork TODO\r
414      * @param userIntentVnMapping TODO\r
415      * @param tempConnection TODO\r
416      * @param resolvingEndNode1 TODO\r
417      * @param resolvingEndNode2 TODO\r
418      * @return TODO\r
419      */\r
420     private List<VirtualLink> resolveP2PConnectionBetweenLayer2Groups(User user,\r
421                                                                       Connection connection,\r
422                                                                       Node endNode1,\r
423                                                                       Node endNode2,\r
424                                                                       VirtualNetwork virtualNetwork,\r
425                                                                       UserIntentVnMapping userIntentVnMapping,\r
426                                                                       boolean tempConnection,\r
427                                                                       boolean resolvingEndNode1,\r
428                                                                       boolean resolvingEndNode2)\r
429             throws IntentResolutionException {\r
430         List<IntentVnMappingResult> intentVnMappingResults = userIntentVnMapping.getIntentVnMappingResult();\r
431         IntentVnMappingResult intentVnMappingResult1 = IntentResolverUtils\r
432                 .getIntentVnMappingResult(intentVnMappingResults, new IntentId(endNode1.getNodeId().getValue()));\r
433 \r
434         if ( null == intentVnMappingResult1 ) {\r
435             throw new IntentResolutionException("Can not get the intent-vn mapping result for " +\r
436                     "the node " + endNode1.getNodeId().getValue() + ".");\r
437         }\r
438 \r
439         IntentVnMappingResult intentVnMappingResult2 = IntentResolverUtils\r
440                 .getIntentVnMappingResult(intentVnMappingResults, new IntentId(endNode2.getNodeId().getValue()));\r
441 \r
442         if ( null == intentVnMappingResult2 ) {\r
443             throw new IntentResolutionException("Can not get the intent-vn mapping result for " +\r
444                     "the node " + endNode2.getNodeId().getValue() + ".");\r
445         }\r
446 \r
447         List<VirtualNode> virtualNodes = virtualNetwork.getVirtualNodes().getVirtualNode();\r
448         VirtualNodeId virtualNodeId = new VirtualNodeId(intentVnMappingResult1.getVirtualResource().get(0)\r
449                 .getVirtualResourceEntityId().getValue());\r
450         VirtualNode virtualRouter1 = IntentResolverUtils.getVirtualNode(virtualNodes, virtualNodeId);\r
451 \r
452         if ( null == virtualRouter1 ) {\r
453             throw new IntentResolutionException("Can not get the virtual node created for " +\r
454                     "the node " + endNode1.getNodeId().getValue() + ".");\r
455         }\r
456 \r
457         virtualNodeId = new VirtualNodeId(intentVnMappingResult2.getVirtualResource().get(0)\r
458                 .getVirtualResourceEntityId().getValue());\r
459         VirtualNode virtualRouter2 = IntentResolverUtils.getVirtualNode(virtualNodes, virtualNodeId);\r
460 \r
461         if ( null == virtualRouter2 ) {\r
462             throw new IntentResolutionException("Can not get the virtual node created for " +\r
463                     "the node " + endNode2.getNodeId().getValue() + ".");\r
464         }\r
465 \r
466         Property property = IntentResolverUtils\r
467                 .getConnectionProperty(connection.getProperty(), new PropertyName("bandwidth"));\r
468         long bandwidth = 0;\r
469 \r
470         if ( null != property ) {\r
471             bandwidth = /*1024 * */property.getPropertyValues().getIntValue().get(0).getValue();\r
472         }\r
473 \r
474         VirtualPort virtualPort1 = new VirtualPortBuilder()\r
475                 .setPortId(new VirtualPortId(UUID.randomUUID().toString()))\r
476                 .setPortType(VirtualPort.PortType.Internal)\r
477                 .setBandwidth(bandwidth)\r
478                 .build();\r
479         virtualRouter1.getVirtualPort().add(virtualPort1);\r
480 \r
481         VirtualPort virtualPort2 = new VirtualPortBuilder()\r
482                 .setPortId(new VirtualPortId(UUID.randomUUID().toString()))\r
483                 .setPortType(VirtualPort.PortType.Internal)\r
484                 .setBandwidth(bandwidth)\r
485                 .build();\r
486         virtualRouter2.getVirtualPort().add(virtualPort2);\r
487 \r
488         VirtualLink virtualLink1 = new VirtualLinkBuilder()\r
489                 .setLinkId(new VirtualLinkId(UUID.randomUUID().toString()))\r
490                 .setSrcNodeId(virtualRouter1.getNodeId())\r
491                 .setSrcPortId(virtualPort1.getPortId())\r
492                 .setDestNodeId(virtualRouter2.getNodeId())\r
493                 .setDestPortId(virtualPort2.getPortId())\r
494                 .setBandwidth(bandwidth)\r
495                 .build();\r
496         VirtualLink virtualLink2 = new VirtualLinkBuilder()\r
497                 .setLinkId(new VirtualLinkId(UUID.randomUUID().toString()))\r
498                 .setSrcNodeId(virtualRouter2.getNodeId())\r
499                 .setSrcPortId(virtualPort2.getPortId())\r
500                 .setDestNodeId(virtualRouter1.getNodeId())\r
501                 .setDestPortId(virtualPort1.getPortId())\r
502                 .setBandwidth(bandwidth)\r
503                 .build();\r
504 \r
505         if ( tempConnection ) {\r
506             List<VirtualLink> virtualLinks = new ArrayList<VirtualLink>(2);\r
507 \r
508             virtualLinks.add(virtualLink1);\r
509             virtualLinks.add(virtualLink2);\r
510 \r
511             return virtualLinks;\r
512         }\r
513 \r
514         List<VirtualLink> virtualLinks = virtualNetwork.getVirtualLinks().getVirtualLink();\r
515 \r
516         virtualLinks.add(virtualLink1);\r
517         virtualLinks.add(virtualLink2);\r
518 \r
519         List<VirtualResource> virtualResources = new ArrayList<VirtualResource>(2);\r
520 \r
521         VirtualResource virtualResource = new VirtualResourceBuilder()\r
522                 .setVirtualResourceId(new VirtualResourceId(UUID.randomUUID().toString()))\r
523                 .setVirtualResourceType(VirtualResource.VirtualResourceType.Vlink)\r
524                 .setVirtualResourceEntityId(new VirtualResourceEntityId(virtualLink1.getLinkId().getValue()))\r
525                 .setOrder(0L)\r
526                 .build();\r
527         virtualResources.add(virtualResource);\r
528 \r
529         virtualResource = new VirtualResourceBuilder()\r
530                 .setVirtualResourceId(new VirtualResourceId(UUID.randomUUID().toString()))\r
531                 .setVirtualResourceType(VirtualResource.VirtualResourceType.Vlink)\r
532                 .setVirtualResourceEntityId(new VirtualResourceEntityId(virtualLink2.getLinkId().getValue()))\r
533                 .setOrder(0L)\r
534                 .build();\r
535         virtualResources.add(virtualResource);\r
536 \r
537         IntentVnMappingResult intentVnMappingResult = new IntentVnMappingResultBuilder()\r
538                 .setIntentId(new IntentId(connection.getConnectionId().getValue()))\r
539                 .setIntentType(IntentVnMappingResult.IntentType.Connection)\r
540                 .setVirtualResource(virtualResources)\r
541                 .build();\r
542 \r
543         intentVnMappingResults.add(intentVnMappingResult);\r
544 \r
545         return null;\r
546     }\r
547 \r
548     /**\r
549      * TODO\r
550      *\r
551      * @param user TODO\r
552      * @param connection TODO\r
553      * @param endNode1 TODO\r
554      * @param endNode2 TODO\r
555      * @param virtualNetwork TODO\r
556      * @param userIntentVnMapping TODO\r
557      * @param tempConnection TODO\r
558      * @param resolvingEndNode1 TODO\r
559      * @param resolvingEndNode2 TODO\r
560      * @return TODO\r
561      */\r
562     private List<VirtualLink> resolveP2PConnectionBetweenLayer2AndLayer3Groups(User user,\r
563                                                                                Connection connection,\r
564                                                                                Node endNode1,\r
565                                                                                Node endNode2,\r
566                                                                                VirtualNetwork virtualNetwork,\r
567                                                                                UserIntentVnMapping userIntentVnMapping,\r
568                                                                                boolean tempConnection,\r
569                                                                                boolean resolvingEndNode1,\r
570                                                                                boolean resolvingEndNode2)\r
571             throws IntentResolutionException {\r
572         // TODO: l2-group - l3-group: 创建l2-group的gw vrouter与l3-group的sub-nodes的gw/acc vrouters间的vlinks(vports)。\r
573 \r
574         return null;\r
575     }\r
576 \r
577     /**\r
578      * TODO\r
579      *\r
580      * @param user TODO\r
581      * @param connection TODO\r
582      * @param endNode1 TODO\r
583      * @param endNode2 TODO\r
584      * @param virtualNetwork TODO\r
585      * @param userIntentVnMapping TODO\r
586      * @param tempConnection TODO\r
587      * @param resolvingEndNode1 TODO\r
588      * @param resolvingEndNode2 TODO\r
589      * @return TODO\r
590      */\r
591     private List<VirtualLink> resolveP2PConnectionBetweenLayer2AndExternalLayer2Groups(User user,\r
592                                                                                        Connection connection,\r
593                                                                                        Node endNode1,\r
594                                                                                        Node endNode2,\r
595                                                                                        VirtualNetwork virtualNetwork,\r
596                                                                                        UserIntentVnMapping userIntentVnMapping,\r
597                                                                                        boolean tempConnection,\r
598                                                                                        boolean resolvingEndNode1,\r
599                                                                                        boolean resolvingEndNode2)\r
600             throws IntentResolutionException {\r
601         if ( resolvingEndNode2 ) {\r
602             nodeMapper.resolveExternalLayer2Group(user, endNode2, virtualNetwork, userIntentVnMapping, true);\r
603         }\r
604 \r
605         List<IntentVnMappingResult> intentVnMappingResults = userIntentVnMapping.getIntentVnMappingResult();\r
606         IntentVnMappingResult intentVnMappingResult1 = IntentResolverUtils\r
607                 .getIntentVnMappingResult(intentVnMappingResults, new IntentId(endNode1.getNodeId().getValue()));\r
608 \r
609         if ( null == intentVnMappingResult1 ) {\r
610             throw new IntentResolutionException("Can not get the intent-vn mapping result for " +\r
611                     "the node " + endNode1.getNodeId().getValue() + ".");\r
612         }\r
613 \r
614         IntentVnMappingResult intentVnMappingResult2 = IntentResolverUtils\r
615                 .getIntentVnMappingResult(intentVnMappingResults, new IntentId(endNode2.getNodeId().getValue()));\r
616 \r
617         if ( null == intentVnMappingResult2 ) {\r
618             throw new IntentResolutionException("Can not get the intent-vn mapping result for " +\r
619                     "the node " + endNode2.getNodeId().getValue() + ".");\r
620         }\r
621 \r
622         List<VirtualNode> virtualNodes = virtualNetwork.getVirtualNodes().getVirtualNode();\r
623         VirtualNodeId virtualNodeId = new VirtualNodeId(intentVnMappingResult1.getVirtualResource().get(0)\r
624                 .getVirtualResourceEntityId().getValue());\r
625         VirtualNode virtualRouter1 = IntentResolverUtils.getVirtualNode(virtualNodes, virtualNodeId);\r
626 \r
627         if ( null == virtualRouter1 ) {\r
628             throw new IntentResolutionException("Can not get the virtual node created for " +\r
629                     "the node " + endNode1.getNodeId().getValue() + ".");\r
630         }\r
631 \r
632         virtualNodeId = new VirtualNodeId(intentVnMappingResult2.getVirtualResource().get(0)\r
633                 .getParentVirtualResourceEntityId().getValue());\r
634         VirtualNode virtualRouter2 = IntentResolverUtils.getVirtualNode(virtualNodes, virtualNodeId);\r
635 \r
636         if ( null == virtualRouter2 ) {\r
637             throw new IntentResolutionException("Can not get the virtual node created for " +\r
638                     "the node " + endNode2.getNodeId().getValue() + ".");\r
639         }\r
640 \r
641         Property property = IntentResolverUtils\r
642                 .getConnectionProperty(connection.getProperty(), new PropertyName("bandwidth"));\r
643         long bandwidth = 0;\r
644 \r
645         if ( null != property ) {\r
646             bandwidth = /*1024 * */property.getPropertyValues().getIntValue().get(0).getValue();\r
647         }\r
648 \r
649         VirtualPort virtualPort1 = new VirtualPortBuilder()\r
650                 .setPortId(new VirtualPortId(UUID.randomUUID().toString()))\r
651                 .setPortType(VirtualPort.PortType.Internal)\r
652                 .setBandwidth(bandwidth)\r
653                 .build();\r
654         virtualRouter1.getVirtualPort().add(virtualPort1);\r
655 \r
656         VirtualPort virtualPort2 = new VirtualPortBuilder()\r
657                 .setPortId(new VirtualPortId(UUID.randomUUID().toString()))\r
658                 .setPortType(VirtualPort.PortType.Internal)\r
659                 .setBandwidth(bandwidth)\r
660                 .build();\r
661         virtualRouter2.getVirtualPort().add(virtualPort2);\r
662 \r
663         VirtualLink virtualLink1 = new VirtualLinkBuilder()\r
664                 .setLinkId(new VirtualLinkId(UUID.randomUUID().toString()))\r
665                 .setSrcNodeId(virtualRouter1.getNodeId())\r
666                 .setSrcPortId(virtualPort1.getPortId())\r
667                 .setDestNodeId(virtualRouter2.getNodeId())\r
668                 .setDestPortId(virtualPort2.getPortId())\r
669                 .setBandwidth(bandwidth)\r
670                 .build();\r
671         VirtualLink virtualLink2 = new VirtualLinkBuilder()\r
672                 .setLinkId(new VirtualLinkId(UUID.randomUUID().toString()))\r
673                 .setSrcNodeId(virtualRouter2.getNodeId())\r
674                 .setSrcPortId(virtualPort2.getPortId())\r
675                 .setDestNodeId(virtualRouter1.getNodeId())\r
676                 .setDestPortId(virtualPort1.getPortId())\r
677                 .setBandwidth(bandwidth)\r
678                 .build();\r
679 \r
680         if ( tempConnection ) {\r
681             List<VirtualLink> virtualLinks = new ArrayList<VirtualLink>(2);\r
682 \r
683             virtualLinks.add(virtualLink1);\r
684             virtualLinks.add(virtualLink2);\r
685 \r
686             return virtualLinks;\r
687         }\r
688 \r
689         List<VirtualLink> virtualLinks = virtualNetwork.getVirtualLinks().getVirtualLink();\r
690 \r
691         virtualLinks.add(virtualLink1);\r
692         virtualLinks.add(virtualLink2);\r
693 \r
694         List<VirtualResource> virtualResources = new ArrayList<VirtualResource>(2);\r
695 \r
696         VirtualResource virtualResource = new VirtualResourceBuilder()\r
697                 .setVirtualResourceId(new VirtualResourceId(UUID.randomUUID().toString()))\r
698                 .setVirtualResourceType(VirtualResource.VirtualResourceType.Vlink)\r
699                 .setVirtualResourceEntityId(new VirtualResourceEntityId(virtualLink1.getLinkId().getValue()))\r
700                 .setOrder(0L)\r
701                 .build();\r
702         virtualResources.add(virtualResource);\r
703 \r
704         virtualResource = new VirtualResourceBuilder()\r
705                 .setVirtualResourceId(new VirtualResourceId(UUID.randomUUID().toString()))\r
706                 .setVirtualResourceType(VirtualResource.VirtualResourceType.Vlink)\r
707                 .setVirtualResourceEntityId(new VirtualResourceEntityId(virtualLink2.getLinkId().getValue()))\r
708                 .setOrder(0L)\r
709                 .build();\r
710         virtualResources.add(virtualResource);\r
711 \r
712         IntentVnMappingResult intentVnMappingResult = new IntentVnMappingResultBuilder()\r
713                 .setIntentId(new IntentId(connection.getConnectionId().getValue()))\r
714                 .setIntentType(IntentVnMappingResult.IntentType.Connection)\r
715                 .setVirtualResource(virtualResources)\r
716                 .build();\r
717 \r
718         intentVnMappingResults.add(intentVnMappingResult);\r
719 \r
720         return null;\r
721     }\r
722 \r
723     /**\r
724      * TODO\r
725      *\r
726      * @param user TODO\r
727      * @param connection TODO\r
728      * @param endNode1 TODO\r
729      * @param endNode2 TODO\r
730      * @param virtualNetwork TODO\r
731      * @param userIntentVnMapping TODO\r
732      * @param tempConnection TODO\r
733      * @param resolvingEndNode1 TODO\r
734      * @param resolvingEndNode2 TODO\r
735      * @return TODO\r
736      */\r
737     private List<VirtualLink> resolveP2PConnectionBetweenLayer2AndExternalLayer3Groups(User user,\r
738                                                                                        Connection connection,\r
739                                                                                        Node endNode1,\r
740                                                                                        Node endNode2,\r
741                                                                                        VirtualNetwork virtualNetwork,\r
742                                                                                        UserIntentVnMapping userIntentVnMapping,\r
743                                                                                        boolean tempConnection,\r
744                                                                                        boolean resolvingEndNode1,\r
745                                                                                        boolean resolvingEndNode2)\r
746             throws IntentResolutionException {\r
747         List<IntentVnMappingResult> intentVnMappingResults = userIntentVnMapping.getIntentVnMappingResult();\r
748         IntentVnMappingResult intentVnMappingResult1 = IntentResolverUtils\r
749                 .getIntentVnMappingResult(intentVnMappingResults, new IntentId(endNode1.getNodeId().getValue()));\r
750 \r
751         if ( null == intentVnMappingResult1 ) {\r
752             throw new IntentResolutionException("Can not get the intent-vn mapping result for " +\r
753                     "the node " + endNode1.getNodeId().getValue() + ".");\r
754         }\r
755 \r
756         IntentVnMappingResult intentVnMappingResult2 = IntentResolverUtils\r
757                 .getIntentVnMappingResult(intentVnMappingResults, new IntentId(endNode2.getNodeId().getValue()));\r
758 \r
759         if ( null == intentVnMappingResult2 ) {\r
760             throw new IntentResolutionException("Can not get the intent-vn mapping result for " +\r
761                     "the node " + endNode2.getNodeId().getValue() + ".");\r
762         }\r
763 \r
764         List<VirtualNode> virtualNodes = virtualNetwork.getVirtualNodes().getVirtualNode();\r
765         VirtualNodeId virtualNodeId = new VirtualNodeId(intentVnMappingResult1.getVirtualResource().get(0)\r
766                 .getVirtualResourceEntityId().getValue());\r
767         VirtualNode virtualRouter1 = IntentResolverUtils.getVirtualNode(virtualNodes, virtualNodeId);\r
768 \r
769         if ( null == virtualRouter1 ) {\r
770             throw new IntentResolutionException("Can not get the virtual node created for " +\r
771                     "the node " + endNode1.getNodeId().getValue() + ".");\r
772         }\r
773 \r
774         virtualNodeId = new VirtualNodeId(intentVnMappingResult2.getVirtualResource().get(0)\r
775                 .getParentVirtualResourceEntityId().getValue());\r
776         VirtualNode virtualRouter2 = IntentResolverUtils.getVirtualNode(virtualNodes, virtualNodeId);\r
777 \r
778         if ( null == virtualRouter2 ) {\r
779             throw new IntentResolutionException("Can not get the virtual node created for " +\r
780                     "the node " + endNode2.getNodeId().getValue() + ".");\r
781         }\r
782 \r
783         Property property = IntentResolverUtils\r
784                 .getConnectionProperty(connection.getProperty(), new PropertyName("bandwidth"));\r
785         long bandwidth = 0;\r
786 \r
787         if ( null != property ) {\r
788             bandwidth = /*1024 * */property.getPropertyValues().getIntValue().get(0).getValue();\r
789         }\r
790 \r
791         VirtualPort virtualPort1 = new VirtualPortBuilder()\r
792                 .setPortId(new VirtualPortId(UUID.randomUUID().toString()))\r
793                 .setPortType(VirtualPort.PortType.Internal)\r
794                 .setBandwidth(bandwidth)\r
795                 .build();\r
796         virtualRouter1.getVirtualPort().add(virtualPort1);\r
797 \r
798         VirtualPort virtualPort2 = new VirtualPortBuilder()\r
799                 .setPortId(new VirtualPortId(UUID.randomUUID().toString()))\r
800                 .setPortType(VirtualPort.PortType.Internal)\r
801                 .setBandwidth(bandwidth)\r
802                 .build();\r
803         virtualRouter2.getVirtualPort().add(virtualPort2);\r
804 \r
805         VirtualLink virtualLink1 = new VirtualLinkBuilder()\r
806                 .setLinkId(new VirtualLinkId(UUID.randomUUID().toString()))\r
807                 .setSrcNodeId(virtualRouter1.getNodeId())\r
808                 .setSrcPortId(virtualPort1.getPortId())\r
809                 .setDestNodeId(virtualRouter2.getNodeId())\r
810                 .setDestPortId(virtualPort2.getPortId())\r
811                 .setBandwidth(bandwidth)\r
812                 .build();\r
813         VirtualLink virtualLink2 = new VirtualLinkBuilder()\r
814                 .setLinkId(new VirtualLinkId(UUID.randomUUID().toString()))\r
815                 .setSrcNodeId(virtualRouter2.getNodeId())\r
816                 .setSrcPortId(virtualPort2.getPortId())\r
817                 .setDestNodeId(virtualRouter1.getNodeId())\r
818                 .setDestPortId(virtualPort1.getPortId())\r
819                 .setBandwidth(bandwidth)\r
820                 .build();\r
821 \r
822         if ( tempConnection ) {\r
823             List<VirtualLink> virtualLinks = new ArrayList<VirtualLink>(2);\r
824 \r
825             virtualLinks.add(virtualLink1);\r
826             virtualLinks.add(virtualLink2);\r
827 \r
828             return virtualLinks;\r
829         }\r
830 \r
831         List<VirtualLink> virtualLinks = virtualNetwork.getVirtualLinks().getVirtualLink();\r
832 \r
833         virtualLinks.add(virtualLink1);\r
834         virtualLinks.add(virtualLink2);\r
835 \r
836         List<VirtualResource> virtualResources = new ArrayList<VirtualResource>(2);\r
837 \r
838         VirtualResource virtualResource = new VirtualResourceBuilder()\r
839                 .setVirtualResourceId(new VirtualResourceId(UUID.randomUUID().toString()))\r
840                 .setVirtualResourceType(VirtualResource.VirtualResourceType.Vlink)\r
841                 .setVirtualResourceEntityId(new VirtualResourceEntityId(virtualLink1.getLinkId().getValue()))\r
842                 .setOrder(0L)\r
843                 .build();\r
844         virtualResources.add(virtualResource);\r
845 \r
846         virtualResource = new VirtualResourceBuilder()\r
847                 .setVirtualResourceId(new VirtualResourceId(UUID.randomUUID().toString()))\r
848                 .setVirtualResourceType(VirtualResource.VirtualResourceType.Vlink)\r
849                 .setVirtualResourceEntityId(new VirtualResourceEntityId(virtualLink2.getLinkId().getValue()))\r
850                 .setOrder(0L)\r
851                 .build();\r
852         virtualResources.add(virtualResource);\r
853 \r
854         IntentVnMappingResult intentVnMappingResult = new IntentVnMappingResultBuilder()\r
855                 .setIntentId(new IntentId(connection.getConnectionId().getValue()))\r
856                 .setIntentType(IntentVnMappingResult.IntentType.Connection)\r
857                 .setVirtualResource(virtualResources)\r
858                 .build();\r
859 \r
860         intentVnMappingResults.add(intentVnMappingResult);\r
861 \r
862         return null;\r
863     }\r
864 \r
865     /**\r
866      * TODO\r
867      *\r
868      * @param user TODO\r
869      * @param connection TODO\r
870      * @param endNode1 TODO\r
871      * @param endNode2 TODO\r
872      * @param virtualNetwork TODO\r
873      * @param userIntentVnMapping TODO\r
874      * @param tempConnection TODO\r
875      * @param resolvingEndNode1 TODO\r
876      * @param resolvingEndNode2 TODO\r
877      * @return TODO\r
878      */\r
879     private List<VirtualLink> resolveP2PConnectionBetweenLayer3Groups(User user,\r
880                                                                       Connection connection,\r
881                                                                       Node endNode1,\r
882                                                                       Node endNode2,\r
883                                                                       VirtualNetwork virtualNetwork,\r
884                                                                       UserIntentVnMapping userIntentVnMapping,\r
885                                                                       boolean tempConnection,\r
886                                                                       boolean resolvingEndNode1,\r
887                                                                       boolean resolvingEndNode2)\r
888             throws IntentResolutionException {\r
889         // TODO: l3-group - l3-group: 创建第一l3-group的sub-nodes的gw/acc vrouters与第二l3-group的sub-nodes的gw/acc vrouters间的vlinks(vports)。\r
890 \r
891         return null;\r
892     }\r
893 \r
894     /**\r
895      * TODO\r
896      *\r
897      * @param user TODO\r
898      * @param connection TODO\r
899      * @param endNode1 TODO\r
900      * @param endNode2 TODO\r
901      * @param virtualNetwork TODO\r
902      * @param userIntentVnMapping TODO\r
903      * @param tempConnection TODO\r
904      * @param resolvingEndNode1 TODO\r
905      * @param resolvingEndNode2 TODO\r
906      * @return TODO\r
907      */\r
908     private List<VirtualLink> resolveP2PConnectionBetweenLayer3AndExternalLayer2Groups(User user,\r
909                                                                                        Connection connection,\r
910                                                                                        Node endNode1,\r
911                                                                                        Node endNode2,\r
912                                                                                        VirtualNetwork virtualNetwork,\r
913                                                                                        UserIntentVnMapping userIntentVnMapping,\r
914                                                                                        boolean tempConnection,\r
915                                                                                        boolean resolvingEndNode1,\r
916                                                                                        boolean resolvingEndNode2)\r
917             throws IntentResolutionException {\r
918         // TODO: l3-group - ext-group<l2>: 为ext-group<l2>创建gw vrouter(vport),创建新vrouter与l3-group的sub-nodes的gw/acc vrouters间的vlinks(vports)。\r
919 \r
920         return null;\r
921     }\r
922 \r
923     /**\r
924      * TODO\r
925      *\r
926      * @param user TODO\r
927      * @param connection TODO\r
928      * @param endNode1 TODO\r
929      * @param endNode2 TODO\r
930      * @param virtualNetwork TODO\r
931      * @param userIntentVnMapping TODO\r
932      * @param tempConnection TODO\r
933      * @param resolvingEndNode1 TODO\r
934      * @param resolvingEndNode2 TODO\r
935      * @return TODO\r
936      */\r
937     private List<VirtualLink> resolveP2PConnectionBetweenLayer3AndExternalLayer3Groups(User user,\r
938                                                                                        Connection connection,\r
939                                                                                        Node endNode1,\r
940                                                                                        Node endNode2,\r
941                                                                                        VirtualNetwork virtualNetwork,\r
942                                                                                        UserIntentVnMapping userIntentVnMapping,\r
943                                                                                        boolean tempConnection,\r
944                                                                                        boolean resolvingEndNode1,\r
945                                                                                        boolean resolvingEndNode2)\r
946             throws IntentResolutionException {\r
947         // TODO: l3-group - ext-group<l3>: 创建ext-group<l3>的acc vrouter与l3-group的sub-nodes的gw/acc vrouters间的vlinks(vports)。\r
948 \r
949         return null;\r
950     }\r
951 \r
952     /**\r
953      * TODO\r
954      *\r
955      * @param user TODO\r
956      * @param connection TODO\r
957      * @param endNode1 TODO\r
958      * @param endNode2 TODO\r
959      * @param virtualNetwork TODO\r
960      * @param userIntentVnMapping TODO\r
961      * @param tempConnection TODO\r
962      * @param resolvingEndNode1 TODO\r
963      * @param resolvingEndNode2 TODO\r
964      * @return TODO\r
965      */\r
966     private List<VirtualLink> resolveP2PConnectionBetweenExternalLayer2Groups(User user,\r
967                                                                               Connection connection,\r
968                                                                               Node endNode1,\r
969                                                                               Node endNode2,\r
970                                                                               VirtualNetwork virtualNetwork,\r
971                                                                               UserIntentVnMapping userIntentVnMapping,\r
972                                                                               boolean tempConnection,\r
973                                                                               boolean resolvingEndNode1,\r
974                                                                               boolean resolvingEndNode2)\r
975             throws IntentResolutionException {\r
976         boolean sameIpPrefix;\r
977 \r
978         sameIpPrefix = true;// TODO: for sameIpPrefix.\r
979 \r
980         if ( sameIpPrefix ) {\r
981             if ( resolvingEndNode1 ) {\r
982                 nodeMapper.resolveExternalLayer2Group(user, endNode1, virtualNetwork, userIntentVnMapping, false);\r
983             }\r
984 \r
985             if ( resolvingEndNode2 ) {\r
986                 nodeMapper.resolveExternalLayer2Group(user, endNode2, virtualNetwork, userIntentVnMapping, false);\r
987             }\r
988         } else {\r
989             if ( resolvingEndNode1 ) {\r
990                 nodeMapper.resolveExternalLayer2Group(user, endNode1, virtualNetwork, userIntentVnMapping, true);\r
991             }\r
992 \r
993             if ( resolvingEndNode2 ) {\r
994                 nodeMapper.resolveExternalLayer2Group(user, endNode2, virtualNetwork, userIntentVnMapping, true);\r
995             }\r
996         }\r
997 \r
998         List<IntentVnMappingResult> intentVnMappingResults = userIntentVnMapping.getIntentVnMappingResult();\r
999         IntentVnMappingResult intentVnMappingResult1 = IntentResolverUtils\r
1000                 .getIntentVnMappingResult(intentVnMappingResults, new IntentId(endNode1.getNodeId().getValue()));\r
1001 \r
1002         if ( null == intentVnMappingResult1 ) {\r
1003             throw new IntentResolutionException("Can not get the intent-vn mapping result for " +\r
1004                     "the node " + endNode1.getNodeId().getValue() + ".");\r
1005         }\r
1006 \r
1007         IntentVnMappingResult intentVnMappingResult2 = IntentResolverUtils\r
1008                 .getIntentVnMappingResult(intentVnMappingResults, new IntentId(endNode2.getNodeId().getValue()));\r
1009 \r
1010         if ( null == intentVnMappingResult2 ) {\r
1011             throw new IntentResolutionException("Can not get the intent-vn mapping result for " +\r
1012                     "the node " + endNode2.getNodeId().getValue() + ".");\r
1013         }\r
1014 \r
1015         List<VirtualNode> virtualNodes = virtualNetwork.getVirtualNodes().getVirtualNode();\r
1016         VirtualNodeId virtualNodeId = new VirtualNodeId(intentVnMappingResult1.getVirtualResource().get(0)\r
1017                 .getParentVirtualResourceEntityId().getValue());\r
1018         VirtualNode virtualRouter1 = IntentResolverUtils.getVirtualNode(virtualNodes, virtualNodeId);\r
1019 \r
1020         if ( null == virtualRouter1 ) {\r
1021             throw new IntentResolutionException("Can not get the virtual node created for " +\r
1022                     "the node " + endNode1.getNodeId().getValue() + ".");\r
1023         }\r
1024 \r
1025         virtualNodeId = new VirtualNodeId(intentVnMappingResult2.getVirtualResource().get(0)\r
1026                 .getParentVirtualResourceEntityId().getValue());\r
1027         VirtualNode virtualRouter2 = IntentResolverUtils.getVirtualNode(virtualNodes, virtualNodeId);\r
1028 \r
1029         if ( null == virtualRouter2 ) {\r
1030             throw new IntentResolutionException("Can not get the virtual node created for " +\r
1031                     "the node " + endNode2.getNodeId().getValue() + ".");\r
1032         }\r
1033 \r
1034         Property property = IntentResolverUtils\r
1035                 .getConnectionProperty(connection.getProperty(), new PropertyName("bandwidth"));\r
1036         long bandwidth = 0;\r
1037 \r
1038         if ( null != property ) {\r
1039             bandwidth = /*1024 * */property.getPropertyValues().getIntValue().get(0).getValue();\r
1040         }\r
1041 \r
1042         VirtualPort virtualPort1 = new VirtualPortBuilder()\r
1043                 .setPortId(new VirtualPortId(UUID.randomUUID().toString()))\r
1044                 .setPortType(VirtualPort.PortType.Internal)\r
1045                 .setBandwidth(bandwidth)\r
1046                 .build();\r
1047         virtualRouter1.getVirtualPort().add(virtualPort1);\r
1048 \r
1049         VirtualPort virtualPort2 = new VirtualPortBuilder()\r
1050                 .setPortId(new VirtualPortId(UUID.randomUUID().toString()))\r
1051                 .setPortType(VirtualPort.PortType.Internal)\r
1052                 .setBandwidth(bandwidth)\r
1053                 .build();\r
1054         virtualRouter2.getVirtualPort().add(virtualPort2);\r
1055 \r
1056         VirtualLink virtualLink1 = new VirtualLinkBuilder()\r
1057                 .setLinkId(new VirtualLinkId(UUID.randomUUID().toString()))\r
1058                 .setSrcNodeId(virtualRouter1.getNodeId())\r
1059                 .setSrcPortId(virtualPort1.getPortId())\r
1060                 .setDestNodeId(virtualRouter2.getNodeId())\r
1061                 .setDestPortId(virtualPort2.getPortId())\r
1062                 .setBandwidth(bandwidth)\r
1063                 .build();\r
1064         VirtualLink virtualLink2 = new VirtualLinkBuilder()\r
1065                 .setLinkId(new VirtualLinkId(UUID.randomUUID().toString()))\r
1066                 .setSrcNodeId(virtualRouter2.getNodeId())\r
1067                 .setSrcPortId(virtualPort2.getPortId())\r
1068                 .setDestNodeId(virtualRouter1.getNodeId())\r
1069                 .setDestPortId(virtualPort1.getPortId())\r
1070                 .setBandwidth(bandwidth)\r
1071                 .build();\r
1072 \r
1073         if ( tempConnection ) {\r
1074             List<VirtualLink> virtualLinks = new ArrayList<VirtualLink>(2);\r
1075 \r
1076             virtualLinks.add(virtualLink1);\r
1077             virtualLinks.add(virtualLink2);\r
1078 \r
1079             return virtualLinks;\r
1080         }\r
1081 \r
1082         List<VirtualLink> virtualLinks = virtualNetwork.getVirtualLinks().getVirtualLink();\r
1083 \r
1084         virtualLinks.add(virtualLink1);\r
1085         virtualLinks.add(virtualLink2);\r
1086 \r
1087         List<VirtualResource> virtualResources = new ArrayList<VirtualResource>(2);\r
1088 \r
1089         VirtualResource virtualResource = new VirtualResourceBuilder()\r
1090                 .setVirtualResourceId(new VirtualResourceId(UUID.randomUUID().toString()))\r
1091                 .setVirtualResourceType(VirtualResource.VirtualResourceType.Vlink)\r
1092                 .setVirtualResourceEntityId(new VirtualResourceEntityId(virtualLink1.getLinkId().getValue()))\r
1093                 .setOrder(0L)\r
1094                 .build();\r
1095         virtualResources.add(virtualResource);\r
1096 \r
1097         virtualResource = new VirtualResourceBuilder()\r
1098                 .setVirtualResourceId(new VirtualResourceId(UUID.randomUUID().toString()))\r
1099                 .setVirtualResourceType(VirtualResource.VirtualResourceType.Vlink)\r
1100                 .setVirtualResourceEntityId(new VirtualResourceEntityId(virtualLink2.getLinkId().getValue()))\r
1101                 .setOrder(0L)\r
1102                 .build();\r
1103         virtualResources.add(virtualResource);\r
1104 \r
1105         IntentVnMappingResult intentVnMappingResult = new IntentVnMappingResultBuilder()\r
1106                 .setIntentId(new IntentId(connection.getConnectionId().getValue()))\r
1107                 .setIntentType(IntentVnMappingResult.IntentType.Connection)\r
1108                 .setVirtualResource(virtualResources)\r
1109                 .build();\r
1110 \r
1111         intentVnMappingResults.add(intentVnMappingResult);\r
1112 \r
1113         return null;\r
1114     }\r
1115 \r
1116     /**\r
1117      * TODO\r
1118      *\r
1119      * @param user TODO\r
1120      * @param connection TODO\r
1121      * @param endNode1 TODO\r
1122      * @param endNode2 TODO\r
1123      * @param virtualNetwork TODO\r
1124      * @param userIntentVnMapping TODO\r
1125      * @param tempConnection TODO\r
1126      * @param resolvingEndNode1 TODO\r
1127      * @param resolvingEndNode2 TODO\r
1128      * @return TODO\r
1129      */\r
1130     private List<VirtualLink> resolveP2PConnectionBetweenExternalLayer2AndLayer3Groups(User user,\r
1131                                                                                        Connection connection,\r
1132                                                                                        Node endNode1,\r
1133                                                                                        Node endNode2,\r
1134                                                                                        VirtualNetwork virtualNetwork,\r
1135                                                                                        UserIntentVnMapping userIntentVnMapping,\r
1136                                                                                        boolean tempConnection,\r
1137                                                                                        boolean resolvingEndNode1,\r
1138                                                                                        boolean resolvingEndNode2)\r
1139             throws IntentResolutionException {\r
1140         if ( resolvingEndNode1 ) {\r
1141             nodeMapper.resolveExternalLayer2Group(user, endNode1, virtualNetwork, userIntentVnMapping, true);\r
1142         }\r
1143 \r
1144         List<IntentVnMappingResult> intentVnMappingResults = userIntentVnMapping.getIntentVnMappingResult();\r
1145         IntentVnMappingResult intentVnMappingResult1 = IntentResolverUtils\r
1146                 .getIntentVnMappingResult(intentVnMappingResults, new IntentId(endNode1.getNodeId().getValue()));\r
1147 \r
1148         if ( null == intentVnMappingResult1 ) {\r
1149             throw new IntentResolutionException("Can not get the intent-vn mapping result for " +\r
1150                     "the node " + endNode1.getNodeId().getValue() + ".");\r
1151         }\r
1152 \r
1153         IntentVnMappingResult intentVnMappingResult2 = IntentResolverUtils\r
1154                 .getIntentVnMappingResult(intentVnMappingResults, new IntentId(endNode2.getNodeId().getValue()));\r
1155 \r
1156         if ( null == intentVnMappingResult2 ) {\r
1157             throw new IntentResolutionException("Can not get the intent-vn mapping result for " +\r
1158                     "the node " + endNode2.getNodeId().getValue() + ".");\r
1159         }\r
1160 \r
1161         List<VirtualNode> virtualNodes = virtualNetwork.getVirtualNodes().getVirtualNode();\r
1162         VirtualNodeId virtualNodeId = new VirtualNodeId(intentVnMappingResult1.getVirtualResource().get(0)\r
1163                 .getParentVirtualResourceEntityId().getValue());\r
1164         VirtualNode virtualRouter1 = IntentResolverUtils.getVirtualNode(virtualNodes, virtualNodeId);\r
1165 \r
1166         if ( null == virtualRouter1 ) {\r
1167             throw new IntentResolutionException("Can not get the virtual node created for " +\r
1168                     "the node " + endNode1.getNodeId().getValue() + ".");\r
1169         }\r
1170 \r
1171         virtualNodeId = new VirtualNodeId(intentVnMappingResult2.getVirtualResource().get(0)\r
1172                 .getParentVirtualResourceEntityId().getValue());\r
1173         VirtualNode virtualRouter2 = IntentResolverUtils.getVirtualNode(virtualNodes, virtualNodeId);\r
1174 \r
1175         if ( null == virtualRouter2 ) {\r
1176             throw new IntentResolutionException("Can not get the virtual node created for " +\r
1177                     "the node " + endNode2.getNodeId().getValue() + ".");\r
1178         }\r
1179 \r
1180         Property property = IntentResolverUtils\r
1181                 .getConnectionProperty(connection.getProperty(), new PropertyName("bandwidth"));\r
1182         long bandwidth = 0;\r
1183 \r
1184         if ( null != property ) {\r
1185             bandwidth = /*1024 * */property.getPropertyValues().getIntValue().get(0).getValue();\r
1186         }\r
1187 \r
1188         VirtualPort virtualPort1 = new VirtualPortBuilder()\r
1189                 .setPortId(new VirtualPortId(UUID.randomUUID().toString()))\r
1190                 .setPortType(VirtualPort.PortType.Internal)\r
1191                 .setBandwidth(bandwidth)\r
1192                 .build();\r
1193         virtualRouter1.getVirtualPort().add(virtualPort1);\r
1194 \r
1195         VirtualPort virtualPort2 = new VirtualPortBuilder()\r
1196                 .setPortId(new VirtualPortId(UUID.randomUUID().toString()))\r
1197                 .setPortType(VirtualPort.PortType.Internal)\r
1198                 .setBandwidth(bandwidth)\r
1199                 .build();\r
1200         virtualRouter2.getVirtualPort().add(virtualPort2);\r
1201 \r
1202         VirtualLink virtualLink1 = new VirtualLinkBuilder()\r
1203                 .setLinkId(new VirtualLinkId(UUID.randomUUID().toString()))\r
1204                 .setSrcNodeId(virtualRouter1.getNodeId())\r
1205                 .setSrcPortId(virtualPort1.getPortId())\r
1206                 .setDestNodeId(virtualRouter2.getNodeId())\r
1207                 .setDestPortId(virtualPort2.getPortId())\r
1208                 .setBandwidth(bandwidth)\r
1209                 .build();\r
1210         VirtualLink virtualLink2 = new VirtualLinkBuilder()\r
1211                 .setLinkId(new VirtualLinkId(UUID.randomUUID().toString()))\r
1212                 .setSrcNodeId(virtualRouter2.getNodeId())\r
1213                 .setSrcPortId(virtualPort2.getPortId())\r
1214                 .setDestNodeId(virtualRouter1.getNodeId())\r
1215                 .setDestPortId(virtualPort1.getPortId())\r
1216                 .setBandwidth(bandwidth)\r
1217                 .build();\r
1218 \r
1219         if ( tempConnection ) {\r
1220             List<VirtualLink> virtualLinks = new ArrayList<VirtualLink>(2);\r
1221 \r
1222             virtualLinks.add(virtualLink1);\r
1223             virtualLinks.add(virtualLink2);\r
1224 \r
1225             return virtualLinks;\r
1226         }\r
1227 \r
1228         List<VirtualLink> virtualLinks = virtualNetwork.getVirtualLinks().getVirtualLink();\r
1229 \r
1230         virtualLinks.add(virtualLink1);\r
1231         virtualLinks.add(virtualLink2);\r
1232 \r
1233         List<VirtualResource> virtualResources = new ArrayList<VirtualResource>(2);\r
1234 \r
1235         VirtualResource virtualResource = new VirtualResourceBuilder()\r
1236                 .setVirtualResourceId(new VirtualResourceId(UUID.randomUUID().toString()))\r
1237                 .setVirtualResourceType(VirtualResource.VirtualResourceType.Vlink)\r
1238                 .setVirtualResourceEntityId(new VirtualResourceEntityId(virtualLink1.getLinkId().getValue()))\r
1239                 .setOrder(0L)\r
1240                 .build();\r
1241         virtualResources.add(virtualResource);\r
1242 \r
1243         virtualResource = new VirtualResourceBuilder()\r
1244                 .setVirtualResourceId(new VirtualResourceId(UUID.randomUUID().toString()))\r
1245                 .setVirtualResourceType(VirtualResource.VirtualResourceType.Vlink)\r
1246                 .setVirtualResourceEntityId(new VirtualResourceEntityId(virtualLink2.getLinkId().getValue()))\r
1247                 .setOrder(0L)\r
1248                 .build();\r
1249         virtualResources.add(virtualResource);\r
1250 \r
1251         IntentVnMappingResult intentVnMappingResult = new IntentVnMappingResultBuilder()\r
1252                 .setIntentId(new IntentId(connection.getConnectionId().getValue()))\r
1253                 .setIntentType(IntentVnMappingResult.IntentType.Connection)\r
1254                 .setVirtualResource(virtualResources)\r
1255                 .build();\r
1256 \r
1257         intentVnMappingResults.add(intentVnMappingResult);\r
1258 \r
1259         return null;\r
1260     }\r
1261 \r
1262     /**\r
1263      * TODO\r
1264      *\r
1265      * @param user TODO\r
1266      * @param connection TODO\r
1267      * @param endNode1 TODO\r
1268      * @param endNode2 TODO\r
1269      * @param virtualNetwork TODO\r
1270      * @param userIntentVnMapping TODO\r
1271      * @param tempConnection TODO\r
1272      * @param resolvingEndNode1 TODO\r
1273      * @param resolvingEndNode2 TODO\r
1274      * @return TODO\r
1275      */\r
1276     private List<VirtualLink> resolveP2PConnectionBetweenExternalLayer3Groups(User user,\r
1277                                                                               Connection connection,\r
1278                                                                               Node endNode1,\r
1279                                                                               Node endNode2,\r
1280                                                                               VirtualNetwork virtualNetwork,\r
1281                                                                               UserIntentVnMapping userIntentVnMapping,\r
1282                                                                               boolean tempConnection,\r
1283                                                                               boolean resolvingEndNode1,\r
1284                                                                               boolean resolvingEndNode2)\r
1285             throws IntentResolutionException {\r
1286         List<IntentVnMappingResult> intentVnMappingResults = userIntentVnMapping.getIntentVnMappingResult();\r
1287         IntentVnMappingResult intentVnMappingResult1 = IntentResolverUtils\r
1288                 .getIntentVnMappingResult(intentVnMappingResults, new IntentId(endNode1.getNodeId().getValue()));\r
1289 \r
1290         if ( null == intentVnMappingResult1 ) {\r
1291             throw new IntentResolutionException("Can not get the intent-vn mapping result for " +\r
1292                     "the node " + endNode1.getNodeId().getValue() + ".");\r
1293         }\r
1294 \r
1295         IntentVnMappingResult intentVnMappingResult2 = IntentResolverUtils\r
1296                 .getIntentVnMappingResult(intentVnMappingResults, new IntentId(endNode2.getNodeId().getValue()));\r
1297 \r
1298         if ( null == intentVnMappingResult2 ) {\r
1299             throw new IntentResolutionException("Can not get the intent-vn mapping result for " +\r
1300                     "the node " + endNode2.getNodeId().getValue() + ".");\r
1301         }\r
1302 \r
1303         List<VirtualNode> virtualNodes = virtualNetwork.getVirtualNodes().getVirtualNode();\r
1304         VirtualNodeId virtualNodeId = new VirtualNodeId(intentVnMappingResult1.getVirtualResource().get(0)\r
1305                 .getParentVirtualResourceEntityId().getValue());\r
1306         VirtualNode virtualRouter1 = IntentResolverUtils.getVirtualNode(virtualNodes, virtualNodeId);\r
1307 \r
1308         if ( null == virtualRouter1 ) {\r
1309             throw new IntentResolutionException("Can not get the virtual node created for " +\r
1310                     "the node " + endNode1.getNodeId().getValue() + ".");\r
1311         }\r
1312 \r
1313         virtualNodeId = new VirtualNodeId(intentVnMappingResult2.getVirtualResource().get(0)\r
1314                 .getParentVirtualResourceEntityId().getValue());\r
1315         VirtualNode virtualRouter2 = IntentResolverUtils.getVirtualNode(virtualNodes, virtualNodeId);\r
1316 \r
1317         if ( null == virtualRouter2 ) {\r
1318             throw new IntentResolutionException("Can not get the virtual node created for " +\r
1319                     "the node " + endNode2.getNodeId().getValue() + ".");\r
1320         }\r
1321 \r
1322         Property property = IntentResolverUtils\r
1323                 .getConnectionProperty(connection.getProperty(), new PropertyName("bandwidth"));\r
1324         long bandwidth = 0;\r
1325 \r
1326         if ( null != property ) {\r
1327             bandwidth = /*1024 * */property.getPropertyValues().getIntValue().get(0).getValue();\r
1328         }\r
1329 \r
1330         VirtualPort virtualPort1 = new VirtualPortBuilder()\r
1331                 .setPortId(new VirtualPortId(UUID.randomUUID().toString()))\r
1332                 .setPortType(VirtualPort.PortType.Internal)\r
1333                 .setBandwidth(bandwidth)\r
1334                 .build();\r
1335         virtualRouter1.getVirtualPort().add(virtualPort1);\r
1336 \r
1337         VirtualPort virtualPort2 = new VirtualPortBuilder()\r
1338                 .setPortId(new VirtualPortId(UUID.randomUUID().toString()))\r
1339                 .setPortType(VirtualPort.PortType.Internal)\r
1340                 .setBandwidth(bandwidth)\r
1341                 .build();\r
1342         virtualRouter2.getVirtualPort().add(virtualPort2);\r
1343 \r
1344         VirtualLink virtualLink1 = new VirtualLinkBuilder()\r
1345                 .setLinkId(new VirtualLinkId(UUID.randomUUID().toString()))\r
1346                 .setSrcNodeId(virtualRouter1.getNodeId())\r
1347                 .setSrcPortId(virtualPort1.getPortId())\r
1348                 .setDestNodeId(virtualRouter2.getNodeId())\r
1349                 .setDestPortId(virtualPort2.getPortId())\r
1350                 .setBandwidth(bandwidth)\r
1351                 .build();\r
1352         VirtualLink virtualLink2 = new VirtualLinkBuilder()\r
1353                 .setLinkId(new VirtualLinkId(UUID.randomUUID().toString()))\r
1354                 .setSrcNodeId(virtualRouter2.getNodeId())\r
1355                 .setSrcPortId(virtualPort2.getPortId())\r
1356                 .setDestNodeId(virtualRouter1.getNodeId())\r
1357                 .setDestPortId(virtualPort1.getPortId())\r
1358                 .setBandwidth(bandwidth)\r
1359                 .build();\r
1360 \r
1361         if ( tempConnection ) {\r
1362             List<VirtualLink> virtualLinks = new ArrayList<VirtualLink>(2);\r
1363 \r
1364             virtualLinks.add(virtualLink1);\r
1365             virtualLinks.add(virtualLink2);\r
1366 \r
1367             return virtualLinks;\r
1368         }\r
1369 \r
1370         List<VirtualLink> virtualLinks = virtualNetwork.getVirtualLinks().getVirtualLink();\r
1371 \r
1372         virtualLinks.add(virtualLink1);\r
1373         virtualLinks.add(virtualLink2);\r
1374 \r
1375         List<VirtualResource> virtualResources = new ArrayList<VirtualResource>(2);\r
1376 \r
1377         VirtualResource virtualResource = new VirtualResourceBuilder()\r
1378                 .setVirtualResourceId(new VirtualResourceId(UUID.randomUUID().toString()))\r
1379                 .setVirtualResourceType(VirtualResource.VirtualResourceType.Vlink)\r
1380                 .setVirtualResourceEntityId(new VirtualResourceEntityId(virtualLink1.getLinkId().getValue()))\r
1381                 .setOrder(0L)\r
1382                 .build();\r
1383         virtualResources.add(virtualResource);\r
1384 \r
1385         virtualResource = new VirtualResourceBuilder()\r
1386                 .setVirtualResourceId(new VirtualResourceId(UUID.randomUUID().toString()))\r
1387                 .setVirtualResourceType(VirtualResource.VirtualResourceType.Vlink)\r
1388                 .setVirtualResourceEntityId(new VirtualResourceEntityId(virtualLink2.getLinkId().getValue()))\r
1389                 .setOrder(0L)\r
1390                 .build();\r
1391         virtualResources.add(virtualResource);\r
1392 \r
1393         IntentVnMappingResult intentVnMappingResult = new IntentVnMappingResultBuilder()\r
1394                 .setIntentId(new IntentId(connection.getConnectionId().getValue()))\r
1395                 .setIntentType(IntentVnMappingResult.IntentType.Connection)\r
1396                 .setVirtualResource(virtualResources)\r
1397                 .build();\r
1398 \r
1399         intentVnMappingResults.add(intentVnMappingResult);\r
1400 \r
1401         return null;\r
1402     }\r
1403 }\r