2 * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.
\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
9 package org.opendaylight.nemo.intent;
\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
32 import java.util.ArrayList;
\r
33 import java.util.List;
\r
34 import java.util.UUID;
\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
42 * @author Zhigang Ji
\r
44 public class ConnectionMapper {
\r
45 private static final Logger LOG = LoggerFactory.getLogger(ConnectionMapper.class);
\r
47 private final DataBroker dataBroker;
\r
50 * The node mapper to resolve the user's node intent.
\r
52 private NodeMapper nodeMapper;
\r
54 public ConnectionMapper(DataBroker dataBroker, NodeMapper nodeMapper) {
\r
57 this.dataBroker = dataBroker;
\r
58 this.nodeMapper = nodeMapper;
\r
60 LOG.debug("Initialized the renderer common connection mapper.");
\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
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
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
80 if ( connectionType.equals(new ConnectionType("p2p")) ) {
\r
81 resolveP2PConnection(user, connection, virtualNetwork, userIntentVnMapping, false, true, true);
\r
86 if ( connectionType.equals(new ConnectionType("p2mp")) ) {
\r
87 resolveP2MPConnection(user, connection, virtualNetwork, userIntentVnMapping);
\r
92 if ( connectionType.equals(new ConnectionType("mesh")) ) {
\r
93 resolveMeshConnection(user, connection, virtualNetwork, userIntentVnMapping);
\r
98 throw new IntentResolutionException("Unknown connection type.");
\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
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
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
132 nodeId = connection.getEndNode().get(1).getNodeId();
\r
133 Node endNode2 = IntentResolverUtils.getNode(nodes, nodeId);
\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
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
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
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
163 if ( endNode2.getNodeType().equals(layer2GroupNodeType) ) {
\r
164 return resolveP2PConnectionBetweenLayer2Groups(user, connection,
\r
165 endNode1, endNode2, virtualNetwork, userIntentVnMapping,
\r
166 tempConnection, resolvingEndNode1, resolvingEndNode2);
\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
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
181 return resolveP2PConnectionBetweenLayer2AndExternalLayer2Groups(user, connection,
\r
182 endNode1, endNode2, virtualNetwork, userIntentVnMapping,
\r
183 tempConnection, resolvingEndNode1, resolvingEndNode2);
\r
187 if ( endNode2.getNodeType().equals(serviceChainGroupNodeType) ) {
\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
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
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
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
217 if ( endNode2.getNodeType().equals(layer2GroupNodeType) ) {
\r
218 return resolveP2PConnectionBetweenLayer2AndLayer3Groups(user, connection,
\r
219 endNode2, endNode1, virtualNetwork, userIntentVnMapping,
\r
220 tempConnection, resolvingEndNode1, resolvingEndNode2);
\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
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
235 return resolveP2PConnectionBetweenLayer3AndExternalLayer2Groups(user, connection,
\r
236 endNode1, endNode2, virtualNetwork, userIntentVnMapping,
\r
237 tempConnection, resolvingEndNode1, resolvingEndNode2);
\r
241 if ( endNode2.getNodeType().equals(serviceChainGroupNodeType) ) {
\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
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
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
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
271 if ( endNode2.getNodeType().equals(serviceChainGroupNodeType) ) {
\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
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
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
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
300 if ( endNode2.getNodeType().equals(layer3GroupNodeType) ) {
\r
301 return resolveP2PConnectionBetweenLayer3AndExternalLayer3Groups(user, connection,
\r
302 endNode2, endNode1, virtualNetwork, userIntentVnMapping,
\r
303 tempConnection, resolvingEndNode1, resolvingEndNode2);
\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
312 return resolveP2PConnectionBetweenExternalLayer2AndLayer3Groups(user, connection,
\r
313 endNode2, endNode1, virtualNetwork, userIntentVnMapping,
\r
314 tempConnection, resolvingEndNode1, resolvingEndNode2);
\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
324 if ( endNode2.getNodeType().equals(layer3GroupNodeType) ) {
\r
325 return resolveP2PConnectionBetweenLayer3AndExternalLayer2Groups(user, connection,
\r
326 endNode2, endNode1, virtualNetwork, userIntentVnMapping,
\r
327 tempConnection, resolvingEndNode1, resolvingEndNode2);
\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
336 return resolveP2PConnectionBetweenExternalLayer2Groups(user, connection,
\r
337 endNode1, endNode2, virtualNetwork, userIntentVnMapping,
\r
338 tempConnection, resolvingEndNode1, resolvingEndNode2);
\r
344 if ( endNode1.getNodeType().equals(serviceChainGroupNodeType) ) {
\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
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
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
366 throw new IntentResolutionException("Unknown node type for the end-nodes of the connection " +
\r
367 connection.getConnectionId().getValue() + ".");
\r
376 * @param connection TODO
\r
377 * @param virtualNetwork TODO
\r
378 * @param userIntentVnMapping TODO
\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
393 * @param connection TODO
\r
394 * @param virtualNetwork TODO
\r
395 * @param userIntentVnMapping TODO
\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
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
420 private List<VirtualLink> resolveP2PConnectionBetweenLayer2Groups(User user,
\r
421 Connection connection,
\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
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
439 IntentVnMappingResult intentVnMappingResult2 = IntentResolverUtils
\r
440 .getIntentVnMappingResult(intentVnMappingResults, new IntentId(endNode2.getNodeId().getValue()));
\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
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
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
457 virtualNodeId = new VirtualNodeId(intentVnMappingResult2.getVirtualResource().get(0)
\r
458 .getVirtualResourceEntityId().getValue());
\r
459 VirtualNode virtualRouter2 = IntentResolverUtils.getVirtualNode(virtualNodes, virtualNodeId);
\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
466 Property property = IntentResolverUtils
\r
467 .getConnectionProperty(connection.getProperty(), new PropertyName("bandwidth"));
\r
468 long bandwidth = 0;
\r
470 if ( null != property ) {
\r
471 bandwidth = /*1024 * */property.getPropertyValues().getIntValue().get(0).getValue();
\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
479 virtualRouter1.getVirtualPort().add(virtualPort1);
\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
486 virtualRouter2.getVirtualPort().add(virtualPort2);
\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
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
505 if ( tempConnection ) {
\r
506 List<VirtualLink> virtualLinks = new ArrayList<VirtualLink>(2);
\r
508 virtualLinks.add(virtualLink1);
\r
509 virtualLinks.add(virtualLink2);
\r
511 return virtualLinks;
\r
514 List<VirtualLink> virtualLinks = virtualNetwork.getVirtualLinks().getVirtualLink();
\r
516 virtualLinks.add(virtualLink1);
\r
517 virtualLinks.add(virtualLink2);
\r
519 List<VirtualResource> virtualResources = new ArrayList<VirtualResource>(2);
\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
527 virtualResources.add(virtualResource);
\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
535 virtualResources.add(virtualResource);
\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
543 intentVnMappingResults.add(intentVnMappingResult);
\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
562 private List<VirtualLink> resolveP2PConnectionBetweenLayer2AndLayer3Groups(User user,
\r
563 Connection connection,
\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
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
591 private List<VirtualLink> resolveP2PConnectionBetweenLayer2AndExternalLayer2Groups(User user,
\r
592 Connection connection,
\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
605 List<IntentVnMappingResult> intentVnMappingResults = userIntentVnMapping.getIntentVnMappingResult();
\r
606 IntentVnMappingResult intentVnMappingResult1 = IntentResolverUtils
\r
607 .getIntentVnMappingResult(intentVnMappingResults, new IntentId(endNode1.getNodeId().getValue()));
\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
614 IntentVnMappingResult intentVnMappingResult2 = IntentResolverUtils
\r
615 .getIntentVnMappingResult(intentVnMappingResults, new IntentId(endNode2.getNodeId().getValue()));
\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
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
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
632 virtualNodeId = new VirtualNodeId(intentVnMappingResult2.getVirtualResource().get(0)
\r
633 .getParentVirtualResourceEntityId().getValue());
\r
634 VirtualNode virtualRouter2 = IntentResolverUtils.getVirtualNode(virtualNodes, virtualNodeId);
\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
641 Property property = IntentResolverUtils
\r
642 .getConnectionProperty(connection.getProperty(), new PropertyName("bandwidth"));
\r
643 long bandwidth = 0;
\r
645 if ( null != property ) {
\r
646 bandwidth = /*1024 * */property.getPropertyValues().getIntValue().get(0).getValue();
\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
654 virtualRouter1.getVirtualPort().add(virtualPort1);
\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
661 virtualRouter2.getVirtualPort().add(virtualPort2);
\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
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
680 if ( tempConnection ) {
\r
681 List<VirtualLink> virtualLinks = new ArrayList<VirtualLink>(2);
\r
683 virtualLinks.add(virtualLink1);
\r
684 virtualLinks.add(virtualLink2);
\r
686 return virtualLinks;
\r
689 List<VirtualLink> virtualLinks = virtualNetwork.getVirtualLinks().getVirtualLink();
\r
691 virtualLinks.add(virtualLink1);
\r
692 virtualLinks.add(virtualLink2);
\r
694 List<VirtualResource> virtualResources = new ArrayList<VirtualResource>(2);
\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
702 virtualResources.add(virtualResource);
\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
710 virtualResources.add(virtualResource);
\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
718 intentVnMappingResults.add(intentVnMappingResult);
\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
737 private List<VirtualLink> resolveP2PConnectionBetweenLayer2AndExternalLayer3Groups(User user,
\r
738 Connection connection,
\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
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
756 IntentVnMappingResult intentVnMappingResult2 = IntentResolverUtils
\r
757 .getIntentVnMappingResult(intentVnMappingResults, new IntentId(endNode2.getNodeId().getValue()));
\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
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
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
774 virtualNodeId = new VirtualNodeId(intentVnMappingResult2.getVirtualResource().get(0)
\r
775 .getParentVirtualResourceEntityId().getValue());
\r
776 VirtualNode virtualRouter2 = IntentResolverUtils.getVirtualNode(virtualNodes, virtualNodeId);
\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
783 Property property = IntentResolverUtils
\r
784 .getConnectionProperty(connection.getProperty(), new PropertyName("bandwidth"));
\r
785 long bandwidth = 0;
\r
787 if ( null != property ) {
\r
788 bandwidth = /*1024 * */property.getPropertyValues().getIntValue().get(0).getValue();
\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
796 virtualRouter1.getVirtualPort().add(virtualPort1);
\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
803 virtualRouter2.getVirtualPort().add(virtualPort2);
\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
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
822 if ( tempConnection ) {
\r
823 List<VirtualLink> virtualLinks = new ArrayList<VirtualLink>(2);
\r
825 virtualLinks.add(virtualLink1);
\r
826 virtualLinks.add(virtualLink2);
\r
828 return virtualLinks;
\r
831 List<VirtualLink> virtualLinks = virtualNetwork.getVirtualLinks().getVirtualLink();
\r
833 virtualLinks.add(virtualLink1);
\r
834 virtualLinks.add(virtualLink2);
\r
836 List<VirtualResource> virtualResources = new ArrayList<VirtualResource>(2);
\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
844 virtualResources.add(virtualResource);
\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
852 virtualResources.add(virtualResource);
\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
860 intentVnMappingResults.add(intentVnMappingResult);
\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
879 private List<VirtualLink> resolveP2PConnectionBetweenLayer3Groups(User user,
\r
880 Connection connection,
\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
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
908 private List<VirtualLink> resolveP2PConnectionBetweenLayer3AndExternalLayer2Groups(User user,
\r
909 Connection connection,
\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
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
937 private List<VirtualLink> resolveP2PConnectionBetweenLayer3AndExternalLayer3Groups(User user,
\r
938 Connection connection,
\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
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
966 private List<VirtualLink> resolveP2PConnectionBetweenExternalLayer2Groups(User user,
\r
967 Connection connection,
\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
978 sameIpPrefix = true;// TODO: for sameIpPrefix.
\r
980 if ( sameIpPrefix ) {
\r
981 if ( resolvingEndNode1 ) {
\r
982 nodeMapper.resolveExternalLayer2Group(user, endNode1, virtualNetwork, userIntentVnMapping, false);
\r
985 if ( resolvingEndNode2 ) {
\r
986 nodeMapper.resolveExternalLayer2Group(user, endNode2, virtualNetwork, userIntentVnMapping, false);
\r
989 if ( resolvingEndNode1 ) {
\r
990 nodeMapper.resolveExternalLayer2Group(user, endNode1, virtualNetwork, userIntentVnMapping, true);
\r
993 if ( resolvingEndNode2 ) {
\r
994 nodeMapper.resolveExternalLayer2Group(user, endNode2, virtualNetwork, userIntentVnMapping, true);
\r
998 List<IntentVnMappingResult> intentVnMappingResults = userIntentVnMapping.getIntentVnMappingResult();
\r
999 IntentVnMappingResult intentVnMappingResult1 = IntentResolverUtils
\r
1000 .getIntentVnMappingResult(intentVnMappingResults, new IntentId(endNode1.getNodeId().getValue()));
\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
1007 IntentVnMappingResult intentVnMappingResult2 = IntentResolverUtils
\r
1008 .getIntentVnMappingResult(intentVnMappingResults, new IntentId(endNode2.getNodeId().getValue()));
\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
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
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
1025 virtualNodeId = new VirtualNodeId(intentVnMappingResult2.getVirtualResource().get(0)
\r
1026 .getParentVirtualResourceEntityId().getValue());
\r
1027 VirtualNode virtualRouter2 = IntentResolverUtils.getVirtualNode(virtualNodes, virtualNodeId);
\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
1034 Property property = IntentResolverUtils
\r
1035 .getConnectionProperty(connection.getProperty(), new PropertyName("bandwidth"));
\r
1036 long bandwidth = 0;
\r
1038 if ( null != property ) {
\r
1039 bandwidth = /*1024 * */property.getPropertyValues().getIntValue().get(0).getValue();
\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
1047 virtualRouter1.getVirtualPort().add(virtualPort1);
\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
1054 virtualRouter2.getVirtualPort().add(virtualPort2);
\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
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
1073 if ( tempConnection ) {
\r
1074 List<VirtualLink> virtualLinks = new ArrayList<VirtualLink>(2);
\r
1076 virtualLinks.add(virtualLink1);
\r
1077 virtualLinks.add(virtualLink2);
\r
1079 return virtualLinks;
\r
1082 List<VirtualLink> virtualLinks = virtualNetwork.getVirtualLinks().getVirtualLink();
\r
1084 virtualLinks.add(virtualLink1);
\r
1085 virtualLinks.add(virtualLink2);
\r
1087 List<VirtualResource> virtualResources = new ArrayList<VirtualResource>(2);
\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
1095 virtualResources.add(virtualResource);
\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
1103 virtualResources.add(virtualResource);
\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
1111 intentVnMappingResults.add(intentVnMappingResult);
\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
1130 private List<VirtualLink> resolveP2PConnectionBetweenExternalLayer2AndLayer3Groups(User user,
\r
1131 Connection connection,
\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
1144 List<IntentVnMappingResult> intentVnMappingResults = userIntentVnMapping.getIntentVnMappingResult();
\r
1145 IntentVnMappingResult intentVnMappingResult1 = IntentResolverUtils
\r
1146 .getIntentVnMappingResult(intentVnMappingResults, new IntentId(endNode1.getNodeId().getValue()));
\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
1153 IntentVnMappingResult intentVnMappingResult2 = IntentResolverUtils
\r
1154 .getIntentVnMappingResult(intentVnMappingResults, new IntentId(endNode2.getNodeId().getValue()));
\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
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
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
1171 virtualNodeId = new VirtualNodeId(intentVnMappingResult2.getVirtualResource().get(0)
\r
1172 .getParentVirtualResourceEntityId().getValue());
\r
1173 VirtualNode virtualRouter2 = IntentResolverUtils.getVirtualNode(virtualNodes, virtualNodeId);
\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
1180 Property property = IntentResolverUtils
\r
1181 .getConnectionProperty(connection.getProperty(), new PropertyName("bandwidth"));
\r
1182 long bandwidth = 0;
\r
1184 if ( null != property ) {
\r
1185 bandwidth = /*1024 * */property.getPropertyValues().getIntValue().get(0).getValue();
\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
1193 virtualRouter1.getVirtualPort().add(virtualPort1);
\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
1200 virtualRouter2.getVirtualPort().add(virtualPort2);
\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
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
1219 if ( tempConnection ) {
\r
1220 List<VirtualLink> virtualLinks = new ArrayList<VirtualLink>(2);
\r
1222 virtualLinks.add(virtualLink1);
\r
1223 virtualLinks.add(virtualLink2);
\r
1225 return virtualLinks;
\r
1228 List<VirtualLink> virtualLinks = virtualNetwork.getVirtualLinks().getVirtualLink();
\r
1230 virtualLinks.add(virtualLink1);
\r
1231 virtualLinks.add(virtualLink2);
\r
1233 List<VirtualResource> virtualResources = new ArrayList<VirtualResource>(2);
\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
1241 virtualResources.add(virtualResource);
\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
1249 virtualResources.add(virtualResource);
\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
1257 intentVnMappingResults.add(intentVnMappingResult);
\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
1276 private List<VirtualLink> resolveP2PConnectionBetweenExternalLayer3Groups(User user,
\r
1277 Connection connection,
\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
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
1295 IntentVnMappingResult intentVnMappingResult2 = IntentResolverUtils
\r
1296 .getIntentVnMappingResult(intentVnMappingResults, new IntentId(endNode2.getNodeId().getValue()));
\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
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
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
1313 virtualNodeId = new VirtualNodeId(intentVnMappingResult2.getVirtualResource().get(0)
\r
1314 .getParentVirtualResourceEntityId().getValue());
\r
1315 VirtualNode virtualRouter2 = IntentResolverUtils.getVirtualNode(virtualNodes, virtualNodeId);
\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
1322 Property property = IntentResolverUtils
\r
1323 .getConnectionProperty(connection.getProperty(), new PropertyName("bandwidth"));
\r
1324 long bandwidth = 0;
\r
1326 if ( null != property ) {
\r
1327 bandwidth = /*1024 * */property.getPropertyValues().getIntValue().get(0).getValue();
\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
1335 virtualRouter1.getVirtualPort().add(virtualPort1);
\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
1342 virtualRouter2.getVirtualPort().add(virtualPort2);
\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
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
1361 if ( tempConnection ) {
\r
1362 List<VirtualLink> virtualLinks = new ArrayList<VirtualLink>(2);
\r
1364 virtualLinks.add(virtualLink1);
\r
1365 virtualLinks.add(virtualLink2);
\r
1367 return virtualLinks;
\r
1370 List<VirtualLink> virtualLinks = virtualNetwork.getVirtualLinks().getVirtualLink();
\r
1372 virtualLinks.add(virtualLink1);
\r
1373 virtualLinks.add(virtualLink2);
\r
1375 List<VirtualResource> virtualResources = new ArrayList<VirtualResource>(2);
\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
1383 virtualResources.add(virtualResource);
\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
1391 virtualResources.add(virtualResource);
\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
1399 intentVnMappingResults.add(intentVnMappingResult);
\r