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.common.rev181210.global._class.NameKey;
45 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev181210.DIGITALSIGNALTYPE100GigE;
46 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev181210.DIGITALSIGNALTYPE10GigELAN;
47 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.odu.rev181210.ODUTYPEODU2E;
48 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.odu.rev181210.ODUTYPEODU4;
49 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev181210.PHOTONICLAYERQUALIFIEROMS;
50 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev181210.PHOTONICLAYERQUALIFIEROTSi;
51 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.ForwardingRule;
52 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.RuleType;
53 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.link.NodeEdgePoint;
54 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.link.NodeEdgePointBuilder;
55 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.link.NodeEdgePointKey;
56 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.NodeRuleGroup;
57 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.NodeRuleGroupBuilder;
58 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.NodeRuleGroupKey;
59 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePoint;
60 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePointBuilder;
61 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePointKey;
62 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.edge.point.MappedServiceInterfacePoint;
63 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.edge.point.MappedServiceInterfacePointBuilder;
64 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.edge.point.MappedServiceInterfacePointKey;
65 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.Rule;
66 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.RuleBuilder;
67 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.RuleKey;
68 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Link;
69 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.LinkBuilder;
70 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.LinkKey;
71 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeBuilder;
72 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey;
73 import org.opendaylight.yangtools.yang.common.Uint64;
74 import org.slf4j.Logger;
75 import org.slf4j.LoggerFactory;
77 public class ConvertORTopoObjectToTapiTopoObject {
79 private static final String DSR_PLUS = "DSR+";
80 private static final String PLUS_DSR = "+DSR";
81 private static final String OT_SI = "+OTSi";
82 private static final String E_OT_SI = "eOTSi+";
83 private static final String I_OT_SI = "iOTSi+";
84 private static final Logger LOG = LoggerFactory.getLogger(ConvertORTopoObjectToTapiTopoObject.class);
85 private String ietfNodeId;
86 private List<TerminationPoint> oorClientPortList;
87 private List<TerminationPoint> oorNetworkPortList;
88 private OduSwitchingPools oorOduSwitchingPool;
89 private Uuid tapiTopoUuid;
90 private Map<NodeKey, org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node>
92 private Map<LinkKey, Link> tapiLinks;
93 private Map<String, Uuid> uuidMap;
95 public ConvertORTopoObjectToTapiTopoObject(Node ietfNode, Link1 otnLink, Uuid tapiTopoUuid) {
96 this.ietfNodeId = ietfNode.getNodeId().getValue();
97 this.oorClientPortList = ietfNode.augmentation(
98 org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1.class)
99 .getTerminationPoint().values().stream()
100 .filter(tp -> tp.augmentation(TerminationPoint1.class).getTpType().getIntValue()
101 == OpenroadmTpType.XPONDERCLIENT.getIntValue())
102 .sorted((tp1, tp2) -> tp1.getTpId().getValue().compareTo(tp2.getTpId().getValue()))
103 .collect(Collectors.toList());
104 this.oorNetworkPortList = ietfNode.augmentation(
105 org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1.class)
106 .getTerminationPoint().values().stream()
107 .filter(tp -> tp.augmentation(TerminationPoint1.class).getTpType().getIntValue()
108 == OpenroadmTpType.XPONDERNETWORK.getIntValue())
109 .sorted((tp1, tp2) -> tp1.getTpId().getValue().compareTo(tp2.getTpId().getValue()))
110 .collect(Collectors.toList());
111 this.oorOduSwitchingPool = ietfNode.augmentation(Node1.class).getSwitchingPools().getOduSwitchingPools()
112 .values().stream().findFirst().get();
113 this.tapiTopoUuid = tapiTopoUuid;
114 this.tapiNodes = new HashMap<>();
115 this.tapiLinks = new HashMap<>();
116 this.uuidMap = new HashMap<>();
119 public void convertNode() {
120 // node creation [DSR/ODU]
121 LOG.info("creation of a DSR/ODU node");
122 Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes((this.ietfNodeId + PLUS_DSR).getBytes(Charset.forName("UTF-8")))
124 this.uuidMap.put(this.ietfNodeId + PLUS_DSR, nodeUuid);
125 Name nameDsr = new NameBuilder().setValueName("dsr/odu node name").setValue(this.ietfNodeId).build();
126 List<LayerProtocolName> dsrLayerProtocols = Arrays.asList(LayerProtocolName.DSR, LayerProtocolName.ODU);
127 org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology
128 .Node dsrNode = createTapiNode(Map.of(nameDsr.key(), nameDsr), dsrLayerProtocols);
129 tapiNodes.put(dsrNode.key(), dsrNode);
131 // node creation [otsi]
132 LOG.info("creation of an OTSi node");
133 nodeUuid = new Uuid(UUID.nameUUIDFromBytes((this.ietfNodeId + OT_SI).getBytes(Charset.forName("UTF-8")))
135 this.uuidMap.put(this.ietfNodeId + OT_SI, nodeUuid);
136 Name nameOtsi = new NameBuilder().setValueName("otsi node name").setValue(this.ietfNodeId).build();
137 List<LayerProtocolName> otsiLayerProtocols = Arrays.asList(LayerProtocolName.PHOTONICMEDIA);
138 org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology
139 .Node otsiNode = createTapiNode(Map.of(nameOtsi.key(), nameOtsi), otsiLayerProtocols);
140 tapiNodes.put(otsiNode.key(), otsiNode);
142 // transitional link cration between network nep of DSR/ODU node and iNep of otsi node
143 LOG.info("creation of transitional links between DSR/ODU and OTSi nodes");
144 createTapiTransitionalLinks();
147 private org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology
148 .Node createTapiNode(Map<NameKey, Name> nodeNames, List<LayerProtocolName> layerProtocols) {
149 Uuid nodeUuid = null;
150 Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> onepl = new HashMap<>();
151 Map<NodeRuleGroupKey, NodeRuleGroup> nodeRuleGroupList = new HashMap<>();
152 Map<RuleKey, Rule> ruleList = new HashMap<>();
153 Rule rule = new RuleBuilder()
154 .setLocalId("forward")
155 .setForwardingRule(ForwardingRule.MAYFORWARDACROSSGROUP)
156 .setRuleType(RuleType.FORWARDING)
158 ruleList.put(rule.key(), rule);
159 if (layerProtocols.contains(LayerProtocolName.DSR)) {
160 nodeUuid = getNodeUuid4Dsr(onepl, nodeRuleGroupList, ruleList);
161 } else if (layerProtocols.contains(LayerProtocolName.PHOTONICMEDIA)) {
162 nodeUuid = getNodeUuid4Phonic(onepl, nodeRuleGroupList, ruleList);
164 LOG.error("Undefined LayerProtocolName for {} node {}", nodeNames.get(nodeNames.keySet().iterator().next())
165 .getValueName(), nodeNames.get(nodeNames.keySet().iterator().next()).getValue());
170 return new NodeBuilder()
173 .setLayerProtocolName(layerProtocols)
174 .setAdministrativeState(AdministrativeState.UNLOCKED)
175 .setOperationalState(OperationalState.ENABLED)
176 .setLifecycleState(LifecycleState.INSTALLED)
177 .setOwnedNodeEdgePoint(onepl)
178 .setNodeRuleGroup(nodeRuleGroupList)
182 private Uuid getNodeUuid4Phonic(Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> onepl,
183 Map<NodeRuleGroupKey, NodeRuleGroup> nodeRuleGroupList, Map<RuleKey, Rule> ruleList) {
185 nodeUuid = this.uuidMap.get(this.ietfNodeId + OT_SI);
186 // iNep creation on otsi node
187 for (int i = 0; i < oorNetworkPortList.size(); i++) {
188 Uuid nepUuid1 = new Uuid(UUID.nameUUIDFromBytes(
189 (I_OT_SI + oorNetworkPortList.get(i).getTpId().getValue()).getBytes(Charset.forName("UTF-8")))
191 this.uuidMap.put(I_OT_SI + oorNetworkPortList.get(i).getTpId().getValue(), nepUuid1);
192 Name onedName = new NameBuilder()
193 .setValueName(new StringBuilder("iNodeEdgePoint_").append(i + 1).toString())
194 .setValue(oorNetworkPortList.get(i).getTpId().getValue())
197 OwnedNodeEdgePoint onep = createNep(oorNetworkPortList.get(i), Map.of(onedName.key(), onedName),
198 LayerProtocolName.PHOTONICMEDIA, LayerProtocolName.PHOTONICMEDIA, true, I_OT_SI);
199 onepl.put(onep.key(), onep);
201 // eNep creation on otsi node
202 for (int i = 0; i < oorNetworkPortList.size(); i++) {
203 Uuid nepUuid2 = new Uuid(UUID.nameUUIDFromBytes(
204 (E_OT_SI + oorNetworkPortList.get(i).getTpId().getValue()).getBytes(Charset.forName("UTF-8")))
206 this.uuidMap.put(E_OT_SI + oorNetworkPortList.get(i).getTpId().getValue(), nepUuid2);
207 Name onedName = new NameBuilder()
208 .setValueName(new StringBuilder("eNodeEdgePoint_").append(i + 1).toString())
209 .setValue(oorNetworkPortList.get(i).getTpId().getValue())
212 OwnedNodeEdgePoint onep = createNep(oorNetworkPortList.get(i), Map.of(onedName.key(), onedName),
213 LayerProtocolName.PHOTONICMEDIA, LayerProtocolName.PHOTONICMEDIA, true, E_OT_SI);
214 onepl.put(onep.key(), onep);
216 // create NodeRuleGroup
218 for (TerminationPoint tp : this.oorNetworkPortList) {
219 Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePointKey,
220 org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePoint>
221 nepList = new HashMap<>();
222 org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group
223 .NodeEdgePoint inep = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210
224 .node.rule.group.NodeEdgePointBuilder()
225 .setTopologyUuid(tapiTopoUuid)
226 .setNodeUuid(this.uuidMap.get(this.ietfNodeId + OT_SI))
227 .setNodeEdgePointUuid(this.uuidMap.get(I_OT_SI + tp.getTpId().getValue()))
229 org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group
230 .NodeEdgePoint enep = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210
231 .node.rule.group.NodeEdgePointBuilder()
232 .setTopologyUuid(tapiTopoUuid)
233 .setNodeUuid(this.uuidMap.get(this.ietfNodeId + OT_SI))
234 .setNodeEdgePointUuid(this.uuidMap.get(E_OT_SI + tp.getTpId().getValue()))
236 nepList.put(inep.key(), inep);
237 nepList.put(enep.key(), enep);
238 NodeRuleGroup nodeRuleGroup = new NodeRuleGroupBuilder()
240 UUID.nameUUIDFromBytes(("otsi node rule group " + count).getBytes(Charset.forName("UTF-8")))
243 .setNodeEdgePoint(nepList)
245 nodeRuleGroupList.put(nodeRuleGroup.key(), nodeRuleGroup);
251 private Uuid getNodeUuid4Dsr(Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> onepl,
252 Map<NodeRuleGroupKey, NodeRuleGroup> nodeRuleGroupList, Map<RuleKey, Rule> ruleList) {
254 nodeUuid = this.uuidMap.get(this.ietfNodeId + PLUS_DSR);
255 // client nep creation on DSR/ODU node
256 for (int i = 0; i < oorClientPortList.size(); i++) {
257 Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes((DSR_PLUS + oorClientPortList.get(i).getTpId().getValue())
258 .getBytes(Charset.forName("UTF-8"))).toString());
259 this.uuidMap.put(DSR_PLUS + oorClientPortList.get(i).getTpId().getValue(), nepUuid);
260 Name name = new NameBuilder()
261 .setValueName(new StringBuilder("NodeEdgePoint_C").append(i + 1).toString())
262 .setValue(oorClientPortList.get(i).getTpId().getValue())
265 OwnedNodeEdgePoint onep = createNep(oorClientPortList.get(i), Map.of(name.key(), name),
266 LayerProtocolName.ETH, LayerProtocolName.DSR, true, DSR_PLUS);
267 onepl.put(onep.key(), onep);
269 // network nep creation on DSR/ODU node
270 for (int i = 0; i < oorNetworkPortList.size(); i++) {
271 Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes((DSR_PLUS + oorNetworkPortList.get(i).getTpId().getValue())
272 .getBytes(Charset.forName("UTF-8"))).toString());
273 this.uuidMap.put(DSR_PLUS + oorNetworkPortList.get(i).getTpId().getValue(), nepUuid);
274 Name onedName = new NameBuilder()
275 .setValueName(new StringBuilder("NodeEdgePoint_N").append(i + 1).toString())
276 .setValue(oorNetworkPortList.get(i).getTpId().getValue())
279 OwnedNodeEdgePoint onep = createNep(oorNetworkPortList.get(i), Map.of(onedName.key(), onedName),
280 LayerProtocolName.ODU, LayerProtocolName.DSR, true, DSR_PLUS);
281 onepl.put(onep.key(), onep);
283 // create NodeRuleGroup
285 for (NonBlockingList nbl : this.oorOduSwitchingPool.getNonBlockingList().values()) {
286 Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePointKey,
287 org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePoint>
288 nepList = new HashMap<>();
289 for (TpId tp : nbl.getTpList()) {
290 org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group
291 .NodeEdgePoint nep = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210
292 .node.rule.group.NodeEdgePointBuilder()
293 .setTopologyUuid(tapiTopoUuid)
294 .setNodeUuid(this.uuidMap.get(this.ietfNodeId + PLUS_DSR))
295 .setNodeEdgePointUuid(this.uuidMap.get(DSR_PLUS + tp.getValue()))
297 nepList.put(nep.key(), nep);
299 NodeRuleGroup nodeRuleGroup = new NodeRuleGroupBuilder()
301 UUID.nameUUIDFromBytes(("dsr node rule group " + count).getBytes(Charset.forName("UTF-8")))
304 .setNodeEdgePoint(nepList)
306 nodeRuleGroupList.put(nodeRuleGroup.key(), nodeRuleGroup);
312 private OwnedNodeEdgePoint createNep(TerminationPoint oorTp, Map<NameKey, Name> nepNames,
313 LayerProtocolName nepProtocol, LayerProtocolName nodeProtocol, boolean withSip, String keyword) {
314 String key = keyword + oorTp.getTpId().getValue();
315 OwnedNodeEdgePointBuilder onepBldr = new OwnedNodeEdgePointBuilder()
316 .setUuid(this.uuidMap.get(key))
317 .setLayerProtocolName(nepProtocol)
320 onepBldr.setMappedServiceInterfacePoint(createSIP(1));
322 onepBldr.setSupportedCepLayerProtocolQualifier(createSupportedCepLayerProtocolQualifier(oorTp, nodeProtocol));
323 onepBldr.setLinkPortDirection(PortDirection.BIDIRECTIONAL).setLinkPortRole(PortRole.SYMMETRIC)
324 .setAdministrativeState(AdministrativeState.UNLOCKED).setOperationalState(OperationalState.ENABLED)
325 .setLifecycleState(LifecycleState.INSTALLED).setTerminationDirection(TerminationDirection.BIDIRECTIONAL)
326 .setTerminationState(TerminationState.TERMINATEDBIDIRECTIONAL);
327 return onepBldr.build();
330 private Map<MappedServiceInterfacePointKey, MappedServiceInterfacePoint> createSIP(int nb) {
331 Map<MappedServiceInterfacePointKey, MappedServiceInterfacePoint> msipl = new HashMap<>();
332 for (int i = 0; i < nb; i++) {
333 MappedServiceInterfacePoint msip = new MappedServiceInterfacePointBuilder()
334 .setServiceInterfacePointUuid(new Uuid(UUID.randomUUID().toString())).build();
335 msipl.put(msip.key(), msip);
340 private List<Class<? extends LAYERPROTOCOLQUALIFIER>> createSupportedCepLayerProtocolQualifier(TerminationPoint tp,
341 LayerProtocolName lpn) {
342 List<Class<? extends LAYERPROTOCOLQUALIFIER>> sclpqList = new ArrayList<>();
343 List<SupportedInterfaceCapability> sicList = new ArrayList<>(
344 tp.augmentation(org.opendaylight.yang.gen.v1.http.org.openroadm
345 .otn.network.topology.rev181130.TerminationPoint1.class).getTpSupportedInterfaces()
346 .getSupportedInterfaceCapability().values());
347 for (SupportedInterfaceCapability sic : sicList) {
348 switch (lpn.getName()) {
350 if (sic.getIfCapType().getSimpleName().equals("If10GEODU2e")) {
351 sclpqList.add(DIGITALSIGNALTYPE10GigELAN.class);
352 sclpqList.add(ODUTYPEODU2E.class);
353 } else if (sic.getIfCapType().getSimpleName().equals("IfOCHOTU4ODU4")) {
354 sclpqList.add(ODUTYPEODU4.class);
355 } else if (sic.getIfCapType().getSimpleName().equals("If100GEODU4")) {
356 sclpqList.add(DIGITALSIGNALTYPE100GigE.class);
357 sclpqList.add(ODUTYPEODU4.class);
360 case "PHOTONIC_MEDIA":
361 if (sic.getIfCapType().getSimpleName().equals("IfOCHOTU4ODU4")) {
362 sclpqList.add(PHOTONICLAYERQUALIFIEROTSi.class);
363 sclpqList.add(PHOTONICLAYERQUALIFIEROMS.class);
367 LOG.error("Layer Protocol Name is unknown");
374 private void createTapiTransitionalLinks() {
375 for (TerminationPoint tp : this.oorNetworkPortList) {
376 Map<NodeEdgePointKey, NodeEdgePoint> nepList = new HashMap<>();
377 String sourceKey = DSR_PLUS + tp.getTpId().getValue();
378 Uuid sourceUuidTp = this.uuidMap.get(sourceKey);
379 String destKey = I_OT_SI + tp.getTpId().getValue();
380 Uuid destUuidTp = this.uuidMap.get(destKey);
381 NodeEdgePoint sourceNep = new NodeEdgePointBuilder()
382 .setTopologyUuid(this.tapiTopoUuid)
383 .setNodeUuid(this.uuidMap.get(this.ietfNodeId + PLUS_DSR))
384 .setNodeEdgePointUuid(sourceUuidTp)
386 nepList.put(sourceNep.key(), sourceNep);
387 NodeEdgePoint destNep = new NodeEdgePointBuilder()
388 .setTopologyUuid(this.tapiTopoUuid)
389 .setNodeUuid(this.uuidMap.get(this.ietfNodeId + OT_SI))
390 .setNodeEdgePointUuid(destUuidTp)
392 nepList.put(destNep.key(), destNep);
393 Link transiLink = new LinkBuilder()
395 UUID.nameUUIDFromBytes((sourceKey + "--" + destKey).getBytes(Charset.forName("UTF-8")))
397 .setTransitionedLayerProtocolName(Arrays.asList(LayerProtocolName.ODU.getName(),
398 LayerProtocolName.PHOTONICMEDIA.getName()))
399 .setNodeEdgePoint(nepList)
400 .setDirection(ForwardingDirection.BIDIRECTIONAL)
401 .setAvailableCapacity(new AvailableCapacityBuilder().setTotalSize(
402 new TotalSizeBuilder().setUnit(CapacityUnit.GBPS).setValue(Uint64.valueOf(100)).build()).build())
404 this.tapiLinks.put(transiLink.key(), transiLink);
408 public Map<NodeKey, org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node>
413 public Map<LinkKey, Link> getTapiLinks() {