performance fix - nodeConnector II reuse 32/20032/1
authorMartin Bobak <mbobak@cisco.com>
Mon, 11 May 2015 10:57:31 +0000 (12:57 +0200)
committerMartin Bobak <mbobak@cisco.com>
Mon, 11 May 2015 15:24:05 +0000 (17:24 +0200)
 - instead of full creating of instanceIdentifier of nodeConnector
   we now reuse instanceIdentifier of node and add just nodeConnector part

Change-Id: I7f55fc73d38f716d3d8b08d65ba5bdc68174dad7
Signed-off-by: Martin Bobak <mbobak@cisco.com>
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/translator/PacketReceivedTranslator.java
openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/util/InventoryDataServiceUtil.java

index 540e46562fb6b22b80297fcdff79819950cd5568..c91d526de802fd6e28943370174681b7b0d47512 100644 (file)
@@ -56,7 +56,8 @@ public class PacketReceivedTranslator implements MessageTranslator<PacketInMessa
             packetReceivedBuilder.setFlowCookie(new FlowCookie(input.getCookie()));
         }
         if (port != null) {
-            packetReceivedBuilder.setIngress(InventoryDataServiceUtil.nodeConnectorRefFromDatapathIdPortno(datapathId, port, OpenflowVersion.get(input.getVersion())));
+            packetReceivedBuilder.setIngress(InventoryDataServiceUtil.nodeConnectorRefFromDatapathIdPortno(
+                    datapathId, port, OpenflowVersion.get(input.getVersion()), deviceContext.getDeviceState().getNodeInstanceIdentifier()));
         }
         packetReceivedBuilder.setPacketInReason(PacketInUtil.getMdSalPacketInReason(input.getReason()));
 
index 907152686a2dd053be5d010cc177dae95ff43603..69d1c5678b6a5acd83654f04ede5cf27e16be457 100644 (file)
@@ -31,6 +31,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.N
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -151,13 +152,24 @@ public abstract class InventoryDataServiceUtil {
         return new NodeConnectorRef(nodeConnectorInstanceIdentifierFromDatapathIdPortno(datapathId, portNo, ofVersion));
     }
 
+    public static NodeConnectorRef nodeConnectorRefFromDatapathIdPortno(BigInteger datapathId, Long portNo,
+                                                                        OpenflowVersion ofVersion,
+                                                                        KeyedInstanceIdentifier<Node, NodeKey> nodePath) {
+        return new NodeConnectorRef(nodeConnectorInstanceIdentifierFromDatapathIdPortno(datapathId, portNo, ofVersion, nodePath));
+    }
+
     public static InstanceIdentifier<NodeConnector> nodeConnectorInstanceIdentifierFromDatapathIdPortno(
             BigInteger datapathId, Long portNo, OpenflowVersion ofVersion) {
         NodeId nodeId = nodeIdFromDatapathId(datapathId);
+        KeyedInstanceIdentifier<Node, NodeKey> nodePath = KeyedInstanceIdentifier.create(Nodes.class)
+                .child(Node.class, new NodeKey(nodeId));
+        return nodeConnectorInstanceIdentifierFromDatapathIdPortno(datapathId, portNo, ofVersion, nodePath);
+    }
+
+    public static InstanceIdentifier<NodeConnector> nodeConnectorInstanceIdentifierFromDatapathIdPortno(
+            BigInteger datapathId, Long portNo, OpenflowVersion ofVersion, KeyedInstanceIdentifier<Node, NodeKey> nodePath) {
         NodeConnectorId nodeConnectorId = nodeConnectorIdfromDatapathPortNo(datapathId, portNo, ofVersion);
-        return InstanceIdentifier.builder(Nodes.class) //
-                .child(Node.class, new NodeKey(nodeId)) //
-                .child(NodeConnector.class, new NodeConnectorKey(nodeConnectorId)).build();
+        return nodePath.child(NodeConnector.class, new NodeConnectorKey(nodeConnectorId));
     }
 
     public static NodeConnectorUpdatedBuilder nodeConnectorUpdatedBuilderFromDatapathIdPortNo(BigInteger datapathId,