Turn PortMappingImpl into a component
[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.rev220630.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         networkTransaction = new NetworkTransactionImpl(lightyServices.getBindingDataBroker());
138
139         LOG.info("Creating network-model beans ...");
140         R2RLinkDiscovery linkDiscoveryImpl = new R2RLinkDiscovery(lightyServices.getBindingDataBroker(),
141                 deviceTransactionManager, networkTransaction);
142         TransportpceNetworkutilsService networkutilsServiceImpl = new NetworkUtilsImpl(
143                 lightyServices.getBindingDataBroker());
144         PortMapping portMapping = initPortMapping(lightyServices);
145         NetworkModelService networkModelService = new NetworkModelServiceImpl(networkTransaction, linkDiscoveryImpl,
146                 portMapping, lightyServices.getBindingNotificationPublishService());
147         FrequenciesService networkModelWavelengthService =
148                 new FrequenciesServiceImpl(lightyServices.getBindingDataBroker());
149         NetConfTopologyListener netConfTopologyListener = new NetConfTopologyListener(networkModelService,
150                 lightyServices.getBindingDataBroker(), deviceTransactionManager, portMapping);
151         PortMappingListener portMappingListener = new PortMappingListener(networkModelService);
152         networkModelProvider = new NetworkModelProvider(networkTransaction, lightyServices.getBindingDataBroker(),
153                 lightyServices.getRpcProviderService(), networkutilsServiceImpl, netConfTopologyListener,
154                 lightyServices.getNotificationService(), networkModelWavelengthService, portMappingListener);
155
156         LOG.info("Creating PCE beans ...");
157         // TODO: pass those parameters through command line
158         GnpyConsumer gnpyConsumer = new GnpyConsumerImpl("http://127.0.0.1:8008",
159                 "gnpy", "gnpy", lightyServices.getAdapterContext().currentSerializer());
160         PathComputationService pathComputationService = new PathComputationServiceImpl(
161                 networkTransaction,
162                 lightyServices.getBindingNotificationPublishService(),
163                 gnpyConsumer,
164                 portMapping
165                 );
166         pceProvider = new PceProvider(lightyServices.getRpcProviderService(), pathComputationService);
167
168         LOG.info("Creating OLM beans ...");
169         MappingUtils mappingUtils = new MappingUtilsImpl(lightyServices.getBindingDataBroker());
170         CrossConnect crossConnect = initCrossConnect(mappingUtils);
171         OpenRoadmInterfaces openRoadmInterfaces = initOpenRoadmInterfaces(mappingUtils, portMapping);
172         PowerMgmt powerMgmt = new PowerMgmtImpl(lightyServices.getBindingDataBroker(), openRoadmInterfaces,
173                 crossConnect, deviceTransactionManager, portMapping, olmtimer1, olmtimer2);
174         OlmPowerService olmPowerService = new OlmPowerServiceImpl(lightyServices.getBindingDataBroker(), powerMgmt,
175                 deviceTransactionManager, portMapping, mappingUtils, openRoadmInterfaces);
176         TransportpceOlmService olmPowerServiceRpc = new OlmPowerServiceRpcImpl(olmPowerService);
177         olmProvider = new OlmProvider(lightyServices.getRpcProviderService(), olmPowerServiceRpc);
178
179         LOG.info("Creating renderer beans ...");
180         OpenRoadmInterfaceFactory openRoadmInterfaceFactory = initOpenRoadmFactory(mappingUtils, openRoadmInterfaces,
181                 portMapping);
182         DeviceRendererService deviceRendererService = new DeviceRendererServiceImpl(
183                 lightyServices.getBindingDataBroker(), deviceTransactionManager, openRoadmInterfaceFactory,
184                 openRoadmInterfaces, crossConnect, portMapping);
185         OtnDeviceRendererService otnDeviceRendererService = new OtnDeviceRendererServiceImpl(openRoadmInterfaceFactory,
186                 crossConnect, openRoadmInterfaces, deviceTransactionManager, networkModelService);
187         rendererProvider = initRenderer(lightyServices, olmPowerServiceRpc, deviceRendererService,
188                 otnDeviceRendererService, portMapping);
189
190         LOG.info("Creating service-handler beans ...");
191         RendererServiceOperations rendererServiceOperations = new RendererServiceOperationsImpl(deviceRendererService,
192                 otnDeviceRendererService, olmPowerServiceRpc, lightyServices.getBindingDataBroker(),
193                 lightyServices.getBindingNotificationPublishService(), portMapping);
194         ServiceDataStoreOperations serviceDataStoreOperations = new ServiceDataStoreOperationsImpl(
195                 lightyServices.getBindingDataBroker());
196         RendererListenerImpl rendererListenerImpl = new RendererListenerImpl(pathComputationService,
197             lightyServices.getBindingNotificationPublishService(), networkModelService);
198         PceListenerImpl pceListenerImpl = new PceListenerImpl(rendererServiceOperations, pathComputationService,
199             lightyServices.getBindingNotificationPublishService(), serviceDataStoreOperations);
200         NetworkModelListenerImpl networkModelListenerImpl = new NetworkModelListenerImpl(
201                 lightyServices.getBindingNotificationPublishService(), serviceDataStoreOperations);
202         ServicehandlerImpl servicehandler = new ServicehandlerImpl(lightyServices.getBindingDataBroker(),
203             pathComputationService, rendererServiceOperations, lightyServices.getBindingNotificationPublishService(),
204             pceListenerImpl, rendererListenerImpl, networkModelListenerImpl, serviceDataStoreOperations);
205         ServiceListener serviceListener = new ServiceListener(servicehandler, serviceDataStoreOperations,
206                 lightyServices.getBindingNotificationPublishService());
207         servicehandlerProvider = new ServicehandlerProvider(lightyServices.getBindingDataBroker(),
208                 lightyServices.getRpcProviderService(), lightyServices.getNotificationService(),
209                 serviceDataStoreOperations, pceListenerImpl, serviceListener, rendererListenerImpl,
210                 networkModelListenerImpl, servicehandler);
211         if (activateTapi) {
212             LOG.info("Creating tapi beans ...");
213             TapiLink tapiLink = new TapiLink(networkTransaction);
214             R2RTapiLinkDiscovery tapilinkDiscoveryImpl = new R2RTapiLinkDiscovery(networkTransaction,
215                     deviceTransactionManager, tapiLink);
216             TapiRendererListenerImpl tapiRendererListenerImpl = new TapiRendererListenerImpl(lightyServices
217                     .getBindingDataBroker(), lightyServices.getBindingNotificationPublishService());
218             TapiPceListenerImpl tapiPceListenerImpl = new TapiPceListenerImpl(lightyServices.getBindingDataBroker());
219             TapiServiceHandlerListenerImpl tapiServiceHandlerListener = new TapiServiceHandlerListenerImpl(
220                     lightyServices.getBindingDataBroker());
221             TransportpceTapinetworkutilsService tapiNetworkutilsServiceImpl = new TapiNetworkUtilsImpl(
222                     networkTransaction, tapiLink);
223             TapiNetworkModelService tapiNetworkModelService = new TapiNetworkModelServiceImpl(
224                     tapilinkDiscoveryImpl, networkTransaction, tapiLink,
225                     lightyServices.getBindingNotificationPublishService());
226             TapiNetconfTopologyListener tapiNetConfTopologyListener =
227                     new TapiNetconfTopologyListener(tapiNetworkModelService);
228             TapiOrLinkListener orLinkListener = new TapiOrLinkListener(tapiLink, networkTransaction);
229             TapiPortMappingListener tapiPortMappingListener =
230                     new TapiPortMappingListener(tapiNetworkModelService);
231             TapiNetworkModelListenerImpl tapiNetworkModelListenerImpl =
232                     new TapiNetworkModelListenerImpl(networkTransaction,
233                             lightyServices.getBindingNotificationPublishService());
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                     networkTransaction);
246         }
247     }
248
249     @Override
250     protected boolean initProcedure() {
251         LOG.info("Initializing PCE provider ...");
252         pceProvider.init();
253         LOG.info("Initializing network-model provider ...");
254         networkModelProvider.init();
255         LOG.info("Initializing OLM provider ...");
256         olmProvider.init();
257         LOG.info("Initializing renderer provider ...");
258         rendererProvider.init();
259         LOG.info("Initializing service-handler provider ...");
260         servicehandlerProvider.init();
261         if (tapiProvider != null) {
262             LOG.info("Initializing tapi provider ...");
263             tapiProvider.init();
264         }
265         if (nbiNotificationsProvider != null) {
266             LOG.info("Initializing nbi-notifications provider ...");
267             nbiNotificationsProvider.init();
268         }
269         LOG.info("Init done.");
270         return true;
271     }
272
273     @Override
274     protected boolean stopProcedure() {
275         if (nbiNotificationsProvider != null) {
276             nbiNotificationsProvider.close();
277             LOG.info("Shutting down nbi-notifications provider ...");
278         }
279         if (tapiProvider != null) {
280             tapiProvider.close();
281             LOG.info("Shutting down service-handler provider ...");
282         }
283         servicehandlerProvider.close();
284         LOG.info("Shutting down renderer provider ...");
285         rendererProvider.close();
286         LOG.info("Shutting down OLM provider ...");
287         olmProvider.close();
288         LOG.info("Shutting down network-model provider ...");
289         networkModelProvider.close();
290         LOG.info("Shutting down PCE provider ...");
291         pceProvider.close();
292         LOG.info("Shutting down transaction providers ...");
293         networkTransaction.close();
294         deviceTransactionManager.preDestroy();
295         LOG.info("Shutdown done.");
296         return true;
297     }
298
299     private TapiProvider initTapi(LightyServices lightyServices, OrgOpenroadmServiceService servicehandler,
300                                   NetworkTransactionService networkTransactionService,
301                                   ServiceDataStoreOperations serviceDataStoreOperations,
302                                   TapiNetconfTopologyListener tapiNetConfTopologyListener,
303                                   TapiPortMappingListener tapiPortMappingListener,
304                                   TransportpceTapinetworkutilsService tapiNetworkutilsServiceImpl,
305                                   TapiPceListenerImpl pceListenerImpl, TapiRendererListenerImpl rendererListenerImpl,
306                                   TapiServiceHandlerListenerImpl serviceHandlerListenerImpl,
307                                   NotificationService notificationService, TapiOrLinkListener orLinkListener,
308                                   TapiNetworkModelListenerImpl tapiNetworkModelListenerImpl) {
309         return new TapiProvider(lightyServices.getBindingDataBroker(), lightyServices.getRpcProviderService(),
310             servicehandler, serviceDataStoreOperations, new TapiListener(), networkTransactionService,
311             tapiNetConfTopologyListener, tapiPortMappingListener, tapiNetworkutilsServiceImpl, pceListenerImpl,
312             rendererListenerImpl, serviceHandlerListenerImpl, notificationService, orLinkListener,
313             tapiNetworkModelListenerImpl);
314     }
315
316     private RendererProvider initRenderer(LightyServices lightyServices, TransportpceOlmService olmPowerServiceRpc,
317             DeviceRendererService deviceRendererService, OtnDeviceRendererService otnDeviceRendererService,
318             PortMapping portMapping) {
319         DeviceRendererRPCImpl deviceRendererRPC = new DeviceRendererRPCImpl(deviceRendererService,
320                 otnDeviceRendererService);
321         RendererServiceOperationsImpl rendererServiceOperations = new RendererServiceOperationsImpl(
322                 deviceRendererService, otnDeviceRendererService, olmPowerServiceRpc,
323                 lightyServices.getBindingDataBroker(), lightyServices.getBindingNotificationPublishService(),
324                 portMapping);
325         return new RendererProvider(lightyServices.getRpcProviderService(), deviceRendererRPC,
326                 rendererServiceOperations);
327     }
328
329     private OpenRoadmInterfaceFactory initOpenRoadmFactory(MappingUtils mappingUtils,
330             OpenRoadmInterfaces openRoadmInterfaces, PortMapping portMapping) {
331         OpenRoadmInterface121 openRoadmInterface121 = new OpenRoadmInterface121(portMapping, openRoadmInterfaces);
332         OpenRoadmInterface221 openRoadmInterface221 = new OpenRoadmInterface221(portMapping, openRoadmInterfaces);
333         OpenRoadmInterface710 openRoadmInterface710 = new OpenRoadmInterface710(portMapping, openRoadmInterfaces);
334         OpenRoadmOtnInterface221 openRoadmOtnInterface221 = new OpenRoadmOtnInterface221(portMapping,
335                 openRoadmInterfaces);
336         OpenRoadmOtnInterface710 openRoadmOtnInterface710 = new OpenRoadmOtnInterface710(portMapping,
337             openRoadmInterfaces);
338         return new OpenRoadmInterfaceFactory(mappingUtils, openRoadmInterface121, openRoadmInterface221,
339             openRoadmInterface710, openRoadmOtnInterface221, openRoadmOtnInterface710);
340     }
341
342     private PortMapping initPortMapping(LightyServices lightyServices) {
343         PortMappingVersion710 portMappingVersion710 = new PortMappingVersion710(lightyServices.getBindingDataBroker(),
344                 deviceTransactionManager);
345         PortMappingVersion221 portMappingVersion221 = new PortMappingVersion221(lightyServices.getBindingDataBroker(),
346                 deviceTransactionManager);
347         PortMappingVersion121 portMappingVersion121 = new PortMappingVersion121(lightyServices.getBindingDataBroker(),
348                 deviceTransactionManager);
349         return new PortMappingImpl(lightyServices.getBindingDataBroker(), portMappingVersion710,
350             portMappingVersion221, portMappingVersion121);
351     }
352
353     private OpenRoadmInterfaces initOpenRoadmInterfaces(MappingUtils mappingUtils, PortMapping portMapping) {
354         OpenRoadmInterfacesImpl121 openRoadmInterfacesImpl121 = new OpenRoadmInterfacesImpl121(
355                 deviceTransactionManager);
356         OpenRoadmInterfacesImpl221 openRoadmInterfacesImpl221 = new OpenRoadmInterfacesImpl221(
357                 deviceTransactionManager, portMapping);
358         OpenRoadmInterfacesImpl710 openRoadmInterfacesImpl710 = new OpenRoadmInterfacesImpl710(
359                 deviceTransactionManager, portMapping);
360         return new OpenRoadmInterfacesImpl(deviceTransactionManager, mappingUtils, openRoadmInterfacesImpl121,
361                 openRoadmInterfacesImpl221, openRoadmInterfacesImpl710);
362     }
363
364     private CrossConnect initCrossConnect(MappingUtils mappingUtils) {
365         CrossConnectImpl121 crossConnectImpl121 = new CrossConnectImpl121(deviceTransactionManager);
366         CrossConnectImpl221 crossConnectImpl221 = new CrossConnectImpl221(deviceTransactionManager);
367         CrossConnectImpl710 crossConnectImpl710 = new CrossConnectImpl710(deviceTransactionManager);
368         return new CrossConnectImpl(deviceTransactionManager, mappingUtils, crossConnectImpl121, crossConnectImpl221,
369             crossConnectImpl710);
370     }
371 }