X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=openflowplugin%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fopenflowplugin%2Fopenflow%2Fmd%2Futil%2FPortTranslatorUtil.java;h=1a6a42755d1cafa9af25671150d14e12ece02318;hb=85a27decf79695a8a0a2dcd21325dc5336398860;hp=760c43f39f7a6a44a89f954853c6d7ad0cdd6f6f;hpb=cd483df16cb45f5d8ef18fc62937367c2780f56b;p=openflowplugin.git diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/util/PortTranslatorUtil.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/util/PortTranslatorUtil.java index 760c43f39f..1a6a42755d 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/util/PortTranslatorUtil.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/util/PortTranslatorUtil.java @@ -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(); + } }