Merge "Update project version for Chlorine release train"
[transportpce.git] / lighty / src / main / java / io / lighty / controllers / tpce / module / TransportPCEImpl.java
1 /*
2  * Copyright (c) 2018 Pantheon Technologies s.r.o. 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 https://www.eclipse.org/legal/epl-v10.html
7  */
8 package io.lighty.controllers.tpce.module;
9
10 import io.lighty.core.controller.api.AbstractLightyModule;
11 import io.lighty.core.controller.api.LightyServices;
12 import java.util.Arrays;
13 import java.util.List;
14 import org.opendaylight.mdsal.binding.api.NotificationService;
15 import org.opendaylight.transportpce.common.crossconnect.CrossConnect;
16 import org.opendaylight.transportpce.common.crossconnect.CrossConnectImpl;
17 import org.opendaylight.transportpce.common.crossconnect.CrossConnectImpl121;
18 import org.opendaylight.transportpce.common.crossconnect.CrossConnectImpl221;
19 import org.opendaylight.transportpce.common.crossconnect.CrossConnectImpl710;
20 import org.opendaylight.transportpce.common.device.DeviceTransactionManagerImpl;
21 import org.opendaylight.transportpce.common.mapping.MappingUtils;
22 import org.opendaylight.transportpce.common.mapping.MappingUtilsImpl;
23 import org.opendaylight.transportpce.common.mapping.PortMapping;
24 import org.opendaylight.transportpce.common.mapping.PortMappingImpl;
25 import org.opendaylight.transportpce.common.mapping.PortMappingVersion121;
26 import org.opendaylight.transportpce.common.mapping.PortMappingVersion221;
27 import org.opendaylight.transportpce.common.mapping.PortMappingVersion710;
28 import org.opendaylight.transportpce.common.network.NetworkTransactionImpl;
29 import org.opendaylight.transportpce.common.network.NetworkTransactionService;
30 import org.opendaylight.transportpce.common.network.RequestProcessor;
31 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaces;
32 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfacesImpl;
33 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfacesImpl121;
34 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfacesImpl221;
35 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfacesImpl710;
36 import org.opendaylight.transportpce.nbinotifications.impl.NbiNotificationsProvider;
37 import org.opendaylight.transportpce.networkmodel.NetConfTopologyListener;
38 import org.opendaylight.transportpce.networkmodel.NetworkModelProvider;
39 import org.opendaylight.transportpce.networkmodel.NetworkUtilsImpl;
40 import org.opendaylight.transportpce.networkmodel.R2RLinkDiscovery;
41 import org.opendaylight.transportpce.networkmodel.listeners.PortMappingListener;
42 import org.opendaylight.transportpce.networkmodel.service.FrequenciesService;
43 import org.opendaylight.transportpce.networkmodel.service.FrequenciesServiceImpl;
44 import org.opendaylight.transportpce.networkmodel.service.NetworkModelService;
45 import org.opendaylight.transportpce.networkmodel.service.NetworkModelServiceImpl;
46 import org.opendaylight.transportpce.olm.OlmPowerServiceRpcImpl;
47 import org.opendaylight.transportpce.olm.OlmProvider;
48 import org.opendaylight.transportpce.olm.power.PowerMgmt;
49 import org.opendaylight.transportpce.olm.power.PowerMgmtImpl;
50 import org.opendaylight.transportpce.olm.service.OlmPowerService;
51 import org.opendaylight.transportpce.olm.service.OlmPowerServiceImpl;
52 import org.opendaylight.transportpce.pce.gnpy.consumer.GnpyConsumer;
53 import org.opendaylight.transportpce.pce.gnpy.consumer.GnpyConsumerImpl;
54 import org.opendaylight.transportpce.pce.impl.PceProvider;
55 import org.opendaylight.transportpce.pce.service.PathComputationService;
56 import org.opendaylight.transportpce.pce.service.PathComputationServiceImpl;
57 import org.opendaylight.transportpce.renderer.RendererProvider;
58 import org.opendaylight.transportpce.renderer.openroadminterface.OpenRoadmInterface121;
59 import org.opendaylight.transportpce.renderer.openroadminterface.OpenRoadmInterface221;
60 import org.opendaylight.transportpce.renderer.openroadminterface.OpenRoadmInterface710;
61 import org.opendaylight.transportpce.renderer.openroadminterface.OpenRoadmInterfaceFactory;
62 // Adding OTN interface
63 import org.opendaylight.transportpce.renderer.openroadminterface.OpenRoadmOtnInterface221;
64 import org.opendaylight.transportpce.renderer.openroadminterface.OpenRoadmOtnInterface710;
65 import org.opendaylight.transportpce.renderer.provisiondevice.DeviceRendererService;
66 import org.opendaylight.transportpce.renderer.provisiondevice.DeviceRendererServiceImpl;
67 import org.opendaylight.transportpce.renderer.provisiondevice.OtnDeviceRendererService;
68 // Add OTN
69 import org.opendaylight.transportpce.renderer.provisiondevice.OtnDeviceRendererServiceImpl;
70 import org.opendaylight.transportpce.renderer.provisiondevice.RendererServiceOperations;
71 import org.opendaylight.transportpce.renderer.provisiondevice.RendererServiceOperationsImpl;
72 import org.opendaylight.transportpce.renderer.rpcs.DeviceRendererRPCImpl;
73 import org.opendaylight.transportpce.servicehandler.impl.ServicehandlerImpl;
74 import org.opendaylight.transportpce.servicehandler.impl.ServicehandlerProvider;
75 import org.opendaylight.transportpce.servicehandler.listeners.NetworkModelListenerImpl;
76 import org.opendaylight.transportpce.servicehandler.listeners.PceListenerImpl;
77 import org.opendaylight.transportpce.servicehandler.listeners.RendererListenerImpl;
78 import org.opendaylight.transportpce.servicehandler.listeners.ServiceListener;
79 import org.opendaylight.transportpce.servicehandler.service.ServiceDataStoreOperations;
80 import org.opendaylight.transportpce.servicehandler.service.ServiceDataStoreOperationsImpl;
81 import org.opendaylight.transportpce.tapi.R2RTapiLinkDiscovery;
82 import org.opendaylight.transportpce.tapi.impl.TapiProvider;
83 import org.opendaylight.transportpce.tapi.listeners.TapiNetworkModelListenerImpl;
84 import org.opendaylight.transportpce.tapi.listeners.TapiPceListenerImpl;
85 import org.opendaylight.transportpce.tapi.listeners.TapiRendererListenerImpl;
86 import org.opendaylight.transportpce.tapi.listeners.TapiServiceHandlerListenerImpl;
87 import org.opendaylight.transportpce.tapi.topology.TapiNetconfTopologyListener;
88 import org.opendaylight.transportpce.tapi.topology.TapiNetworkModelService;
89 import org.opendaylight.transportpce.tapi.topology.TapiNetworkModelServiceImpl;
90 import org.opendaylight.transportpce.tapi.topology.TapiNetworkUtilsImpl;
91 import org.opendaylight.transportpce.tapi.topology.TapiOrLinkListener;
92 import org.opendaylight.transportpce.tapi.topology.TapiPortMappingListener;
93 import org.opendaylight.transportpce.tapi.utils.TapiLink;
94 import org.opendaylight.transportpce.tapi.utils.TapiListener;
95 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev170818.TransportpceNetworkutilsService;
96 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.olm.rev210618.TransportpceOlmService;
97 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.tapinetworkutils.rev210408.TransportpceTapinetworkutilsService;
98 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.OrgOpenroadmServiceService;
99 import org.slf4j.Logger;
100 import org.slf4j.LoggerFactory;
101
102
103 public class TransportPCEImpl extends AbstractLightyModule implements TransportPCE {
104     private static final Logger LOG = LoggerFactory.getLogger(TransportPCEImpl.class);
105     private static final long MAX_DURATION_TO_SUBMIT_TRANSACTION = 1500;
106     // transaction beans
107     // cannot use interface for DeviceTransactionManagerImpl
108     // because implementation has additional public methods ...
109     private final DeviceTransactionManagerImpl deviceTransactionManager;
110     private final NetworkTransactionService networkTransaction;
111     // pce beans
112     private final PceProvider pceProvider;
113     // network model beans
114     private final NetworkModelProvider networkModelProvider;
115     // OLM beans
116     private final OlmProvider olmProvider;
117     // renderer beans
118     private final RendererProvider rendererProvider;
119     // service-handler beans
120     private final ServicehandlerProvider servicehandlerProvider;
121     // T-api
122     private TapiProvider tapiProvider;
123     // nbi-notifications beans
124     private NbiNotificationsProvider nbiNotificationsProvider;
125     /**
126      * List of publisher topics.
127      */
128     private final List<String> publisherServiceList = Arrays.asList("PceListener", "ServiceHandlerOperations",
129             "ServiceHandler", "RendererListener");
130     private final List<String> publisherAlarmList = Arrays.asList("ServiceListener");
131
132     public TransportPCEImpl(LightyServices lightyServices, boolean activateNbiNotification, boolean activateTapi,
133                             String olmtimer1, String olmtimer2) {
134         LOG.info("Initializing transaction providers ...");
135         deviceTransactionManager = new DeviceTransactionManagerImpl(lightyServices.getBindingMountPointService(),
136                 MAX_DURATION_TO_SUBMIT_TRANSACTION);
137         RequestProcessor requestProcessor = new RequestProcessor(lightyServices.getBindingDataBroker());
138         networkTransaction = new NetworkTransactionImpl(requestProcessor);
139
140         LOG.info("Creating network-model beans ...");
141         R2RLinkDiscovery linkDiscoveryImpl = new R2RLinkDiscovery(lightyServices.getBindingDataBroker(),
142                 deviceTransactionManager, networkTransaction);
143         TransportpceNetworkutilsService networkutilsServiceImpl = new NetworkUtilsImpl(
144                 lightyServices.getBindingDataBroker());
145         PortMapping portMapping = initPortMapping(lightyServices);
146         NetworkModelService networkModelService = new NetworkModelServiceImpl(networkTransaction, linkDiscoveryImpl,
147                 portMapping, lightyServices.getBindingNotificationPublishService());
148         FrequenciesService networkModelWavelengthService =
149                 new FrequenciesServiceImpl(lightyServices.getBindingDataBroker());
150         NetConfTopologyListener netConfTopologyListener = new NetConfTopologyListener(networkModelService,
151                 lightyServices.getBindingDataBroker(), deviceTransactionManager, portMapping);
152         PortMappingListener portMappingListener = new PortMappingListener(networkModelService);
153         networkModelProvider = new NetworkModelProvider(networkTransaction, lightyServices.getBindingDataBroker(),
154                 lightyServices.getRpcProviderService(), networkutilsServiceImpl, netConfTopologyListener,
155                 lightyServices.getNotificationService(), networkModelWavelengthService, portMappingListener);
156
157         LOG.info("Creating PCE beans ...");
158         // TODO: pass those parameters through command line
159         GnpyConsumer gnpyConsumer = new GnpyConsumerImpl("http://127.0.0.1:8008",
160                 "gnpy", "gnpy", lightyServices.getAdapterContext().currentSerializer());
161         PathComputationService pathComputationService = new PathComputationServiceImpl(
162                 networkTransaction,
163                 lightyServices.getBindingNotificationPublishService(),
164                 gnpyConsumer,
165                 portMapping
166                 );
167         pceProvider = new PceProvider(lightyServices.getRpcProviderService(), pathComputationService);
168
169         LOG.info("Creating OLM beans ...");
170         MappingUtils mappingUtils = new MappingUtilsImpl(lightyServices.getBindingDataBroker());
171         CrossConnect crossConnect = initCrossConnect(mappingUtils);
172         OpenRoadmInterfaces openRoadmInterfaces = initOpenRoadmInterfaces(mappingUtils, portMapping);
173         PowerMgmt powerMgmt = new PowerMgmtImpl(lightyServices.getBindingDataBroker(), openRoadmInterfaces,
174                 crossConnect, deviceTransactionManager, olmtimer1, olmtimer2);
175         OlmPowerService olmPowerService = new OlmPowerServiceImpl(lightyServices.getBindingDataBroker(), powerMgmt,
176                 deviceTransactionManager, portMapping, mappingUtils, openRoadmInterfaces);
177         olmProvider = new OlmProvider(lightyServices.getRpcProviderService(), olmPowerService);
178         TransportpceOlmService olmPowerServiceRpc = new OlmPowerServiceRpcImpl(olmPowerService);
179
180         LOG.info("Creating renderer beans ...");
181         OpenRoadmInterfaceFactory openRoadmInterfaceFactory = initOpenRoadmFactory(mappingUtils, openRoadmInterfaces,
182                 portMapping);
183         DeviceRendererService deviceRendererService = new DeviceRendererServiceImpl(
184                 lightyServices.getBindingDataBroker(), deviceTransactionManager, openRoadmInterfaceFactory,
185                 openRoadmInterfaces, crossConnect, portMapping);
186         OtnDeviceRendererService otnDeviceRendererService = new OtnDeviceRendererServiceImpl(openRoadmInterfaceFactory,
187                 crossConnect, openRoadmInterfaces, deviceTransactionManager, networkModelService);
188         rendererProvider = initRenderer(lightyServices, olmPowerServiceRpc, deviceRendererService,
189                 otnDeviceRendererService, portMapping);
190
191         LOG.info("Creating service-handler beans ...");
192         RendererServiceOperations rendererServiceOperations = new RendererServiceOperationsImpl(deviceRendererService,
193                 otnDeviceRendererService, olmPowerServiceRpc, lightyServices.getBindingDataBroker(),
194                 lightyServices.getBindingNotificationPublishService(), portMapping);
195         ServiceDataStoreOperations serviceDataStoreOperations = new ServiceDataStoreOperationsImpl(
196                 lightyServices.getBindingDataBroker());
197         RendererListenerImpl rendererListenerImpl = new RendererListenerImpl(pathComputationService,
198             lightyServices.getBindingNotificationPublishService(), networkModelService);
199         PceListenerImpl pceListenerImpl = new PceListenerImpl(rendererServiceOperations, pathComputationService,
200             lightyServices.getBindingNotificationPublishService(), serviceDataStoreOperations);
201         NetworkModelListenerImpl networkModelListenerImpl = new NetworkModelListenerImpl(
202                 lightyServices.getBindingNotificationPublishService(), serviceDataStoreOperations);
203         ServicehandlerImpl servicehandler = new ServicehandlerImpl(lightyServices.getBindingDataBroker(),
204             pathComputationService, rendererServiceOperations, lightyServices.getBindingNotificationPublishService(),
205             pceListenerImpl, rendererListenerImpl, networkModelListenerImpl, serviceDataStoreOperations);
206         ServiceListener serviceListener = new ServiceListener(servicehandler, serviceDataStoreOperations,
207                 lightyServices.getBindingNotificationPublishService());
208         servicehandlerProvider = new ServicehandlerProvider(lightyServices.getBindingDataBroker(),
209                 lightyServices.getRpcProviderService(), lightyServices.getNotificationService(),
210                 serviceDataStoreOperations, pceListenerImpl, serviceListener, rendererListenerImpl,
211                 networkModelListenerImpl, servicehandler);
212         if (activateTapi) {
213             LOG.info("Creating tapi beans ...");
214             TapiLink tapiLink = new TapiLink(networkTransaction);
215             R2RTapiLinkDiscovery tapilinkDiscoveryImpl = new R2RTapiLinkDiscovery(networkTransaction,
216                     deviceTransactionManager, tapiLink);
217             TapiRendererListenerImpl tapiRendererListenerImpl = new TapiRendererListenerImpl(lightyServices
218                     .getBindingDataBroker());
219             TapiPceListenerImpl tapiPceListenerImpl = new TapiPceListenerImpl(lightyServices.getBindingDataBroker());
220             TapiServiceHandlerListenerImpl tapiServiceHandlerListener = new TapiServiceHandlerListenerImpl(
221                     lightyServices.getBindingDataBroker());
222             TransportpceTapinetworkutilsService tapiNetworkutilsServiceImpl = new TapiNetworkUtilsImpl(
223                     networkTransaction, tapiLink);
224             TapiNetworkModelService tapiNetworkModelService = new TapiNetworkModelServiceImpl(
225                     tapilinkDiscoveryImpl, networkTransaction, tapiLink,
226                     lightyServices.getBindingNotificationPublishService());
227             TapiNetconfTopologyListener tapiNetConfTopologyListener =
228                     new TapiNetconfTopologyListener(tapiNetworkModelService);
229             TapiOrLinkListener orLinkListener = new TapiOrLinkListener(tapiLink, networkTransaction);
230             TapiPortMappingListener tapiPortMappingListener =
231                     new TapiPortMappingListener(tapiNetworkModelService);
232             TapiNetworkModelListenerImpl tapiNetworkModelListenerImpl =
233                     new TapiNetworkModelListenerImpl(networkTransaction);
234
235             tapiProvider = initTapi(lightyServices, servicehandler, networkTransaction, serviceDataStoreOperations,
236                     tapiNetConfTopologyListener, tapiPortMappingListener, tapiNetworkutilsServiceImpl,
237                     tapiPceListenerImpl, tapiRendererListenerImpl, tapiServiceHandlerListener,
238                     lightyServices.getNotificationService(), orLinkListener, tapiNetworkModelListenerImpl);
239         }
240         if (activateNbiNotification) {
241             LOG.info("Creating nbi-notifications beans ...");
242             nbiNotificationsProvider = new NbiNotificationsProvider(
243                 publisherServiceList, publisherAlarmList, null, null, lightyServices.getRpcProviderService(),
244                 lightyServices.getNotificationService(), lightyServices.getAdapterContext().currentSerializer());
245         }
246     }
247
248     @Override
249     protected boolean initProcedure() {
250         LOG.info("Initializing PCE provider ...");
251         pceProvider.init();
252         LOG.info("Initializing network-model provider ...");
253         networkModelProvider.init();
254         LOG.info("Initializing OLM provider ...");
255         olmProvider.init();
256         LOG.info("Initializing renderer provider ...");
257         rendererProvider.init();
258         LOG.info("Initializing service-handler provider ...");
259         servicehandlerProvider.init();
260         if (tapiProvider != null) {
261             LOG.info("Initializing tapi provider ...");
262             tapiProvider.init();
263         }
264         if (nbiNotificationsProvider != null) {
265             LOG.info("Initializing nbi-notifications provider ...");
266             nbiNotificationsProvider.init();
267         }
268         LOG.info("Init done.");
269         return true;
270     }
271
272     @Override
273     protected boolean stopProcedure() {
274         if (nbiNotificationsProvider != null) {
275             nbiNotificationsProvider.close();
276             LOG.info("Shutting down nbi-notifications provider ...");
277         }
278         if (tapiProvider != null) {
279             tapiProvider.close();
280             LOG.info("Shutting down service-handler provider ...");
281         }
282         servicehandlerProvider.close();
283         LOG.info("Shutting down renderer provider ...");
284         rendererProvider.close();
285         LOG.info("Shutting down OLM provider ...");
286         olmProvider.close();
287         LOG.info("Shutting down network-model provider ...");
288         networkModelProvider.close();
289         LOG.info("Shutting down PCE provider ...");
290         pceProvider.close();
291         LOG.info("Shutting down transaction providers ...");
292         networkTransaction.close();
293         deviceTransactionManager.preDestroy();
294         LOG.info("Shutdown done.");
295         return true;
296     }
297
298     private TapiProvider initTapi(LightyServices lightyServices, OrgOpenroadmServiceService servicehandler,
299                                   NetworkTransactionService networkTransactionService,
300                                   ServiceDataStoreOperations serviceDataStoreOperations,
301                                   TapiNetconfTopologyListener tapiNetConfTopologyListener,
302                                   TapiPortMappingListener tapiPortMappingListener,
303                                   TransportpceTapinetworkutilsService tapiNetworkutilsServiceImpl,
304                                   TapiPceListenerImpl pceListenerImpl, TapiRendererListenerImpl rendererListenerImpl,
305                                   TapiServiceHandlerListenerImpl serviceHandlerListenerImpl,
306                                   NotificationService notificationService, TapiOrLinkListener orLinkListener,
307                                   TapiNetworkModelListenerImpl tapiNetworkModelListenerImpl) {
308         return new TapiProvider(lightyServices.getBindingDataBroker(), lightyServices.getRpcProviderService(),
309             servicehandler, serviceDataStoreOperations, new TapiListener(), networkTransactionService,
310             tapiNetConfTopologyListener, tapiPortMappingListener, tapiNetworkutilsServiceImpl, pceListenerImpl,
311             rendererListenerImpl, serviceHandlerListenerImpl, notificationService, orLinkListener,
312             tapiNetworkModelListenerImpl);
313     }
314
315     private RendererProvider initRenderer(LightyServices lightyServices, TransportpceOlmService olmPowerServiceRpc,
316             DeviceRendererService deviceRendererService, OtnDeviceRendererService otnDeviceRendererService,
317             PortMapping portMapping) {
318         DeviceRendererRPCImpl deviceRendererRPC = new DeviceRendererRPCImpl(deviceRendererService,
319                 otnDeviceRendererService);
320         RendererServiceOperationsImpl rendererServiceOperations = new RendererServiceOperationsImpl(
321                 deviceRendererService, otnDeviceRendererService, olmPowerServiceRpc,
322                 lightyServices.getBindingDataBroker(), lightyServices.getBindingNotificationPublishService(),
323                 portMapping);
324         return new RendererProvider(lightyServices.getRpcProviderService(), deviceRendererRPC,
325                 rendererServiceOperations);
326     }
327
328     private OpenRoadmInterfaceFactory initOpenRoadmFactory(MappingUtils mappingUtils,
329             OpenRoadmInterfaces openRoadmInterfaces, PortMapping portMapping) {
330         OpenRoadmInterface121 openRoadmInterface121 = new OpenRoadmInterface121(portMapping, openRoadmInterfaces);
331         OpenRoadmInterface221 openRoadmInterface221 = new OpenRoadmInterface221(portMapping, openRoadmInterfaces);
332         OpenRoadmInterface710 openRoadmInterface710 = new OpenRoadmInterface710(portMapping, openRoadmInterfaces);
333         OpenRoadmOtnInterface221 openRoadmOtnInterface221 = new OpenRoadmOtnInterface221(portMapping,
334                 openRoadmInterfaces);
335         OpenRoadmOtnInterface710 openRoadmOtnInterface710 = new OpenRoadmOtnInterface710(portMapping,
336             openRoadmInterfaces);
337         return new OpenRoadmInterfaceFactory(mappingUtils, openRoadmInterface121, openRoadmInterface221,
338             openRoadmInterface710, openRoadmOtnInterface221, openRoadmOtnInterface710);
339     }
340
341     private PortMapping initPortMapping(LightyServices lightyServices) {
342         PortMappingVersion710 portMappingVersion710 = new PortMappingVersion710(lightyServices.getBindingDataBroker(),
343                 deviceTransactionManager);
344         PortMappingVersion221 portMappingVersion221 = new PortMappingVersion221(lightyServices.getBindingDataBroker(),
345                 deviceTransactionManager);
346         PortMappingVersion121 portMappingVersion121 = new PortMappingVersion121(lightyServices.getBindingDataBroker(),
347                 deviceTransactionManager);
348         return new PortMappingImpl(lightyServices.getBindingDataBroker(), portMappingVersion710,
349             portMappingVersion221, portMappingVersion121);
350     }
351
352     private OpenRoadmInterfaces initOpenRoadmInterfaces(MappingUtils mappingUtils, PortMapping portMapping) {
353         OpenRoadmInterfacesImpl121 openRoadmInterfacesImpl121 = new OpenRoadmInterfacesImpl121(
354                 deviceTransactionManager);
355         OpenRoadmInterfacesImpl221 openRoadmInterfacesImpl221 = new OpenRoadmInterfacesImpl221(
356                 deviceTransactionManager, portMapping, portMapping.getPortMappingVersion221());
357         OpenRoadmInterfacesImpl710 openRoadmInterfacesImpl710 = new OpenRoadmInterfacesImpl710(
358                 deviceTransactionManager, portMapping, portMapping.getPortMappingVersion710());
359         return new OpenRoadmInterfacesImpl(deviceTransactionManager, mappingUtils, openRoadmInterfacesImpl121,
360                 openRoadmInterfacesImpl221, openRoadmInterfacesImpl710);
361     }
362
363     private CrossConnect initCrossConnect(MappingUtils mappingUtils) {
364         CrossConnectImpl121 crossConnectImpl121 = new CrossConnectImpl121(deviceTransactionManager);
365         CrossConnectImpl221 crossConnectImpl221 = new CrossConnectImpl221(deviceTransactionManager);
366         CrossConnectImpl710 crossConnectImpl710 = new CrossConnectImpl710(deviceTransactionManager);
367         return new CrossConnectImpl(deviceTransactionManager, mappingUtils, crossConnectImpl121, crossConnectImpl221,
368             crossConnectImpl710);
369     }
370 }