Merge "Implementing OFPT_PACKET_IN handler"
authormichal rehak <mirehak@cisco.com>
Thu, 9 Apr 2015 13:59:03 +0000 (13:59 +0000)
committerGerrit Code Review <gerrit@opendaylight.org>
Thu, 9 Apr 2015 13:59:03 +0000 (13:59 +0000)
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/OpenFlowPluginProviderImpl.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/device/DeviceContextImpl.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/device/DeviceManagerImpl.java

index 48f9104aa2317f7b156b5e0a39174a8b7dddb359..ebbb7f77caeb9a5bd6d92c843e75346a58668b98 100644 (file)
@@ -9,6 +9,8 @@
 package org.opendaylight.openflowplugin.impl;
 
 
+import org.opendaylight.controller.sal.binding.api.NotificationProviderService;
+
 import com.google.common.base.Preconditions;
 import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.Futures;
@@ -57,15 +59,18 @@ public class OpenFlowPluginProviderImpl implements OpenFlowPluginProvider {
 
     @Override
     public void onSessionInitiated(final ProviderContext providerContextArg) {
+        final NotificationProviderService notificationService = providerContext.getSALService(NotificationProviderService.class);
+        final DataBroker dataBroker = providerContext.getSALService(DataBroker.class);
         providerContext = providerContextArg;
 
         connectionManager = new ConnectionManagerImpl();
-        deviceManager = new DeviceManagerImpl(providerContext.getSALService(DataBroker.class));
+        deviceManager = new DeviceManagerImpl(dataBroker);
         statisticsManager = new StatisticsManagerImpl();
         rpcManager = new RpcManagerImpl(providerContext, rpcRequestsQuota);
 
         connectionManager.setDeviceConnectedHandler(deviceManager);
         deviceManager.setDeviceInitializationPhaseHandler(statisticsManager);
+        deviceManager.setNotificationService(notificationService);
         statisticsManager.setDeviceInitializationPhaseHandler(rpcManager);
         rpcManager.setDeviceInitializationPhaseHandler(deviceManager);
 
index 2cb7a22c5002569bd506531aa57538f53126d9ef..d8fbee6ef9166f670cf4ea22b3abfbeac364e5ce 100644 (file)
@@ -20,7 +20,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.No
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnectorBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnectorKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortReason;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortReason;
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Preconditions;
 import com.google.common.util.concurrent.SettableFuture;
@@ -301,10 +301,10 @@ public class DeviceContextImpl implements DeviceContext {
 
         final KeyedInstanceIdentifier<NodeConnector, NodeConnectorKey> iiToNodeConnector =
                 provideIIToNodeConnector(portStatus.getPortNo(), portStatus.getVersion());
-        if (portStatus.getReason().equals(PortReason.Add) ) {
+        if (portStatus.getReason().equals(PortReason.OFPPRADD) ) {
             // because of ADD status node connector has to be created
             createNodeConnectorInDS(iiToNodeConnector);
-        } else if (portStatus.getReason().equals(PortReason.Delete) ) {
+        } else if (portStatus.getReason().equals(PortReason.OFPPRDELETE) ) {
             //only put operation over datastore is available. therefore delete is
             //inserting of empty FlowCapableNodeConnector
             flowCapableNodeConnector = new FlowCapableNodeConnectorBuilder().build();
@@ -336,7 +336,7 @@ public class DeviceContextImpl implements DeviceContext {
         final TranslatorKey translatorKey = new TranslatorKey(packetInMessage.getVersion(), PacketReceivedTranslator.class.getName());
         final MessageTranslator<PacketInMessage, PacketReceived> messageTranslator = translatorLibrary.lookupTranslator(translatorKey);
         final PacketReceived packetReceived = messageTranslator.translate(packetInMessage, this, null);
-        //TODO publish to MD-SAL
+        notificationService.publish(packetReceived);
     }
 
     @Override
index 2aab9e865c51f90933336f680667405c73928dbe..40020aee7cc0601a4950e9cacae6da52a6e08f1d 100644 (file)
@@ -146,6 +146,7 @@ public class DeviceManagerImpl implements DeviceManager {
 
         final DeviceContextImpl deviceContext = new DeviceContextImpl(connectionContext, deviceState, dataBroker, hashedWheelTimer);
 
+        deviceContext.setNotificationService(notificationService);
         deviceContext.writeToTransaction(LogicalDatastoreType.OPERATIONAL, deviceState.getNodeInstanceIdentifier(), new NodeBuilder().setId(deviceState.getNodeId()).build());
 
         deviceContext.setTranslatorLibrary(translatorLibrary);