2 * Copyright © 2017 AT&T and others. All rights reserved.
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 http://www.eclipse.org/legal/epl-v10.html
9 package org.opendaylight.transportpce.common.crossconnect;
11 import static org.opendaylight.transportpce.common.StringConstants.OPENROADM_DEVICE_VERSION_1_2_1;
12 import static org.opendaylight.transportpce.common.StringConstants.OPENROADM_DEVICE_VERSION_2_2_1;
13 import static org.opendaylight.transportpce.common.StringConstants.OPENROADM_DEVICE_VERSION_7_1;
15 import java.util.List;
16 import java.util.Optional;
17 import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
18 import org.opendaylight.transportpce.common.fixedflex.SpectrumInformation;
19 import org.opendaylight.transportpce.common.mapping.MappingUtils;
20 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaceException;
21 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.OpticalControlMode;
22 import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev220926.otn.renderer.nodes.Nodes;
23 import org.opendaylight.yangtools.yang.common.Decimal64;
24 import org.osgi.service.component.annotations.Activate;
25 import org.osgi.service.component.annotations.Component;
26 import org.osgi.service.component.annotations.Reference;
27 import org.slf4j.Logger;
28 import org.slf4j.LoggerFactory;
31 public class CrossConnectImpl implements CrossConnect {
33 private static final Logger LOG = LoggerFactory.getLogger(CrossConnectImpl.class);
35 protected CrossConnect crossConnect;
36 private final MappingUtils mappingUtils;
37 private CrossConnectImpl121 crossConnectImpl121;
38 private CrossConnectImpl221 crossConnectImpl221;
39 private CrossConnectImpl710 crossConnectImpl710;
42 public CrossConnectImpl(@Reference DeviceTransactionManager deviceTransactionManager,
43 @Reference MappingUtils mappingUtils) {
44 this(deviceTransactionManager, mappingUtils,
45 new CrossConnectImpl121(deviceTransactionManager),
46 new CrossConnectImpl221(deviceTransactionManager),
47 new CrossConnectImpl710(deviceTransactionManager));
50 // TODO: DeviceTransactionManager is not used here
51 public CrossConnectImpl(DeviceTransactionManager deviceTransactionManager, MappingUtils mappingUtils,
52 CrossConnectImpl121 crossConnectImpl121,
53 CrossConnectImpl221 crossConnectImpl221,
54 CrossConnectImpl710 crossConnectImpl710) {
55 this.mappingUtils = mappingUtils;
56 this.crossConnectImpl121 = crossConnectImpl121;
57 this.crossConnectImpl221 = crossConnectImpl221;
58 this.crossConnectImpl710 = crossConnectImpl710;
59 this.crossConnect = null;
62 public Optional<?> getCrossConnect(String nodeId, String connectionNumber) {
63 switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
64 case OPENROADM_DEVICE_VERSION_1_2_1:
65 return crossConnectImpl121.getCrossConnect(nodeId,connectionNumber);
66 case OPENROADM_DEVICE_VERSION_2_2_1:
67 return crossConnectImpl221.getCrossConnect(nodeId,connectionNumber);
69 return Optional.empty();
74 public Optional<String> postCrossConnect(String nodeId, String srcTp, String destTp,
75 SpectrumInformation spectrumInformation) {
76 String openRoadmVersion = mappingUtils.getOpenRoadmVersion(nodeId);
77 LOG.info("Cross Connect post request received for node {} with version {}", nodeId, openRoadmVersion);
78 switch (openRoadmVersion) {
79 case OPENROADM_DEVICE_VERSION_1_2_1:
80 LOG.info("Device Version is 1.2.1");
81 return crossConnectImpl121.postCrossConnect(nodeId, srcTp, destTp, spectrumInformation);
82 case OPENROADM_DEVICE_VERSION_2_2_1:
83 LOG.info("Device Version is 2.2.1");
84 return crossConnectImpl221.postCrossConnect(nodeId, srcTp, destTp, spectrumInformation);
86 LOG.info("Device Version not found");
87 return Optional.empty();
92 public List<String> deleteCrossConnect(String nodeId, String connectionNumber, Boolean isOtn) {
93 switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
94 case OPENROADM_DEVICE_VERSION_1_2_1:
95 return crossConnectImpl121.deleteCrossConnect(nodeId, connectionNumber);
96 case OPENROADM_DEVICE_VERSION_2_2_1:
97 return crossConnectImpl221.deleteCrossConnect(nodeId, connectionNumber, isOtn);
98 case OPENROADM_DEVICE_VERSION_7_1:
99 return crossConnectImpl710.deleteOtnCrossConnect(nodeId, connectionNumber);
105 public List<?> getConnectionPortTrail(String nodeId, String srcTp, String destTp, int lowerSpectralSlotNumber,
106 int higherSpectralSlotNumber)
107 throws OpenRoadmInterfaceException {
108 switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
109 case OPENROADM_DEVICE_VERSION_1_2_1:
110 return crossConnectImpl121
111 .getConnectionPortTrail(nodeId, srcTp, destTp, lowerSpectralSlotNumber, higherSpectralSlotNumber);
112 case OPENROADM_DEVICE_VERSION_2_2_1:
113 return crossConnectImpl221
114 .getConnectionPortTrail(nodeId, srcTp, destTp, lowerSpectralSlotNumber, higherSpectralSlotNumber);
121 public boolean setPowerLevel(String nodeId, String mode, Decimal64 powerValue, String connectionNumber) {
122 switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
123 case OPENROADM_DEVICE_VERSION_1_2_1:
124 if (OpticalControlMode.forName(mode) == null) {
127 return crossConnectImpl121.setPowerLevel(nodeId,
128 OpticalControlMode.forName(mode),
129 powerValue, connectionNumber);
130 case OPENROADM_DEVICE_VERSION_2_2_1:
131 if (org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.OpticalControlMode
132 .forName(mode) == null) {
135 return crossConnectImpl221.setPowerLevel(nodeId,
136 org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.OpticalControlMode
138 powerValue, connectionNumber);
145 public Optional<String> postOtnCrossConnect(List<String> createdOduInterfaces, Nodes node)
146 throws OpenRoadmInterfaceException {
147 switch (mappingUtils.getOpenRoadmVersion(node.getNodeId())) {
148 case OPENROADM_DEVICE_VERSION_2_2_1:
149 return crossConnectImpl221.postOtnCrossConnect(createdOduInterfaces, node);
150 case OPENROADM_DEVICE_VERSION_7_1:
151 return crossConnectImpl710.postOtnCrossConnect(createdOduInterfaces, node);
153 return Optional.empty();