Merge "Remove M2E lifecycle-mapping <execute/> for yang-maven-plugin"
[openflowplugin.git] / openflowplugin / src / main / java / org / opendaylight / openflowplugin / openflow / md / util / PortTranslatorUtil.java
index 760c43f39f7a6a44a89f954853c6d7ad0cdd6f6f..1a6a42755d1cafa9af25671150d14e12ece02318 100644 (file)
@@ -1,26 +1,86 @@
+/**
+ * Copyright (c) 2013 Cisco Systems, Inc. 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.openflowplugin.openflow.md.util;
 
+import java.math.BigInteger;
+import org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnectorUpdated;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnectorUpdatedBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.flow.capable.port.State;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.flow.capable.port.StateBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorRemoved;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorRemovedBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorUpdated;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorUpdatedBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortConfig;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortConfigV10;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortFeatures;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortFeaturesV10;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortState;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortStateV10;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PortGrouping;
 
-public class PortTranslatorUtil {
-    public static  org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures translatePortFeatures(PortFeatures apf) {
+public abstract class PortTranslatorUtil {
+    public static org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures translatePortFeatures(final PortFeatures apf) {
         org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures napf = null;
-        if(apf != null){
-                napf = new org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures(
-                        apf.is_100gbFd(),apf.is_100mbFd(),apf.is_100mbHd(),apf.is_10gbFd(),apf.is_10mbFd(),apf.is_10mbHd(),
-                        apf.is_1gbFd(),apf.is_1gbHd(),apf.is_1tbFd(),apf.is_40gbFd(),apf.isAutoneg(),apf.isCopper(),apf.isFiber(),apf.isOther(),
-                        apf.isPause(), apf.isPauseAsym());
+        if (apf != null) {
+            napf = new org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures(
+                    apf.isAutoneg(), //_autoeng
+                    apf.isCopper(), //_copper
+                    apf.isFiber(), //_fiber
+                    apf.is_40gbFd(), //_fortyGbFd
+                    apf.is_100gbFd(), //_hundredGbFd
+                    apf.is_100mbFd(), //_hundredMbFd
+                    apf.is_100mbHd(), //_hundredMbHd
+                    apf.is_1gbFd(), //_oneGbFd
+                    apf.is_1gbHd(), //_oneGbHd
+                    apf.is_1tbFd(), //_oneTbFd
+                    apf.isOther(), //_other
+                    apf.isPause(), //_pause
+                    apf.isPauseAsym(), //_pauseAsym
+                    apf.is_10gbFd(), //_tenGbFd
+                    apf.is_10mbFd(), //_tenMbFd
+                    apf.is_10mbHd()//_tenMbHd
+            );
+
         }
         return napf;
     }
 
-    public static  State translatePortState(PortState state) {
+    public static org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures translatePortFeatures(
+            final PortFeaturesV10 apf) {
+        org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures napf = null;
+        if (apf != null) {
+            napf = new org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures(
+                    apf.isAutoneg(), //_autoeng
+                    apf.isCopper(), //_copper
+                    apf.isFiber(), //_fiber
+                    false, //_fortyGbFd
+                    false, //_hundredGbFd
+                    apf.is_100mbFd(), //_hundredMbFd
+                    apf.is_100mbHd(), //_hundredMbHd
+                    apf.is_1gbFd(), //_oneGbFd
+                    apf.is_1gbHd(), //_oneGbHd
+                    false, //_oneTbFd
+                    false, //_other
+                    apf.isPause(), //_pause
+                    apf.isPauseAsym(), //_pauseAsym
+                    apf.is_10gbFd(), //_tenGbFd
+                    apf.is_10mbFd(), //_tenMbFd
+                    apf.is_10mbHd()//_tenMbHd
+                    );
+        }
+        return napf;
+    }
+
+    public static State translatePortState(final PortState state) {
         StateBuilder nstate = new StateBuilder();
-        if(state !=null) {
+        if (state != null) {
             nstate.setBlocked(state.isBlocked());
             nstate.setLinkDown(state.isLinkDown());
             nstate.setLive(state.isLive());
@@ -28,12 +88,69 @@ public class PortTranslatorUtil {
         return nstate.build();
     }
 
-    public static org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig translatePortConfig(PortConfig pc) {
+    public static State translatePortState(final PortStateV10 state) {
+        StateBuilder nstate = new StateBuilder();
+        if (state != null) {
+            nstate.setBlocked(state.isBlocked());
+            nstate.setLinkDown(state.isLinkDown());
+            nstate.setLive(state.isLive());
+        }
+        return nstate.build();
+    }
+
+    public static org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig translatePortConfig(final PortConfig pc) {
+        org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig npc = null;
+        if (pc != null) {
+            npc = new org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig(pc.isNoFwd(),
+                    pc.isNoPacketIn(), pc.isNoRecv(), pc.isPortDown());
+        }
+        return npc;
+    }
+
+    public static org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig translatePortConfig(
+            final PortConfigV10 pc) {
         org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig npc = null;
-        if(pc != null) {
-                npc = new org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig(pc.isNoFwd(),
-                        pc.isNoPacketIn(), pc.isNoRecv(), pc.isPortDown());
+        if (pc != null) {
+            npc = new org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig(pc.isNoFwd(),
+                    pc.isNoPacketIn(), pc.isNoRecv(), pc.isPortDown());
         }
         return npc;
     }
+
+    public static NodeConnectorUpdated translatePort(final Short version, final BigInteger datapathId, final Long portNumber, final PortGrouping port) {
+        OpenflowVersion ofVersion = OpenflowVersion.get(version);
+        NodeConnectorUpdatedBuilder builder = InventoryDataServiceUtil
+                .nodeConnectorUpdatedBuilderFromDatapathIdPortNo(datapathId, port.getPortNo(), ofVersion);
+        FlowCapableNodeConnectorUpdatedBuilder fcncub = new FlowCapableNodeConnectorUpdatedBuilder();
+        if (ofVersion == OpenflowVersion.OF13) {
+            fcncub.setAdvertisedFeatures(PortTranslatorUtil.translatePortFeatures(port.getAdvertisedFeatures()));
+            fcncub.setConfiguration(PortTranslatorUtil.translatePortConfig(port.getConfig()));
+            fcncub.setCurrentFeature(PortTranslatorUtil.translatePortFeatures(port.getCurrentFeatures()));
+            fcncub.setPeerFeatures(PortTranslatorUtil.translatePortFeatures(port.getPeerFeatures()));
+            fcncub.setState(PortTranslatorUtil.translatePortState(port.getState()));
+            fcncub.setSupported(PortTranslatorUtil.translatePortFeatures(port.getSupportedFeatures()));
+
+        } else if (ofVersion == OpenflowVersion.OF10) {
+            fcncub.setAdvertisedFeatures(PortTranslatorUtil.translatePortFeatures(port.getAdvertisedFeaturesV10()));
+            fcncub.setConfiguration(PortTranslatorUtil.translatePortConfig(port.getConfigV10()));
+            fcncub.setCurrentFeature(PortTranslatorUtil.translatePortFeatures(port.getCurrentFeaturesV10()));
+            fcncub.setPeerFeatures(PortTranslatorUtil.translatePortFeatures(port.getPeerFeaturesV10()));
+            fcncub.setState(PortTranslatorUtil.translatePortState(port.getStateV10()));
+            fcncub.setSupported(PortTranslatorUtil.translatePortFeatures(port.getSupportedFeaturesV10()));
+        }
+        fcncub.setCurrentSpeed(port.getCurrSpeed());
+        fcncub.setHardwareAddress(port.getHwAddr());
+        fcncub.setMaximumSpeed(port.getMaxSpeed());
+        fcncub.setName(port.getName());
+        fcncub.setPortNumber(OpenflowPortsUtil.getProtocolAgnosticPort(ofVersion, portNumber));
+        builder.addAugmentation(FlowCapableNodeConnectorUpdated.class, fcncub.build());
+        return builder.build();
+    }
+
+    public static NodeConnectorRemoved translatePortRemoved(final Short version, final BigInteger datapathId, final Long portNumber, final PortGrouping port) {
+        OpenflowVersion ofVersion = OpenflowVersion.get(version);
+        NodeConnectorRemovedBuilder builder = new NodeConnectorRemovedBuilder();
+        builder.setNodeConnectorRef(InventoryDataServiceUtil.nodeConnectorRefFromDatapathIdPortno(datapathId, portNumber, ofVersion));
+        return builder.build();
+    }
 }