Update portmapping YANG model
[transportpce.git] / renderer / src / main / java / org / opendaylight / transportpce / renderer / openroadminterface / OpenRoadmInterfaceFactory.java
1 /*
2  * Copyright © 2017 AT&T and others.  All rights reserved.
3  *
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
7  */
8
9 package org.opendaylight.transportpce.renderer.openroadminterface;
10
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.rev210315.mapping.Mapping;
19 import org.slf4j.Logger;
20 import org.slf4j.LoggerFactory;
21
22 public class OpenRoadmInterfaceFactory {
23
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;
32
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;
41     }
42
43     public String createOpenRoadmEthInterface(String nodeId, String logicalConnPoint)
44             throws OpenRoadmInterfaceException {
45
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);
53             default:
54                 return null;
55         }
56     }
57
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,
64                         spectrumInformation);
65             case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
66                 return openRoadmInterface221.createFlexOCH(nodeId, logicalConnPoint, spectrumInformation);
67             default:
68                 return null;
69         }
70     }
71
72
73     /**
74      * This methods creates an OCH interface on the given termination point on Roadm.
75      *
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
81      */
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,
87                         spectrumInformation);
88             case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
89                 return openRoadmInterface221.createOpenRoadmOchInterface(nodeId, logicalConnPoint,
90                         spectrumInformation);
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
93                 // as OCh
94                 String interfaceOtsiName = openRoadmInterface710.createOpenRoadmOtsiInterface(nodeId, logicalConnPoint,
95                     spectrumInformation);
96                 return openRoadmInterface710.createOpenRoadmOtsiGroupInterface(nodeId, logicalConnPoint,
97                     interfaceOtsiName);
98             default:
99                 return null;
100         }
101     }
102
103     /**
104      * This methods creates an ODU interface on the given termination point.
105      *
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
111      */
112
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,
127                     interfaceNameOduc4);
128             default:
129                 return null;
130         }
131     }
132
133     /**
134      * This methods creates an ODU interface on the given termination point.
135      *
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
143      */
144
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);
161             default:
162                 return null;
163         }
164     }
165
166     /**
167      * This methods creates an OTU interface on the given termination point.
168      *
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
174      */
175
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);
188             default:
189                 return null;
190         }
191     }
192
193     /**
194      * This methods creates an OTU interface on the given termination point.
195      *
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.
202      *
203      * @throws OpenRoadmInterfaceException OpenRoadm interface exception
204      */
205
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);
219             default:
220                 return null;
221         }
222     }
223
224     public String createOpenRoadmOchInterfaceName(String logicalConnectionPoint, String spectralSlotNumber) {
225         return String.join(GridConstant.NAME_PARAMETERS_SEPARATOR,logicalConnectionPoint, spectralSlotNumber);
226     }
227
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);
234             default:
235                 return null;
236         }
237     }
238
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);
245             default:
246                 return null;
247         }
248     }
249
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);
257             default:
258                 return false;
259         }
260     }
261
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);
267                 return false;
268             case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
269                 return openRoadmInterface221.isUsedByOtnXc(nodeId, interfaceName, xc, deviceTransactionManager);
270             default:
271                 return false;
272         }
273     }
274
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);
280                 return null;
281             case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
282                 return openRoadmOtnInterface.createOpenRoadmEth1GInterface(nodeId, logicalConnPoint);
283             default:
284                 return null;
285         }
286     }
287
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);
293                 return null;
294             case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
295                 return openRoadmOtnInterface.createOpenRoadmEth10GInterface(nodeId, logicalConnPoint);
296             default:
297                 return null;
298         }
299
300     }
301
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);
308                 return null;
309             case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
310                 return openRoadmOtnInterface.createOpenRoadmOdu0Interface(
311                     nodeId, logicalConnPoint, servicename, payLoad, isNetworkPort, tribPortNumber, tribSlot);
312             default:
313                 return null;
314         }
315     }
316
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);
323                 return null;
324             case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
325                 return openRoadmOtnInterface.createOpenRoadmOdu2Interface(
326                     nodeId, logicalConnPoint, servicename, payLoad, isNetworkPort, tribPortNumber, tribSlotIndex);
327             default:
328                 return null;
329         }
330     }
331
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);
338                 return null;
339             case StringConstants.OPENROADM_DEVICE_VERSION_2_2_1:
340                 return openRoadmOtnInterface.createOpenRoadmOdu2eInterface(
341                         nodeId, logicalConnPoint, servicename, payLoad, isNetworkPort, tribPortNumber, tribSlotIndex);
342             default:
343                 return null;
344         }
345
346     }
347
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);
354             default:
355                 return null;
356         }
357     }
358
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);
367             default:
368                 return null;
369         }
370     }
371 }