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 private OduSwitchingPools createOduSwitchingPoolForTp100G() {
602 Map<NonBlockingListKey, NonBlockingList> nblMap = new HashMap<>();
604 for (TerminationPoint tp : this.oorNetworkPortList) {
605 TpId tpid1 = tp.getTpId();
606 TpId tpid2 = tp.augmentation(
607 org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.TerminationPoint1.class)
608 .getAssociatedConnectionMapTp().iterator().next();
609 Set<TpId> tpList = new HashSet<>();
612 NonBlockingList nbl = new NonBlockingListBuilder()
613 .setNblNumber(Uint16.valueOf(count))
616 nblMap.put(nbl.key(), nbl);
619 return new OduSwitchingPoolsBuilder()
620 .setNonBlockingList(nblMap)
621 .setSwitchingPoolNumber(Uint16.valueOf(1))
625 private org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node
626 createTapiNode(Map<NameKey, Name> nodeNames, Set<LayerProtocolName> layerProtocols) {
627 Uuid nodeUuid = null;
628 Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> onepl = new HashMap<>();
629 Map<NodeRuleGroupKey, NodeRuleGroup> nodeRuleGroupList = new HashMap<>();
630 Map<RuleKey, Rule> ruleList = new HashMap<>();
631 Set<RuleType> ruleTypes = new HashSet<>();
632 ruleTypes.add(RuleType.FORWARDING);
633 Rule rule = new RuleBuilder()
634 .setLocalId("forward")
635 .setForwardingRule(FORWARDINGRULEMAYFORWARDACROSSGROUP.VALUE)
636 .setRuleType(ruleTypes)
638 ruleList.put(rule.key(), rule);
639 if (layerProtocols.contains(LayerProtocolName.DSR)
640 || layerProtocols.contains(LayerProtocolName.PHOTONICMEDIA)) {
641 nodeUuid = getNodeUuid4Dsr(onepl, nodeRuleGroupList, ruleList);
643 LOG.error("Undefined LayerProtocolName for {} node {}", nodeNames.get(nodeNames.keySet().iterator().next())
644 .getValueName(), nodeNames.get(nodeNames.keySet().iterator().next()).getValue());
646 // Empty random creation of mandatory fields for avoiding errors....
647 CostCharacteristic costCharacteristic = new CostCharacteristicBuilder()
648 .setCostAlgorithm("Restricted Shortest Path - RSP")
649 .setCostName("HOP_COUNT")
650 .setCostValue(TapiStringConstants.COST_HOP_VALUE)
652 LatencyCharacteristic latencyCharacteristic = new LatencyCharacteristicBuilder()
653 .setFixedLatencyCharacteristic(TapiStringConstants.FIXED_LATENCY_VALUE)
654 .setQueuingLatencyCharacteristic(TapiStringConstants.QUEING_LATENCY_VALUE)
655 .setJitterCharacteristic(TapiStringConstants.JITTER_VALUE)
656 .setWanderCharacteristic(TapiStringConstants.WANDER_VALUE)
657 .setTrafficPropertyName("FIXED_LATENCY")
659 RiskCharacteristic riskCharacteristic = new RiskCharacteristicBuilder()
660 .setRiskCharacteristicName("risk characteristic")
661 .setRiskIdentifierList(Set.of("risk identifier1", "risk identifier2"))
663 RiskParameterPac riskParamPac = new RiskParameterPacBuilder()
664 .setRiskCharacteristic(Map.of(riskCharacteristic.key(), riskCharacteristic))
666 return new NodeBuilder()
669 .setLayerProtocolName(layerProtocols)
670 .setAdministrativeState(transformAsToTapiAdminState(this.ietfNodeAdminState.getName()))
671 .setOperationalState(transformOsToTapiOperationalState(this.ietfNodeOperState.getName()))
672 .setLifecycleState(LifecycleState.INSTALLED)
673 .setOwnedNodeEdgePoint(onepl)
674 .setNodeRuleGroup(nodeRuleGroupList)
675 .setCostCharacteristic(Map.of(costCharacteristic.key(), costCharacteristic))
676 .setLatencyCharacteristic(Map.of(latencyCharacteristic.key(), latencyCharacteristic))
677 .setRiskParameterPac(riskParamPac)
678 .setErrorCharacteristic("error")
679 .setLossCharacteristic("loss")
680 .setRepeatDeliveryCharacteristic("repeat delivery")
681 .setDeliveryOrderCharacteristic("delivery order")
682 .setUnavailableTimeCharacteristic("unavailable time")
683 .setServerIntegrityProcessCharacteristic("server integrity process")
687 private Uuid getNodeUuid4Dsr(Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> onepl,
688 Map<NodeRuleGroupKey, NodeRuleGroup> nodeRuleGroupList, Map<RuleKey, Rule> ruleList) {
690 nodeUuid = this.uuidMap.get(String.join("+", this.ietfNodeId, TapiStringConstants.XPDR));
691 // client NEP DSR creation on DSR/ODU node
692 for (int i = 0; i < oorClientPortList.size(); i++) {
693 Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes(
694 (String.join("+", this.ietfNodeId, TapiStringConstants.DSR,
695 oorClientPortList.get(i).getTpId().getValue())).getBytes(Charset.forName("UTF-8"))).toString());
696 LOG.info("NEP = {} has Uuid {} ", String.join("+", this.ietfNodeId, TapiStringConstants.DSR,
697 oorClientPortList.get(i).getTpId().getValue()), nepUuid);
698 this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.DSR,
699 oorClientPortList.get(i).getTpId().getValue()), nepUuid);
700 NameBuilder nameBldr = new NameBuilder().setValue(
701 String.join("+", this.ietfNodeId, TapiStringConstants.DSR,
702 oorClientPortList.get(i).getTpId().getValue()));
704 if (OpenroadmNodeType.TPDR.equals(this.ietfNodeType)) {
705 name = nameBldr.setValueName("100G-tpdr").build();
707 name = nameBldr.setValueName("NodeEdgePoint_C").build();
710 OwnedNodeEdgePoint onep = createNep(oorClientPortList.get(i), Map.of(name.key(), name),
711 LayerProtocolName.DSR, LayerProtocolName.DSR, true, String.join("+", this.ietfNodeId,
712 TapiStringConstants.DSR));
713 onepl.put(onep.key(), onep);
715 // CLIENT NEP E_ODU creation on DSR/ODU node
716 for (int i = 0; i < oorClientPortList.size(); i++) {
717 Uuid nepUuid1 = new Uuid(UUID.nameUUIDFromBytes(
718 (String.join("+", this.ietfNodeId, TapiStringConstants.E_ODU,
719 oorClientPortList.get(i).getTpId().getValue())).getBytes(Charset.forName("UTF-8"))).toString());
720 LOG.info("NEP = {} has Uuid {} ", String.join("+", this.ietfNodeId, TapiStringConstants.E_ODU,
721 oorClientPortList.get(i).getTpId().getValue()), nepUuid1);
722 this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.E_ODU,
723 oorClientPortList.get(i).getTpId().getValue()), nepUuid1);
724 Name onedName = new NameBuilder()
725 .setValueName("eNodeEdgePoint_N")
726 .setValue(String.join("+", this.ietfNodeId, TapiStringConstants.E_ODU,
727 oorClientPortList.get(i).getTpId().getValue()))
730 OwnedNodeEdgePoint onep = createNep(oorClientPortList.get(i), Map.of(onedName.key(), onedName),
731 LayerProtocolName.ODU, LayerProtocolName.DSR, false, String.join("+", this.ietfNodeId,
732 TapiStringConstants.E_ODU));
733 onepl.put(onep.key(), onep);
735 // NETWORK NEPs I_ODU creation on DSR/ODU node
736 for (int i = 0; i < oorNetworkPortList.size(); i++) {
737 Uuid nepUuid1 = new Uuid(UUID.nameUUIDFromBytes(
738 (String.join("+", this.ietfNodeId, TapiStringConstants.I_ODU,
739 oorNetworkPortList.get(i).getTpId().getValue())).getBytes(Charset.forName("UTF-8"))).toString());
740 LOG.info("NEP = {} has Uuid {} ", String.join("+", this.ietfNodeId, TapiStringConstants.I_ODU,
741 oorNetworkPortList.get(i).getTpId().getValue()), nepUuid1);
742 this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.I_ODU,
743 oorNetworkPortList.get(i).getTpId().getValue()), nepUuid1);
744 Name onedName = new NameBuilder()
745 .setValueName("iNodeEdgePoint_N")
746 .setValue(String.join("+", this.ietfNodeId, TapiStringConstants.I_ODU,
747 oorNetworkPortList.get(i).getTpId().getValue()))
750 OwnedNodeEdgePoint onep = createNep(oorNetworkPortList.get(i), Map.of(onedName.key(), onedName),
751 LayerProtocolName.ODU, LayerProtocolName.DSR, true, String.join("+", this.ietfNodeId,
752 TapiStringConstants.I_ODU));
753 onepl.put(onep.key(), onep);
755 // NETWORK NEP OTS network on DSR/ODU node
756 for (int i = 0; i < oorNetworkPortList.size(); i++) {
757 Uuid nepUuid2 = new Uuid(UUID.nameUUIDFromBytes(
758 (String.join("+", this.ietfNodeId, TapiStringConstants.PHTNC_MEDIA_OTS,
759 oorNetworkPortList.get(i).getTpId().getValue())).getBytes(Charset.forName("UTF-8")))
761 LOG.info("NEP = {} has Uuid {} ", String.join("+", this.ietfNodeId, TapiStringConstants.PHTNC_MEDIA_OTS,
762 oorNetworkPortList.get(i).getTpId().getValue()), nepUuid2);
763 this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.PHTNC_MEDIA_OTS,
764 oorNetworkPortList.get(i).getTpId().getValue()), nepUuid2);
765 Name onedName = new NameBuilder()
766 .setValueName("eNodeEdgePoint")
767 .setValue(String.join("+", this.ietfNodeId, TapiStringConstants.PHTNC_MEDIA_OTS,
768 oorNetworkPortList.get(i).getTpId().getValue()))
771 OwnedNodeEdgePoint onep = createNep(oorNetworkPortList.get(i), Map.of(onedName.key(), onedName),
772 LayerProtocolName.PHOTONICMEDIA, LayerProtocolName.PHOTONICMEDIA, true,
773 String.join("+", this.ietfNodeId, TapiStringConstants.PHTNC_MEDIA_OTS));
774 onepl.put(onep.key(), onep);
776 for (int i = 0; i < oorNetworkPortList.size(); i++) {
777 Uuid nepUuid3 = new Uuid(UUID.nameUUIDFromBytes(
778 (String.join("+", this.ietfNodeId, TapiStringConstants.OTSI_MC,
779 oorNetworkPortList.get(i).getTpId().getValue())).getBytes(Charset.forName("UTF-8")))
781 LOG.info("NEP = {} has Uuid {} ", String.join("+", this.ietfNodeId, TapiStringConstants.OTSI_MC,
782 oorNetworkPortList.get(i).getTpId().getValue()), nepUuid3);
783 this.uuidMap.put(String.join("+", this.ietfNodeId, TapiStringConstants.OTSI_MC,
784 oorNetworkPortList.get(i).getTpId().getValue()), nepUuid3);
785 Name onedName = new NameBuilder()
786 .setValueName("PhotMedNodeEdgePoint")
787 .setValue(String.join("+", this.ietfNodeId, TapiStringConstants.OTSI_MC,
788 oorNetworkPortList.get(i).getTpId().getValue()))
791 OwnedNodeEdgePoint onep = createNep(oorNetworkPortList.get(i), Map.of(onedName.key(), onedName),
792 LayerProtocolName.PHOTONICMEDIA, LayerProtocolName.PHOTONICMEDIA, true,
793 String.join("+", this.ietfNodeId, TapiStringConstants.OTSI_MC));
794 onepl.put(onep.key(), onep);
796 // create NodeRuleGroup
798 LOG.debug("ODU switching pool = {}", this.oorOduSwitchingPool.nonnullNonBlockingList().values());
799 for (NonBlockingList nbl : this.oorOduSwitchingPool.nonnullNonBlockingList().values()) {
800 Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePointKey,
801 org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePoint>
802 nepList = new HashMap<>();
803 Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePointKey,
804 org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePoint>
805 oduNepList = new HashMap<>();
806 LOG.debug("UUidMap={}", this.uuidMap.keySet());
807 LOG.debug("TP list = {}", nbl.getTpList());
808 for (TpId tp : nbl.getTpList()) {
809 LOG.debug("TP={}", tp.getValue());
810 LOG.debug("UuidKey={}", String.join("+", this.ietfNodeId,
811 TapiStringConstants.E_ODU, tp.getValue()));
812 if (this.uuidMap.containsKey(String.join("+", this.ietfNodeId, TapiStringConstants.DSR,
813 tp.getValue())) || this.uuidMap.containsKey(String.join(
814 "+", this.ietfNodeId, TapiStringConstants.I_ODU, tp.getValue()))) {
815 String qual = tp.getValue().contains("CLIENT") ? TapiStringConstants.DSR
816 : TapiStringConstants.I_ODU;
817 org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePoint
818 nep = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121
819 .node.rule.group.NodeEdgePointBuilder()
820 .setTopologyUuid(tapiTopoUuid)
821 .setNodeUuid(this.uuidMap.get(String.join("+", this.ietfNodeId,
822 TapiStringConstants.XPDR)))
823 .setNodeEdgePointUuid(this.uuidMap.get(String.join("+", this.ietfNodeId,
824 qual, tp.getValue())))
826 nepList.put(nep.key(), nep);
828 if (this.uuidMap.containsKey(String.join("+", this.ietfNodeId,
829 TapiStringConstants.E_ODU, tp.getValue()))) {
830 org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePoint
831 nep1 = new org.opendaylight.yang.gen.v1.urn
832 .onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePointBuilder()
833 .setTopologyUuid(tapiTopoUuid)
834 .setNodeUuid(this.uuidMap.get(String.join("+", this.ietfNodeId,
835 TapiStringConstants.XPDR)))
836 .setNodeEdgePointUuid(this.uuidMap.get(String.join(
837 "+", this.ietfNodeId, TapiStringConstants.E_ODU, tp.getValue())))
839 oduNepList.put(nep1.key(), nep1);
841 if (this.uuidMap.containsKey(String.join("+", this.ietfNodeId,
842 TapiStringConstants.I_ODU, tp.getValue()))) {
843 org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePoint
844 nep2 = new org.opendaylight.yang.gen.v1.urn
845 .onf.otcc.yang.tapi.topology.rev221121.node.rule.group.NodeEdgePointBuilder()
846 .setTopologyUuid(tapiTopoUuid)
847 .setNodeUuid(this.uuidMap.get(String.join("+", this.ietfNodeId,
848 TapiStringConstants.XPDR)))
849 .setNodeEdgePointUuid(this.uuidMap.get(String.join(
850 "+", this.ietfNodeId, TapiStringConstants.I_ODU, tp.getValue())))
852 oduNepList.put(nep2.key(), nep2);
855 LOG.debug("NEPLIST (DSR/I_ODU) of [dsr node rule group] is {}", nepList.toString());
856 LOG.debug("NEPLIST (E_ODU/I_ODU) of [odu node rule group] is {}", nepList.toString());
857 // Empty random creation of mandatory fields for avoiding errors....
858 CostCharacteristic costCharacteristic = new CostCharacteristicBuilder()
859 .setCostAlgorithm("Restricted Shortest Path - RSP")
860 .setCostName("HOP_COUNT")
861 .setCostValue(TapiStringConstants.COST_HOP_VALUE)
863 LatencyCharacteristic latencyCharacteristic = new LatencyCharacteristicBuilder()
864 .setFixedLatencyCharacteristic(TapiStringConstants.FIXED_LATENCY_VALUE)
865 .setQueuingLatencyCharacteristic(TapiStringConstants.QUEING_LATENCY_VALUE)
866 .setJitterCharacteristic(TapiStringConstants.JITTER_VALUE)
867 .setWanderCharacteristic(TapiStringConstants.WANDER_VALUE)
868 .setTrafficPropertyName("FIXED_LATENCY")
870 RiskCharacteristic riskCharacteristic = new RiskCharacteristicBuilder()
871 .setRiskCharacteristicName("risk characteristic")
872 .setRiskIdentifierList(Set.of("risk identifier1", "risk identifier2"))
874 NodeRuleGroup nodeRuleGroup1 = new NodeRuleGroupBuilder()
875 .setUuid(new Uuid(UUID.nameUUIDFromBytes(("dsr node rule group " + count)
876 .getBytes(Charset.forName("UTF-8"))).toString()))
878 .setNodeEdgePoint(nepList)
879 .setRiskCharacteristic(Map.of(riskCharacteristic.key(), riskCharacteristic))
880 .setCostCharacteristic(Map.of(costCharacteristic.key(), costCharacteristic))
881 .setLatencyCharacteristic(Map.of(latencyCharacteristic.key(), latencyCharacteristic))
883 nodeRuleGroupList.put(nodeRuleGroup1.key(), nodeRuleGroup1);
884 NodeRuleGroup nodeRuleGroup2 = new NodeRuleGroupBuilder()
885 .setUuid(new Uuid(UUID.nameUUIDFromBytes(("odu node rule group " + count)
886 .getBytes(Charset.forName("UTF-8"))).toString()))
888 .setNodeEdgePoint(oduNepList)
889 .setRiskCharacteristic(Map.of(riskCharacteristic.key(), riskCharacteristic))
890 .setCostCharacteristic(Map.of(costCharacteristic.key(), costCharacteristic))
891 .setLatencyCharacteristic(Map.of(latencyCharacteristic.key(), latencyCharacteristic))
893 nodeRuleGroupList.put(nodeRuleGroup2.key(), nodeRuleGroup2);
899 private OwnedNodeEdgePoint createNep(TerminationPoint oorTp, Map<NameKey, Name> nepNames,
900 LayerProtocolName nepProtocol, LayerProtocolName nodeProtocol, boolean withSip, String keyword) {
901 String key = String.join("+", keyword, oorTp.getTpId().getValue());
902 AdministrativeState adminState = (oorTp.augmentation(TerminationPoint1.class).getAdministrativeState() != null)
903 ? transformAsToTapiAdminState(oorTp.augmentation(TerminationPoint1.class).getAdministrativeState()
906 OperationalState operState = (oorTp.augmentation(TerminationPoint1.class).getOperationalState() != null)
907 ? transformOsToTapiOperationalState(oorTp.augmentation(TerminationPoint1.class).getOperationalState()
910 org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev230526.TerminationPoint1 tp1 =
911 oorTp.augmentation(org.opendaylight.yang.gen.v1.http
912 .org.openroadm.otn.network.topology.rev230526.TerminationPoint1.class);
913 if (tp1.getTpSupportedInterfaces() == null) {
914 LOG.warn("Tp supported interface doesnt exist on TP {}", oorTp.getTpId().getValue());
917 Collection<SupportedInterfaceCapability> sicColl = tp1.getTpSupportedInterfaces()
918 .getSupportedInterfaceCapability().values();
919 OwnedNodeEdgePointBuilder onepBldr = new OwnedNodeEdgePointBuilder()
920 .setUuid(this.uuidMap.get(key))
921 .setLayerProtocolName(nepProtocol)
923 onepBldr.setSupportedCepLayerProtocolQualifierInstances(createSupportedCepLayerProtocolQualifier(sicColl,
925 .setDirection(Direction.BIDIRECTIONAL)
926 .setLinkPortRole(PortRole.SYMMETRIC)
927 .setAdministrativeState(adminState)
928 .setOperationalState(operState)
929 .setLifecycleState(LifecycleState.INSTALLED);
931 onepBldr.setMappedServiceInterfacePoint(
932 createMSIP(1, nepProtocol, oorTp.getTpId().getValue(), keyword, sicColl, operState, adminState));
934 List<OperationalModeKey> opModeList = new ArrayList<>();
935 if (oorTp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
936 if (oorTp.augmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev230526
937 .TerminationPoint1.class) == null
938 || oorTp.augmentation(org.opendaylight.yang.gen.v1.http.org.openroadm
939 .network.topology.rev230526.TerminationPoint1.class).getXpdrNetworkAttributes()
941 for (SupportedInterfaceCapability sic : sicColl) {
942 String ifCapType = sic.getIfCapType().toString().split("\\{")[0];
943 if (("IfOCHOTUCnODUCn").equals(ifCapType) || ("IfOCHOTUCnODUCnUniregen").equals(ifCapType)
944 || ("IfOCHOTUCnODUCnRegen").equals(ifCapType)) {
945 opModeList.add(new OperationalModeKey("400G"));
949 opModeList.add(new OperationalModeKey("100G"));
951 opModeList = oorTp.augmentation(
952 org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev230526.TerminationPoint1.class)
953 .getXpdrNetworkAttributes().getSupportedOperationalModes().getOperationalMode().keySet().stream()
956 Map<Double, Double> freqWidthMap = getXpdrUsedWavelength(oorTp);
957 if (String.join("+", this.ietfNodeId, TapiStringConstants.OTSI_MC).equals(keyword)
958 || String.join("+", this.ietfNodeId, TapiStringConstants.PHTNC_MEDIA_OTS).equals(keyword)) {
959 //Creating OTS & OTSI_MC NEP specific attributes
960 onepBldr.setSupportedPayloadStructure(createSupportedPayloadStructureForPhtncMedia(
961 sicColl,opModeList));
962 SpectrumCapabilityPacBuilder spectrumPac = new SpectrumCapabilityPacBuilder();
963 OccupiedSpectrumBuilder ospecBd = new OccupiedSpectrumBuilder();
964 if (freqWidthMap != null && !freqWidthMap.isEmpty()) {
965 onepBldr.setAvailablePayloadStructure(createAvailablePayloadStructureForPhtncMedia(
966 true, sicColl,opModeList));
968 .setUpperFrequency(Uint64.valueOf(Math.round(
969 freqWidthMap.keySet().iterator().next().doubleValue() * 1E09
970 + (freqWidthMap.entrySet().iterator().next().getValue().doubleValue() * 1E06) / 2)))
971 .setLowerFrequency(Uint64.valueOf(Math.round(
972 freqWidthMap.keySet().iterator().next().doubleValue() * 1E09
973 - (freqWidthMap.entrySet().iterator().next().getValue().doubleValue() * 1E06) / 2)));
976 .setUpperFrequency(Uint64.valueOf(0))
977 .setLowerFrequency(Uint64.valueOf(0));
978 onepBldr.setAvailablePayloadStructure(createAvailablePayloadStructureForPhtncMedia(
979 false, sicColl,opModeList));
981 AvailableSpectrum aspec = new AvailableSpectrumBuilder()
982 .setUpperFrequency(Uint64.valueOf(Math.round(GridConstant.START_EDGE_FREQUENCY * 1E09 + naz)))
983 .setLowerFrequency(Uint64.valueOf(Math.round(GridConstant.START_EDGE_FREQUENCY * 1E09
984 + GridConstant.GRANULARITY * GridConstant.EFFECTIVE_BITS * 1E06 + naz)))
986 Map<AvailableSpectrumKey, AvailableSpectrum> aspecMap = new HashMap<>();
987 aspecMap.put(new AvailableSpectrumKey(aspec.getLowerFrequency(),
988 aspec.getUpperFrequency()), aspec);
989 spectrumPac.setAvailableSpectrum(aspecMap);
991 OccupiedSpectrum ospec = ospecBd.build();
992 Map<OccupiedSpectrumKey, OccupiedSpectrum> ospecMap = new HashMap<>();
993 ospecMap.put(new OccupiedSpectrumKey(ospec.getLowerFrequency(),
994 ospec.getUpperFrequency()), ospec);
995 spectrumPac.setOccupiedSpectrum(ospecMap);
997 SupportableSpectrum sspec = new SupportableSpectrumBuilder()
998 .setUpperFrequency(Uint64.valueOf(Math.round(GridConstant.START_EDGE_FREQUENCY * 1E09 + nazz)))
999 .setLowerFrequency(Uint64.valueOf(Math.round(GridConstant.START_EDGE_FREQUENCY * 1E09
1000 + GridConstant.GRANULARITY * GridConstant.EFFECTIVE_BITS * 1E06 + nazz)))
1002 Map<SupportableSpectrumKey, SupportableSpectrum> sspecMap = new HashMap<>();
1003 sspecMap.put(new SupportableSpectrumKey(sspec.getLowerFrequency(),
1004 sspec.getUpperFrequency()), sspec);
1005 spectrumPac.setSupportableSpectrum(sspecMap);
1006 PhotonicMediaNodeEdgePointSpec pnepSpec = new PhotonicMediaNodeEdgePointSpecBuilder()
1007 .setSpectrumCapabilityPac(spectrumPac.build())
1009 org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121.OwnedNodeEdgePoint1 onep1 =
1010 new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev221121
1011 .OwnedNodeEdgePoint1Builder()
1012 .setPhotonicMediaNodeEdgePointSpec(pnepSpec)
1014 onepBldr.addAugmentation(onep1);
1017 return onepBldr.build();
1020 private ServiceInterfacePoint createSIP(Uuid sipUuid, LayerProtocolName layerProtocol, String tpId,
1021 String nodeid, Collection<SupportedInterfaceCapability> supportedInterfaceCapability,
1022 OperationalState operState, AdministrativeState adminState) {
1023 // TODO: what value should be set in total capacity and available capacity??
1024 // LOG.info("SIP name = {}", String.join("+", nodeid, tp.getTpId().getValue()));
1025 Name sipName = new NameBuilder()
1026 .setValueName("SIP name")
1027 .setValue(String.join("+", nodeid, tpId))
1030 return new ServiceInterfacePointBuilder()
1032 .setName(Map.of(sipName.key(), sipName))
1033 .setLayerProtocolName(layerProtocol)
1034 .setAdministrativeState(adminState)
1035 .setOperationalState(operState)
1036 .setLifecycleState(LifecycleState.INSTALLED)
1037 .setAvailableCapacity(new AvailableCapacityBuilder().build())
1038 .setTotalPotentialCapacity(new TotalPotentialCapacityBuilder().build())
1039 .setSupportedCepLayerProtocolQualifierInstances(createSipSupportedLayerProtocolQualifier(
1040 supportedInterfaceCapability, layerProtocol))
1044 @edu.umd.cs.findbugs.annotations.SuppressFBWarnings(value = "SF_SWITCH_FALLTHROUGH",
1045 justification = "Voluntarily No break in switchcase where comment is inserted in following method")
1046 private List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
1047 .service._interface.point.SupportedCepLayerProtocolQualifierInstances>
1048 createSipSupportedLayerProtocolQualifier(
1049 Collection<SupportedInterfaceCapability> supportedInterfaceCapability,
1050 LayerProtocolName lpn) {
1051 List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
1052 .service._interface.point.SupportedCepLayerProtocolQualifierInstances> sclpqiList = new ArrayList<>();
1053 if (supportedInterfaceCapability == null) {
1054 sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
1055 .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
1056 .setLayerProtocolQualifier(PHOTONICLAYERQUALIFIEROTS.VALUE)
1057 .setNumberOfCepInstances(Uint64.valueOf(1))
1061 for (SupportedInterfaceCapability sic : supportedInterfaceCapability) {
1062 String ifCapType = sic.getIfCapType().toString().split("\\{")[0];
1063 switch (lpn.getName()) {
1066 switch (ifCapType) {
1068 sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
1069 .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
1070 .setLayerProtocolQualifier(ODUTYPEODU0.VALUE)
1071 .setNumberOfCepInstances(Uint64.valueOf(0))
1073 sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
1074 .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
1075 .setLayerProtocolQualifier(DIGITALSIGNALTYPEGigE.VALUE)
1076 .setNumberOfCepInstances(Uint64.valueOf(0))
1080 sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
1081 .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
1082 .setLayerProtocolQualifier(ODUTYPEODU2E.VALUE)
1083 .setNumberOfCepInstances(Uint64.valueOf(0))
1085 sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
1086 .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
1087 .setLayerProtocolQualifier(DIGITALSIGNALTYPE10GigELAN.VALUE)
1088 .setNumberOfCepInstances(Uint64.valueOf(0))
1092 sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
1093 .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
1094 .setLayerProtocolQualifier(ODUTYPEODU2.VALUE)
1095 .setNumberOfCepInstances(Uint64.valueOf(0))
1097 sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
1098 .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
1099 .setLayerProtocolQualifier(DIGITALSIGNALTYPE10GigELAN.VALUE)
1100 .setNumberOfCepInstances(Uint64.valueOf(0))
1104 sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
1105 .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
1106 .setLayerProtocolQualifier(DIGITALSIGNALTYPE10GigELAN.VALUE)
1107 .setNumberOfCepInstances(Uint64.valueOf(0))
1111 sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
1112 .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
1113 .setLayerProtocolQualifier(DIGITALSIGNALTYPE100GigE.VALUE)
1114 .setNumberOfCepInstances(Uint64.valueOf(0))
1116 sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
1117 .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
1118 .setLayerProtocolQualifier(ODUTYPEODU4.VALUE)
1119 .setNumberOfCepInstances(Uint64.valueOf(0))
1123 sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
1124 .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
1125 .setLayerProtocolQualifier(DIGITALSIGNALTYPE100GigE.VALUE)
1126 .setNumberOfCepInstances(Uint64.valueOf(0))
1129 case "IfOCHOTU4ODU4":
1131 sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
1132 .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
1133 .setLayerProtocolQualifier(ODUTYPEODU4.VALUE)
1134 .setNumberOfCepInstances(Uint64.valueOf(0))
1138 LOG.error("IfCapability type not managed");
1143 switch (ifCapType) {
1145 sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
1146 .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
1147 .setLayerProtocolQualifier(ODUTYPEODU0.VALUE)
1148 .setNumberOfCepInstances(Uint64.valueOf(0))
1152 sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
1153 .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
1154 .setLayerProtocolQualifier(ODUTYPEODU2E.VALUE)
1155 .setNumberOfCepInstances(Uint64.valueOf(0))
1160 sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
1161 .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
1162 .setLayerProtocolQualifier(ODUTYPEODU2.VALUE)
1163 .setNumberOfCepInstances(Uint64.valueOf(0))
1168 case "IfOCHOTU4ODU4":
1170 sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
1171 .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
1172 .setLayerProtocolQualifier(ODUTYPEODU4.VALUE)
1173 .setNumberOfCepInstances(Uint64.valueOf(0))
1177 LOG.error("IfCapability type not managed");
1181 case "PHOTONIC_MEDIA":
1182 switch (ifCapType) {
1183 case "IfOCHOTUCnODUCn":
1184 case "IfOtsiOtucnOducn":
1185 case "IfOCHOTUCnODUCnRegen":
1186 case "IfOCHOTUCnODUCnUniregen":
1187 sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
1188 .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
1189 .setLayerProtocolQualifier(ODUTYPEODUCN.VALUE)
1190 .setNumberOfCepInstances(Uint64.valueOf(1))
1192 sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
1193 .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
1194 .setLayerProtocolQualifier(OTUTYPEOTUCN.VALUE)
1195 .setNumberOfCepInstances(Uint64.valueOf(1))
1199 case "IfOCHOTU4ODU4":
1200 case "IfOCHOTU4ODU4Regen":
1201 case "IfOCHOTU4ODU4Uniregen":
1202 sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
1203 .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
1204 .setLayerProtocolQualifier(PHOTONICLAYERQUALIFIEROTSiMC.VALUE)
1205 .setNumberOfCepInstances(Uint64.valueOf(1))
1207 sclpqiList.add(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121
1208 .service._interface.point.SupportedCepLayerProtocolQualifierInstancesBuilder()
1209 .setLayerProtocolQualifier(PHOTONICLAYERQUALIFIEROTS.VALUE)
1210 .setNumberOfCepInstances(Uint64.valueOf(1))
1218 LOG.error("Layer Protocol Name is unknown");
1222 return sclpqiList.stream().distinct().toList();
1225 public Map<NodeKey, org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev221121.topology.Node>
1230 public Map<LinkKey, Link> getTapiLinks() {
1234 public AdministrativeState transformAsToTapiAdminState(String adminState) {
1235 if (adminState == null) {
1238 return adminState.equals(AdminStates.InService.getName())
1239 || adminState.equals(AdministrativeState.UNLOCKED.getName()) ? AdministrativeState.UNLOCKED
1240 : AdministrativeState.LOCKED;
1243 public OperationalState transformOsToTapiOperationalState(String operState) {
1244 if (operState == null) {
1247 return operState.equals("inService") || operState.equals(OperationalState.ENABLED.getName())
1248 ? OperationalState.ENABLED : OperationalState.DISABLED;
1251 public Map<ServiceInterfacePointKey, ServiceInterfacePoint> getTapiSips() {
1255 public void setTapiSips(Map<ServiceInterfacePointKey, ServiceInterfacePoint> tapiSip) {
1256 this.tapiSips.putAll(tapiSip);