Bug 1739 - remove unused dependency on openflowplugin-api from openflow-extension-api
[openflowplugin.git] / openflowplugin / src / main / java / org / opendaylight / openflowplugin / openflow / md / util / PortTranslatorUtil.java
1 /**
2  * Copyright (c) 2013 Cisco Systems, Inc. and others.  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 http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.openflowplugin.openflow.md.util;
9
10 import java.math.BigInteger;
11 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnectorUpdated;
12 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnectorUpdatedBuilder;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.flow.capable.port.State;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.flow.capable.port.StateBuilder;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorUpdated;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorUpdatedBuilder;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortConfig;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortConfigV10;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortFeatures;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortFeaturesV10;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortState;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortStateV10;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PortGrouping;
24
25 public abstract class PortTranslatorUtil {
26     public static org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures translatePortFeatures(PortFeatures apf) {
27         org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures napf = null;
28         if (apf != null) {
29             napf = new org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures(
30                     apf.isAutoneg(), //_autoeng
31                     apf.isCopper(), //_copper
32                     apf.isFiber(), //_fiber
33                     apf.is_40gbFd(), //_fortyGbFd
34                     apf.is_100gbFd(), //_hundredGbFd
35                     apf.is_100mbFd(), //_hundredMbFd
36                     apf.is_100mbHd(), //_hundredMbHd
37                     apf.is_1gbFd(), //_oneGbFd
38                     apf.is_1gbHd(), //_oneGbHd
39                     apf.is_1tbFd(), //_oneTbFd
40                     apf.isOther(), //_other
41                     apf.isPause(), //_pause
42                     apf.isPauseAsym(), //_pauseAsym
43                     apf.is_10gbFd(), //_tenGbFd
44                     apf.is_10mbFd(), //_tenMbFd
45                     apf.is_10mbHd()//_tenMbHd
46             );
47
48         }
49         return napf;
50     }
51
52     public static org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures translatePortFeatures(
53             PortFeaturesV10 apf) {
54         org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures napf = null;
55         if (apf != null) {
56             napf = new org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures(
57                     apf.isAutoneg(), //_autoeng
58                     apf.isCopper(), //_copper
59                     apf.isFiber(), //_fiber
60                     false, //_fortyGbFd
61                     false, //_hundredGbFd
62                     apf.is_100mbFd(), //_hundredMbFd
63                     apf.is_100mbHd(), //_hundredMbHd
64                     apf.is_1gbFd(), //_oneGbFd
65                     apf.is_1gbHd(), //_oneGbHd
66                     false, //_oneTbFd
67                     false, //_other
68                     apf.isPause(), //_pause
69                     apf.isPauseAsym(), //_pauseAsym
70                     apf.is_10gbFd(), //_tenGbFd
71                     apf.is_10mbFd(), //_tenMbFd
72                     apf.is_10mbHd()//_tenMbHd
73                     );
74         }
75         return napf;
76     }
77
78     public static State translatePortState(PortState state) {
79         StateBuilder nstate = new StateBuilder();
80         if (state != null) {
81             nstate.setBlocked(state.isBlocked());
82             nstate.setLinkDown(state.isLinkDown());
83             nstate.setLive(state.isLive());
84         }
85         return nstate.build();
86     }
87
88     public static State translatePortState(PortStateV10 state) {
89         StateBuilder nstate = new StateBuilder();
90         if (state != null) {
91             nstate.setBlocked(state.isBlocked());
92             nstate.setLinkDown(state.isLinkDown());
93             nstate.setLive(state.isLive());
94         }
95         return nstate.build();
96     }
97
98     public static org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig translatePortConfig(PortConfig pc) {
99         org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig npc = null;
100         if (pc != null) {
101             npc = new org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig(pc.isNoFwd(),
102                     pc.isNoPacketIn(), pc.isNoRecv(), pc.isPortDown());
103         }
104         return npc;
105     }
106
107     public static org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig translatePortConfig(
108             PortConfigV10 pc) {
109         org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig npc = null;
110         if (pc != null) {
111             npc = new org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig(pc.isNoFwd(),
112                     pc.isNoPacketIn(), pc.isNoRecv(), pc.isPortDown());
113         }
114         return npc;
115     }
116
117     public static NodeConnectorUpdated translatePort(Short version, BigInteger datapathId, Long portNumber, PortGrouping port) {
118         OpenflowVersion ofVersion = OpenflowVersion.get(version);
119         NodeConnectorUpdatedBuilder builder = InventoryDataServiceUtil
120                 .nodeConnectorUpdatedBuilderFromDatapathIdPortNo(datapathId, port.getPortNo(), ofVersion);
121         FlowCapableNodeConnectorUpdatedBuilder fcncub = new FlowCapableNodeConnectorUpdatedBuilder();
122         if (ofVersion == OpenflowVersion.OF13) {
123             fcncub.setAdvertisedFeatures(PortTranslatorUtil.translatePortFeatures(port.getAdvertisedFeatures()));
124             fcncub.setConfiguration(PortTranslatorUtil.translatePortConfig(port.getConfig()));
125             fcncub.setCurrentFeature(PortTranslatorUtil.translatePortFeatures(port.getCurrentFeatures()));
126             fcncub.setPeerFeatures(PortTranslatorUtil.translatePortFeatures(port.getPeerFeatures()));
127             fcncub.setState(PortTranslatorUtil.translatePortState(port.getState()));
128             fcncub.setSupported(PortTranslatorUtil.translatePortFeatures(port.getSupportedFeatures()));
129
130         } else if (ofVersion == OpenflowVersion.OF10) {
131             fcncub.setAdvertisedFeatures(PortTranslatorUtil.translatePortFeatures(port.getAdvertisedFeaturesV10()));
132             fcncub.setConfiguration(PortTranslatorUtil.translatePortConfig(port.getConfigV10()));
133             fcncub.setCurrentFeature(PortTranslatorUtil.translatePortFeatures(port.getCurrentFeaturesV10()));
134             fcncub.setPeerFeatures(PortTranslatorUtil.translatePortFeatures(port.getPeerFeaturesV10()));
135             fcncub.setState(PortTranslatorUtil.translatePortState(port.getStateV10()));
136             fcncub.setSupported(PortTranslatorUtil.translatePortFeatures(port.getSupportedFeaturesV10()));
137         }
138         fcncub.setCurrentSpeed(port.getCurrSpeed());
139         fcncub.setHardwareAddress(port.getHwAddr());
140         fcncub.setMaximumSpeed(port.getMaxSpeed());
141         fcncub.setName(port.getName());
142         fcncub.setPortNumber(OpenflowPortsUtil.getProtocolAgnosticPort(ofVersion, portNumber));
143         builder.addAugmentation(FlowCapableNodeConnectorUpdated.class, fcncub.build());
144         return builder.build();
145     }
146 }