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