2 * Copyright © 2017 AT&T 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
9 package org.opendaylight.transportpce.renderer.openroadminterface;
11 import java.util.List;
12 import org.opendaylight.transportpce.common.StringConstants;
13 import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
14 import org.opendaylight.transportpce.common.fixedflex.GridConstant;
15 import org.opendaylight.transportpce.common.fixedflex.SpectrumInformation;
16 import org.opendaylight.transportpce.common.mapping.MappingUtils;
17 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaceException;
18 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210927.mapping.Mapping;
19 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev200327.OpucnTribSlotDef;
20 import org.slf4j.Logger;
21 import org.slf4j.LoggerFactory;
23 public class OpenRoadmInterfaceFactory {
25 private static final String OTN_FUNTIONS_ARE_NOT_SUPPORTED_BY_OPENROADM_MODELS_1_2_1_MSG =
26 "OTN functions are not supported by Openroadm models 1.2.1";
27 private static final String OTN_FUNTIONS_ARE_NOT_SUPPORTED_BY_OPENROADM_MODELS_2_2_1_MSG =
28 "OTN functions are not supported by Openroadm models 2.2.1";
29 private static final Logger LOG = LoggerFactory.getLogger(OpenRoadmInterfaceFactory.class);
30 private final MappingUtils mappingUtils;
31 private final OpenRoadmInterface121 openRoadmInterface121;
32 private final OpenRoadmInterface221 openRoadmInterface221;
33 private final OpenRoadmInterface710 openRoadmInterface710;
34 private final OpenRoadmOtnInterface221 openRoadmOtnInterface221;
35 private final OpenRoadmOtnInterface710 openRoadmOtnInterface710;
37 public OpenRoadmInterfaceFactory(MappingUtils mappingUtils, OpenRoadmInterface121 openRoadmInterface121,
38 OpenRoadmInterface221 openRoadmInterface221, OpenRoadmInterface710 openRoadmInterface710,
39 OpenRoadmOtnInterface221 openRoadmOTNInterface221, OpenRoadmOtnInterface710 openRoadmOtnInterface710) {
40 this.mappingUtils = mappingUtils;
41 this.openRoadmInterface121 = openRoadmInterface121;
42 this.openRoadmInterface221 = openRoadmInterface221;
43 this.openRoadmInterface710 = openRoadmInterface710;
44 this.openRoadmOtnInterface221 = openRoadmOTNInterface221;
45 this.openRoadmOtnInterface710 = openRoadmOtnInterface710;
48 public String createOpenRoadmEthInterface(String nodeId, String logicalConnPoint)
49 throws OpenRoadmInterfaceException {
51 switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
52 case StringConstants.OPENROADM_DEVICE_VERSION_1_2_1:
53 return openRoadmInterface121.createOpenRoadmEthInterface(nodeId, logicalConnPoint);
54 case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
55 return openRoadmInterface221.createOpenRoadmEthInterface(nodeId, logicalConnPoint);
56 case StringConstants.OPENROADM_DEVICE_VERSION_7_1:
57 return openRoadmInterface710.createOpenRoadmEthInterface(nodeId, logicalConnPoint);
63 public List<String> createOpenRoadmOchInterfaces(String nodeId, String logicalConnPoint,
64 SpectrumInformation spectrumInformation)
65 throws OpenRoadmInterfaceException {
66 switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
67 case StringConstants.OPENROADM_DEVICE_VERSION_1_2_1:
68 return openRoadmInterface121.createOpenRoadmOchInterfaces(nodeId, logicalConnPoint,
70 case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
71 return openRoadmInterface221.createFlexOCH(nodeId, logicalConnPoint, spectrumInformation);
79 * This methods creates an OCH interface on the given termination point on Roadm.
81 * @param nodeId node ID
82 * @param logicalConnPoint logical connection point
83 * @param spectrumInformation spectrum information.
84 * @return Name of the interface if successful, otherwise return null.
85 * @throws OpenRoadmInterfaceException OpenRoadm interface exception
87 public String createOpenRoadmOchInterface(String nodeId, String logicalConnPoint,
88 SpectrumInformation spectrumInformation) throws OpenRoadmInterfaceException {
89 switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
90 case StringConstants.OPENROADM_DEVICE_VERSION_1_2_1:
91 return openRoadmInterface121.createOpenRoadmOchInterface(nodeId, logicalConnPoint,
93 case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
94 return openRoadmInterface221.createOpenRoadmOchInterface(nodeId, logicalConnPoint,
96 case StringConstants.OPENROADM_DEVICE_VERSION_7_1:
97 // In the case of 710 device, we logically combine the OTSi and OTSiGroup interface and represent
99 String interfaceOtsiName = openRoadmInterface710.createOpenRoadmOtsiInterface(nodeId, logicalConnPoint,
100 spectrumInformation);
101 return openRoadmInterface710.createOpenRoadmOtsiGroupInterface(nodeId, logicalConnPoint,
109 * This methods creates an ODU interface on the given termination point.
111 * @param nodeId node ID
112 * @param logicalConnPoint logical connection point
113 * @param supportingOtuInterface supporting OTU interface
114 * @return Name of the interface if successful, otherwise return null.
115 * @throws OpenRoadmInterfaceException OpenRoadm interface exception
118 public String createOpenRoadmOdu4Interface(String nodeId, String logicalConnPoint, String supportingOtuInterface)
119 throws OpenRoadmInterfaceException {
120 switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
121 case StringConstants.OPENROADM_DEVICE_VERSION_1_2_1:
122 return openRoadmInterface121.createOpenRoadmOdu4Interface(nodeId, logicalConnPoint);
123 case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
124 return openRoadmInterface221.createOpenRoadmOdu4Interface(nodeId, logicalConnPoint,
125 supportingOtuInterface);
126 case StringConstants.OPENROADM_DEVICE_VERSION_7_1:
127 // Here ODUCn and ODUflex are combined
128 String interfaceNameOduc4 = openRoadmInterface710.createOpenRoadmOducnInterface(nodeId,
129 logicalConnPoint, supportingOtuInterface);
130 return openRoadmInterface710.createOpenRoadmOduflexInterface(nodeId, logicalConnPoint,
138 * This methods creates an ODU interface on the given termination point.
140 * @param anodeId node ID for A side
141 * @param alogicalConnPoint logical connection point for A side
142 * @param asupportingOtuInterface supporting OTU interface
143 * @param znodeId node ID for Z side
144 * @param zlogicalConnPoint logical connection point for Z side
145 * @return Name of the interface if successful, otherwise return null.
146 * @throws OpenRoadmInterfaceException OpenRoadm interface exception
149 public String createOpenRoadmOdu4Interface(String anodeId, String alogicalConnPoint, String asupportingOtuInterface,
150 String znodeId, String zlogicalConnPoint)
151 throws OpenRoadmInterfaceException {
152 switch (mappingUtils.getOpenRoadmVersion(anodeId)) {
153 case StringConstants.OPENROADM_DEVICE_VERSION_1_2_1:
154 return openRoadmInterface121.createOpenRoadmOdu4Interface(anodeId, alogicalConnPoint);
155 case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
156 return openRoadmInterface221.createOpenRoadmOdu4Interface(anodeId, alogicalConnPoint,
157 asupportingOtuInterface, znodeId, zlogicalConnPoint);
158 case StringConstants.OPENROADM_DEVICE_VERSION_7_1:
159 // Here ODUCn and ODUflex are combined
160 String interfaceNameOduc4 = openRoadmInterface710.createOpenRoadmOducnInterface(anodeId,
161 alogicalConnPoint, asupportingOtuInterface, znodeId, zlogicalConnPoint);
162 return openRoadmInterface710.createOpenRoadmOduflexInterface(anodeId, alogicalConnPoint,
163 interfaceNameOduc4, znodeId, zlogicalConnPoint);
170 * This methods creates an ODU interface on the given termination point.
172 * @param nodeId node ID
173 * @param logicalConnPoint logical connection point
174 * @param isNetworkPort to distinguish a CTP from a TTP
175 * @param supportingInterface supporting OTU4 or 100GE interface
176 * @return Name of the interface if successful, otherwise return null.
177 * @throws OpenRoadmInterfaceException OpenRoadm interface exception
180 public String createOpenRoadmOdu4HOInterface(String nodeId, String logicalConnPoint, boolean isNetworkPort,
181 String supportingInterface) throws OpenRoadmInterfaceException {
182 switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
183 case StringConstants.OPENROADM_DEVICE_VERSION_1_2_1:
184 return openRoadmInterface121.createOpenRoadmOdu4Interface(nodeId, logicalConnPoint);
185 case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
186 return openRoadmInterface221.createOpenRoadmOdu4HOInterface(nodeId, logicalConnPoint, isNetworkPort,
187 supportingInterface);
194 * This methods creates an OTU interface on the given termination point.
196 * @param nodeId node ID
197 * @param logicalConnPoint logical connection point
198 * @param supportOchInterface supporting OCH interface
199 * @return Name of the interface if successful, otherwise return null.
200 * @throws OpenRoadmInterfaceException OpenRoadm interface exception
203 public String createOpenRoadmOtu4Interface(String nodeId, String logicalConnPoint, String supportOchInterface)
204 throws OpenRoadmInterfaceException {
205 switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
206 case StringConstants.OPENROADM_DEVICE_VERSION_1_2_1:
207 return openRoadmInterface121
208 .createOpenRoadmOtu4Interface(nodeId, logicalConnPoint, supportOchInterface);
209 case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
210 return openRoadmInterface221
211 .createOpenRoadmOtu4Interface(nodeId, logicalConnPoint, supportOchInterface);
212 case StringConstants.OPENROADM_DEVICE_VERSION_7_1:
213 return openRoadmInterface710.createOpenRoadmOtucnInterface(nodeId, logicalConnPoint,
214 supportOchInterface);
221 * This methods creates an OTU interface on the given termination point.
223 * @param anodeId node ID for A side
224 * @param alogicalConnPoint logical connection point for A side
225 * @param asupportOchInterface supporting OCH interface
226 * @param znodeId node ID for the Z side
227 * @param zlogicalConnPoint logical connection point for Z side
228 * @return Name of the interface if successful, otherwise return null.
230 * @throws OpenRoadmInterfaceException OpenRoadm interface exception
233 public String createOpenRoadmOtu4Interface(String anodeId, String alogicalConnPoint, String asupportOchInterface,
234 String znodeId, String zlogicalConnPoint)
235 throws OpenRoadmInterfaceException {
236 switch (mappingUtils.getOpenRoadmVersion(anodeId)) {
237 case StringConstants.OPENROADM_DEVICE_VERSION_1_2_1:
238 return openRoadmInterface121.createOpenRoadmOtu4Interface(anodeId,
239 alogicalConnPoint, asupportOchInterface);
240 case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
241 return openRoadmInterface221.createOpenRoadmOtu4Interface(anodeId, alogicalConnPoint,
242 asupportOchInterface, znodeId, zlogicalConnPoint);
243 case StringConstants.OPENROADM_DEVICE_VERSION_7_1:
244 return openRoadmInterface710.createOpenRoadmOtucnInterface(anodeId, alogicalConnPoint,
245 asupportOchInterface, znodeId, zlogicalConnPoint);
251 public String createOpenRoadmOchInterfaceName(String logicalConnectionPoint, String spectralSlotNumber) {
252 return String.join(GridConstant.NAME_PARAMETERS_SEPARATOR,logicalConnectionPoint, spectralSlotNumber);
255 public String createOpenRoadmOmsInterface(String nodeId, Mapping mapping) throws OpenRoadmInterfaceException {
256 switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
257 case StringConstants.OPENROADM_DEVICE_VERSION_1_2_1:
258 return openRoadmInterface121.createOpenRoadmOmsInterface(nodeId, mapping);
259 case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
260 return openRoadmInterface221.createOpenRoadmOmsInterface(nodeId, mapping);
266 public String createOpenRoadmOtsInterface(String nodeId, Mapping mapping) throws OpenRoadmInterfaceException {
267 switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
268 case StringConstants.OPENROADM_DEVICE_VERSION_1_2_1:
269 return openRoadmInterface121.createOpenRoadmOtsInterface(nodeId, mapping);
270 case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
271 return openRoadmInterface221.createOpenRoadmOtsInterface(nodeId, mapping);
277 public boolean isUsedByXc(String nodeId, String interfaceName, String xc,
278 DeviceTransactionManager deviceTransactionManager) {
279 switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
280 case StringConstants.OPENROADM_DEVICE_VERSION_1_2_1:
281 return openRoadmInterface121.isUsedByXc(nodeId, interfaceName, xc, deviceTransactionManager);
282 case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
283 return openRoadmInterface221.isUsedByXc(nodeId, interfaceName, xc, deviceTransactionManager);
289 public boolean isUsedByOtnXc(String nodeId, String interfaceName, String xc,
290 DeviceTransactionManager deviceTransactionManager) {
291 switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
292 case StringConstants.OPENROADM_DEVICE_VERSION_1_2_1:
293 LOG.error(OTN_FUNTIONS_ARE_NOT_SUPPORTED_BY_OPENROADM_MODELS_1_2_1_MSG);
295 case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
296 return openRoadmInterface221.isUsedByOtnXc(nodeId, interfaceName, xc, deviceTransactionManager);
302 public String createOpenRoadmEth1GInterface(String nodeId,
303 String logicalConnPoint) throws OpenRoadmInterfaceException {
304 switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
305 case StringConstants.OPENROADM_DEVICE_VERSION_1_2_1:
306 LOG.error(OTN_FUNTIONS_ARE_NOT_SUPPORTED_BY_OPENROADM_MODELS_1_2_1_MSG);
308 case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
309 return openRoadmOtnInterface221.createOpenRoadmEth1GInterface(nodeId, logicalConnPoint);
315 public String createOpenRoadmEth10GInterface(String nodeId,
316 String logicalConnPoint) throws OpenRoadmInterfaceException {
317 switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
318 case StringConstants.OPENROADM_DEVICE_VERSION_1_2_1:
319 LOG.error(OTN_FUNTIONS_ARE_NOT_SUPPORTED_BY_OPENROADM_MODELS_1_2_1_MSG);
321 case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
322 return openRoadmOtnInterface221.createOpenRoadmEth10GInterface(nodeId, logicalConnPoint);
329 public String createOpenRoadmEth100GInterface(String nodeId,
330 String logicalConnPoint) throws OpenRoadmInterfaceException {
332 switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
333 case StringConstants.OPENROADM_DEVICE_VERSION_1_2_1:
334 LOG.error(OTN_FUNTIONS_ARE_NOT_SUPPORTED_BY_OPENROADM_MODELS_1_2_1_MSG);
336 case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
337 LOG.warn("Use Ethernet interface creation for 2.2.1, instead this method of Ether 100G");
338 return openRoadmInterface221.createOpenRoadmEthInterface(nodeId, logicalConnPoint);
339 case StringConstants.OPENROADM_DEVICE_VERSION_7_1:
340 return openRoadmOtnInterface710.createOpenRoadmEth100GInterface(nodeId, logicalConnPoint);
347 public String createOpenRoadmOdu0Interface(String nodeId, String logicalConnPoint, String servicename,
348 String payLoad, boolean isNetworkPort, int tribPortNumber, int tribSlot)
349 throws OpenRoadmInterfaceException {
350 switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
351 case StringConstants.OPENROADM_DEVICE_VERSION_1_2_1:
352 LOG.error(OTN_FUNTIONS_ARE_NOT_SUPPORTED_BY_OPENROADM_MODELS_1_2_1_MSG);
354 case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
355 return openRoadmOtnInterface221.createOpenRoadmOdu0Interface(
356 nodeId, logicalConnPoint, servicename, payLoad, isNetworkPort, tribPortNumber, tribSlot);
362 public String createOpenRoadmOdu2Interface(String nodeId, String logicalConnPoint, String servicename,
363 String payLoad, boolean isNetworkPort, int tribPortNumber, int tribSlotIndex)
364 throws OpenRoadmInterfaceException {
365 switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
366 case StringConstants.OPENROADM_DEVICE_VERSION_1_2_1:
367 LOG.error(OTN_FUNTIONS_ARE_NOT_SUPPORTED_BY_OPENROADM_MODELS_1_2_1_MSG);
369 case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
370 return openRoadmOtnInterface221.createOpenRoadmOdu2Interface(
371 nodeId, logicalConnPoint, servicename, payLoad, isNetworkPort, tribPortNumber, tribSlotIndex);
377 public String createOpenRoadmOdu2eInterface(String nodeId, String logicalConnPoint, String servicename,
378 String payLoad, boolean isNetworkPort, int tribPortNumber, int tribSlotIndex)
379 throws OpenRoadmInterfaceException {
380 switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
381 case StringConstants.OPENROADM_DEVICE_VERSION_1_2_1:
382 LOG.error(OTN_FUNTIONS_ARE_NOT_SUPPORTED_BY_OPENROADM_MODELS_1_2_1_MSG);
384 case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
385 return openRoadmOtnInterface221.createOpenRoadmOdu2eInterface(
386 nodeId, logicalConnPoint, servicename, payLoad, isNetworkPort, tribPortNumber, tribSlotIndex);
393 public String createOpenRoadmOtnOdu4LoInterface(String nodeId, String logicalConnPoint,
394 String serviceName, String payLoad, boolean isNetworkPort,
395 OpucnTribSlotDef minTribSlotNumber, OpucnTribSlotDef maxTribSlotNumber)
396 throws OpenRoadmInterfaceException {
398 switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
399 case StringConstants.OPENROADM_DEVICE_VERSION_1_2_1:
400 LOG.error(OTN_FUNTIONS_ARE_NOT_SUPPORTED_BY_OPENROADM_MODELS_1_2_1_MSG);
402 case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
403 LOG.error(OTN_FUNTIONS_ARE_NOT_SUPPORTED_BY_OPENROADM_MODELS_2_2_1_MSG);
405 case StringConstants.OPENROADM_DEVICE_VERSION_7_1:
406 return openRoadmOtnInterface710.createOpenRoadmOdu4Interface(nodeId, logicalConnPoint, serviceName,
407 payLoad, isNetworkPort, minTribSlotNumber, maxTribSlotNumber);
413 public String createOpenRoadmOtnOdu4Interface(String nodeId, String logicalConnPoint, String supportingOtuInterface)
414 throws OpenRoadmInterfaceException {
415 switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
416 case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
417 return openRoadmInterface221
418 .createOpenRoadmOtnOdu4Interface(nodeId, logicalConnPoint, supportingOtuInterface);
424 public String createOpenRoadmOtnOdu4Interface(String anodeId, String alogicalConnPoint,
425 String asupportingOtuInterface, String znodeId, String zlogicalConnPoint)
426 throws OpenRoadmInterfaceException {
427 switch (mappingUtils.getOpenRoadmVersion(anodeId)) {
428 case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
429 return openRoadmInterface221
430 .createOpenRoadmOtnOdu4Interface(anodeId, alogicalConnPoint, asupportingOtuInterface,
431 znodeId, zlogicalConnPoint);
437 public String createOpenRoadmOtnOduc4Interface(String nodeId, String logicalConnPoint,
438 String supportingOtuInterface)
439 throws OpenRoadmInterfaceException {
440 switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
441 case StringConstants.OPENROADM_DEVICE_VERSION_7_1:
442 return openRoadmInterface710
443 .createOpenRoadmOtnOducnInterface(nodeId, logicalConnPoint, supportingOtuInterface);
449 public String createOpenRoadmOtnOduc4Interface(String anodeId, String alogicalConnPoint,
450 String asupportingOtuInterface, String znodeId, String zlogicalConnPoint)
451 throws OpenRoadmInterfaceException {
452 switch (mappingUtils.getOpenRoadmVersion(anodeId)) {
453 case StringConstants.OPENROADM_DEVICE_VERSION_7_1:
454 return openRoadmInterface710
455 .createOpenRoadmOtnOducnInterface(anodeId, alogicalConnPoint, asupportingOtuInterface,
456 znodeId, zlogicalConnPoint);