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.openroadminterfaces;
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.Optional;
16 import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
17 import org.opendaylight.transportpce.common.mapping.MappingUtils;
18 import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.interfaces.grp.InterfaceBuilder;
19 import org.slf4j.Logger;
20 import org.slf4j.LoggerFactory;
23 public class OpenRoadmInterfacesImpl implements OpenRoadmInterfaces {
25 private static final Logger LOG = LoggerFactory.getLogger(OpenRoadmInterfacesImpl.class);
27 OpenRoadmInterfacesImpl121 openRoadmInterfacesImpl121;
28 OpenRoadmInterfacesImpl221 openRoadmInterfacesImpl221;
29 OpenRoadmInterfacesImpl710 openRoadmInterfacesImpl710;
30 MappingUtils mappingUtils;
32 public OpenRoadmInterfacesImpl(DeviceTransactionManager deviceTransactionManager, MappingUtils mappingUtils,
33 OpenRoadmInterfacesImpl121 openRoadmInterfacesImpl121,
34 OpenRoadmInterfacesImpl221 openRoadmInterfacesImpl221,
35 OpenRoadmInterfacesImpl710 openRoadmInterfacesImpl710) {
36 this.mappingUtils = mappingUtils;
37 this.openRoadmInterfacesImpl121 = openRoadmInterfacesImpl121;
38 this.openRoadmInterfacesImpl221 = openRoadmInterfacesImpl221;
39 this.openRoadmInterfacesImpl710 = openRoadmInterfacesImpl710;
43 public <T> void postInterface(String nodeId, T ifBuilder) throws OpenRoadmInterfaceException {
45 switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
46 case OPENROADM_DEVICE_VERSION_1_2_1:
47 LOG.info("postInterface for 1.2.1 device {}", nodeId);
48 InterfaceBuilder ifBuilder121 = convertInstanceOfInterface(ifBuilder, InterfaceBuilder.class);
49 openRoadmInterfacesImpl121.postInterface(nodeId,ifBuilder121);
51 case OPENROADM_DEVICE_VERSION_2_2_1:
52 LOG.info("postInterface for 2.2.1 device {}", nodeId);
53 org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.interfaces.grp.InterfaceBuilder
54 ifBuilder22 = convertInstanceOfInterface(ifBuilder, org.opendaylight.yang.gen.v1
55 .http.org.openroadm.device.rev181019.interfaces.grp.InterfaceBuilder.class);
56 openRoadmInterfacesImpl221.postInterface(nodeId,ifBuilder22);
58 case OPENROADM_DEVICE_VERSION_7_1:
59 LOG.info("postInterface for 7.1.0 device {}", nodeId);
60 org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.interfaces.grp.InterfaceBuilder
61 ifBuilder71 = convertInstanceOfInterface(ifBuilder, org.opendaylight.yang.gen.v1
62 .http.org.openroadm.device.rev200529.interfaces.grp.InterfaceBuilder.class);
63 openRoadmInterfacesImpl710.postInterface(nodeId, ifBuilder71);
66 LOG.error("postInterface unknown ordm version error device {}", nodeId);
72 @SuppressWarnings("unchecked")
73 public <T> Optional<T> getInterface(String nodeId, String interfaceName) throws OpenRoadmInterfaceException {
75 String openRoadmVersion = mappingUtils.getOpenRoadmVersion(nodeId);
76 LOG.info("Interface get request received for node {} with version {}", nodeId, openRoadmVersion);
77 switch (openRoadmVersion) {
78 case OPENROADM_DEVICE_VERSION_1_2_1:
79 return (Optional<T>) openRoadmInterfacesImpl121.getInterface(nodeId,interfaceName);
80 case OPENROADM_DEVICE_VERSION_2_2_1:
81 return (Optional<T>) openRoadmInterfacesImpl221.getInterface(nodeId,interfaceName);
82 case OPENROADM_DEVICE_VERSION_7_1:
83 return (Optional<T>) openRoadmInterfacesImpl710.getInterface(nodeId,interfaceName);
85 LOG.error("getInterface unknown ordm version error device {}", nodeId);
86 return Optional.empty();
91 public void deleteInterface(String nodeId, String interfaceName)
92 throws OpenRoadmInterfaceException {
94 String openRoadmVersion = mappingUtils.getOpenRoadmVersion(nodeId);
95 LOG.info("Interface delete request received for node {} with version {}", nodeId, openRoadmVersion);
96 switch (openRoadmVersion) {
97 case OPENROADM_DEVICE_VERSION_1_2_1:
98 openRoadmInterfacesImpl121.deleteInterface(nodeId,interfaceName);
100 case OPENROADM_DEVICE_VERSION_2_2_1:
101 openRoadmInterfacesImpl221.deleteInterface(nodeId,interfaceName);
103 case OPENROADM_DEVICE_VERSION_7_1:
104 openRoadmInterfacesImpl710.deleteInterface(nodeId,interfaceName);
107 LOG.error("deleteInterface unknown ordm version error device {}", nodeId);
113 public void postEquipmentState(String nodeId, String circuitPackName, boolean activate)
114 throws OpenRoadmInterfaceException {
116 String openRoadmVersion = mappingUtils.getOpenRoadmVersion(nodeId);
117 LOG.info("Request received for node {} with version {} to change equipment-state of cp {}.",
118 nodeId,openRoadmVersion, circuitPackName);
119 switch (openRoadmVersion) {
120 case OPENROADM_DEVICE_VERSION_1_2_1:
121 openRoadmInterfacesImpl121.postEquipmentState(nodeId, circuitPackName, activate);
123 case OPENROADM_DEVICE_VERSION_2_2_1:
124 openRoadmInterfacesImpl221.postEquipmentState(nodeId, circuitPackName, activate);
126 case OPENROADM_DEVICE_VERSION_7_1:
127 openRoadmInterfacesImpl710.postEquipmentState(nodeId, circuitPackName, activate);
130 LOG.error("postEquipmentState unknown ordm version error device {}", nodeId);
136 public <T> void postOTNInterface(String nodeId, T ifBuilder)
137 throws OpenRoadmInterfaceException {
139 switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
140 case OPENROADM_DEVICE_VERSION_1_2_1:
141 LOG.error("postOTNInterface unsupported ordm version 1.2.1 error device {}", nodeId);
143 case OPENROADM_DEVICE_VERSION_2_2_1:
144 org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.interfaces.grp.InterfaceBuilder
145 ifBuilder22 = (org.opendaylight.yang.gen.v1
146 .http.org.openroadm.device.rev181019.interfaces.grp.InterfaceBuilder) ifBuilder;
147 openRoadmInterfacesImpl221.postInterface(nodeId, ifBuilder22);
149 case OPENROADM_DEVICE_VERSION_7_1:
150 org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.interfaces.grp.InterfaceBuilder
151 ifBuilder71 = (org.opendaylight.yang.gen.v1
152 .http.org.openroadm.device.rev200529.interfaces.grp.InterfaceBuilder) ifBuilder;
153 openRoadmInterfacesImpl710.postInterface(nodeId, ifBuilder71);
156 LOG.error("postOTNInterface unknown ordm version error device {}", nodeId);
162 public void postOTNEquipmentState(String nodeId, String circuitPackName, boolean activate)
163 throws OpenRoadmInterfaceException {
165 switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
166 case OPENROADM_DEVICE_VERSION_1_2_1:
167 LOG.error("postOTNEquipmentState unsupported ordm version 1.2.1 error device {}", nodeId);
169 case OPENROADM_DEVICE_VERSION_2_2_1:
170 openRoadmInterfacesImpl221.postEquipmentState(nodeId, circuitPackName, activate);
172 case OPENROADM_DEVICE_VERSION_7_1:
173 openRoadmInterfacesImpl710.postEquipmentState(nodeId, circuitPackName, activate);
176 LOG.error("postOTNEquipmentState unknown ordm version error device {}", nodeId);
181 private <T> T convertInstanceOfInterface(Object object, Class<T> classToCast) {
183 return classToCast.cast(object);
184 } catch (ClassCastException e) {
190 public String getSupportedInterface(String nodeId, String interfaceName) {
191 String supportedInterface = "";
192 switch (mappingUtils.getOpenRoadmVersion(nodeId)) {
193 case OPENROADM_DEVICE_VERSION_1_2_1:
194 supportedInterface = openRoadmInterfacesImpl121.getSupportedInterface(nodeId,interfaceName);
196 case OPENROADM_DEVICE_VERSION_2_2_1:
197 supportedInterface = openRoadmInterfacesImpl221.getSupportedInterface(nodeId,interfaceName);
199 case OPENROADM_DEVICE_VERSION_7_1:
200 supportedInterface = openRoadmInterfacesImpl710.getSupportedInterface(nodeId,interfaceName);
203 LOG.error("getSupportedInterface unknown ordm version error device {}", nodeId);
205 return supportedInterface;