Fix Bug 271
[openflowplugin.git] / openflowplugin / src / main / java / org / opendaylight / openflowplugin / openflow / md / util / PortTranslatorUtil.java
1 package org.opendaylight.openflowplugin.openflow.md.util;
2
3 import java.math.BigInteger;
4
5 import org.opendaylight.openflowplugin.openflow.md.OFConstants;
6 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnectorUpdated;
7 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnectorUpdatedBuilder;
8 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.flow.capable.port.State;
9 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.flow.capable.port.StateBuilder;
10 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorUpdated;
11 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorUpdatedBuilder;
12 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortConfig;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortConfigV10;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortFeatures;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortFeaturesV10;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortState;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortStateV10;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.Port;
19
20 public class PortTranslatorUtil {
21     public static  org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures translatePortFeatures(PortFeatures apf) {
22         org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures napf = null;
23         if(apf != null){
24                 napf = new org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures(
25                         apf.is_100gbFd(),apf.is_100mbFd(),apf.is_100mbHd(),apf.is_10gbFd(),apf.is_10mbFd(),apf.is_10mbHd(),
26                         apf.is_1gbFd(),apf.is_1gbHd(),apf.is_1tbFd(),apf.is_40gbFd(),apf.isAutoneg(),apf.isCopper(),apf.isFiber(),apf.isOther(),
27                         apf.isPause(), apf.isPauseAsym());
28         }
29         return napf;
30     }
31     
32     public static org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures translatePortFeatures(
33             PortFeaturesV10 apf) {
34         org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures napf = null;
35         if(apf != null){
36                 napf = new org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures(
37                         false,apf.is_100mbFd(),apf.is_100mbHd(),apf.is_10gbFd(),apf.is_10mbFd(),apf.is_10mbHd(),
38                         apf.is_1gbFd(),apf.is_1gbHd(),false,false,apf.isAutoneg(),apf.isCopper(),apf.isFiber(),false,
39                         apf.isPause(), apf.isPauseAsym());
40         }
41         return napf;
42     }
43
44     public static  State translatePortState(PortState state) {
45         StateBuilder nstate = new StateBuilder();
46         if(state !=null) {
47             nstate.setBlocked(state.isBlocked());
48             nstate.setLinkDown(state.isLinkDown());
49             nstate.setLive(state.isLive());
50         }
51         return nstate.build();
52     }
53     
54     public static State translatePortState(PortStateV10 state) {
55         StateBuilder nstate = new StateBuilder();
56         if(state !=null) {
57             nstate.setBlocked(state.isBlocked());
58             nstate.setLinkDown(state.isLinkDown());
59             nstate.setLive(state.isLive());
60         }
61         return nstate.build();
62     }
63
64     public static org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig translatePortConfig(PortConfig pc) {
65         org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig npc = null;
66         if(pc != null) {
67                 npc = new org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig(pc.isNoFwd(),
68                         pc.isNoPacketIn(), pc.isNoRecv(), pc.isPortDown());
69         }
70         return npc;
71     }
72     
73     public static org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig translatePortConfig(
74             PortConfigV10 pc) {
75         org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig npc = null;
76         if(pc != null) {
77                 npc = new org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig(pc.isNoFwd(),
78                         pc.isNoPacketIn(), pc.isNoRecv(), pc.isPortDown());
79         }
80         return npc;
81     }
82     
83     public static NodeConnectorUpdated translatePort(Short version,BigInteger datapathId,Long portNo, Port port) {
84         NodeConnectorUpdatedBuilder builder = InventoryDataServiceUtil
85                 .nodeConnectorUpdatedBuilderFromDatapathIdPortNo(datapathId,port.getPortNo());
86         FlowCapableNodeConnectorUpdatedBuilder fcncub = new FlowCapableNodeConnectorUpdatedBuilder();
87         if(version == OFConstants.OFP_VERSION_1_3) {
88             fcncub.setAdvertisedFeatures(PortTranslatorUtil.translatePortFeatures(port.getAdvertisedFeatures()));
89             fcncub.setConfiguration(PortTranslatorUtil.translatePortConfig(port.getConfig()));
90             fcncub.setCurrentFeature(PortTranslatorUtil.translatePortFeatures(port.getCurrentFeatures()));
91             fcncub.setPeerFeatures(PortTranslatorUtil.translatePortFeatures(port.getPeerFeatures()));
92             fcncub.setState(PortTranslatorUtil.translatePortState(port.getState()));
93             fcncub.setSupported(PortTranslatorUtil.translatePortFeatures(port.getSupportedFeatures()));
94         } else if (version == OFConstants.OFP_VERSION_1_0) {
95             fcncub.setAdvertisedFeatures(PortTranslatorUtil.translatePortFeatures(port.getAdvertisedFeaturesV10()));
96             fcncub.setConfiguration(PortTranslatorUtil.translatePortConfig(port.getConfigV10()));
97             fcncub.setCurrentFeature(PortTranslatorUtil.translatePortFeatures(port.getCurrentFeaturesV10()));
98             fcncub.setPeerFeatures(PortTranslatorUtil.translatePortFeatures(port.getPeerFeaturesV10()));
99             fcncub.setState(PortTranslatorUtil.translatePortState(port.getStateV10()));
100             fcncub.setSupported(PortTranslatorUtil.translatePortFeatures(port.getSupportedFeaturesV10()));
101         }
102         fcncub.setCurrentSpeed(port.getCurrSpeed());
103         fcncub.setHardwareAddress(port.getHwAddr());
104         fcncub.setMaximumSpeed(port.getMaxSpeed());
105         fcncub.setName(port.getName());
106         fcncub.setPortNumber(port.getPortNo());
107         builder.addAugmentation(FlowCapableNodeConnectorUpdated.class, fcncub.build());
108         return builder.build();
109     }
110 }