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.rev210310.network.nodes.Mapping;
19 import org.slf4j.Logger;
20 import org.slf4j.LoggerFactory;
22 public class OpenRoadmInterfaceFactory {
24 private static final String OTN_FUNTIONS_ARE_NOT_SUPPORTED_BY_OPENROADM_MODELS_1_2_1_MSG =
25 "OTN funtions are not supported by Openroadm models 1.2.1";
26 private static final Logger LOG = LoggerFactory.getLogger(OpenRoadmInterfaceFactory.class);
27 private final MappingUtils mappingUtils;
28 private final OpenRoadmInterface121 openRoadmInterface121;
29 private final OpenRoadmInterface221 openRoadmInterface221;
30 private final OpenRoadmInterface710 openRoadmInterface710;
31 private final OpenRoadmOtnInterface221 openRoadmOtnInterface;
33 public OpenRoadmInterfaceFactory(MappingUtils mappingUtils, OpenRoadmInterface121 openRoadmInterface121,
34 OpenRoadmInterface221 openRoadmInterface221, OpenRoadmInterface710 openRoadmInterface710,
35 OpenRoadmOtnInterface221 openRoadmOTNInterface) {
36 this.mappingUtils = mappingUtils;
37 this.openRoadmInterface121 = openRoadmInterface121;
38 this.openRoadmInterface221 = openRoadmInterface221;
39 this.openRoadmInterface710 = openRoadmInterface710;
40 this.openRoadmOtnInterface = openRoadmOTNInterface;
43 public String createOpenRoadmEthInterface(String nodeId, String logicalConnPoint)
44 throws OpenRoadmInterfaceException {
46 switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
47 case StringConstants.OPENROADM_DEVICE_VERSION_1_2_1:
48 return openRoadmInterface121.createOpenRoadmEthInterface(nodeId, logicalConnPoint);
49 case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
50 return openRoadmInterface221.createOpenRoadmEthInterface(nodeId, logicalConnPoint);
51 case StringConstants.OPENROADM_DEVICE_VERSION_7_1_0:
52 return openRoadmInterface710.createOpenRoadmEthInterface(nodeId, logicalConnPoint);
58 public List<String> createOpenRoadmOchInterfaces(String nodeId, String logicalConnPoint,
59 SpectrumInformation spectrumInformation)
60 throws OpenRoadmInterfaceException {
61 switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
62 case StringConstants.OPENROADM_DEVICE_VERSION_1_2_1:
63 return openRoadmInterface121.createOpenRoadmOchInterfaces(nodeId, logicalConnPoint,
65 case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
66 return openRoadmInterface221.createFlexOCH(nodeId, logicalConnPoint, spectrumInformation);
74 * This methods creates an OCH interface on the given termination point on Roadm.
76 * @param nodeId node ID
77 * @param logicalConnPoint logical connection point
78 * @param spectrumInformation spectrum information.
79 * @return Name of the interface if successful, otherwise return null.
80 * @throws OpenRoadmInterfaceException OpenRoadm interface exception
82 public String createOpenRoadmOchInterface(String nodeId, String logicalConnPoint,
83 SpectrumInformation spectrumInformation) throws OpenRoadmInterfaceException {
84 switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
85 case StringConstants.OPENROADM_DEVICE_VERSION_1_2_1:
86 return openRoadmInterface121.createOpenRoadmOchInterface(nodeId, logicalConnPoint,
88 case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
89 return openRoadmInterface221.createOpenRoadmOchInterface(nodeId, logicalConnPoint,
91 case StringConstants.OPENROADM_DEVICE_VERSION_7_1_0:
92 // In the case of 710 device, we logically combine the OTSi and OTSiGroup interface and represent
94 String interfaceOtsiName = openRoadmInterface710.createOpenRoadmOtsiInterface(nodeId, logicalConnPoint,
96 return openRoadmInterface710.createOpenRoadmOtsiGroupInterface(nodeId, logicalConnPoint,
104 * This methods creates an ODU interface on the given termination point.
106 * @param nodeId node ID
107 * @param logicalConnPoint logical connection point
108 * @param supportingOtuInterface supporting OTU interface
109 * @return Name of the interface if successful, otherwise return null.
110 * @throws OpenRoadmInterfaceException OpenRoadm interface exception
113 public String createOpenRoadmOdu4Interface(String nodeId, String logicalConnPoint, String supportingOtuInterface)
114 throws OpenRoadmInterfaceException {
115 switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
116 case StringConstants.OPENROADM_DEVICE_VERSION_1_2_1:
117 return openRoadmInterface121.createOpenRoadmOdu4Interface(nodeId, logicalConnPoint,
118 supportingOtuInterface);
119 case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
120 return openRoadmInterface221.createOpenRoadmOdu4Interface(nodeId, logicalConnPoint,
121 supportingOtuInterface);
122 case StringConstants.OPENROADM_DEVICE_VERSION_7_1_0:
123 // Here ODUCn and ODUflex are combined
124 String interfaceNameOduc4 = openRoadmInterface710.createOpenRoadmOducnInterface(nodeId,
125 logicalConnPoint, supportingOtuInterface);
126 return openRoadmInterface710.createOpenRoadmOduflexInterface(nodeId, logicalConnPoint,
134 * This methods creates an ODU interface on the given termination point.
136 * @param anodeId node ID for A side
137 * @param alogicalConnPoint logical connection point for A side
138 * @param asupportingOtuInterface supporting OTU interface
139 * @param znodeId node ID for Z side
140 * @param zlogicalConnPoint logical connection point for Z side
141 * @return Name of the interface if successful, otherwise return null.
142 * @throws OpenRoadmInterfaceException OpenRoadm interface exception
145 public String createOpenRoadmOdu4Interface(String anodeId, String alogicalConnPoint, String asupportingOtuInterface,
146 String znodeId, String zlogicalConnPoint)
147 throws OpenRoadmInterfaceException {
148 switch (mappingUtils.getOpenRoadmVersion(anodeId)) {
149 case StringConstants.OPENROADM_DEVICE_VERSION_1_2_1:
150 return openRoadmInterface121.createOpenRoadmOdu4Interface(anodeId, alogicalConnPoint,
151 asupportingOtuInterface);
152 case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
153 return openRoadmInterface221.createOpenRoadmOdu4Interface(anodeId, alogicalConnPoint,
154 asupportingOtuInterface, znodeId, zlogicalConnPoint);
155 case StringConstants.OPENROADM_DEVICE_VERSION_7_1_0:
156 // Here ODUCn and ODUflex are combined
157 String interfaceNameOduc4 = openRoadmInterface710.createOpenRoadmOducnInterface(anodeId,
158 alogicalConnPoint, asupportingOtuInterface, znodeId, zlogicalConnPoint);
159 return openRoadmInterface710.createOpenRoadmOduflexInterface(anodeId, alogicalConnPoint,
160 interfaceNameOduc4, znodeId, zlogicalConnPoint);
167 * This methods creates an OTU interface on the given termination point.
169 * @param nodeId node ID
170 * @param logicalConnPoint logical connection point
171 * @param supportOchInterface supporting OCH interface
172 * @return Name of the interface if successful, otherwise return null.
173 * @throws OpenRoadmInterfaceException OpenRoadm interface exception
176 public String createOpenRoadmOtu4Interface(String nodeId, String logicalConnPoint, String supportOchInterface)
177 throws OpenRoadmInterfaceException {
178 switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
179 case StringConstants.OPENROADM_DEVICE_VERSION_1_2_1:
180 return openRoadmInterface121
181 .createOpenRoadmOtu4Interface(nodeId, logicalConnPoint, supportOchInterface);
182 case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
183 return openRoadmInterface221
184 .createOpenRoadmOtu4Interface(nodeId, logicalConnPoint, supportOchInterface);
185 case StringConstants.OPENROADM_DEVICE_VERSION_7_1_0:
186 return openRoadmInterface710.createOpenRoadmOtucnInterface(nodeId, logicalConnPoint,
187 supportOchInterface);
194 * This methods creates an OTU interface on the given termination point.
196 * @param anodeId node ID for A side
197 * @param alogicalConnPoint logical connection point for A side
198 * @param asupportOchInterface supporting OCH interface
199 * @param znodeId node ID for the Z side
200 * @param zlogicalConnPoint logical connection point for Z side
201 * @return Name of the interface if successful, otherwise return null.
203 * @throws OpenRoadmInterfaceException OpenRoadm interface exception
206 public String createOpenRoadmOtu4Interface(String anodeId, String alogicalConnPoint, String asupportOchInterface,
207 String znodeId, String zlogicalConnPoint)
208 throws OpenRoadmInterfaceException {
209 switch (mappingUtils.getOpenRoadmVersion(anodeId)) {
210 case StringConstants.OPENROADM_DEVICE_VERSION_1_2_1:
211 return openRoadmInterface121.createOpenRoadmOtu4Interface(anodeId,
212 alogicalConnPoint, asupportOchInterface);
213 case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
214 return openRoadmInterface221.createOpenRoadmOtu4Interface(anodeId, alogicalConnPoint,
215 asupportOchInterface, znodeId, zlogicalConnPoint);
216 case StringConstants.OPENROADM_DEVICE_VERSION_7_1_0:
217 return openRoadmInterface710.createOpenRoadmOtucnInterface(anodeId, alogicalConnPoint,
218 asupportOchInterface, znodeId, zlogicalConnPoint);
224 public String createOpenRoadmOchInterfaceName(String logicalConnectionPoint, String spectralSlotNumber) {
225 return String.join(GridConstant.NAME_PARAMETERS_SEPARATOR,logicalConnectionPoint, spectralSlotNumber);
228 public String createOpenRoadmOmsInterface(String nodeId, Mapping mapping) throws OpenRoadmInterfaceException {
229 switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
230 case StringConstants.OPENROADM_DEVICE_VERSION_1_2_1:
231 return openRoadmInterface121.createOpenRoadmOmsInterface(nodeId, mapping);
232 case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
233 return openRoadmInterface221.createOpenRoadmOmsInterface(nodeId, mapping);
239 public String createOpenRoadmOtsInterface(String nodeId, Mapping mapping) throws OpenRoadmInterfaceException {
240 switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
241 case StringConstants.OPENROADM_DEVICE_VERSION_1_2_1:
242 return openRoadmInterface121.createOpenRoadmOtsInterface(nodeId, mapping);
243 case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
244 return openRoadmInterface221.createOpenRoadmOtsInterface(nodeId, mapping);
250 public boolean isUsedByXc(String nodeId, String interfaceName, String xc,
251 DeviceTransactionManager deviceTransactionManager) {
252 switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
253 case StringConstants.OPENROADM_DEVICE_VERSION_1_2_1:
254 return openRoadmInterface121.isUsedByXc(nodeId, interfaceName, xc, deviceTransactionManager);
255 case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
256 return openRoadmInterface221.isUsedByXc(nodeId, interfaceName, xc, deviceTransactionManager);
262 public boolean isUsedByOtnXc(String nodeId, String interfaceName, String xc,
263 DeviceTransactionManager deviceTransactionManager) {
264 switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
265 case StringConstants.OPENROADM_DEVICE_VERSION_1_2_1:
266 LOG.error(OTN_FUNTIONS_ARE_NOT_SUPPORTED_BY_OPENROADM_MODELS_1_2_1_MSG);
268 case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
269 return openRoadmInterface221.isUsedByOtnXc(nodeId, interfaceName, xc, deviceTransactionManager);
275 public String createOpenRoadmEth1GInterface(String nodeId,
276 String logicalConnPoint) throws OpenRoadmInterfaceException {
277 switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
278 case StringConstants.OPENROADM_DEVICE_VERSION_1_2_1:
279 LOG.error(OTN_FUNTIONS_ARE_NOT_SUPPORTED_BY_OPENROADM_MODELS_1_2_1_MSG);
281 case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
282 return openRoadmOtnInterface.createOpenRoadmEth1GInterface(nodeId, logicalConnPoint);
288 public String createOpenRoadmEth10GInterface(String nodeId,
289 String logicalConnPoint) throws OpenRoadmInterfaceException {
290 switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
291 case StringConstants.OPENROADM_DEVICE_VERSION_1_2_1:
292 LOG.error(OTN_FUNTIONS_ARE_NOT_SUPPORTED_BY_OPENROADM_MODELS_1_2_1_MSG);
294 case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
295 return openRoadmOtnInterface.createOpenRoadmEth10GInterface(nodeId, logicalConnPoint);
302 public String createOpenRoadmOdu0Interface(String nodeId, String logicalConnPoint, String servicename,
303 String payLoad, boolean isNetworkPort, int tribPortNumber, int tribSlot)
304 throws OpenRoadmInterfaceException {
305 switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
306 case StringConstants.OPENROADM_DEVICE_VERSION_1_2_1:
307 LOG.error(OTN_FUNTIONS_ARE_NOT_SUPPORTED_BY_OPENROADM_MODELS_1_2_1_MSG);
309 case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
310 return openRoadmOtnInterface.createOpenRoadmOdu0Interface(
311 nodeId, logicalConnPoint, servicename, payLoad, isNetworkPort, tribPortNumber, tribSlot);
317 public String createOpenRoadmOdu2Interface(String nodeId, String logicalConnPoint, String servicename,
318 String payLoad, boolean isNetworkPort, int tribPortNumber, int tribSlotIndex)
319 throws OpenRoadmInterfaceException {
320 switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
321 case StringConstants.OPENROADM_DEVICE_VERSION_1_2_1:
322 LOG.error(OTN_FUNTIONS_ARE_NOT_SUPPORTED_BY_OPENROADM_MODELS_1_2_1_MSG);
324 case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
325 return openRoadmOtnInterface.createOpenRoadmOdu2Interface(
326 nodeId, logicalConnPoint, servicename, payLoad, isNetworkPort, tribPortNumber, tribSlotIndex);
332 public String createOpenRoadmOdu2eInterface(String nodeId, String logicalConnPoint, String servicename,
333 String payLoad, boolean isNetworkPort, int tribPortNumber, int tribSlotIndex)
334 throws OpenRoadmInterfaceException {
335 switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
336 case StringConstants.OPENROADM_DEVICE_VERSION_1_2_1:
337 LOG.error(OTN_FUNTIONS_ARE_NOT_SUPPORTED_BY_OPENROADM_MODELS_1_2_1_MSG);
339 case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
340 return openRoadmOtnInterface.createOpenRoadmOdu2eInterface(
341 nodeId, logicalConnPoint, servicename, payLoad, isNetworkPort, tribPortNumber, tribSlotIndex);
348 public String createOpenRoadmOtnOdu4Interface(String nodeId, String logicalConnPoint, String supportingOtuInterface)
349 throws OpenRoadmInterfaceException {
350 switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
351 case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
352 return openRoadmInterface221
353 .createOpenRoadmOtnOdu4Interface(nodeId, logicalConnPoint, supportingOtuInterface);
359 public String createOpenRoadmOtnOdu4Interface(String anodeId, String alogicalConnPoint,
360 String asupportingOtuInterface, String znodeId, String zlogicalConnPoint)
361 throws OpenRoadmInterfaceException {
362 switch (mappingUtils.getOpenRoadmVersion(anodeId)) {
363 case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
364 return openRoadmInterface221
365 .createOpenRoadmOtnOdu4Interface(anodeId, alogicalConnPoint, asupportingOtuInterface,
366 znodeId, zlogicalConnPoint);