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