Merge changes I8b6da9f3,I425a1d19,Ia3dfe19f,Idd68c408,I73f0c083, ...
[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         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(), lightyServices.getBindingNotificationPublishService());
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                             lightyServices.getBindingNotificationPublishService());
235
236             tapiProvider = initTapi(lightyServices, servicehandler, networkTransaction, serviceDataStoreOperations,
237                     tapiNetConfTopologyListener, tapiPortMappingListener, tapiNetworkutilsServiceImpl,
238                     tapiPceListenerImpl, tapiRendererListenerImpl, tapiServiceHandlerListener,
239                     lightyServices.getNotificationService(), orLinkListener, tapiNetworkModelListenerImpl);
240         }
241         if (activateNbiNotification) {
242             LOG.info("Creating nbi-notifications beans ...");
243             nbiNotificationsProvider = new NbiNotificationsProvider(
244                     publisherServiceList, publisherAlarmList, null, null, lightyServices.getRpcProviderService(),
245                     lightyServices.getNotificationService(), lightyServices.getAdapterContext().currentSerializer(),
246                     networkTransaction);
247         }
248     }
249
250     @Override
251     protected boolean initProcedure() {
252         LOG.info("Initializing PCE provider ...");
253         pceProvider.init();
254         LOG.info("Initializing network-model provider ...");
255         networkModelProvider.init();
256         LOG.info("Initializing OLM provider ...");
257         olmProvider.init();
258         LOG.info("Initializing renderer provider ...");
259         rendererProvider.init();
260         LOG.info("Initializing service-handler provider ...");
261         servicehandlerProvider.init();
262         if (tapiProvider != null) {
263             LOG.info("Initializing tapi provider ...");
264             tapiProvider.init();
265         }
266         if (nbiNotificationsProvider != null) {
267             LOG.info("Initializing nbi-notifications provider ...");
268             nbiNotificationsProvider.init();
269         }
270         LOG.info("Init done.");
271         return true;
272     }
273
274     @Override
275     protected boolean stopProcedure() {
276         if (nbiNotificationsProvider != null) {
277             nbiNotificationsProvider.close();
278             LOG.info("Shutting down nbi-notifications provider ...");
279         }
280         if (tapiProvider != null) {
281             tapiProvider.close();
282             LOG.info("Shutting down service-handler provider ...");
283         }
284         servicehandlerProvider.close();
285         LOG.info("Shutting down renderer provider ...");
286         rendererProvider.close();
287         LOG.info("Shutting down OLM provider ...");
288         olmProvider.close();
289         LOG.info("Shutting down network-model provider ...");
290         networkModelProvider.close();
291         LOG.info("Shutting down PCE provider ...");
292         pceProvider.close();
293         LOG.info("Shutting down transaction providers ...");
294         networkTransaction.close();
295         deviceTransactionManager.preDestroy();
296         LOG.info("Shutdown done.");
297         return true;
298     }
299
300     private TapiProvider initTapi(LightyServices lightyServices, OrgOpenroadmServiceService servicehandler,
301                                   NetworkTransactionService networkTransactionService,
302                                   ServiceDataStoreOperations serviceDataStoreOperations,
303                                   TapiNetconfTopologyListener tapiNetConfTopologyListener,
304                                   TapiPortMappingListener tapiPortMappingListener,
305                                   TransportpceTapinetworkutilsService tapiNetworkutilsServiceImpl,
306                                   TapiPceListenerImpl pceListenerImpl, TapiRendererListenerImpl rendererListenerImpl,
307                                   TapiServiceHandlerListenerImpl serviceHandlerListenerImpl,
308                                   NotificationService notificationService, TapiOrLinkListener orLinkListener,
309                                   TapiNetworkModelListenerImpl tapiNetworkModelListenerImpl) {
310         return new TapiProvider(lightyServices.getBindingDataBroker(), lightyServices.getRpcProviderService(),
311             servicehandler, serviceDataStoreOperations, new TapiListener(), networkTransactionService,
312             tapiNetConfTopologyListener, tapiPortMappingListener, tapiNetworkutilsServiceImpl, pceListenerImpl,
313             rendererListenerImpl, serviceHandlerListenerImpl, notificationService, orLinkListener,
314             tapiNetworkModelListenerImpl);
315     }
316
317     private RendererProvider initRenderer(LightyServices lightyServices, TransportpceOlmService olmPowerServiceRpc,
318             DeviceRendererService deviceRendererService, OtnDeviceRendererService otnDeviceRendererService,
319             PortMapping portMapping) {
320         DeviceRendererRPCImpl deviceRendererRPC = new DeviceRendererRPCImpl(deviceRendererService,
321                 otnDeviceRendererService);
322         RendererServiceOperationsImpl rendererServiceOperations = new RendererServiceOperationsImpl(
323                 deviceRendererService, otnDeviceRendererService, olmPowerServiceRpc,
324                 lightyServices.getBindingDataBroker(), lightyServices.getBindingNotificationPublishService(),
325                 portMapping);
326         return new RendererProvider(lightyServices.getRpcProviderService(), deviceRendererRPC,
327                 rendererServiceOperations);
328     }
329
330     private OpenRoadmInterfaceFactory initOpenRoadmFactory(MappingUtils mappingUtils,
331             OpenRoadmInterfaces openRoadmInterfaces, PortMapping portMapping) {
332         OpenRoadmInterface121 openRoadmInterface121 = new OpenRoadmInterface121(portMapping, openRoadmInterfaces);
333         OpenRoadmInterface221 openRoadmInterface221 = new OpenRoadmInterface221(portMapping, openRoadmInterfaces);
334         OpenRoadmInterface710 openRoadmInterface710 = new OpenRoadmInterface710(portMapping, openRoadmInterfaces);
335         OpenRoadmOtnInterface221 openRoadmOtnInterface221 = new OpenRoadmOtnInterface221(portMapping,
336                 openRoadmInterfaces);
337         OpenRoadmOtnInterface710 openRoadmOtnInterface710 = new OpenRoadmOtnInterface710(portMapping,
338             openRoadmInterfaces);
339         return new OpenRoadmInterfaceFactory(mappingUtils, openRoadmInterface121, openRoadmInterface221,
340             openRoadmInterface710, openRoadmOtnInterface221, openRoadmOtnInterface710);
341     }
342
343     private PortMapping initPortMapping(LightyServices lightyServices) {
344         PortMappingVersion710 portMappingVersion710 = new PortMappingVersion710(lightyServices.getBindingDataBroker(),
345                 deviceTransactionManager);
346         PortMappingVersion221 portMappingVersion221 = new PortMappingVersion221(lightyServices.getBindingDataBroker(),
347                 deviceTransactionManager);
348         PortMappingVersion121 portMappingVersion121 = new PortMappingVersion121(lightyServices.getBindingDataBroker(),
349                 deviceTransactionManager);
350         return new PortMappingImpl(lightyServices.getBindingDataBroker(), portMappingVersion710,
351             portMappingVersion221, portMappingVersion121);
352     }
353
354     private OpenRoadmInterfaces initOpenRoadmInterfaces(MappingUtils mappingUtils, PortMapping portMapping) {
355         OpenRoadmInterfacesImpl121 openRoadmInterfacesImpl121 = new OpenRoadmInterfacesImpl121(
356                 deviceTransactionManager);
357         OpenRoadmInterfacesImpl221 openRoadmInterfacesImpl221 = new OpenRoadmInterfacesImpl221(
358                 deviceTransactionManager, portMapping, portMapping.getPortMappingVersion221());
359         OpenRoadmInterfacesImpl710 openRoadmInterfacesImpl710 = new OpenRoadmInterfacesImpl710(
360                 deviceTransactionManager, portMapping, portMapping.getPortMappingVersion710());
361         return new OpenRoadmInterfacesImpl(deviceTransactionManager, mappingUtils, openRoadmInterfacesImpl121,
362                 openRoadmInterfacesImpl221, openRoadmInterfacesImpl710);
363     }
364
365     private CrossConnect initCrossConnect(MappingUtils mappingUtils) {
366         CrossConnectImpl121 crossConnectImpl121 = new CrossConnectImpl121(deviceTransactionManager);
367         CrossConnectImpl221 crossConnectImpl221 = new CrossConnectImpl221(deviceTransactionManager);
368         CrossConnectImpl710 crossConnectImpl710 = new CrossConnectImpl710(deviceTransactionManager);
369         return new CrossConnectImpl(deviceTransactionManager, mappingUtils, crossConnectImpl121, crossConnectImpl221,
370             crossConnectImpl710);
371     }
372 }