Sync Common folder
[transportpce.git] / common / src / main / java / org / opendaylight / transportpce / common / mapping / MappingUtilsImpl.java
diff --git a/common/src/main/java/org/opendaylight/transportpce/common/mapping/MappingUtilsImpl.java b/common/src/main/java/org/opendaylight/transportpce/common/mapping/MappingUtilsImpl.java
new file mode 100644 (file)
index 0000000..3e2d055
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+ * Copyright © 2017 AT&T and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.transportpce.common.mapping;
+
+import java.util.Optional;
+import java.util.concurrent.ExecutionException;
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.transportpce.common.StringConstants;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev170228.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev170228.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev170228.network.NodesKey;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class MappingUtilsImpl implements MappingUtils {
+
+    private static final Logger LOG = LoggerFactory.getLogger(MappingUtilsImpl.class);
+
+    private final DataBroker dataBroker;
+
+    public MappingUtilsImpl(DataBroker dataBroker) {
+
+        this.dataBroker = dataBroker;
+
+    }
+
+    public String getOpenRoadmVersion(String nodeId) {
+        /*
+         * Getting physical mapping corresponding to logical connection point
+         */
+        InstanceIdentifier<Nodes> portMappingIID = InstanceIdentifier.builder(Network.class).child(Nodes.class,
+                new NodesKey(nodeId)).build();
+        try (ReadOnlyTransaction readTx = dataBroker.newReadOnlyTransaction()) {
+            Optional<Nodes> mapObject =
+                    readTx.read(LogicalDatastoreType.CONFIGURATION, portMappingIID).get().toJavaUtil();
+            if (mapObject.isPresent()) {
+                Nodes mapping = mapObject.get();
+                switch (mapping.getOpenroadmVersion()) {
+                    case _22:
+                        return StringConstants.OPENROADM_DEVICE_VERSION_2_2;
+                    case _121:
+                        return StringConstants.OPENROADM_DEVICE_VERSION_1_2_1;
+                    default:
+                        return StringConstants.OPENROADM_DEVICE_VERSION_1_2_1;
+                }
+            } else {
+                LOG.warn("Could not find mapping for nodeId {}",
+                        nodeId);
+            }
+        } catch (InterruptedException | ExecutionException ex) {
+            LOG.error("Unable to read mapping for nodeId {}",nodeId, ex);
+        }
+        return null;
+    }
+}