import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PortStatusMessage;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.MultipartReplyDesc;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestDescBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestPortDescBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.system.rev130927.DisconnectEvent;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.system.rev130927.SwitchIdleEvent;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.system.rev130927.SystemNotificationsListener;
conductorState = CONDUCTOR_STATE.WORKING;
OFSessionUtil.registerSession(this, featureOutput, negotiatedVersion);
requestDesc();
+ requestPorts();
}
/*
getConnectionAdapter().multipartRequest(builder.build());
}
+ private void requestPorts() {
+ MultipartRequestInputBuilder builder = new MultipartRequestInputBuilder();
+ builder.setType(MultipartType.OFPMPPORTDESC);
+ builder.setVersion(getVersion());
+ builder.setFlags(new MultipartRequestFlags(false));
+ builder.setMultipartRequestBody(new MultipartRequestPortDescBuilder().build());
+ builder.setXid(getSessionContext().getNextXid());
+ getConnectionAdapter().multipartRequest(builder.build());
+ }
+
/**
* @param isBitmapNegotiationEnable the isBitmapNegotiationEnable to set
*/
import org.opendaylight.openflowplugin.openflow.md.core.translator.ExperimenterTranslator;
import org.opendaylight.openflowplugin.openflow.md.core.translator.FlowRemovedTranslator;
import org.opendaylight.openflowplugin.openflow.md.core.translator.MultiPartMessageDescToNodeUpdatedTranslator;
+import org.opendaylight.openflowplugin.openflow.md.core.translator.MultiPartReplyPortToNodeConnectorUpdatedTranslator;
import org.opendaylight.openflowplugin.openflow.md.core.translator.PacketInTranslator;
+import org.opendaylight.openflowplugin.openflow.md.core.translator.PortStatusMessageToNodeConnectorUpdatedTranslator;
import org.opendaylight.openflowplugin.openflow.md.queue.PopListener;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorUpdated;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeUpdated;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ErrorMessage;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ExperimenterMessage;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartReplyMessage;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.OfHeader;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PacketInMessage;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PortStatusMessage;
import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.PacketReceived;
import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.TransmitPacketInput;
import org.opendaylight.yangtools.yang.binding.DataObject;
addMessageTranslator(FlowRemovedMessage.class, OF13, new FlowRemovedTranslator());
addMessageTranslator(PacketInMessage.class,OF10, new PacketInTranslator());
addMessageTranslator(PacketInMessage.class,OF13, new PacketInTranslator());
+ addMessageTranslator(PortStatusMessage.class,OF10, new PortStatusMessageToNodeConnectorUpdatedTranslator());
+ addMessageTranslator(PortStatusMessage.class,OF13, new PortStatusMessageToNodeConnectorUpdatedTranslator());
+ addMessageTranslator(MultipartReplyMessage.class,OF13,new MultiPartReplyPortToNodeConnectorUpdatedTranslator());
addMessageTranslator(MultipartReplyMessage.class,OF13, new MultiPartMessageDescToNodeUpdatedTranslator());
addMessageTranslator(ExperimenterMessage.class, OF10, new ExperimenterTranslator());
//TODO: move registration to factory
NotificationPopListener<DataObject> notificationPopListener = new NotificationPopListener<DataObject>();
+ addMessagePopListener(NodeConnectorUpdated.class,notificationPopListener);
addMessagePopListener(PacketReceived.class,notificationPopListener);
addMessagePopListener(TransmitPacketInput.class, notificationPopListener);
addMessagePopListener(NodeUpdated.class, notificationPopListener);
public static InstanceIdentifier<Node> identifierFromDatapathId(BigInteger datapathId) {
NodeKey nodeKey = nodeKeyFromDatapathId(datapathId);
- InstanceIdentifierBuilder<?> builder = InstanceIdentifier.builder(Node.class,nodeKey);
- return (InstanceIdentifier<Node>) builder.toInstance();
+ InstanceIdentifierBuilder<Node> builder = InstanceIdentifier.builder(Nodes.class).child(Node.class,nodeKey);
+ return builder.toInstance();
}
public static NodeKey nodeKeyFromDatapathId(BigInteger datapathId) {
import org.slf4j.LoggerFactory;
public class MultiPartMessageDescToNodeUpdatedTranslator implements IMDMessageTranslator<OfHeader, List<DataObject>> {
- protected static final Logger LOG = LoggerFactory.getLogger(PacketInTranslator.class);
+ protected static final Logger LOG = LoggerFactory.getLogger(MultiPartMessageDescToNodeUpdatedTranslator.class);
@Override
public List<DataObject> translate(SwitchConnectionDistinguisher cookie,
SessionContext sc, OfHeader msg) {
--- /dev/null
+package org.opendaylight.openflowplugin.openflow.md.core.translator;
+
+import java.math.BigInteger;
+import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
+
+import org.opendaylight.openflowplugin.openflow.md.core.IMDMessageTranslator;
+import org.opendaylight.openflowplugin.openflow.md.core.SwitchConnectionDistinguisher;
+import org.opendaylight.openflowplugin.openflow.md.core.session.SessionContext;
+import org.opendaylight.openflowplugin.openflow.md.util.InventoryDataServiceUtil;
+import org.opendaylight.openflowplugin.openflow.md.util.PortTranslatorUtil;
+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.inventory.rev130819.NodeConnectorUpdatedBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MultipartType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortConfig;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartReply;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartReplyMessage;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.OfHeader;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.MultipartReplyPortDesc;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.port.desc.Ports;
+import org.opendaylight.yangtools.yang.binding.DataObject;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class MultiPartReplyPortToNodeConnectorUpdatedTranslator implements IMDMessageTranslator<OfHeader, List<DataObject>> {
+ protected static final Logger LOG = LoggerFactory.getLogger(MultiPartReplyPortToNodeConnectorUpdatedTranslator.class);
+ @Override
+ public List<DataObject> translate(SwitchConnectionDistinguisher cookie,
+ SessionContext sc, OfHeader msg) {
+ if(msg instanceof MultipartReply && ((MultipartReply) msg).getType() == MultipartType.OFPMPPORTDESC) {
+ BigInteger datapathId = sc.getFeatures().getDatapathId();
+ LOG.info("MultiPartReplyPortToNodeConnectorUpdatedTranslator Being translated to NodeConnectorUpdated ");
+ MultipartReplyMessage message = (MultipartReplyMessage) msg;
+ MultipartReplyPortDesc body = (MultipartReplyPortDesc) message.getMultipartReplyBody();
+ List<DataObject> list = new CopyOnWriteArrayList<DataObject>();
+ for ( Ports port : body.getPorts() ) {
+ LOG.info("Port: " + port);
+ port.getPortNo();
+ NodeConnectorUpdatedBuilder builder = InventoryDataServiceUtil
+ .nodeConnectorUpdatedBuilderFromDatapathIdPortNo(datapathId,port.getPortNo());
+ FlowCapableNodeConnectorUpdatedBuilder fcncub = new FlowCapableNodeConnectorUpdatedBuilder();
+ fcncub.setAdvertisedFeatures(PortTranslatorUtil.translatePortFeatures(port.getAdvertisedFeatures()));
+ fcncub.setConfiguration(PortTranslatorUtil.translatePortConfig(port.getConfig()));
+ fcncub.setCurrentFeature(PortTranslatorUtil.translatePortFeatures(port.getCurrentFeatures()));
+ fcncub.setCurrentSpeed(port.getCurrSpeed());
+ fcncub.setHardwareAddress(port.getHwAddr());
+ fcncub.setMaximumSpeed(port.getMaxSpeed());
+ fcncub.setName(port.getName());
+ fcncub.setPeerFeatures(PortTranslatorUtil.translatePortFeatures(port.getPeerFeatures()));
+ fcncub.setPortNumber(port.getPortNo());
+ fcncub.setState(PortTranslatorUtil.translatePortState(port.getState()));
+ fcncub.setSupported(PortTranslatorUtil.translatePortFeatures(port.getSupportedFeatures()));
+ builder.addAugmentation(FlowCapableNodeConnectorUpdated.class, fcncub.build());
+ list.add(builder.build());
+ }
+ return list;
+ } else {
+ return null;
+ }
+ }
+
+
+
+}
--- /dev/null
+package org.opendaylight.openflowplugin.openflow.md.core.translator;
+
+import java.math.BigInteger;
+import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
+
+import org.opendaylight.openflowplugin.openflow.md.core.IMDMessageTranslator;
+import org.opendaylight.openflowplugin.openflow.md.core.SwitchConnectionDistinguisher;
+import org.opendaylight.openflowplugin.openflow.md.core.session.SessionContext;
+import org.opendaylight.openflowplugin.openflow.md.util.InventoryDataServiceUtil;
+import org.opendaylight.openflowplugin.openflow.md.util.PortTranslatorUtil;
+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.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.protocol.rev130731.OfHeader;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PortStatusMessage;
+import org.opendaylight.yangtools.yang.binding.DataObject;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class PortStatusMessageToNodeConnectorUpdatedTranslator implements IMDMessageTranslator<OfHeader, List<DataObject>> {
+ protected static final Logger LOG = LoggerFactory
+ .getLogger(PortStatusMessageToNodeConnectorUpdatedTranslator.class);
+
+ @Override
+ public List<DataObject> translate(SwitchConnectionDistinguisher cookie,
+ SessionContext sc, OfHeader msg) {
+ if(msg instanceof PortStatusMessage) {
+ PortStatusMessage port = (PortStatusMessage)msg;
+ List<DataObject> list = new CopyOnWriteArrayList<DataObject>();
+ BigInteger datapathId = sc.getFeatures().getDatapathId();
+ Long portNo = port.getPortNo();
+ LOG.error("PortStatusMessage: dataPathId {} portNo {}",datapathId,portNo);
+ NodeConnectorUpdatedBuilder builder = InventoryDataServiceUtil
+ .nodeConnectorUpdatedBuilderFromDatapathIdPortNo(datapathId,port.getPortNo());
+ FlowCapableNodeConnectorUpdatedBuilder fcncub = new FlowCapableNodeConnectorUpdatedBuilder();
+ fcncub.setAdvertisedFeatures(PortTranslatorUtil.translatePortFeatures(port.getAdvertisedFeatures()));
+ fcncub.setConfiguration(PortTranslatorUtil.translatePortConfig(port.getConfig()));
+ fcncub.setCurrentFeature(PortTranslatorUtil.translatePortFeatures(port.getCurrentFeatures()));
+ fcncub.setCurrentSpeed(port.getCurrSpeed());
+ fcncub.setHardwareAddress(port.getHwAddr());
+ fcncub.setMaximumSpeed(port.getMaxSpeed());
+ fcncub.setName(port.getName());
+ fcncub.setPeerFeatures(PortTranslatorUtil.translatePortFeatures(port.getPeerFeatures()));
+ fcncub.setPortNumber(port.getPortNo());
+ fcncub.setState(PortTranslatorUtil.translatePortState(port.getState()));
+ fcncub.setSupported(PortTranslatorUtil.translatePortFeatures(port.getSupportedFeatures()));
+ builder.addAugmentation(FlowCapableNodeConnectorUpdated.class, fcncub.build());
+ list.add(builder.build());
+ return list;
+ } else {
+ // TODO - Do something smarter than returning null if translation fails... what Exception should we throw here?
+ return null;
+ }
+ }
+}
import java.util.List;
import org.opendaylight.controller.sal.binding.api.data.DataModificationTransaction;
-import org.opendaylight.controller.sal.binding.api.data.DataProviderService;
+import org.opendaylight.openflowplugin.openflow.md.core.session.OFSessionUtil;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorRef;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorUpdatedBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeUpdatedBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnector;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnectorBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnectorKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.InstanceIdentifierBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class InventoryDataServiceUtil {
private final static Logger LOG = LoggerFactory.getLogger(InventoryDataServiceUtil.class);
- /*
- * Get an InstanceIdentifier for the Nodes class that is the root of the inventory tree
- * We use this alot, so its worth keeping around
- */
- private InstanceIdentifier<Nodes> nodesIdentifier = InstanceIdentifier.builder().node(Nodes.class).toInstance();
+ public final static String OF_URI_PREFIX = "openflow:";
/*
- * The DataProviderService is how we access the DataTree
+ * Get an InstanceIdentifier for the Nodes class that is the root of the
+ * inventory tree We use this alot, so its worth keeping around
*/
- private DataProviderService dataService;
-
- public InventoryDataServiceUtil(DataProviderService dataService) {
- // Save the dataService
- this.dataService = dataService;
- }
-
- public List<Node> readAllNodes() {
- Nodes nodes = (Nodes) dataService.readOperationalData(nodesIdentifier);
+ private static InstanceIdentifier<Nodes> nodesIdentifier = InstanceIdentifier.builder().node(Nodes.class)
+ .toInstance();
+
+ public static Nodes checkForNodes() {
+ Nodes nodes = null;
+ LOG.error("Before Nodes - nodes: " + nodes);
+ try {
+ nodes = (Nodes) OFSessionUtil.getSessionManager().getDataProviderService()
+ .readOperationalData(nodesIdentifier);
+ } catch (Exception e) {
+ LOG.error(
+ "Caught exception from OFSessionUtil.getSessionManager().getDataProviderService().readOperationalData",
+ e);
+ }
+ LOG.error("After Nodes- nodes: " + nodes);
+ return nodes;
+ }
+
+ public static List<Node> readAllNodes() {
+ Nodes nodes = (Nodes) OFSessionUtil.getSessionManager().getDataProviderService()
+ .readOperationalData(nodesIdentifier);
return nodes.getNode();
}
- public Node readNode(InstanceIdentifier<Node> instance) {
- return (Node) dataService.readOperationalData(instance);
+ public static Node readNode(InstanceIdentifier<Node> instance) {
+ return (Node) OFSessionUtil.getSessionManager().getDataProviderService().readOperationalData(instance);
}
- public Node readNode(NodeRef nodeRef) {
+ public static Node readNode(NodeRef nodeRef) {
return readNode((InstanceIdentifier<Node>) nodeRef.getValue());
}
- public Node readNode(NodeKey nodeKey) {
+ public static Node readNode(NodeKey nodeKey) {
return readNode(nodeKeyToInstanceIdentifier(nodeKey));
}
- public Node readNode(NodeId nodeId) {
+ public static Node readNode(NodeId nodeId) {
return readNode(new NodeKey(nodeId));
}
-
- public Node readNodeByDataPath(BigInteger datapathId) {
- return (Node) dataService.readOperationalData(identifierFromDatapathId(datapathId));
+ public static Node readNodeByDataPath(BigInteger datapathId) {
+ return (Node) OFSessionUtil.getSessionManager().getDataProviderService()
+ .readOperationalData(identifierFromDatapathId(datapathId));
}
- public void putNode(Node node) {
- DataModificationTransaction transaction = dataService.beginTransaction();
+ public static void putNode(Node node) {
+ DataModificationTransaction transaction = OFSessionUtil.getSessionManager().getDataProviderService()
+ .beginTransaction();
transaction.putOperationalData(nodesIdentifier, node);
transaction.commit();
}
- public void putNodeConnector(InstanceIdentifier<Node> instance,NodeConnector nodeConnector) {
- DataModificationTransaction transaction = dataService.beginTransaction();
+ public static void putNodeConnector(InstanceIdentifier<Node> instance, NodeConnector nodeConnector) {
+ DataModificationTransaction transaction = OFSessionUtil.getSessionManager().getDataProviderService()
+ .beginTransaction();
transaction.putOperationalData(instance, nodeConnector);
transaction.commit();
}
- public void putNodeConnector(NodeKey nodeKey,NodeConnector nodeConnector) {
+ public static void putNodeConnector(NodeKey nodeKey, NodeConnector nodeConnector) {
InstanceIdentifier<Node> instance = nodeKeyToInstanceIdentifier(nodeKey);
- putNodeConnector(instance,nodeConnector);
+ putNodeConnector(instance, nodeConnector);
}
-
-
- public void putNodeConnector(NodeId nodeId,NodeConnector nodeConnector) {
- putNodeConnector(new NodeKey(nodeId),nodeConnector);
+ public static void putNodeConnector(NodeId nodeId, NodeConnector nodeConnector) {
+ putNodeConnector(new NodeKey(nodeId), nodeConnector);
}
- public void putNodeConnector(BigInteger datapathId, NodeConnector nodeConnector) {
- putNodeConnector(new NodeId("openflow:" + datapathId),nodeConnector);
+ public static void putNodeConnector(BigInteger datapathId, NodeConnector nodeConnector) {
+ putNodeConnector(new NodeId(OF_URI_PREFIX + datapathId), nodeConnector);
}
public static InstanceIdentifier<Node> identifierFromDatapathId(BigInteger datapathId) {
- InstanceIdentifierBuilder<?> builder = InstanceIdentifier.builder().node(Nodes.class);
-
NodeKey nodeKey = nodeKeyFromDatapathId(datapathId);
- return builder.node(Node.class, nodeKey).toInstance();
+ return InstanceIdentifier.builder(Nodes.class).child(Node.class, nodeKey).toInstance();
}
public static NodeKey nodeKeyFromDatapathId(BigInteger datapathId) {
public static NodeId nodeIdFromDatapathId(BigInteger datapathId) {
// FIXME: Convert to textual representation of datapathID
String current = datapathId.toString();
- return new NodeId("openflow:" + current);
+ return new NodeId(OF_URI_PREFIX + current);
}
public static NodeRef nodeRefFromNode(Node node) {
- InstanceIdentifierBuilder<?> builder = InstanceIdentifier.builder().node(Nodes.class);
- return new NodeRef(builder.node(Node.class,node.getKey()).toInstance());
+ return nodeRefFromNodeKey(node.getKey());
}
public static NodeRef nodeRefFromNodeKey(NodeKey nodeKey) {
- InstanceIdentifierBuilder<?> builder = InstanceIdentifier.builder().node(Nodes.class);
- return new NodeRef(builder.node(Node.class,nodeKey).toInstance());
+ return new NodeRef(nodeKeyToInstanceIdentifier(nodeKey));
}
public static InstanceIdentifier<Node> nodeKeyToInstanceIdentifier(NodeKey nodeKey) {
- InstanceIdentifierBuilder<?> builder = InstanceIdentifier.builder().node(Nodes.class);
- InstanceIdentifier<Node> instance = builder.node(Node.class,nodeKey).toInstance();
- return instance;
+ return InstanceIdentifier.builder(Nodes.class).child(Node.class, nodeKey).toInstance();
+ }
+
+ public static InstanceIdentifier<Node> nodeIdToInstanceIdentifier(NodeId nodeId) {
+ return nodeKeyToInstanceIdentifier(new NodeKey(nodeId));
}
+ public static NodeConnectorId nodeConnectorIdfromDatapathPortNo(BigInteger datapathid, Long portNo) {
+ return new NodeConnectorId(OF_URI_PREFIX + datapathid + ":" + portNo);
+ }
+
+ public static NodeConnectorRef nodeConnectorRefFromDatapathIdPortno(BigInteger datapathId, Long portNo) {
+ return new NodeConnectorRef(nodeConnectorInstanceIdentifierFromDatapathIdPortno(datapathId, portNo));
+ }
+
+ public static InstanceIdentifier<NodeConnector> nodeConnectorInstanceIdentifierFromDatapathIdPortno(
+ BigInteger datapathId, Long portNo) {
+ NodeId nodeId = nodeIdFromDatapathId(datapathId);
+ NodeConnectorId nodeConnectorId = nodeConnectorIdfromDatapathPortNo(datapathId, portNo);
+ return InstanceIdentifier.builder(Nodes.class) //
+ .child(Node.class, new NodeKey(nodeId)) //
+ .child(NodeConnector.class, new NodeConnectorKey(nodeConnectorId)).toInstance();
+ }
+
+ public static NodeConnectorUpdatedBuilder nodeConnectorUpdatedBuilderFromDatapathIdPortNo(BigInteger datapathId, Long portNo) {
+ NodeConnectorUpdatedBuilder builder = new NodeConnectorUpdatedBuilder();
+ builder.setId(InventoryDataServiceUtil.nodeConnectorIdfromDatapathPortNo(datapathId,portNo));
+ builder.setNodeConnectorRef(InventoryDataServiceUtil.nodeConnectorRefFromDatapathIdPortno(datapathId,portNo));
+ return builder;
+ }
+
+ public static NodeConnectorBuilder nodeConnectorBuilderFromDatapathIdPortNo(BigInteger datapathId, Long portNo) {
+ NodeConnectorBuilder builder = new NodeConnectorBuilder();
+ builder.setId(InventoryDataServiceUtil.nodeConnectorIdfromDatapathPortNo(datapathId,portNo));
+ return builder;
+ }
}
--- /dev/null
+package org.opendaylight.openflowplugin.openflow.md.util;
+
+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.PortFeatures;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortState;
+
+public class PortTranslatorUtil {
+ public static org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures translatePortFeatures(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());
+ }
+ return napf;
+ }
+
+ public static org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortState translatePortState(PortState state) {
+ org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortState nstate = null;
+ if(state != null) {
+ if(state.isBlocked()) {
+ nstate = org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortState.Blocked;
+ } else if (state.isLinkDown()) {
+ nstate = org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortState.LinkDown;
+ } else if (state.isLive()) {
+ nstate = org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortState.Live;
+ }
+ }
+ return nstate;
+ }
+
+ public static org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig translatePortConfig(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;
+ }
+}