2 * Copyright © 2023 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.math.RoundingMode;
11 import java.nio.charset.Charset;
12 import java.util.ArrayList;
13 import java.util.Collection;
14 import java.util.HashMap;
15 import java.util.HashSet;
16 import java.util.List;
19 import java.util.UUID;
20 import java.util.stream.Collectors;
21 import org.opendaylight.transportpce.common.fixedflex.GridConstant;
22 import org.opendaylight.transportpce.tapi.TapiStringConstants;
23 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.TerminationPoint1;
24 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State;
25 import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev191129.AdminStates;
26 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev230526.networks.network.node.termination.point.PpAttributes;
27 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev230526.networks.network.node.termination.point.XpdrNetworkAttributes;
28 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev230526.xpdr.odu.switching.pools.OduSwitchingPools;
29 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev230526.xpdr.odu.switching.pools.OduSwitchingPoolsBuilder;
30 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev230526.xpdr.odu.switching.pools.odu.switching.pools.NonBlockingList;
31 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev230526.xpdr.odu.switching.pools.odu.switching.pools.NonBlockingListBuilder;
32 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev230526.xpdr.odu.switching.pools.odu.switching.pools.NonBlockingListKey;
33 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev230526.OpenroadmNodeType;
34 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev230526.OpenroadmTpType;
35 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev230526.xpdr.tp.supported.interfaces.SupportedInterfaceCapability;
36 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev230526.Node1;
37 import org.opendaylight.yang.gen.v1.http.org.openroadm.xponder.rev230526.xpdr.mode.attributes.supported.operational.modes.OperationalModeKey;
38 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.Node;
39 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.TpId;
40 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.TerminationPoint;
41 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.AdministrativeState;
42 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.CAPACITYUNITGBPS;
43 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Direction;
44 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LayerProtocolName;
45 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.LifecycleState;
46 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.OperationalState;
47 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.PortRole;
48 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.Uuid;
49 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.capacity.pac.AvailableCapacityBuilder;
50 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.capacity.pac.TotalPotentialCapacityBuilder;
51 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.Name;
52 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameBuilder;
53 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameKey;
54 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.payload.structure.CapacityBuilder;
55 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.tapi.context.ServiceInterfacePoint;
56 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.tapi.context.ServiceInterfacePointBuilder;
57 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.tapi.context.ServiceInterfacePointKey;
58 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.digital.otn.rev221121.ODUTYPEODU0;
59 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.digital.otn.rev221121.ODUTYPEODU2;
60 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.digital.otn.rev221121.ODUTYPEODU2E;
61 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.digital.otn.rev221121.ODUTYPEODU4;
62 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.digital.otn.rev221121.ODUTYPEODUCN;
63 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.digital.otn.rev221121.OTUTYPEOTUCN;
64 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev221121.DIGITALSIGNALTYPE100GigE;
65 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev221121.DIGITALSIGNALTYPE10GigELAN;
66 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev221121.DIGITALSIGNALTYPEGigE;
67 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.PHOTONICLAYERQUALIFIEROTS;
68 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.PHOTONICLAYERQUALIFIEROTSi;
69 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.PHOTONICLAYERQUALIFIEROTSiMC;
70 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.context.topology.context.topology.node.owned.node.edge.point.PhotonicMediaNodeEdgePointSpec;
71 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.context.topology.context.topology.node.owned.node.edge.point.PhotonicMediaNodeEdgePointSpecBuilder;
72 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.photonic.media.node.edge.point.spec.SpectrumCapabilityPacBuilder;
73 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.spectrum.capability.pac.AvailableSpectrum;
74 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.spectrum.capability.pac.AvailableSpectrumBuilder;
75 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.spectrum.capability.pac.AvailableSpectrumKey;
76 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.spectrum.capability.pac.OccupiedSpectrum;
77 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.spectrum.capability.pac.OccupiedSpectrumBuilder;
78 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.spectrum.capability.pac.OccupiedSpectrumKey;
79 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.spectrum.capability.pac.SupportableSpectrum;
80 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.spectrum.capability.pac.SupportableSpectrumBuilder;
81 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.spectrum.capability.pac.SupportableSpectrumKey;
82 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.FORWARDINGRULEMAYFORWARDACROSSGROUP;
83 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.RuleType;
84 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.NodeRuleGroup;
85 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.NodeRuleGroupBuilder;
86 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.NodeRuleGroupKey;
87 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePoint;
88 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePointBuilder;
89 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.OwnedNodeEdgePointKey;
90 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.RiskParameterPac;
91 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.RiskParameterPacBuilder;
92 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.AvailablePayloadStructure;
93 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.AvailablePayloadStructureBuilder;
94 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.MappedServiceInterfacePoint;
95 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.MappedServiceInterfacePointBuilder;
96 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.MappedServiceInterfacePointKey;
97 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.SupportedCepLayerProtocolQualifierInstances;
98 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.SupportedCepLayerProtocolQualifierInstancesBuilder;
99 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.SupportedPayloadStructure;
100 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.edge.point.SupportedPayloadStructureBuilder;
101 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.Rule;
102 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.RuleBuilder;
103 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.RuleKey;
104 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.risk.parameter.pac.RiskCharacteristic;
105 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.risk.parameter.pac.RiskCharacteristicBuilder;
106 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Link;
107 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.LinkKey;
108 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeBuilder;
109 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.NodeKey;
110 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.transfer.cost.pac.CostCharacteristic;
111 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.transfer.cost.pac.CostCharacteristicBuilder;
112 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.transfer.timing.pac.LatencyCharacteristic;
113 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.transfer.timing.pac.LatencyCharacteristicBuilder;
114 import org.opendaylight.yangtools.yang.common.Decimal64;
115 import org.opendaylight.yangtools.yang.common.Uint16;
116 import org.opendaylight.yangtools.yang.common.Uint64;
117 import org.slf4j.Logger;
118 import org.slf4j.LoggerFactory;
121 public class ConvertORToTapiTopology {
123 private static final Logger LOG = LoggerFactory.getLogger(ConvertORToTapiTopology.class);
124 private String ietfNodeId;
125 private OpenroadmNodeType ietfNodeType;
126 private AdminStates ietfNodeAdminState;
127 private State ietfNodeOperState;
128 private List<TerminationPoint> oorClientPortList;
129 private List<TerminationPoint> oorNetworkPortList;
130 private OduSwitchingPools oorOduSwitchingPool;
131 private Uuid tapiTopoUuid;
132 private Map<NodeKey, org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node>
134 private Map<LinkKey, Link> tapiLinks;
135 private Map<ServiceInterfacePointKey, ServiceInterfacePoint> tapiSips;
136 private Map<String, Uuid> uuidMap;
139 public ConvertORToTapiTopology(Uuid tapiTopoUuid) {
140 this.tapiTopoUuid = tapiTopoUuid;
141 this.tapiNodes = new HashMap<>();
142 this.tapiLinks = new HashMap<>();
143 this.uuidMap = new HashMap<>();
144 this.tapiSips = new HashMap<>();
147 public void convertNode(Node ietfNode, List<String> networkPorts) {
148 this.ietfNodeId = ietfNode.getNodeId().getValue();
149 if (ietfNode.augmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.Node1.class)
153 this.ietfNodeType = ietfNode.augmentation(
154 org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.Node1.class).getNodeType();
155 this.ietfNodeAdminState = ietfNode.augmentation(
156 org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.Node1.class)
157 .getAdministrativeState();
158 this.ietfNodeOperState = ietfNode.augmentation(
159 org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.Node1.class)
160 .getOperationalState();
161 this.oorNetworkPortList = ietfNode.augmentation(
162 org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1.class)
163 .getTerminationPoint().values().stream()
164 .filter(tp -> tp.augmentation(TerminationPoint1.class).getTpType().getIntValue()
165 == OpenroadmTpType.XPONDERNETWORK.getIntValue()
166 && networkPorts.contains(tp.getTpId().getValue()))
167 .sorted((tp1, tp2) -> tp1.getTpId().getValue().compareTo(tp2.getTpId().getValue()))
168 .collect(Collectors.toList());
169 if (!OpenroadmNodeType.TPDR.equals(this.ietfNodeType)) {
170 this.oorOduSwitchingPool = ietfNode.augmentation(Node1.class).getSwitchingPools().getOduSwitchingPools()
171 .values().stream().findFirst().orElseThrow();
172 this.oorClientPortList = ietfNode.augmentation(
173 org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1.class)
174 .getTerminationPoint().values().stream()
175 .filter(tp -> tp.augmentation(TerminationPoint1.class).getTpType().getIntValue()
176 == OpenroadmTpType.XPONDERCLIENT.getIntValue())
177 .sorted((tp1, tp2) -> tp1.getTpId().getValue().compareTo(tp2.getTpId().getValue()))
178 .collect(Collectors.toList());
180 this.oorOduSwitchingPool = createOduSwitchingPoolForTp100G();
181 List<TpId> tpList = this.oorOduSwitchingPool.getNonBlockingList().values().stream()
182 .flatMap(nbl -> nbl.getTpList().stream())
183 .collect(Collectors.toList());
184 this.oorClientPortList = ietfNode.augmentation(
185 org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1.class)
186 .getTerminationPoint().values().stream()
187 .filter(tp -> tp.augmentation(TerminationPoint1.class).getTpType().getIntValue()
188 == OpenroadmTpType.XPONDERCLIENT.getIntValue() && tpList.contains(tp.getTpId()))
189 .sorted((tp1, tp2) -> tp1.getTpId().getValue().compareTo(tp2.getTpId().getValue()))
190 .collect(Collectors.toList());
191 this.oorClientPortList.forEach(tp -> LOG.info("tp = {}", tp.getTpId()));
194 // node creation [DSR/ODU] ([DSR/ODU] and OTSI merged in R 2.4.X)
195 LOG.info("creation of a DSR/ODU node for {}", this.ietfNodeId);
196 Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", this.ietfNodeId,
197 TapiStringConstants.XPDR)).getBytes(Charset.forName("UTF-8"))).toString());
198 this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.XPDR), nodeUuid);
199 Name nameDsr = new NameBuilder().setValueName("dsr/odu node name")
200 .setValue(String.join("+", this.ietfNodeId, TapiStringConstants.XPDR)).build();
201 Name namePhot = new NameBuilder().setValueName("otsi node name")
202 .setValue(String.join("+", this.ietfNodeId, TapiStringConstants.XPDR)).build();
203 Name nameNodeType = new NameBuilder().setValueName("Node Type")
204 .setValue(this.ietfNodeType.getName()).build();
205 Set<LayerProtocolName> dsrLayerProtocols = Set.of(LayerProtocolName.DSR, LayerProtocolName.ODU,
206 LayerProtocolName.DIGITALOTN,LayerProtocolName.PHOTONICMEDIA);
207 org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology
208 .Node dsrNode = createTapiNode(Map.of(nameDsr.key(), nameDsr, namePhot.key(), namePhot,nameNodeType.key(),
209 nameNodeType), dsrLayerProtocols);
210 LOG.debug("XPDR Node {} should have {} NEPs and SIPs", this.ietfNodeId,
211 this.oorClientPortList.size() + this.oorNetworkPortList.size());
212 LOG.info("XPDR Node {} has {} NEPs and {} SIPs", this.ietfNodeId,
213 dsrNode.getOwnedNodeEdgePoint().values().size(), dsrNode.getOwnedNodeEdgePoint().values().stream()
214 .filter(nep -> nep.getMappedServiceInterfacePoint() != null).count());
215 tapiNodes.put(dsrNode.key(), dsrNode);
218 public Map<NodeRuleGroupKey, NodeRuleGroup> createNodeRuleGroupForRdmNode(String topoType, Uuid nodeUuid,
219 String orNodeId, Collection<OwnedNodeEdgePoint> onepl) {
220 Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePointKey,
221 org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePoint>
222 nepMap = new HashMap<>();
223 for (OwnedNodeEdgePoint onep : onepl) {
224 org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePoint
225 nep = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group
226 .NodeEdgePointBuilder()
227 .setTopologyUuid(tapiTopoUuid)
228 .setNodeUuid(nodeUuid)
229 .setNodeEdgePointUuid(onep.key().getUuid())
231 nepMap.put(nep.key(), nep);
234 topoType.equals("Abstracted")
235 ? "rdm infra node rule group"
236 : orNodeId + " node rule group";
237 Map<NodeRuleGroupKey, NodeRuleGroup> nodeRuleGroupMap = new HashMap<>();
238 Set<RuleType> ruleTypes = new HashSet<>();
239 ruleTypes.add(RuleType.FORWARDING);
240 Map<RuleKey, Rule> ruleList = new HashMap<>();
241 Rule rule = new RuleBuilder()
242 .setLocalId("forward")
243 .setForwardingRule(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE)
244 .setRuleType(ruleTypes)
246 ruleList.put(rule.key(), rule);
247 NodeRuleGroup nodeRuleGroup = new NodeRuleGroupBuilder()
248 .setUuid(new Uuid(UUID.nameUUIDFromBytes((rdmName)
249 .getBytes(Charset.forName("UTF-8"))).toString()))
251 .setNodeEdgePoint(nepMap)
253 nodeRuleGroupMap.put(nodeRuleGroup.key(), nodeRuleGroup);
254 return nodeRuleGroupMap;
257 public Map<MappedServiceInterfacePointKey, MappedServiceInterfacePoint> createMSIP(int nb,
258 LayerProtocolName layerProtocol, String tpId, String nodeid,
259 Collection<SupportedInterfaceCapability> supportedInterfaceCapability,
260 OperationalState operState, AdministrativeState adminState) {
261 // add them to SIP context
262 Map<MappedServiceInterfacePointKey, MappedServiceInterfacePoint> msipl = new HashMap<>();
263 for (int i = 0; i < nb; i++) {
266 ? String.join("+", "SIP", nodeid, tpId)
267 : String.join("+", "SIP", nodeid, tpId,"Nber", String.valueOf(i));
268 LOG.info("SIP = {}", sipName);
269 Uuid sipUuid = new Uuid(UUID.nameUUIDFromBytes(sipName.getBytes(Charset.forName("UTF-8"))).toString());
270 MappedServiceInterfacePoint msip = new MappedServiceInterfacePointBuilder()
271 .setServiceInterfacePointUuid(sipUuid).build();
272 ServiceInterfacePoint sip = createSIP(sipUuid, layerProtocol, tpId, nodeid, supportedInterfaceCapability,
273 operState, adminState);
274 this.tapiSips.put(sip.key(), sip);
275 msipl.put(msip.key(), msip);
276 LOG.debug("SIP created {}", sip.getUuid());
277 LOG.debug("This SIP corresponds to SIP+nodeId {} + TpId {}", nodeid, tpId);
282 public List<AvailablePayloadStructure> createAvailablePayloadStructureForPhtncMedia(Boolean otsiProvisioned,
283 Collection<SupportedInterfaceCapability> sicList, List<OperationalModeKey> supportedOpModes) {
284 if (supportedOpModes == null || supportedOpModes.isEmpty()) {
288 Integer loopRate = 0;
289 for (OperationalModeKey operationalMode : supportedOpModes) {
290 if (operationalMode.toString().contains("800G")) {
292 } else if (operationalMode.toString().contains("600G")) {
294 } else if (operationalMode.toString().contains("400G")) {
296 } else if (operationalMode.toString().contains("300G")) {
298 } else if (operationalMode.toString().contains("200G")) {
300 } else if (operationalMode.toString().contains("100G")) {
303 if (loopRate >= nepRate) {
307 CapacityBuilder capBd = new CapacityBuilder()
308 .setUnit(CAPACITYUNITGBPS.VALUE);
309 List<AvailablePayloadStructure> aps = new ArrayList<>();
310 Integer cepInstanceNber = 1;
311 if (otsiProvisioned) {
314 for (SupportedInterfaceCapability sic : sicList) {
315 String ifCapType = sic.getIfCapType().toString().split("\\{")[0];
317 case "IfOCHOTU4ODU4":
318 case "IfOCHOTU4ODU4Regen":
319 case "IfOCHOTU4ODU4Uniregen":
320 aps.add(new AvailablePayloadStructureBuilder()
321 .setMultiplexingSequence(Set.of(PHOTONICLAYERQUALIFIEROTSi.VALUE, ODUTYPEODU4.VALUE))
322 .setNumberOfCepInstances(Uint64.valueOf(cepInstanceNber))
323 .setCapacity(capBd.setValue(Decimal64.valueOf(100.0 * cepInstanceNber, RoundingMode.DOWN))
327 case "IfOCHOTUCnODUCn":
328 case "IfOtsiOtucnOducn":
329 case "IfOCHOTUCnODUCnRegen":
330 case "IfOCHOTUCnODUCnUniregen":
331 aps.add(new AvailablePayloadStructureBuilder()
332 .setMultiplexingSequence(Set.of(PHOTONICLAYERQUALIFIEROTSi.VALUE, OTUTYPEOTUCN.VALUE,
333 ODUTYPEODUCN.VALUE, ODUTYPEODU4.VALUE))
334 .setNumberOfCepInstances(Uint64.valueOf(nepRate * cepInstanceNber))
336 capBd.setValue(Decimal64.valueOf(nepRate * 100.0 * cepInstanceNber, RoundingMode.DOWN))
344 return aps.stream().distinct().toList();
347 public List<SupportedPayloadStructure> createSupportedPayloadStructureForPhtncMedia(
348 Collection<SupportedInterfaceCapability> sicList, List<OperationalModeKey> supportedOpModes) {
349 if (supportedOpModes == null || supportedOpModes.isEmpty()) {
353 Integer loopRate = 0;
354 for (OperationalModeKey operationalMode : supportedOpModes) {
355 if (operationalMode.toString().contains("800G")) {
357 } else if (operationalMode.toString().contains("600G")) {
359 } else if (operationalMode.toString().contains("400G")) {
361 } else if (operationalMode.toString().contains("300G")) {
363 } else if (operationalMode.toString().contains("200G")) {
365 } else if (operationalMode.toString().contains("100G")) {
368 if (loopRate >= nepRate) {
372 CapacityBuilder capBd = new CapacityBuilder()
373 .setUnit(CAPACITYUNITGBPS.VALUE);
374 List<SupportedPayloadStructure> sps = new ArrayList<>();
375 for (SupportedInterfaceCapability sic : sicList) {
376 String ifCapType = sic.getIfCapType().toString().split("\\{")[0];
378 case "IfOCHOTU4ODU4":
379 case "IfOCHOTU4ODU4Regen":
380 case "IfOCHOTU4ODU4Uniregen":
381 sps.add(new SupportedPayloadStructureBuilder()
382 .setMultiplexingSequence(Set.of(PHOTONICLAYERQUALIFIEROTSi.VALUE, ODUTYPEODU4.VALUE))
383 .setNumberOfCepInstances(Uint64.valueOf(1))
384 .setCapacity(capBd.setValue(Decimal64.valueOf(100.0, RoundingMode.DOWN)).build())
387 case "IfOCHOTUCnODUCn":
388 case "IfOtsiOtucnOducn":
389 case "IfOCHOTUCnODUCnRegen":
390 case "IfOCHOTUCnODUCnUniregen":
391 sps.add(new SupportedPayloadStructureBuilder()
392 .setMultiplexingSequence(Set.of(PHOTONICLAYERQUALIFIEROTSi.VALUE, OTUTYPEOTUCN.VALUE,
393 ODUTYPEODUCN.VALUE, ODUTYPEODU4.VALUE))
394 .setNumberOfCepInstances(Uint64.valueOf(nepRate))
395 .setCapacity(capBd.setValue(Decimal64.valueOf(nepRate * 100.0, RoundingMode.DOWN)).build())
402 return sps.stream().distinct().toList();
405 @edu.umd.cs.findbugs.annotations.SuppressFBWarnings(value = "SF_SWITCH_FALLTHROUGH",
406 justification = "Voluntarily No break in switchcase where comment is inserted in following method")
407 public List<SupportedCepLayerProtocolQualifierInstances> createSupportedCepLayerProtocolQualifier(
408 Collection<SupportedInterfaceCapability> sicList, LayerProtocolName lpn) {
409 List<SupportedCepLayerProtocolQualifierInstances> sclpqiList = new ArrayList<>();
410 if (sicList == null) {
411 sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder()
412 .setLayerProtocolQualifier(PHOTONICLAYERQUALIFIEROTS.VALUE)
413 .setNumberOfCepInstances(Uint64.valueOf(1))
417 LOG.debug("SIC list = {}", sicList);
418 for (SupportedInterfaceCapability sic : sicList) {
419 String ifCapType = sic.getIfCapType().toString().split("\\{")[0];
420 switch (lpn.getName()) {
425 sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder()
426 .setLayerProtocolQualifier(ODUTYPEODU0.VALUE)
427 .setNumberOfCepInstances(Uint64.valueOf(1))
429 sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder()
430 .setLayerProtocolQualifier(DIGITALSIGNALTYPEGigE.VALUE)
431 .setNumberOfCepInstances(Uint64.valueOf(1))
435 sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder()
436 .setLayerProtocolQualifier(ODUTYPEODU2E.VALUE)
437 .setNumberOfCepInstances(Uint64.valueOf(1))
439 sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder()
440 .setLayerProtocolQualifier(DIGITALSIGNALTYPE10GigELAN.VALUE)
441 .setNumberOfCepInstances(Uint64.valueOf(1))
445 sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder()
446 .setLayerProtocolQualifier(ODUTYPEODU2.VALUE)
447 .setNumberOfCepInstances(Uint64.valueOf(1))
449 sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder()
450 .setLayerProtocolQualifier(DIGITALSIGNALTYPE10GigELAN.VALUE)
451 .setNumberOfCepInstances(Uint64.valueOf(1))
455 sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder()
456 .setLayerProtocolQualifier(DIGITALSIGNALTYPE10GigELAN.VALUE)
457 .setNumberOfCepInstances(Uint64.valueOf(1))
461 sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder()
462 .setLayerProtocolQualifier(DIGITALSIGNALTYPE100GigE.VALUE)
463 .setNumberOfCepInstances(Uint64.valueOf(1))
465 sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder()
466 .setLayerProtocolQualifier(ODUTYPEODU4.VALUE)
467 .setNumberOfCepInstances(Uint64.valueOf(1))
471 sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder()
472 .setLayerProtocolQualifier(DIGITALSIGNALTYPE100GigE.VALUE)
473 .setNumberOfCepInstances(Uint64.valueOf(1))
476 case "IfOCHOTU4ODU4":
478 sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder()
479 .setLayerProtocolQualifier(ODUTYPEODU4.VALUE)
480 .setNumberOfCepInstances(Uint64.valueOf(1))
484 LOG.error("IfCapability type not managed");
491 sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder()
492 .setLayerProtocolQualifier(ODUTYPEODU0.VALUE)
493 .setNumberOfCepInstances(Uint64.valueOf(1))
497 sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder()
498 .setLayerProtocolQualifier(ODUTYPEODU2E.VALUE)
499 .setNumberOfCepInstances(Uint64.valueOf(1))
504 sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder()
505 .setLayerProtocolQualifier(ODUTYPEODU2.VALUE)
506 .setNumberOfCepInstances(Uint64.valueOf(1))
511 case "IfOCHOTU4ODU4":
513 sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder()
514 .setLayerProtocolQualifier(ODUTYPEODU4.VALUE)
515 .setNumberOfCepInstances(Uint64.valueOf(1))
519 LOG.error("IfCapability type not managed");
523 case "PHOTONIC_MEDIA":
525 case "IfOCHOTUCnODUCn":
526 case "IfOtsiOtucnOducn":
527 case "IfOCHOTUCnODUCnRegen":
528 case "IfOCHOTUCnODUCnUniregen":
529 sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder()
530 .setLayerProtocolQualifier(ODUTYPEODUCN.VALUE)
531 .setNumberOfCepInstances(Uint64.valueOf(1))
533 sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder()
534 .setLayerProtocolQualifier(OTUTYPEOTUCN.VALUE)
535 .setNumberOfCepInstances(Uint64.valueOf(1))
539 case "IfOCHOTU4ODU4":
540 case "IfOCHOTU4ODU4Regen":
541 case "IfOCHOTU4ODU4Uniregen":
542 sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder()
543 .setLayerProtocolQualifier(PHOTONICLAYERQUALIFIEROTSiMC.VALUE)
544 .setNumberOfCepInstances(Uint64.valueOf(1))
546 sclpqiList.add(new SupportedCepLayerProtocolQualifierInstancesBuilder()
547 .setLayerProtocolQualifier(PHOTONICLAYERQUALIFIEROTS.VALUE)
548 .setNumberOfCepInstances(Uint64.valueOf(1))
556 LOG.error("Layer Protocol Name is unknown {}", lpn.getName());
560 return sclpqiList.stream().distinct().toList();
563 public Map<Double, Double> getXpdrUsedWavelength(TerminationPoint tp) {
564 if (tp.augmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev230526
565 .TerminationPoint1.class) == null
566 || tp.augmentation(org.opendaylight.yang.gen.v1.http.org.openroadm
567 .network.topology.rev230526.TerminationPoint1.class).getXpdrNetworkAttributes()
571 XpdrNetworkAttributes xnatt = tp.augmentation(
572 org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev230526.TerminationPoint1.class)
573 .getXpdrNetworkAttributes();
574 Map<Double,Double> freqWidthMap = new HashMap<>();
575 if (xnatt.getWavelength() != null && xnatt.getWavelength().getFrequency() != null
576 && xnatt.getWavelength().getWidth() != null) {
577 freqWidthMap.put(xnatt.getWavelength().getFrequency().getValue().doubleValue(),
578 xnatt.getWavelength().getWidth().getValue().doubleValue());
584 public Map<Double, Double> getPPUsedWavelength(TerminationPoint tp) {
585 PpAttributes ppAtt = tp.augmentation(
586 org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev230526.TerminationPoint1.class)
591 Map<Double,Double> freqWidthMap = new HashMap<>();
592 if (ppAtt.getUsedWavelength() != null && ppAtt.getUsedWavelength().entrySet().iterator().next() != null) {
593 freqWidthMap.put(ppAtt.getUsedWavelength().entrySet().iterator().next().getValue().getFrequency().getValue()
594 .doubleValue(), ppAtt.getUsedWavelength().entrySet().iterator().next().getValue().getFrequency()
595 .getValue().doubleValue());
601 public OwnedNodeEdgePointBuilder addPayloadStructureAndPhotSpecToOnep(String nodeId,
602 Map<Double, Double> freqWidthMap, List<OperationalModeKey> operModeList,
603 Collection<SupportedInterfaceCapability> sicColl, OwnedNodeEdgePointBuilder onepBldr, String keyword) {
604 if (String.join("+", nodeId, TapiStringConstants.OTSI_MC).equals(keyword)
605 || String.join("+", nodeId, TapiStringConstants.PHTNC_MEDIA_OTS).equals(keyword)) {
606 //Creating OTS & OTSI_MC NEP specific attributes
607 onepBldr.setSupportedPayloadStructure(createSupportedPayloadStructureForPhtncMedia(
608 sicColl,operModeList));
609 SpectrumCapabilityPacBuilder spectrumPac = new SpectrumCapabilityPacBuilder();
610 OccupiedSpectrumBuilder ospecBd = new OccupiedSpectrumBuilder();
611 if (freqWidthMap == null || freqWidthMap.isEmpty()) {
613 .setUpperFrequency(Uint64.valueOf(0))
614 .setLowerFrequency(Uint64.valueOf(0));
615 onepBldr.setAvailablePayloadStructure(createAvailablePayloadStructureForPhtncMedia(
616 false, sicColl,operModeList));
618 AvailableSpectrum aspec = new AvailableSpectrumBuilder()
619 .setUpperFrequency(Uint64.valueOf(Math.round(GridConstant.START_EDGE_FREQUENCY * 1E09 + naz)))
620 .setLowerFrequency(Uint64.valueOf(Math.round(GridConstant.START_EDGE_FREQUENCY * 1E09
621 + GridConstant.GRANULARITY * GridConstant.EFFECTIVE_BITS * 1E06 + naz)))
623 Map<AvailableSpectrumKey, AvailableSpectrum> aspecMap = new HashMap<>();
624 aspecMap.put(new AvailableSpectrumKey(aspec.getLowerFrequency(),
625 aspec.getUpperFrequency()), aspec);
626 spectrumPac.setAvailableSpectrum(aspecMap);
628 onepBldr.setAvailablePayloadStructure(createAvailablePayloadStructureForPhtncMedia(
629 true, sicColl,operModeList));
631 .setUpperFrequency(Uint64.valueOf(Math.round(
632 freqWidthMap.keySet().iterator().next().doubleValue() * 1E09
633 + (freqWidthMap.entrySet().iterator().next().getValue().doubleValue() * 1E06) / 2)))
634 .setLowerFrequency(Uint64.valueOf(Math.round(
635 freqWidthMap.keySet().iterator().next().doubleValue() * 1E09
636 - (freqWidthMap.entrySet().iterator().next().getValue().doubleValue() * 1E06) / 2)));
638 OccupiedSpectrum ospec = ospecBd.build();
639 Map<OccupiedSpectrumKey, OccupiedSpectrum> ospecMap = new HashMap<>();
640 ospecMap.put(new OccupiedSpectrumKey(ospec.getLowerFrequency(),
641 ospec.getUpperFrequency()), ospec);
642 spectrumPac.setOccupiedSpectrum(ospecMap);
644 SupportableSpectrum sspec = new SupportableSpectrumBuilder()
645 .setUpperFrequency(Uint64.valueOf(Math.round(GridConstant.START_EDGE_FREQUENCY * 1E09 + nazz)))
646 .setLowerFrequency(Uint64.valueOf(Math.round(GridConstant.START_EDGE_FREQUENCY * 1E09
647 + GridConstant.GRANULARITY * GridConstant.EFFECTIVE_BITS * 1E06 + nazz)))
649 Map<SupportableSpectrumKey, SupportableSpectrum> sspecMap = new HashMap<>();
650 sspecMap.put(new SupportableSpectrumKey(sspec.getLowerFrequency(),
651 sspec.getUpperFrequency()), sspec);
652 spectrumPac.setSupportableSpectrum(sspecMap);
653 PhotonicMediaNodeEdgePointSpec pnepSpec = new PhotonicMediaNodeEdgePointSpecBuilder()
654 .setSpectrumCapabilityPac(spectrumPac.build())
656 org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.OwnedNodeEdgePoint1 onep1 =
657 new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121
658 .OwnedNodeEdgePoint1Builder()
659 .setPhotonicMediaNodeEdgePointSpec(pnepSpec)
661 onepBldr.addAugmentation(onep1);
666 private OduSwitchingPools createOduSwitchingPoolForTp100G() {
667 Map<NonBlockingListKey, NonBlockingList> nblMap = new HashMap<>();
669 for (TerminationPoint tp : this.oorNetworkPortList) {
670 TpId tpid1 = tp.getTpId();
671 TpId tpid2 = tp.augmentation(
672 org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.TerminationPoint1.class)
673 .getAssociatedConnectionMapTp().iterator().next();
674 Set<TpId> tpList = new HashSet<>();
677 NonBlockingList nbl = new NonBlockingListBuilder()
678 .setNblNumber(Uint16.valueOf(count))
681 nblMap.put(nbl.key(), nbl);
684 return new OduSwitchingPoolsBuilder()
685 .setNonBlockingList(nblMap)
686 .setSwitchingPoolNumber(Uint16.valueOf(1))
690 private org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node
691 createTapiNode(Map<NameKey, Name> nodeNames, Set<LayerProtocolName> layerProtocols) {
692 Uuid nodeUuid = null;
693 Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> onepl = new HashMap<>();
694 Map<NodeRuleGroupKey, NodeRuleGroup> nodeRuleGroupList = new HashMap<>();
695 Map<RuleKey, Rule> ruleList = new HashMap<>();
696 Set<RuleType> ruleTypes = new HashSet<>();
697 ruleTypes.add(RuleType.FORWARDING);
698 Rule rule = new RuleBuilder()
699 .setLocalId("forward")
700 .setForwardingRule(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE)
701 .setRuleType(ruleTypes)
703 ruleList.put(rule.key(), rule);
704 if (layerProtocols.contains(LayerProtocolName.DSR)
705 || layerProtocols.contains(LayerProtocolName.PHOTONICMEDIA)) {
706 nodeUuid = getNodeUuid4Dsr(onepl, nodeRuleGroupList, ruleList);
708 LOG.error("Undefined LayerProtocolName for {} node {}", nodeNames.get(nodeNames.keySet().iterator().next())
709 .getValueName(), nodeNames.get(nodeNames.keySet().iterator().next()).getValue());
711 // Empty random creation of mandatory fields for avoiding errors....
712 CostCharacteristic costCharacteristic = new CostCharacteristicBuilder()
713 .setCostAlgorithm("Restricted Shortest Path - RSP")
714 .setCostName("HOP_COUNT")
715 .setCostValue(TapiStringConstants.COST_HOP_VALUE)
717 LatencyCharacteristic latencyCharacteristic = new LatencyCharacteristicBuilder()
718 .setFixedLatencyCharacteristic(TapiStringConstants.FIXED_LATENCY_VALUE)
719 .setQueuingLatencyCharacteristic(TapiStringConstants.QUEING_LATENCY_VALUE)
720 .setJitterCharacteristic(TapiStringConstants.JITTER_VALUE)
721 .setWanderCharacteristic(TapiStringConstants.WANDER_VALUE)
722 .setTrafficPropertyName("FIXED_LATENCY")
724 RiskCharacteristic riskCharacteristic = new RiskCharacteristicBuilder()
725 .setRiskCharacteristicName("risk characteristic")
726 .setRiskIdentifierList(Set.of("risk identifier1", "risk identifier2"))
728 RiskParameterPac riskParamPac = new RiskParameterPacBuilder()
729 .setRiskCharacteristic(Map.of(riskCharacteristic.key(), riskCharacteristic))
731 return new NodeBuilder()
734 .setLayerProtocolName(layerProtocols)
735 .setAdministrativeState(transformAsToTapiAdminState(this.ietfNodeAdminState.getName()))
736 .setOperationalState(transformOsToTapiOperationalState(this.ietfNodeOperState.getName()))
737 .setLifecycleState(LifecycleState.INSTALLED)
738 .setOwnedNodeEdgePoint(onepl)
739 .setNodeRuleGroup(nodeRuleGroupList)
740 .setCostCharacteristic(Map.of(costCharacteristic.key(), costCharacteristic))
741 .setLatencyCharacteristic(Map.of(latencyCharacteristic.key(), latencyCharacteristic))
742 .setRiskParameterPac(riskParamPac)
743 .setErrorCharacteristic("error")
744 .setLossCharacteristic("loss")
745 .setRepeatDeliveryCharacteristic("repeat delivery")
746 .setDeliveryOrderCharacteristic("delivery order")
747 .setUnavailableTimeCharacteristic("unavailable time")
748 .setServerIntegrityProcessCharacteristic("server integrity process")
752 private Uuid getNodeUuid4Dsr(Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> onepl,
753 Map<NodeRuleGroupKey, NodeRuleGroup> nodeRuleGroupList, Map<RuleKey, Rule> ruleList) {
755 nodeUuid = this.uuidMap.get(String.join("+", this.ietfNodeId, TapiStringConstants.XPDR));
756 // client NEP DSR creation on DSR/ODU node
757 for (int i = 0; i < oorClientPortList.size(); i++) {
758 Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes(
759 (String.join("+", this.ietfNodeId, TapiStringConstants.DSR,
760 oorClientPortList.get(i).getTpId().getValue())).getBytes(Charset.forName("UTF-8"))).toString());
761 LOG.info("NEP = {} has Uuid {} ", String.join("+", this.ietfNodeId, TapiStringConstants.DSR,
762 oorClientPortList.get(i).getTpId().getValue()), nepUuid);
763 this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.DSR,
764 oorClientPortList.get(i).getTpId().getValue()), nepUuid);
765 NameBuilder nameBldr = new NameBuilder().setValue(
766 String.join("+", this.ietfNodeId, TapiStringConstants.DSR,
767 oorClientPortList.get(i).getTpId().getValue()));
769 if (OpenroadmNodeType.TPDR.equals(this.ietfNodeType)) {
770 name = nameBldr.setValueName("100G-tpdr").build();
772 name = nameBldr.setValueName("NodeEdgePoint_C").build();
775 OwnedNodeEdgePoint onep = createNep(oorClientPortList.get(i), Map.of(name.key(), name),
776 LayerProtocolName.DSR, LayerProtocolName.DSR, true, String.join("+", this.ietfNodeId,
777 TapiStringConstants.DSR));
778 onepl.put(onep.key(), onep);
780 // CLIENT NEP E_ODU creation on DSR/ODU node
781 for (int i = 0; i < oorClientPortList.size(); i++) {
782 Uuid nepUuid1 = new Uuid(UUID.nameUUIDFromBytes(
783 (String.join("+", this.ietfNodeId, TapiStringConstants.E_ODU,
784 oorClientPortList.get(i).getTpId().getValue())).getBytes(Charset.forName("UTF-8"))).toString());
785 LOG.info("NEP = {} has Uuid {} ", String.join("+", this.ietfNodeId, TapiStringConstants.E_ODU,
786 oorClientPortList.get(i).getTpId().getValue()), nepUuid1);
787 this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.E_ODU,
788 oorClientPortList.get(i).getTpId().getValue()), nepUuid1);
789 Name onedName = new NameBuilder()
790 .setValueName("eNodeEdgePoint_N")
791 .setValue(String.join("+", this.ietfNodeId, TapiStringConstants.E_ODU,
792 oorClientPortList.get(i).getTpId().getValue()))
795 OwnedNodeEdgePoint onep = createNep(oorClientPortList.get(i), Map.of(onedName.key(), onedName),
796 LayerProtocolName.ODU, LayerProtocolName.DSR, false, String.join("+", this.ietfNodeId,
797 TapiStringConstants.E_ODU));
798 onepl.put(onep.key(), onep);
800 // NETWORK NEPs I_ODU creation on DSR/ODU node
801 for (int i = 0; i < oorNetworkPortList.size(); i++) {
802 Uuid nepUuid1 = new Uuid(UUID.nameUUIDFromBytes(
803 (String.join("+", this.ietfNodeId, TapiStringConstants.I_ODU,
804 oorNetworkPortList.get(i).getTpId().getValue())).getBytes(Charset.forName("UTF-8"))).toString());
805 LOG.info("NEP = {} has Uuid {} ", String.join("+", this.ietfNodeId, TapiStringConstants.I_ODU,
806 oorNetworkPortList.get(i).getTpId().getValue()), nepUuid1);
807 this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.I_ODU,
808 oorNetworkPortList.get(i).getTpId().getValue()), nepUuid1);
809 Name onedName = new NameBuilder()
810 .setValueName("iNodeEdgePoint_N")
811 .setValue(String.join("+", this.ietfNodeId, TapiStringConstants.I_ODU,
812 oorNetworkPortList.get(i).getTpId().getValue()))
815 OwnedNodeEdgePoint onep = createNep(oorNetworkPortList.get(i), Map.of(onedName.key(), onedName),
816 LayerProtocolName.ODU, LayerProtocolName.DSR, true, String.join("+", this.ietfNodeId,
817 TapiStringConstants.I_ODU));
818 onepl.put(onep.key(), onep);
820 // NETWORK NEP OTS network on DSR/ODU node
821 for (int i = 0; i < oorNetworkPortList.size(); i++) {
822 Uuid nepUuid2 = new Uuid(UUID.nameUUIDFromBytes(
823 (String.join("+", this.ietfNodeId, TapiStringConstants.PHTNC_MEDIA_OTS,
824 oorNetworkPortList.get(i).getTpId().getValue())).getBytes(Charset.forName("UTF-8")))
826 LOG.info("NEP = {} has Uuid {} ", String.join("+", this.ietfNodeId, TapiStringConstants.PHTNC_MEDIA_OTS,
827 oorNetworkPortList.get(i).getTpId().getValue()), nepUuid2);
828 this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.PHTNC_MEDIA_OTS,
829 oorNetworkPortList.get(i).getTpId().getValue()), nepUuid2);
830 Name onedName = new NameBuilder()
831 .setValueName("eNodeEdgePoint")
832 .setValue(String.join("+", this.ietfNodeId, TapiStringConstants.PHTNC_MEDIA_OTS,
833 oorNetworkPortList.get(i).getTpId().getValue()))
836 OwnedNodeEdgePoint onep = createNep(oorNetworkPortList.get(i), Map.of(onedName.key(), onedName),
837 LayerProtocolName.PHOTONICMEDIA, LayerProtocolName.PHOTONICMEDIA, true,
838 String.join("+", this.ietfNodeId, TapiStringConstants.PHTNC_MEDIA_OTS));
839 onepl.put(onep.key(), onep);
841 for (int i = 0; i < oorNetworkPortList.size(); i++) {
842 Uuid nepUuid3 = new Uuid(UUID.nameUUIDFromBytes(
843 (String.join("+", this.ietfNodeId, TapiStringConstants.OTSI_MC,
844 oorNetworkPortList.get(i).getTpId().getValue())).getBytes(Charset.forName("UTF-8")))
846 LOG.info("NEP = {} has Uuid {} ", String.join("+", this.ietfNodeId, TapiStringConstants.OTSI_MC,
847 oorNetworkPortList.get(i).getTpId().getValue()), nepUuid3);
848 this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.OTSI_MC,
849 oorNetworkPortList.get(i).getTpId().getValue()), nepUuid3);
850 Name onedName = new NameBuilder()
851 .setValueName("PhotMedNodeEdgePoint")
852 .setValue(String.join("+", this.ietfNodeId, TapiStringConstants.OTSI_MC,
853 oorNetworkPortList.get(i).getTpId().getValue()))
856 OwnedNodeEdgePoint onep = createNep(oorNetworkPortList.get(i), Map.of(onedName.key(), onedName),
857 LayerProtocolName.PHOTONICMEDIA, LayerProtocolName.PHOTONICMEDIA, true,
858 String.join("+", this.ietfNodeId, TapiStringConstants.OTSI_MC));
859 onepl.put(onep.key(), onep);
861 // create NodeRuleGroup
863 LOG.debug("ODU switching pool = {}", this.oorOduSwitchingPool.nonnullNonBlockingList().values());
864 for (NonBlockingList nbl : this.oorOduSwitchingPool.nonnullNonBlockingList().values()) {
865 Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePointKey,
866 org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePoint>
867 nepList = new HashMap<>();
868 Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePointKey,
869 org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePoint>
870 oduNepList = new HashMap<>();
871 LOG.debug("UUidMap={}", this.uuidMap.keySet());
872 LOG.debug("TP list = {}", nbl.getTpList());
873 for (TpId tp : nbl.getTpList()) {
874 LOG.debug("TP={}", tp.getValue());
875 LOG.debug("UuidKey={}", String.join("+", this.ietfNodeId,
876 TapiStringConstants.E_ODU, tp.getValue()));
877 if (this.uuidMap.containsKey(String.join("+", this.ietfNodeId, TapiStringConstants.DSR,
878 tp.getValue())) || this.uuidMap.containsKey(String.join(
879 "+", this.ietfNodeId, TapiStringConstants.I_ODU, tp.getValue()))) {
880 String qual = tp.getValue().contains("CLIENT") ? TapiStringConstants.DSR
881 : TapiStringConstants.I_ODU;
882 org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePoint
883 nep = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121
884 .node.rule.group.NodeEdgePointBuilder()
885 .setTopologyUuid(tapiTopoUuid)
886 .setNodeUuid(this.uuidMap.get(String.join("+", this.ietfNodeId,
887 TapiStringConstants.XPDR)))
888 .setNodeEdgePointUuid(this.uuidMap.get(String.join("+", this.ietfNodeId,
889 qual, tp.getValue())))
891 nepList.put(nep.key(), nep);
893 if (this.uuidMap.containsKey(String.join("+", this.ietfNodeId,
894 TapiStringConstants.E_ODU, tp.getValue()))) {
895 org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePoint
896 nep1 = new org.opendaylight.yang.gen.v1.urn
897 .onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePointBuilder()
898 .setTopologyUuid(tapiTopoUuid)
899 .setNodeUuid(this.uuidMap.get(String.join("+", this.ietfNodeId,
900 TapiStringConstants.XPDR)))
901 .setNodeEdgePointUuid(this.uuidMap.get(String.join(
902 "+", this.ietfNodeId, TapiStringConstants.E_ODU, tp.getValue())))
904 oduNepList.put(nep1.key(), nep1);
906 if (this.uuidMap.containsKey(String.join("+", this.ietfNodeId,
907 TapiStringConstants.I_ODU, tp.getValue()))) {
908 org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePoint
909 nep2 = new org.opendaylight.yang.gen.v1.urn
910 .onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePointBuilder()
911 .setTopologyUuid(tapiTopoUuid)
912 .setNodeUuid(this.uuidMap.get(String.join("+", this.ietfNodeId,
913 TapiStringConstants.XPDR)))
914 .setNodeEdgePointUuid(this.uuidMap.get(String.join(
915 "+", this.ietfNodeId, TapiStringConstants.I_ODU, tp.getValue())))
917 oduNepList.put(nep2.key(), nep2);
920 LOG.debug("NEPLIST (DSR/I_ODU) of [dsr node rule group] is {}", nepList.toString());
921 LOG.debug("NEPLIST (E_ODU/I_ODU) of [odu node rule group] is {}", nepList.toString());
922 // Empty random creation of mandatory fields for avoiding errors....
923 CostCharacteristic costCharacteristic = new CostCharacteristicBuilder()
924 .setCostAlgorithm("Restricted Shortest Path - RSP")
925 .setCostName("HOP_COUNT")
926 .setCostValue(TapiStringConstants.COST_HOP_VALUE)
928 LatencyCharacteristic latencyCharacteristic = new LatencyCharacteristicBuilder()
929 .setFixedLatencyCharacteristic(TapiStringConstants.FIXED_LATENCY_VALUE)
930 .setQueuingLatencyCharacteristic(TapiStringConstants.QUEING_LATENCY_VALUE)
931 .setJitterCharacteristic(TapiStringConstants.JITTER_VALUE)
932 .setWanderCharacteristic(TapiStringConstants.WANDER_VALUE)
933 .setTrafficPropertyName("FIXED_LATENCY")
935 RiskCharacteristic riskCharacteristic = new RiskCharacteristicBuilder()
936 .setRiskCharacteristicName("risk characteristic")
937 .setRiskIdentifierList(Set.of("risk identifier1", "risk identifier2"))
939 NodeRuleGroup nodeRuleGroup1 = new NodeRuleGroupBuilder()
940 .setUuid(new Uuid(UUID.nameUUIDFromBytes(("dsr node rule group " + count)
941 .getBytes(Charset.forName("UTF-8"))).toString()))
943 .setNodeEdgePoint(nepList)
944 .setRiskCharacteristic(Map.of(riskCharacteristic.key(), riskCharacteristic))
945 .setCostCharacteristic(Map.of(costCharacteristic.key(), costCharacteristic))
946 .setLatencyCharacteristic(Map.of(latencyCharacteristic.key(), latencyCharacteristic))
948 nodeRuleGroupList.put(nodeRuleGroup1.key(), nodeRuleGroup1);
949 NodeRuleGroup nodeRuleGroup2 = new NodeRuleGroupBuilder()
950 .setUuid(new Uuid(UUID.nameUUIDFromBytes(("odu node rule group " + count)
951 .getBytes(Charset.forName("UTF-8"))).toString()))
953 .setNodeEdgePoint(oduNepList)
954 .setRiskCharacteristic(Map.of(riskCharacteristic.key(), riskCharacteristic))
955 .setCostCharacteristic(Map.of(costCharacteristic.key(), costCharacteristic))
956 .setLatencyCharacteristic(Map.of(latencyCharacteristic.key(), latencyCharacteristic))
958 nodeRuleGroupList.put(nodeRuleGroup2.key(), nodeRuleGroup2);
964 private OwnedNodeEdgePoint createNep(TerminationPoint oorTp, Map<NameKey, Name> nepNames,
965 LayerProtocolName nepProtocol, LayerProtocolName nodeProtocol, boolean withSip, String keyword) {
966 String key = String.join("+", keyword, oorTp.getTpId().getValue());
967 AdministrativeState adminState = (oorTp.augmentation(TerminationPoint1.class).getAdministrativeState() != null)
968 ? transformAsToTapiAdminState(oorTp.augmentation(TerminationPoint1.class).getAdministrativeState()
971 OperationalState operState = (oorTp.augmentation(TerminationPoint1.class).getOperationalState() != null)
972 ? transformOsToTapiOperationalState(oorTp.augmentation(TerminationPoint1.class).getOperationalState()
975 org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev230526.TerminationPoint1 tp1 =
976 oorTp.augmentation(org.opendaylight.yang.gen.v1.http
977 .org.openroadm.otn.network.topology.rev230526.TerminationPoint1.class);
978 if (tp1.getTpSupportedInterfaces() == null) {
979 LOG.warn("Tp supported interface doesnt exist on TP {}", oorTp.getTpId().getValue());
982 Collection<SupportedInterfaceCapability> sicColl = tp1.getTpSupportedInterfaces()
983 .getSupportedInterfaceCapability().values();
984 OwnedNodeEdgePointBuilder onepBldr = new OwnedNodeEdgePointBuilder()
985 .setUuid(this.uuidMap.get(key))
986 .setLayerProtocolName(nepProtocol)
988 onepBldr.setSupportedCepLayerProtocolQualifierInstances(createSupportedCepLayerProtocolQualifier(sicColl,
990 .setDirection(Direction.BIDIRECTIONAL)
991 .setLinkPortRole(PortRole.SYMMETRIC)
992 .setAdministrativeState(adminState)
993 .setOperationalState(operState)
994 .setLifecycleState(LifecycleState.INSTALLED);
996 onepBldr.setMappedServiceInterfacePoint(
997 createMSIP(1, nepProtocol, oorTp.getTpId().getValue(), keyword, sicColl, operState, adminState));
999 List<OperationalModeKey> opModeList = new ArrayList<>();
1000 if (oorTp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
1001 if (oorTp.augmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev230526
1002 .TerminationPoint1.class) == null
1003 || oorTp.augmentation(org.opendaylight.yang.gen.v1.http.org.openroadm
1004 .network.topology.rev230526.TerminationPoint1.class).getXpdrNetworkAttributes()
1006 for (SupportedInterfaceCapability sic : sicColl) {
1007 String ifCapType = sic.getIfCapType().toString().split("\\{")[0];
1008 if (("IfOCHOTUCnODUCn").equals(ifCapType) || ("IfOCHOTUCnODUCnUniregen").equals(ifCapType)
1009 || ("IfOCHOTUCnODUCnRegen").equals(ifCapType)) {
1010 opModeList.add(new OperationalModeKey("400G"));
1011 LOG.warn(TopologyUtils.NOOPMODEDECLARED + "400G rate available", oorTp.getTpId().toString());
1015 opModeList.add(new OperationalModeKey("100G"));
1016 LOG.warn(TopologyUtils.NOOPMODEDECLARED + "100G rate available", oorTp.getTpId().toString());
1018 opModeList = oorTp.augmentation(
1019 org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev230526.TerminationPoint1.class)
1020 .getXpdrNetworkAttributes().getSupportedOperationalModes().getOperationalMode().keySet().stream()
1023 Map<Double, Double> freqWidthMap = getXpdrUsedWavelength(oorTp);
1024 onepBldr = addPayloadStructureAndPhotSpecToOnep(this.ietfNodeId, freqWidthMap, opModeList, sicColl,
1027 return onepBldr.build();
1030 private ServiceInterfacePoint createSIP(Uuid sipUuid, LayerProtocolName layerProtocol, String tpId,
1031 String nodeid, Collection<SupportedInterfaceCapability> supportedInterfaceCapability,
1032 OperationalState operState, AdministrativeState adminState) {
1033 // TODO: what value should be set in total capacity and available capacity??
1034 // LOG.info("SIP name = {}", String.join("+", nodeid, tp.getTpId().getValue()));
1035 Name sipName = new NameBuilder()
1036 .setValueName("SIP name")
1037 .setValue(String.join("+", nodeid, tpId))
1040 return new ServiceInterfacePointBuilder()
1042 .setName(Map.of(sipName.key(), sipName))
1043 .setLayerProtocolName(layerProtocol)
1044 .setAdministrativeState(adminState)
1045 .setOperationalState(operState)
1046 .setLifecycleState(LifecycleState.INSTALLED)
1047 .setAvailableCapacity(new AvailableCapacityBuilder().build())
1048 .setTotalPotentialCapacity(new TotalPotentialCapacityBuilder().build())
1049 .setSupportedCepLayerProtocolQualifierInstances(createSipSupportedLayerProtocolQualifier(
1050 supportedInterfaceCapability, layerProtocol))
1054 @edu.umd.cs.findbugs.annotations.SuppressFBWarnings(value = "SF_SWITCH_FALLTHROUGH",
1055 justification = "Voluntarily No break in switchcase where comment is inserted in following method")
1056 private List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
1057 .service._interface.point.SupportedCepLayerProtocolQualifierInstances>
1058 createSipSupportedLayerProtocolQualifier(
1059 Collection<SupportedInterfaceCapability> supportedInterfaceCapability,
1060 LayerProtocolName lpn) {
1061 List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
1062 .service._interface.point.SupportedCepLayerProtocolQualifierInstances> sclpqiList = new ArrayList<>();
1063 if (supportedInterfaceCapability == null) {
1064 sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
1065 .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
1066 .setLayerProtocolQualifier(PHOTONICLAYERQUALIFIEROTS.VALUE)
1067 .setNumberOfCepInstances(Uint64.valueOf(1))
1071 for (SupportedInterfaceCapability sic : supportedInterfaceCapability) {
1072 String ifCapType = sic.getIfCapType().toString().split("\\{")[0];
1073 switch (lpn.getName()) {
1076 switch (ifCapType) {
1078 sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
1079 .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
1080 .setLayerProtocolQualifier(ODUTYPEODU0.VALUE)
1081 .setNumberOfCepInstances(Uint64.valueOf(0))
1083 sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
1084 .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
1085 .setLayerProtocolQualifier(DIGITALSIGNALTYPEGigE.VALUE)
1086 .setNumberOfCepInstances(Uint64.valueOf(0))
1090 sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
1091 .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
1092 .setLayerProtocolQualifier(ODUTYPEODU2E.VALUE)
1093 .setNumberOfCepInstances(Uint64.valueOf(0))
1095 sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
1096 .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
1097 .setLayerProtocolQualifier(DIGITALSIGNALTYPE10GigELAN.VALUE)
1098 .setNumberOfCepInstances(Uint64.valueOf(0))
1102 sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
1103 .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
1104 .setLayerProtocolQualifier(ODUTYPEODU2.VALUE)
1105 .setNumberOfCepInstances(Uint64.valueOf(0))
1107 sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
1108 .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
1109 .setLayerProtocolQualifier(DIGITALSIGNALTYPE10GigELAN.VALUE)
1110 .setNumberOfCepInstances(Uint64.valueOf(0))
1114 sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
1115 .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
1116 .setLayerProtocolQualifier(DIGITALSIGNALTYPE10GigELAN.VALUE)
1117 .setNumberOfCepInstances(Uint64.valueOf(0))
1121 sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
1122 .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
1123 .setLayerProtocolQualifier(DIGITALSIGNALTYPE100GigE.VALUE)
1124 .setNumberOfCepInstances(Uint64.valueOf(0))
1126 sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
1127 .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
1128 .setLayerProtocolQualifier(ODUTYPEODU4.VALUE)
1129 .setNumberOfCepInstances(Uint64.valueOf(0))
1133 sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
1134 .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
1135 .setLayerProtocolQualifier(DIGITALSIGNALTYPE100GigE.VALUE)
1136 .setNumberOfCepInstances(Uint64.valueOf(0))
1139 case "IfOCHOTU4ODU4":
1141 sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
1142 .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
1143 .setLayerProtocolQualifier(ODUTYPEODU4.VALUE)
1144 .setNumberOfCepInstances(Uint64.valueOf(0))
1148 LOG.error("IfCapability type not managed");
1153 switch (ifCapType) {
1155 sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
1156 .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
1157 .setLayerProtocolQualifier(ODUTYPEODU0.VALUE)
1158 .setNumberOfCepInstances(Uint64.valueOf(0))
1162 sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
1163 .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
1164 .setLayerProtocolQualifier(ODUTYPEODU2E.VALUE)
1165 .setNumberOfCepInstances(Uint64.valueOf(0))
1170 sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
1171 .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
1172 .setLayerProtocolQualifier(ODUTYPEODU2.VALUE)
1173 .setNumberOfCepInstances(Uint64.valueOf(0))
1178 case "IfOCHOTU4ODU4":
1180 sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
1181 .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
1182 .setLayerProtocolQualifier(ODUTYPEODU4.VALUE)
1183 .setNumberOfCepInstances(Uint64.valueOf(0))
1187 LOG.error("IfCapability type not managed");
1191 case "PHOTONIC_MEDIA":
1192 switch (ifCapType) {
1193 case "IfOCHOTUCnODUCn":
1194 case "IfOtsiOtucnOducn":
1195 case "IfOCHOTUCnODUCnRegen":
1196 case "IfOCHOTUCnODUCnUniregen":
1197 sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
1198 .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
1199 .setLayerProtocolQualifier(ODUTYPEODUCN.VALUE)
1200 .setNumberOfCepInstances(Uint64.valueOf(1))
1202 sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
1203 .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
1204 .setLayerProtocolQualifier(OTUTYPEOTUCN.VALUE)
1205 .setNumberOfCepInstances(Uint64.valueOf(1))
1209 case "IfOCHOTU4ODU4":
1210 case "IfOCHOTU4ODU4Regen":
1211 case "IfOCHOTU4ODU4Uniregen":
1212 sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
1213 .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
1214 .setLayerProtocolQualifier(PHOTONICLAYERQUALIFIEROTSiMC.VALUE)
1215 .setNumberOfCepInstances(Uint64.valueOf(1))
1217 sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
1218 .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
1219 .setLayerProtocolQualifier(PHOTONICLAYERQUALIFIEROTS.VALUE)
1220 .setNumberOfCepInstances(Uint64.valueOf(1))
1228 LOG.error("Layer Protocol Name is unknown");
1232 return sclpqiList.stream().distinct().toList();
1235 public Map<NodeKey, org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node>
1240 public Map<LinkKey, Link> getTapiLinks() {
1244 public AdministrativeState transformAsToTapiAdminState(String adminState) {
1245 if (adminState == null) {
1248 return adminState.equals(AdminStates.InService.getName())
1249 || adminState.equals(AdministrativeState.UNLOCKED.getName()) ? AdministrativeState.UNLOCKED
1250 : AdministrativeState.LOCKED;
1253 public OperationalState transformOsToTapiOperationalState(String operState) {
1254 if (operState == null) {
1257 return operState.equals("inService") || operState.equals(OperationalState.ENABLED.getName())
1258 ? OperationalState.ENABLED : OperationalState.DISABLED;
1261 public Map<ServiceInterfacePointKey, ServiceInterfacePoint> getTapiSips() {
1265 public void setTapiSips(Map<ServiceInterfacePointKey, ServiceInterfacePoint> tapiSip) {
1266 this.tapiSips.putAll(tapiSip);