Convert NetworkModelServiceImpl 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.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(lightyServices.getBindingDataBroker(),
145                 deviceTransactionManager, networkTransaction, portMapping,
146                 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         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);
357         OpenRoadmInterfacesImpl710 openRoadmInterfacesImpl710 = new OpenRoadmInterfacesImpl710(
358                 deviceTransactionManager, portMapping);
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 }