2 * Copyright © 2020 Orange. 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
9 package org.opendaylight.transportpce.networkmodel.util;
11 import java.util.ArrayList;
12 import java.util.HashMap;
13 import java.util.List;
15 import java.util.stream.Collectors;
17 import org.opendaylight.transportpce.common.NetworkUtils;
18 import org.opendaylight.transportpce.networkmodel.dto.OtnTopoNode;
19 import org.opendaylight.transportpce.networkmodel.dto.TopologyShard;
20 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200128.network.Nodes;
21 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200128.network.nodes.Mapping;
22 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.XpdrNodeTypes;
23 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev181130.xpdr.odu.switching.pools.OduSwitchingPools;
24 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev181130.xpdr.odu.switching.pools.OduSwitchingPoolsBuilder;
25 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev181130.xpdr.odu.switching.pools.odu.switching.pools.NonBlockingList;
26 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev181130.xpdr.odu.switching.pools.odu.switching.pools.NonBlockingListBuilder;
27 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmNodeType;
28 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmTpType;
29 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.xpdr.tp.supported.interfaces.SupportedInterfaceCapability;
30 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.xpdr.tp.supported.interfaces.SupportedInterfaceCapabilityBuilder;
31 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev181130.ODU0;
32 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev181130.ODU2e;
33 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev181130.ODU4;
34 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev181130.OduRateIdentity;
35 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130.Node1;
36 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130.Node1Builder;
37 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130.TerminationPoint1;
38 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130.TerminationPoint1Builder;
39 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130.networks.network.node.SwitchingPools;
40 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130.networks.network.node.SwitchingPoolsBuilder;
41 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130.networks.network.node.TpBandwidthSharing;
42 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130.networks.network.node.TpBandwidthSharingBuilder;
43 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130.networks.network.node.XpdrAttributes;
44 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130.networks.network.node.XpdrAttributesBuilder;
45 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130.networks.network.node.termination.point.TpSupportedInterfaces;
46 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130.networks.network.node.termination.point.TpSupportedInterfacesBuilder;
47 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130.networks.network.node.termination.point.XpdrTpPortConnectionAttributesBuilder;
48 import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev181130.If100GE;
49 import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev181130.If100GEODU4;
50 import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev181130.If10GEODU2e;
51 import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev181130.IfOCHOTU4ODU4;
52 import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev181130.SupportedIfCapability;
53 import org.opendaylight.yang.gen.v1.http.org.openroadm.switching.pool.types.rev181130.SwitchingPoolTypes;
54 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NetworkId;
55 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NodeId;
56 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.Node;
57 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.NodeBuilder;
58 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.NodeKey;
59 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.node.SupportingNode;
60 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.node.SupportingNodeBuilder;
61 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.node.SupportingNodeKey;
62 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.TpId;
63 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.Link;
64 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.TerminationPoint;
65 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.TerminationPointBuilder;
66 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.TerminationPointKey;
67 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.termination.point.SupportingTerminationPoint;
68 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.termination.point.SupportingTerminationPointBuilder;
69 import org.opendaylight.yangtools.yang.common.Uint16;
70 import org.opendaylight.yangtools.yang.common.Uint32;
71 import org.slf4j.Logger;
72 import org.slf4j.LoggerFactory;
74 public final class OpenRoadmOtnTopology {
76 private static final Logger LOG = LoggerFactory.getLogger(OpenRoadmOtnTopology.class);
77 private static final String CLIENT = "-CLIENT";
78 private static final String NETWORK = "-NETWORK";
79 private static final String XPDR = "-XPDR";
81 private OpenRoadmOtnTopology() {
84 public static TopologyShard createTopologyShard(Nodes mappingNode) {
85 List<Node> nodes = new ArrayList<>();
86 List<Link> links = new ArrayList<>();
87 Map<Integer, OtnTopoNode> xpdrMap = convertPortMappingToOtnNodeList(mappingNode);
88 for (OtnTopoNode node : xpdrMap.values()) {
89 switch (node.getNodeType()) {
91 nodes.add(createTpdr(node));
94 nodes.add(createMuxpdr(node));
97 nodes.add(createSwitch(node));
100 LOG.error("unknown otn node type {}", node.getNodeType().getName());
104 return new TopologyShard(nodes, links);
107 private static Map<Integer, OtnTopoNode> convertPortMappingToOtnNodeList(Nodes mappingNode) {
108 List<Mapping> networkMappings = mappingNode.getMapping().stream().filter(k -> k.getLogicalConnectionPoint()
109 .contains("NETWORK")).collect(Collectors.toList());
110 Map<Integer, OtnTopoNode> xpdrMap = new HashMap<>();
111 for (Mapping mapping : networkMappings) {
112 Integer xpdrNb = Integer.parseInt(mapping.getLogicalConnectionPoint().split("XPDR")[1].split("-")[0]);
113 if (!xpdrMap.containsKey(xpdrNb)) {
114 List<Mapping> xpdrNetMaps = mappingNode.getMapping().stream().filter(k -> k.getLogicalConnectionPoint()
115 .contains("XPDR" + xpdrNb + NETWORK)).collect(Collectors.toList());
116 List<Mapping> xpdrClMaps = mappingNode.getMapping().stream().filter(k -> k.getLogicalConnectionPoint()
117 .contains("XPDR" + xpdrNb + CLIENT)).collect(Collectors.toList());
118 OtnTopoNode otnNode = null;
119 if (mapping.getXponderType() != null) {
120 otnNode = new OtnTopoNode(mappingNode.getNodeId(), mappingNode.getNodeInfo().getNodeClli(), xpdrNb,
121 mapping.getXponderType(), fillConnectionMapLcp(xpdrNetMaps), fillConnectionMapLcp(xpdrClMaps));
123 otnNode = new OtnTopoNode(mappingNode.getNodeId(), mappingNode.getNodeInfo().getNodeClli(), xpdrNb,
124 XpdrNodeTypes.Tpdr, fillConnectionMapLcp(xpdrNetMaps), fillConnectionMapLcp(xpdrClMaps));
126 xpdrMap.put(xpdrNb, otnNode);
129 LOG.debug("there are {} xpdr to build", xpdrMap.size());
130 xpdrMap.forEach((k, v) -> LOG.debug("xpdr {} = {} - {} - {} - {}", k, v.getNodeId(), v.getNodeType(),
131 v.getNbTpClient(), v.getNbTpNetwork()));
135 private static Map<String, String> fillConnectionMapLcp(List<Mapping> mappingList) {
136 Map<String, String> xpdrConnectionMap = new HashMap<>();
137 for (Mapping map : mappingList) {
138 if (map.getConnectionMapLcp() != null) {
139 xpdrConnectionMap.put(map.getLogicalConnectionPoint(), map.getConnectionMapLcp());
141 xpdrConnectionMap.put(map.getLogicalConnectionPoint(), null);
144 return xpdrConnectionMap;
147 private static Node createTpdr(OtnTopoNode node) {
148 //create otn-topology node augmentation
149 XpdrAttributes xpdrAttr = new XpdrAttributesBuilder()
150 .setXpdrNumber(Uint16.valueOf(node.getXpdrNb()))
152 Node1 otnNodeAug = new Node1Builder()
153 .setXpdrAttributes(xpdrAttr)
155 org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1 ocnNodeAug =
156 new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1Builder()
157 .setNodeType(OpenroadmNodeType.TPDR).build();
158 //create ietf node augmentation to add TP list
159 List<TerminationPoint> tpList = new ArrayList<>();
161 createTP(tpList, node, OpenroadmTpType.XPONDERCLIENT, If100GE.class, false);
162 createTP(tpList, node, OpenroadmTpType.XPONDERNETWORK, IfOCHOTU4ODU4.class, true);
164 org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1 ietfNodeAug =
165 new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1Builder()
166 .setTerminationPoint(tpList)
170 return new NodeBuilder()
171 .setNodeId(new NodeId(node.getNodeId() + XPDR + node.getXpdrNb()))
172 .withKey(new NodeKey(new NodeId(node.getNodeId() + XPDR + node.getXpdrNb())))
173 .setSupportingNode(createSupportingNodes(node))
174 .addAugmentation(Node1.class, otnNodeAug)
175 .addAugmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1.class,
177 .addAugmentation(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226
178 .Node1.class, ietfNodeAug)
182 private static Node createMuxpdr(OtnTopoNode node) {
183 // create otn-topology node augmentation
184 // TODO: will need to be completed
185 TpBandwidthSharing tpBwSh = new TpBandwidthSharingBuilder().build();
186 XpdrAttributes xpdrAttr = new XpdrAttributesBuilder()
187 .setXpdrNumber(Uint16.valueOf(node.getXpdrNb()))
190 List<NonBlockingList> nblList = new ArrayList<>();
191 for (int i = 1; i <= node.getNbTpClient(); i++) {
192 List<TpId> tpList = new ArrayList<>();
193 TpId tpId = new TpId("XPDR" + node.getXpdrNb() + CLIENT + i);
195 tpId = new TpId("XPDR" + node.getXpdrNb() + "-NETWORK1");
197 NonBlockingList nbl = new NonBlockingListBuilder()
198 .setNblNumber(Uint16.valueOf(i))
200 .setAvailableInterconnectBandwidth(Uint32.valueOf(node.getNbTpNetwork() * 10L))
201 .setInterconnectBandwidthUnit(Uint32.valueOf(1000000000))
205 OduSwitchingPools oduSwitchPool = new OduSwitchingPoolsBuilder()
206 .setSwitchingPoolNumber(Uint16.valueOf(1))
207 .setSwitchingPoolType(SwitchingPoolTypes.NonBlocking)
208 .setNonBlockingList(nblList)
210 List<OduSwitchingPools> oduSwitchPoolList = new ArrayList<>();
211 oduSwitchPoolList.add(oduSwitchPool);
212 SwitchingPools switchingPools = new SwitchingPoolsBuilder()
213 .setOduSwitchingPools(oduSwitchPoolList)
215 Node1 otnNodeAug = new Node1Builder()
216 .setTpBandwidthSharing(tpBwSh)
217 .setXpdrAttributes(xpdrAttr)
218 .setSwitchingPools(switchingPools)
220 org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1 ocnNodeAug =
221 new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1Builder()
222 .setNodeType(OpenroadmNodeType.MUXPDR).build();
224 //create ietf node augmentation to add TP list
225 List<TerminationPoint> tpList = new ArrayList<>();
227 createTP(tpList, node, OpenroadmTpType.XPONDERCLIENT, If10GEODU2e.class, true);
228 createTP(tpList, node, OpenroadmTpType.XPONDERNETWORK, IfOCHOTU4ODU4.class, true);
230 org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1 ietfNodeAug =
231 new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1Builder()
232 .setTerminationPoint(tpList)
236 return new NodeBuilder()
237 .setNodeId(new NodeId(node.getNodeId() + XPDR + node.getXpdrNb()))
238 .withKey(new NodeKey(new NodeId(node.getNodeId() + XPDR + node.getXpdrNb())))
239 .setSupportingNode(createSupportingNodes(node))
240 .addAugmentation(Node1.class, otnNodeAug)
241 .addAugmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1.class,
243 .addAugmentation(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226
244 .Node1.class, ietfNodeAug)
248 private static Node createSwitch(OtnTopoNode node) {
249 List<TpId> tpl = new ArrayList<>();
251 for (int i = 1; i <= node.getNbTpClient(); i++) {
252 tpId = new TpId("XPDR" + node.getXpdrNb() + CLIENT + i);
255 for (int i = 1; i <= node.getNbTpNetwork(); i++) {
256 tpId = new TpId("XPDR" + node.getXpdrNb() + NETWORK + i);
259 List<NonBlockingList> nblList = new ArrayList<>();
260 NonBlockingList nbl = new NonBlockingListBuilder()
261 .setNblNumber(Uint16.valueOf(1))
266 OduSwitchingPools oduSwitchPool = new OduSwitchingPoolsBuilder()
267 .setSwitchingPoolNumber(Uint16.valueOf(1))
268 .setSwitchingPoolType(SwitchingPoolTypes.NonBlocking)
269 .setNonBlockingList(nblList)
271 List<OduSwitchingPools> oduSwitchPoolList = new ArrayList<>();
272 oduSwitchPoolList.add(oduSwitchPool);
273 SwitchingPools switchingPools = new SwitchingPoolsBuilder()
274 .setOduSwitchingPools(oduSwitchPoolList)
277 // create otn-topology node augmentation
278 // TODO: will need to be completed
279 TpBandwidthSharing tpBwSh = new TpBandwidthSharingBuilder().build();
280 XpdrAttributes xpdrAttr = new XpdrAttributesBuilder()
281 .setXpdrNumber(Uint16.valueOf(node.getXpdrNb()))
284 Node1 otnNodeAug = new Node1Builder()
285 .setTpBandwidthSharing(tpBwSh)
286 .setXpdrAttributes(xpdrAttr)
287 .setSwitchingPools(switchingPools)
289 org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1 ocnNodeAug =
290 new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1Builder()
291 .setNodeType(OpenroadmNodeType.SWITCH).build();
293 //create ietf node augmentation to add TP list
294 List<TerminationPoint> tpList = new ArrayList<>();
296 createTP(tpList, node, OpenroadmTpType.XPONDERCLIENT, If100GEODU4.class, true);
297 createTP(tpList, node, OpenroadmTpType.XPONDERNETWORK, IfOCHOTU4ODU4.class, true);
298 org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1 ietfNodeAug =
299 new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1Builder()
300 .setTerminationPoint(tpList)
304 return new NodeBuilder()
305 .setNodeId(new NodeId(node.getNodeId() + XPDR + node.getXpdrNb()))
306 .withKey(new NodeKey(new NodeId(node.getNodeId() + XPDR + node.getXpdrNb())))
307 .setSupportingNode(createSupportingNodes(node))
308 .addAugmentation(Node1.class, otnNodeAug)
309 .addAugmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1.class,
311 .addAugmentation(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226
312 .Node1.class, ietfNodeAug)
316 private static void createTP(List<TerminationPoint> tpList, OtnTopoNode node, OpenroadmTpType tpType,
317 Class<? extends SupportedIfCapability> ifCapType, boolean withRate) {
319 if (OpenroadmTpType.XPONDERCLIENT.equals(tpType)) {
320 nbTps = node.getNbTpClient();
321 } else if (OpenroadmTpType.XPONDERNETWORK.equals(tpType)) {
322 nbTps = node.getNbTpNetwork();
324 LOG.warn("Wrong tp-type {}, cannot create tp {}", tpType, tpType.getName());
327 for (int i = 1; i <= nbTps; i++) {
328 //openroadm-otn-topoology augmentation
329 SupportedInterfaceCapability supIfCapa = new SupportedInterfaceCapabilityBuilder()
330 .setIfCapType(ifCapType)
332 List<SupportedInterfaceCapability> supIfCapaList = new ArrayList<>();
333 supIfCapaList.add(supIfCapa);
334 TpSupportedInterfaces tpSupIf = new TpSupportedInterfacesBuilder()
335 .setSupportedInterfaceCapability(supIfCapaList)
338 XpdrTpPortConnectionAttributesBuilder xtpcaBldr = new XpdrTpPortConnectionAttributesBuilder();
340 xtpcaBldr.setRate(fixRate(ifCapType));
342 TerminationPoint1 otnTp1 = new TerminationPoint1Builder()
343 .setTpSupportedInterfaces(tpSupIf)
344 .setXpdrTpPortConnectionAttributes(xtpcaBldr.build())
346 org.opendaylight.yang.gen.v1.http.transportpce.topology.rev200129.TerminationPoint1Builder tpceTp1Bldr =
347 new org.opendaylight.yang.gen.v1.http.transportpce.topology.rev200129.TerminationPoint1Builder();
348 if (OpenroadmTpType.XPONDERNETWORK.equals(tpType)) {
349 TpId tpId = new TpId("XPDR" + node.getXpdrNb() + NETWORK + i);
350 if (node.getXpdrNetConnectionMap().get(tpId.getValue()) != null) {
351 tpceTp1Bldr.setAssociatedConnectionMapPort(node.getXpdrNetConnectionMap().get(tpId.getValue()));
353 SupportingTerminationPoint stp = new SupportingTerminationPointBuilder()
354 .setNetworkRef(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID))
355 .setNodeRef(new NodeId(node.getNodeId() + XPDR + node.getXpdrNb()))
356 .setTpRef("XPDR" + node.getXpdrNb() + NETWORK + i)
358 List<SupportingTerminationPoint> supportTpList = new ArrayList<>();
359 supportTpList.add(stp);
360 tpList.add(buildIetfTp(tpceTp1Bldr, otnTp1, tpType, tpId, supportTpList));
361 } else if (OpenroadmTpType.XPONDERCLIENT.equals(tpType)) {
362 TpId tpId = new TpId("XPDR" + node.getXpdrNb() + CLIENT + i);
363 if (node.getXpdrCliConnectionMap().get(tpId.getValue()) != null) {
364 tpceTp1Bldr.setAssociatedConnectionMapPort(node.getXpdrCliConnectionMap().get(tpId.getValue()));
366 tpList.add(buildIetfTp(tpceTp1Bldr, otnTp1, tpType, tpId, null));
371 private static Class<? extends OduRateIdentity> fixRate(Class<? extends SupportedIfCapability> ifCapaType) {
372 switch (ifCapaType.getSimpleName()) {
374 case "IfOCHOTU4ODU4":
385 private static List<SupportingNode> createSupportingNodes(OtnTopoNode node) {
386 SupportingNode suppNode1 = new SupportingNodeBuilder()
387 .setNetworkRef(new NetworkId(NetworkUtils.UNDERLAY_NETWORK_ID))
388 .setNodeRef(new NodeId(node.getNodeId()))
389 .withKey(new SupportingNodeKey(new NetworkId(NetworkUtils.UNDERLAY_NETWORK_ID),
390 new NodeId(node.getNodeId())))
392 SupportingNode suppNode2 = new SupportingNodeBuilder()
393 .setNetworkRef(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID))
394 .setNodeRef(new NodeId(node.getNodeId() + XPDR + node.getXpdrNb()))
395 .withKey(new SupportingNodeKey(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID),
396 new NodeId(node.getNodeId() + XPDR + node.getXpdrNb())))
398 SupportingNode suppNode3 = new SupportingNodeBuilder()
399 .setNetworkRef(new NetworkId(NetworkUtils.CLLI_NETWORK_ID))
400 .setNodeRef(new NodeId(node.getClli()))
401 .withKey(new SupportingNodeKey(new NetworkId(NetworkUtils.CLLI_NETWORK_ID),
402 new NodeId(node.getClli())))
404 List<SupportingNode> suppNodeList = new ArrayList<>();
405 suppNodeList.add(suppNode1);
406 suppNodeList.add(suppNode2);
407 suppNodeList.add(suppNode3);
411 private static TerminationPoint buildIetfTp(org.opendaylight.yang.gen.v1.http.transportpce.topology.rev200129
412 .TerminationPoint1Builder tpceTp1Bldr, TerminationPoint1 otnTp1, OpenroadmTpType tpType, TpId tpId,
413 List<SupportingTerminationPoint> supportTpList) {
415 TerminationPointBuilder ietfTpBldr = new TerminationPointBuilder();
416 if (tpceTp1Bldr.getAssociatedConnectionMapPort() != null) {
417 ietfTpBldr.addAugmentation(org.opendaylight.yang.gen.v1.http.transportpce.topology.rev200129
418 .TerminationPoint1.class, tpceTp1Bldr.build());
420 if (supportTpList != null) {
421 ietfTpBldr.setSupportingTerminationPoint(supportTpList);
423 org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.TerminationPoint1 ocnTp =
424 new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130
425 .TerminationPoint1Builder().setTpType(tpType).build();
427 ietfTpBldr.setTpId(tpId)
428 .withKey(new TerminationPointKey(tpId))
429 .addAugmentation(TerminationPoint1.class, otnTp1)
430 .addAugmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130
431 .TerminationPoint1.class, ocnTp);
432 return ietfTpBldr.build();