2 * Copyright © 2019 Orange, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.transportpce.tapi.topology;
10 import java.nio.charset.Charset;
11 import java.util.ArrayList;
12 import java.util.Arrays;
13 import java.util.HashMap;
14 import java.util.List;
16 import java.util.UUID;
17 import java.util.stream.Collectors;
18 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.TerminationPoint1;
19 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev181130.xpdr.odu.switching.pools.OduSwitchingPools;
20 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev181130.xpdr.odu.switching.pools.odu.switching.pools.NonBlockingList;
21 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmTpType;
22 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.xpdr.tp.supported.interfaces.SupportedInterfaceCapability;
23 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130.Link1;
24 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130.Node1;
25 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.Node;
26 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.TpId;
27 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.TerminationPoint;
28 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.AdministrativeState;
29 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.CapacityUnit;
30 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.ForwardingDirection;
31 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LAYERPROTOCOLQUALIFIER;
32 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LayerProtocolName;
33 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LifecycleState;
34 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.OperationalState;
35 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.PortDirection;
36 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.PortRole;
37 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.TerminationDirection;
38 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.TerminationState;
39 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid;
40 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.capacity.TotalSizeBuilder;
41 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.capacity.pac.AvailableCapacityBuilder;
42 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.Name;
43 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameBuilder;
44 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev181210.DIGITALSIGNALTYPE100GigE;
45 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev181210.DIGITALSIGNALTYPE10GigELAN;
46 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.odu.rev181210.ODUTYPEODU2E;
47 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.odu.rev181210.ODUTYPEODU4;
48 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev181210.PHOTONICLAYERQUALIFIEROMS;
49 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev181210.PHOTONICLAYERQUALIFIEROTSi;
50 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.ForwardingRule;
51 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.RuleType;
52 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.link.NodeEdgePoint;
53 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.link.NodeEdgePointBuilder;
54 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.NodeRuleGroup;
55 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.NodeRuleGroupBuilder;
56 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePoint;
57 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePointBuilder;
58 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.edge.point.MappedServiceInterfacePoint;
59 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.edge.point.MappedServiceInterfacePointBuilder;
60 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.Rule;
61 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.RuleBuilder;
62 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Link;
63 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.LinkBuilder;
64 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeBuilder;
65 import org.opendaylight.yangtools.yang.common.Uint64;
66 import org.slf4j.Logger;
67 import org.slf4j.LoggerFactory;
69 public class ConvertORTopoObjectToTapiTopoObject {
71 private static final String DSR_PLUS = "DSR+";
72 private static final String PLUS_DSR = "+DSR";
73 private static final String OT_SI = "+OTSi";
74 private static final String E_OT_SI = "eOTSi+";
75 private static final String I_OT_SI = "iOTSi+";
76 private static final Logger LOG = LoggerFactory.getLogger(ConvertORTopoObjectToTapiTopoObject.class);
77 private String ietfNodeId;
78 private List<TerminationPoint> oorClientPortList;
79 private List<TerminationPoint> oorNetworkPortList;
80 private OduSwitchingPools oorOduSwitchingPool;
81 private Uuid tapiTopoUuid;
82 private List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node> tapiNodes;
83 private List<Link> tapiLinks;
84 private Map<String, Uuid> uuidMap;
86 public ConvertORTopoObjectToTapiTopoObject(Node ietfNode, Link1 otnLink, Uuid tapiTopoUuid) {
87 this.ietfNodeId = ietfNode.getNodeId().getValue();
88 this.oorClientPortList = ietfNode.augmentation(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf
89 .network.topology.rev180226.Node1.class).getTerminationPoint().stream()
90 .filter(tp -> tp.augmentation(TerminationPoint1.class).getTpType().getIntValue()
91 == OpenroadmTpType.XPONDERCLIENT.getIntValue())
92 .sorted((tp1, tp2) -> tp1.getTpId().getValue().compareTo(tp2.getTpId().getValue()))
93 .collect(Collectors.toList());
94 this.oorNetworkPortList = ietfNode.augmentation(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf
95 .network.topology.rev180226.Node1.class).getTerminationPoint().stream()
96 .filter(tp -> tp.augmentation(TerminationPoint1.class).getTpType().getIntValue()
97 == OpenroadmTpType.XPONDERNETWORK.getIntValue())
98 .sorted((tp1, tp2) -> tp1.getTpId().getValue().compareTo(tp2.getTpId().getValue()))
99 .collect(Collectors.toList());
100 this.oorOduSwitchingPool = ietfNode.augmentation(Node1.class).getSwitchingPools().getOduSwitchingPools().get(0);
101 this.tapiTopoUuid = tapiTopoUuid;
102 this.tapiNodes = new ArrayList<>();
103 this.tapiLinks = new ArrayList<>();
104 this.uuidMap = new HashMap<>();
107 public void convertNode() {
108 // node creation [DSR/ODU]
109 LOG.info("creation of a DSR/ODU node");
110 Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes((this.ietfNodeId + PLUS_DSR).getBytes(Charset.forName("UTF-8")))
112 this.uuidMap.put(this.ietfNodeId + PLUS_DSR, nodeUuid);
113 List<Name> dsrNodeNames = Arrays.asList(
115 .setValueName("dsr/odu node name")
116 .setValue(this.ietfNodeId)
119 List<LayerProtocolName> dsrLayerProtocols = Arrays.asList(LayerProtocolName.DSR, LayerProtocolName.ODU);
120 org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology
121 .Node dsrNode = createTapiNode(dsrNodeNames, dsrLayerProtocols);
122 tapiNodes.add(dsrNode);
124 // node creation [otsi]
125 LOG.info("creation of an OTSi node");
126 nodeUuid = new Uuid(UUID.nameUUIDFromBytes((this.ietfNodeId + OT_SI).getBytes(Charset.forName("UTF-8")))
128 this.uuidMap.put(this.ietfNodeId + OT_SI, nodeUuid);
129 List<Name> otsiNodeNames = Arrays.asList(
131 .setValueName("otsi node name")
132 .setValue(this.ietfNodeId)
134 List<LayerProtocolName> otsiLayerProtocols = Arrays.asList(LayerProtocolName.PHOTONICMEDIA);
135 org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology
136 .Node otsiNode = createTapiNode(otsiNodeNames, otsiLayerProtocols);
137 tapiNodes.add(otsiNode);
139 // transitional link cration between network nep of DSR/ODU node and iNep of otsi node
140 LOG.info("creation of transitional links between DSR/ODU and OTSi nodes");
141 createTapiTransitionalLinks();
144 private org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology
145 .Node createTapiNode(List<Name> nodeNames, List<LayerProtocolName> layerProtocols) {
146 Uuid nodeUuid = null;
147 List<OwnedNodeEdgePoint> onepl = new ArrayList<>();
148 List<NodeRuleGroup> nodeRuleGroupList = new ArrayList<>();
149 List<Rule> ruleList = new ArrayList<>();
150 Rule rule = new RuleBuilder()
151 .setLocalId("forward")
152 .setForwardingRule(ForwardingRule.MAYFORWARDACROSSGROUP)
153 .setRuleType(RuleType.FORWARDING)
156 if (layerProtocols.contains(LayerProtocolName.DSR)) {
157 nodeUuid = getNodeUuid4Dsr(onepl, nodeRuleGroupList, ruleList);
158 } else if (layerProtocols.contains(LayerProtocolName.PHOTONICMEDIA)) {
159 nodeUuid = getNodeUuid4Phonic(onepl, nodeRuleGroupList, ruleList);
161 LOG.error("Undefined LayerProtocolName for {} node {}", nodeNames.get(0).getValueName(),
162 nodeNames.get(0).getValue());
167 return new NodeBuilder()
170 .setLayerProtocolName(layerProtocols)
171 .setAdministrativeState(AdministrativeState.UNLOCKED)
172 .setOperationalState(OperationalState.ENABLED)
173 .setLifecycleState(LifecycleState.INSTALLED)
174 .setOwnedNodeEdgePoint(onepl)
175 .setNodeRuleGroup(nodeRuleGroupList)
179 private Uuid getNodeUuid4Phonic(List<OwnedNodeEdgePoint> onepl, List<NodeRuleGroup> nodeRuleGroupList,
180 List<Rule> ruleList) {
182 nodeUuid = this.uuidMap.get(this.ietfNodeId + OT_SI);
183 // iNep creation on otsi node
184 for (int i = 0; i < oorNetworkPortList.size(); i++) {
185 Uuid nepUuid1 = new Uuid(UUID.nameUUIDFromBytes(
186 (I_OT_SI + oorNetworkPortList.get(i).getTpId().getValue()).getBytes(Charset.forName("UTF-8")))
188 this.uuidMap.put(I_OT_SI + oorNetworkPortList.get(i).getTpId().getValue(), nepUuid1);
189 List<Name> onedNames = Arrays.asList(
191 .setValueName(new StringBuilder("iNodeEdgePoint_").append(i + 1).toString())
192 .setValue(oorNetworkPortList.get(i).getTpId().getValue())
195 OwnedNodeEdgePoint onep = createNep(oorNetworkPortList.get(i), onedNames,
196 LayerProtocolName.PHOTONICMEDIA, LayerProtocolName.PHOTONICMEDIA, true, I_OT_SI);
199 // eNep creation on otsi node
200 for (int i = 0; i < oorNetworkPortList.size(); i++) {
201 Uuid nepUuid2 = new Uuid(UUID.nameUUIDFromBytes(
202 (E_OT_SI + oorNetworkPortList.get(i).getTpId().getValue()).getBytes(Charset.forName("UTF-8")))
204 this.uuidMap.put(E_OT_SI + oorNetworkPortList.get(i).getTpId().getValue(), nepUuid2);
205 List<Name> onedNames = Arrays.asList(
207 .setValueName(new StringBuilder("eNodeEdgePoint_").append(i + 1).toString())
208 .setValue(oorNetworkPortList.get(i).getTpId().getValue())
211 OwnedNodeEdgePoint onep = createNep(oorNetworkPortList.get(i), onedNames,
212 LayerProtocolName.PHOTONICMEDIA, LayerProtocolName.PHOTONICMEDIA, true, E_OT_SI);
215 // create NodeRuleGroup
216 for (TerminationPoint tp : this.oorNetworkPortList) {
218 List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group
219 .NodeEdgePoint> nepList = new ArrayList<>();
220 org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group
221 .NodeEdgePoint inep = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210
222 .node.rule.group.NodeEdgePointBuilder()
223 .setTopologyUuid(tapiTopoUuid)
224 .setNodeUuid(this.uuidMap.get(this.ietfNodeId + OT_SI))
225 .setNodeEdgePointUuid(this.uuidMap.get(I_OT_SI + tp.getTpId().getValue()))
227 org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group
228 .NodeEdgePoint enep = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210
229 .node.rule.group.NodeEdgePointBuilder()
230 .setTopologyUuid(tapiTopoUuid)
231 .setNodeUuid(this.uuidMap.get(this.ietfNodeId + OT_SI))
232 .setNodeEdgePointUuid(this.uuidMap.get(E_OT_SI + tp.getTpId().getValue()))
236 NodeRuleGroup nodeRuleGroup = new NodeRuleGroupBuilder()
238 UUID.nameUUIDFromBytes(("node rule group " + count).getBytes(Charset.forName("UTF-8"))).toString()))
240 .setNodeEdgePoint(nepList)
242 nodeRuleGroupList.add(nodeRuleGroup);
248 private Uuid getNodeUuid4Dsr(List<OwnedNodeEdgePoint> onepl, List<NodeRuleGroup> nodeRuleGroupList,
249 List<Rule> ruleList) {
251 nodeUuid = this.uuidMap.get(this.ietfNodeId + PLUS_DSR);
252 // client nep creation on DSR/ODU node
253 for (int i = 0; i < oorClientPortList.size(); i++) {
254 Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes((DSR_PLUS + oorClientPortList.get(i).getTpId().getValue())
255 .getBytes(Charset.forName("UTF-8"))).toString());
256 this.uuidMap.put(DSR_PLUS + oorClientPortList.get(i).getTpId().getValue(), nepUuid);
257 List<Name> onedNames = Arrays.asList(
259 .setValueName(new StringBuilder("NodeEdgePoint_C").append(i + 1).toString())
260 .setValue(oorClientPortList.get(i).getTpId().getValue())
263 OwnedNodeEdgePoint onep = createNep(oorClientPortList.get(i), onedNames, LayerProtocolName.ETH,
264 LayerProtocolName.DSR, true, DSR_PLUS);
267 // network nep creation on DSR/ODU node
268 for (int i = 0; i < oorNetworkPortList.size(); i++) {
269 Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes((DSR_PLUS + oorNetworkPortList.get(i).getTpId().getValue())
270 .getBytes(Charset.forName("UTF-8"))).toString());
271 this.uuidMap.put(DSR_PLUS + oorNetworkPortList.get(i).getTpId().getValue(), nepUuid);
272 List<Name> onedNames = Arrays.asList(
274 .setValueName(new StringBuilder("NodeEdgePoint_N").append(i + 1).toString())
275 .setValue(oorNetworkPortList.get(i).getTpId().getValue())
278 OwnedNodeEdgePoint onep = createNep(oorNetworkPortList.get(i), onedNames, LayerProtocolName.ODU,
279 LayerProtocolName.DSR, true, DSR_PLUS);
282 // create NodeRuleGroup
283 for (NonBlockingList nbl : this.oorOduSwitchingPool.getNonBlockingList()) {
285 List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group
286 .NodeEdgePoint> nepList = new ArrayList<>();
287 for (TpId tp : nbl.getTpList()) {
288 org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group
289 .NodeEdgePoint nep = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210
290 .node.rule.group.NodeEdgePointBuilder()
291 .setTopologyUuid(tapiTopoUuid)
292 .setNodeUuid(this.uuidMap.get(this.ietfNodeId + PLUS_DSR))
293 .setNodeEdgePointUuid(this.uuidMap.get(DSR_PLUS + tp.getValue()))
297 NodeRuleGroup nodeRuleGroup = new NodeRuleGroupBuilder()
299 UUID.nameUUIDFromBytes(("node rule group " + count).getBytes(Charset.forName("UTF-8"))).toString()))
301 .setNodeEdgePoint(nepList)
303 nodeRuleGroupList.add(nodeRuleGroup);
309 private OwnedNodeEdgePoint createNep(TerminationPoint oorTp, List<Name> nepNames, LayerProtocolName nepProtocol,
310 LayerProtocolName nodeProtocol, boolean withSip, String keyword) {
311 String key = keyword + oorTp.getTpId().getValue();
312 OwnedNodeEdgePointBuilder onepBldr = new OwnedNodeEdgePointBuilder()
313 .setUuid(this.uuidMap.get(key))
314 .setLayerProtocolName(nepProtocol)
317 onepBldr.setMappedServiceInterfacePoint(createSIP(1));
319 onepBldr.setSupportedCepLayerProtocolQualifier(createSupportedCepLayerProtocolQualifier(oorTp, nodeProtocol));
320 onepBldr.setLinkPortDirection(PortDirection.BIDIRECTIONAL).setLinkPortRole(PortRole.SYMMETRIC)
321 .setAdministrativeState(AdministrativeState.UNLOCKED).setOperationalState(OperationalState.ENABLED)
322 .setLifecycleState(LifecycleState.INSTALLED).setTerminationDirection(TerminationDirection.BIDIRECTIONAL)
323 .setTerminationState(TerminationState.TERMINATEDBIDIRECTIONAL);
324 return onepBldr.build();
327 private List<MappedServiceInterfacePoint> createSIP(int nb) {
328 List<MappedServiceInterfacePoint> msipl = new ArrayList<>();
329 for (int i = 0; i < nb; i++) {
330 MappedServiceInterfacePoint msip = new MappedServiceInterfacePointBuilder()
331 .setServiceInterfacePointUuid(new Uuid(UUID.randomUUID().toString())).build();
337 private List<Class<? extends LAYERPROTOCOLQUALIFIER>> createSupportedCepLayerProtocolQualifier(TerminationPoint tp,
338 LayerProtocolName lpn) {
339 List<Class<? extends LAYERPROTOCOLQUALIFIER>> sclpqList = new ArrayList<>();
340 List<SupportedInterfaceCapability> sicList = tp.augmentation(org.opendaylight.yang.gen.v1.http.org.openroadm
341 .otn.network.topology.rev181130.TerminationPoint1.class).getTpSupportedInterfaces()
342 .getSupportedInterfaceCapability();
343 for (SupportedInterfaceCapability sic : sicList) {
344 switch (lpn.getName()) {
346 if (sic.getIfCapType().getSimpleName().equals("If10GEODU2e")) {
347 sclpqList.add(DIGITALSIGNALTYPE10GigELAN.class);
348 sclpqList.add(ODUTYPEODU2E.class);
349 } else if (sic.getIfCapType().getSimpleName().equals("IfOCHOTU4ODU4")) {
350 sclpqList.add(ODUTYPEODU4.class);
351 } else if (sic.getIfCapType().getSimpleName().equals("If100GEODU4")) {
352 sclpqList.add(DIGITALSIGNALTYPE100GigE.class);
353 sclpqList.add(ODUTYPEODU4.class);
356 case "PHOTONIC_MEDIA":
357 if (sic.getIfCapType().getSimpleName().equals("IfOCHOTU4ODU4")) {
358 sclpqList.add(PHOTONICLAYERQUALIFIEROTSi.class);
359 sclpqList.add(PHOTONICLAYERQUALIFIEROMS.class);
363 LOG.error("Layer Protocol Name is unknown");
370 private void createTapiTransitionalLinks() {
371 for (TerminationPoint tp : this.oorNetworkPortList) {
372 List<NodeEdgePoint> nepList = new ArrayList<>();
373 String sourceKey = DSR_PLUS + tp.getTpId().getValue();
374 Uuid sourceUuidTp = this.uuidMap.get(sourceKey);
375 String destKey = I_OT_SI + tp.getTpId().getValue();
376 Uuid destUuidTp = this.uuidMap.get(destKey);
377 NodeEdgePoint sourceNep = new NodeEdgePointBuilder()
378 .setTopologyUuid(this.tapiTopoUuid)
379 .setNodeUuid(this.uuidMap.get(this.ietfNodeId + PLUS_DSR))
380 .setNodeEdgePointUuid(sourceUuidTp)
382 nepList.add(sourceNep);
383 NodeEdgePoint destNep = new NodeEdgePointBuilder()
384 .setTopologyUuid(this.tapiTopoUuid)
385 .setNodeUuid(this.uuidMap.get(this.ietfNodeId + OT_SI))
386 .setNodeEdgePointUuid(destUuidTp)
388 nepList.add(destNep);
389 LinkBuilder transiLinkBldr = new LinkBuilder()
391 UUID.nameUUIDFromBytes((sourceKey + "--" + destKey).getBytes(Charset.forName("UTF-8")))
393 .setTransitionedLayerProtocolName(Arrays.asList(LayerProtocolName.ODU.getName(),
394 LayerProtocolName.PHOTONICMEDIA.getName()))
395 .setNodeEdgePoint(nepList)
396 .setDirection(ForwardingDirection.BIDIRECTIONAL)
397 .setAvailableCapacity(new AvailableCapacityBuilder().setTotalSize(
398 new TotalSizeBuilder().setUnit(CapacityUnit.GBPS).setValue(Uint64.valueOf(100)).build()).build());
399 this.tapiLinks.add(transiLinkBldr.build());
403 public List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node> getTapiNodes() {
407 public List<Link> getTapiLinks() {