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.slf4j.Logger;
70 import org.slf4j.LoggerFactory;
72 public final class OpenRoadmOtnTopology {
74 private static final Logger LOG = LoggerFactory.getLogger(OpenRoadmOtnTopology.class);
76 private OpenRoadmOtnTopology() {
79 public static TopologyShard createTopologyShard(Nodes mappingNode) {
80 List<Node> nodes = new ArrayList<>();
81 List<Link> links = new ArrayList<>();
82 Map<Integer, OtnTopoNode> xpdrMap = convertPortMappingToOtnNodeList(mappingNode);
83 for (OtnTopoNode node : xpdrMap.values()) {
84 switch (node.getNodeType()) {
86 nodes.add(createTpdr(node));
89 nodes.add(createMuxpdr(node));
92 nodes.add(createSwitch(node));
95 LOG.error("unknown otn node type {}", node.getNodeType().getName());
99 return new TopologyShard(nodes, links);
102 private static Map<Integer, OtnTopoNode> convertPortMappingToOtnNodeList(Nodes mappingNode) {
103 List<Mapping> networkMappings = mappingNode.getMapping().stream().filter(k -> k.getLogicalConnectionPoint()
104 .contains("NETWORK")).collect(Collectors.toList());
105 Map<Integer, OtnTopoNode> xpdrMap = new HashMap<>();
106 for (Mapping mapping : networkMappings) {
107 Integer xpdrNb = Integer.parseInt(mapping.getLogicalConnectionPoint().split("XPDR")[1].split("-")[0]);
108 if (!xpdrMap.containsKey(xpdrNb)) {
109 List<Mapping> xpdrNetMaps = mappingNode.getMapping().stream().filter(k -> k.getLogicalConnectionPoint()
110 .contains("XPDR" + xpdrNb + "-NETWORK")).collect(Collectors.toList());
111 List<Mapping> xpdrClMaps = mappingNode.getMapping().stream().filter(k -> k.getLogicalConnectionPoint()
112 .contains("XPDR" + xpdrNb + "-CLIENT")).collect(Collectors.toList());
113 OtnTopoNode otnNode = null;
114 if (mapping.getXponderType() != null) {
115 otnNode = new OtnTopoNode(mappingNode.getNodeId(), mappingNode.getNodeInfo().getNodeClli(), xpdrNb,
116 mapping.getXponderType(), fillConnectionMapLcp(xpdrNetMaps), fillConnectionMapLcp(xpdrClMaps));
118 otnNode = new OtnTopoNode(mappingNode.getNodeId(), mappingNode.getNodeInfo().getNodeClli(), xpdrNb,
119 XpdrNodeTypes.Tpdr, fillConnectionMapLcp(xpdrNetMaps), fillConnectionMapLcp(xpdrClMaps));
121 xpdrMap.put(xpdrNb, otnNode);
124 LOG.debug("there are {} xpdr to build", xpdrMap.size());
125 xpdrMap.forEach((k, v) -> LOG.debug("xpdr {} = {} - {} - {} - {}", k, v.getNodeId(), v.getNodeType(),
126 v.getNbTpClient(), v.getNbTpNetwork()));
130 private static Map<String, String> fillConnectionMapLcp(List<Mapping> mappingList) {
131 Map<String, String> xpdrConnectionMap = new HashMap<>();
132 for (Mapping map : mappingList) {
133 if (map.getConnectionMapLcp() != null) {
134 xpdrConnectionMap.put(map.getLogicalConnectionPoint(), map.getConnectionMapLcp());
136 xpdrConnectionMap.put(map.getLogicalConnectionPoint(), null);
139 return xpdrConnectionMap;
142 private static Node createTpdr(OtnTopoNode node) {
143 //create otn-topology node augmentation
144 XpdrAttributes xpdrAttr = new XpdrAttributesBuilder()
145 .setXpdrNumber(Integer.valueOf(node.getXpdrNb()))
147 Node1 otnNodeAug = new Node1Builder()
148 .setXpdrAttributes(xpdrAttr)
150 org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1 ocnNodeAug =
151 new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1Builder()
152 .setNodeType(OpenroadmNodeType.TPDR).build();
153 //create ietf node augmentation to add TP list
154 List<TerminationPoint> tpList = new ArrayList<>();
156 createTP(tpList, node, OpenroadmTpType.XPONDERCLIENT, If100GE.class, false);
157 createTP(tpList, node, OpenroadmTpType.XPONDERNETWORK, IfOCHOTU4ODU4.class, true);
159 org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1 ietfNodeAug =
160 new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1Builder()
161 .setTerminationPoint(tpList)
165 return new NodeBuilder()
166 .setNodeId(new NodeId(node.getNodeId() + "-XPDR" + node.getXpdrNb()))
167 .withKey(new NodeKey(new NodeId(node.getNodeId() + "-XPDR" + node.getXpdrNb())))
168 .setSupportingNode(createSupportingNodes(node))
169 .addAugmentation(Node1.class, otnNodeAug)
170 .addAugmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1.class,
172 .addAugmentation(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226
173 .Node1.class, ietfNodeAug)
177 private static Node createMuxpdr(OtnTopoNode node) {
178 //create otn-topology node augmentation
179 TpBandwidthSharing tpBwSh = new TpBandwidthSharingBuilder().build(); // to be completed
180 XpdrAttributes xpdrAttr = new XpdrAttributesBuilder()
181 .setXpdrNumber(Integer.valueOf(node.getXpdrNb()))
184 List<NonBlockingList> nblList = new ArrayList<>();
185 for (int i = 1; i <= node.getNbTpClient(); i++) {
186 List<TpId> tpList = new ArrayList<>();
187 TpId tpId = new TpId("XPDR" + node.getXpdrNb() + "-CLIENT" + i);
189 tpId = new TpId("XPDR" + node.getXpdrNb() + "-NETWORK1");
191 NonBlockingList nbl = new NonBlockingListBuilder()
194 .setAvailableInterconnectBandwidth(Long.valueOf(node.getNbTpNetwork() * 10))
195 .setInterconnectBandwidthUnit(Long.valueOf(1000000000))
199 OduSwitchingPools oduSwitchPool = new OduSwitchingPoolsBuilder()
200 .setSwitchingPoolNumber(Integer.valueOf(1))
201 .setSwitchingPoolType(SwitchingPoolTypes.NonBlocking)
202 .setNonBlockingList(nblList)
204 List<OduSwitchingPools> oduSwitchPoolList = new ArrayList<>();
205 oduSwitchPoolList.add(oduSwitchPool);
206 SwitchingPools switchingPools = new SwitchingPoolsBuilder()
207 .setOduSwitchingPools(oduSwitchPoolList)
209 Node1 otnNodeAug = new Node1Builder()
210 .setTpBandwidthSharing(tpBwSh)
211 .setXpdrAttributes(xpdrAttr)
212 .setSwitchingPools(switchingPools)
214 org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1 ocnNodeAug =
215 new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1Builder()
216 .setNodeType(OpenroadmNodeType.MUXPDR).build();
218 //create ietf node augmentation to add TP list
219 List<TerminationPoint> tpList = new ArrayList<>();
221 createTP(tpList, node, OpenroadmTpType.XPONDERCLIENT, If10GEODU2e.class, true);
222 createTP(tpList, node, OpenroadmTpType.XPONDERNETWORK, IfOCHOTU4ODU4.class, true);
224 org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1 ietfNodeAug =
225 new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1Builder()
226 .setTerminationPoint(tpList)
230 return new NodeBuilder()
231 .setNodeId(new NodeId(node.getNodeId() + "-XPDR" + node.getXpdrNb()))
232 .withKey(new NodeKey(new NodeId(node.getNodeId() + "-XPDR" + node.getXpdrNb())))
233 .setSupportingNode(createSupportingNodes(node))
234 .addAugmentation(Node1.class, otnNodeAug)
235 .addAugmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1.class,
237 .addAugmentation(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226
238 .Node1.class, ietfNodeAug)
242 private static Node createSwitch(OtnTopoNode node) {
243 List<TpId> tpl = new ArrayList<>();
245 for (int i = 1; i <= node.getNbTpClient(); i++) {
246 tpId = new TpId("XPDR" + node.getXpdrNb() + "-CLIENT" + i);
249 for (int i = 1; i <= node.getNbTpNetwork(); i++) {
250 tpId = new TpId("XPDR" + node.getXpdrNb() + "-NETWORK" + i);
253 List<NonBlockingList> nblList = new ArrayList<>();
254 NonBlockingList nbl = new NonBlockingListBuilder()
255 .setNblNumber(Integer.valueOf(1))
260 OduSwitchingPools oduSwitchPool = new OduSwitchingPoolsBuilder()
261 .setSwitchingPoolNumber(Integer.valueOf(1))
262 .setSwitchingPoolType(SwitchingPoolTypes.NonBlocking)
263 .setNonBlockingList(nblList)
265 List<OduSwitchingPools> oduSwitchPoolList = new ArrayList<>();
266 oduSwitchPoolList.add(oduSwitchPool);
267 SwitchingPools switchingPools = new SwitchingPoolsBuilder()
268 .setOduSwitchingPools(oduSwitchPoolList)
271 //create otn-topology node augmentation
272 TpBandwidthSharing tpBwSh = new TpBandwidthSharingBuilder().build(); // to be completed
273 XpdrAttributes xpdrAttr = new XpdrAttributesBuilder()
274 .setXpdrNumber(Integer.valueOf(node.getXpdrNb()))
277 Node1 otnNodeAug = new Node1Builder()
278 .setTpBandwidthSharing(tpBwSh)
279 .setXpdrAttributes(xpdrAttr)
280 .setSwitchingPools(switchingPools)
282 org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1 ocnNodeAug =
283 new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1Builder()
284 .setNodeType(OpenroadmNodeType.SWITCH).build();
286 //create ietf node augmentation to add TP list
287 List<TerminationPoint> tpList = new ArrayList<>();
289 createTP(tpList, node, OpenroadmTpType.XPONDERCLIENT, If100GEODU4.class, true);
290 createTP(tpList, node, OpenroadmTpType.XPONDERNETWORK, IfOCHOTU4ODU4.class, true);
291 org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1 ietfNodeAug =
292 new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1Builder()
293 .setTerminationPoint(tpList)
297 return new NodeBuilder()
298 .setNodeId(new NodeId(node.getNodeId() + "-XPDR" + node.getXpdrNb()))
299 .withKey(new NodeKey(new NodeId(node.getNodeId() + "-XPDR" + node.getXpdrNb())))
300 .setSupportingNode(createSupportingNodes(node))
301 .addAugmentation(Node1.class, otnNodeAug)
302 .addAugmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1.class,
304 .addAugmentation(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226
305 .Node1.class, ietfNodeAug)
309 private static void createTP(List<TerminationPoint> tpList, OtnTopoNode node, OpenroadmTpType tpType,
310 Class<? extends SupportedIfCapability> ifCapType, boolean withRate) {
312 if (OpenroadmTpType.XPONDERCLIENT.equals(tpType)) {
313 nbTps = node.getNbTpClient();
314 } else if (OpenroadmTpType.XPONDERNETWORK.equals(tpType)) {
315 nbTps = node.getNbTpNetwork();
317 LOG.warn("Wrong tp-type {}, cannot create tp {}", tpType.getName());
320 for (int i = 1; i <= nbTps; i++) {
321 //openroadm-otn-topoology augmentation
322 SupportedInterfaceCapability supIfCapa = new SupportedInterfaceCapabilityBuilder()
323 .setIfCapType(ifCapType)
325 List<SupportedInterfaceCapability> supIfCapaList = new ArrayList<>();
326 supIfCapaList.add(supIfCapa);
327 TpSupportedInterfaces tpSupIf = new TpSupportedInterfacesBuilder()
328 .setSupportedInterfaceCapability(supIfCapaList)
331 XpdrTpPortConnectionAttributesBuilder xtpcaBldr = new XpdrTpPortConnectionAttributesBuilder();
333 xtpcaBldr.setRate(fixRate(ifCapType));
335 TerminationPoint1 otnTp1 = new TerminationPoint1Builder()
336 .setTpSupportedInterfaces(tpSupIf)
337 .setXpdrTpPortConnectionAttributes(xtpcaBldr.build())
339 org.opendaylight.yang.gen.v1.http.transportpce.topology.rev200129.TerminationPoint1Builder tpceTp1Bldr =
340 new org.opendaylight.yang.gen.v1.http.transportpce.topology.rev200129.TerminationPoint1Builder();
341 if (OpenroadmTpType.XPONDERNETWORK.equals(tpType)) {
342 TpId tpId = new TpId("XPDR" + node.getXpdrNb() + "-NETWORK" + i);
343 if (node.getXpdrNetConnectionMap().get(tpId.getValue()) != null) {
344 tpceTp1Bldr.setAssociatedConnectionMapPort(node.getXpdrNetConnectionMap().get(tpId.getValue()));
346 SupportingTerminationPoint stp = new SupportingTerminationPointBuilder()
347 .setNetworkRef(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID))
348 .setNodeRef(new NodeId(node.getNodeId() + "-XPDR" + node.getXpdrNb()))
349 .setTpRef("XPDR" + node.getXpdrNb() + "-NETWORK" + i)
351 List<SupportingTerminationPoint> supportTpList = new ArrayList<>();
352 supportTpList.add(stp);
353 tpList.add(buildIetfTp(tpceTp1Bldr, otnTp1, tpType, tpId, supportTpList));
354 } else if (OpenroadmTpType.XPONDERCLIENT.equals(tpType)) {
355 TpId tpId = new TpId("XPDR" + node.getXpdrNb() + "-CLIENT" + i);
356 if (node.getXpdrCliConnectionMap().get(tpId.getValue()) != null) {
357 tpceTp1Bldr.setAssociatedConnectionMapPort(node.getXpdrCliConnectionMap().get(tpId.getValue()));
359 tpList.add(buildIetfTp(tpceTp1Bldr, otnTp1, tpType, tpId, null));
364 private static Class<? extends OduRateIdentity> fixRate(Class<? extends SupportedIfCapability> ifCapaType) {
365 switch (ifCapaType.getSimpleName()) {
367 case "IfOCHOTU4ODU4":
378 private static List<SupportingNode> createSupportingNodes(OtnTopoNode node) {
379 SupportingNode suppNode1 = new SupportingNodeBuilder()
380 .setNetworkRef(new NetworkId(NetworkUtils.UNDERLAY_NETWORK_ID))
381 .setNodeRef(new NodeId(node.getNodeId()))
382 .withKey(new SupportingNodeKey(new NetworkId(NetworkUtils.UNDERLAY_NETWORK_ID),
383 new NodeId(node.getNodeId())))
385 SupportingNode suppNode2 = new SupportingNodeBuilder()
386 .setNetworkRef(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID))
387 .setNodeRef(new NodeId(node.getNodeId() + "-XPDR" + node.getXpdrNb()))
388 .withKey(new SupportingNodeKey(new NetworkId(NetworkUtils.OVERLAY_NETWORK_ID),
389 new NodeId(node.getNodeId() + "-XPDR" + node.getXpdrNb())))
391 SupportingNode suppNode3 = new SupportingNodeBuilder()
392 .setNetworkRef(new NetworkId(NetworkUtils.CLLI_NETWORK_ID))
393 .setNodeRef(new NodeId(node.getClli()))
394 .withKey(new SupportingNodeKey(new NetworkId(NetworkUtils.CLLI_NETWORK_ID),
395 new NodeId(node.getClli())))
397 List<SupportingNode> suppNodeList = new ArrayList<>();
398 suppNodeList.add(suppNode1);
399 suppNodeList.add(suppNode2);
400 suppNodeList.add(suppNode3);
404 private static TerminationPoint buildIetfTp(org.opendaylight.yang.gen.v1.http.transportpce.topology.rev200129
405 .TerminationPoint1Builder tpceTp1Bldr, TerminationPoint1 otnTp1, OpenroadmTpType tpType, TpId tpId,
406 List<SupportingTerminationPoint> supportTpList) {
408 TerminationPointBuilder ietfTpBldr = new TerminationPointBuilder();
409 if (tpceTp1Bldr.getAssociatedConnectionMapPort() != null) {
410 ietfTpBldr.addAugmentation(org.opendaylight.yang.gen.v1.http.transportpce.topology.rev200129
411 .TerminationPoint1.class, tpceTp1Bldr.build());
413 if (supportTpList != null) {
414 ietfTpBldr.setSupportingTerminationPoint(supportTpList);
416 org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.TerminationPoint1 ocnTp =
417 new org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130
418 .TerminationPoint1Builder().setTpType(tpType).build();
420 ietfTpBldr.setTpId(tpId)
421 .withKey(new TerminationPointKey(tpId))
422 .addAugmentation(TerminationPoint1.class, otnTp1)
423 .addAugmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130
424 .TerminationPoint1.class, ocnTp);
425 return ietfTpBldr.build();