From: michal rehak Date: Thu, 9 Apr 2015 13:59:03 +0000 (+0000) Subject: Merge "Implementing OFPT_PACKET_IN handler" X-Git-Tag: release/lithium~463 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=ba378921857728d4ccb0edd916a9d335cf8fcd82;hp=58c3d605488f955e7ca014090981ba97344021b5;p=openflowplugin.git Merge "Implementing OFPT_PACKET_IN handler" --- diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/OpenFlowPluginProviderImpl.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/OpenFlowPluginProviderImpl.java index 48f9104aa2..ebbb7f77ca 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/OpenFlowPluginProviderImpl.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/OpenFlowPluginProviderImpl.java @@ -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); diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/device/DeviceContextImpl.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/device/DeviceContextImpl.java index 2cb7a22c50..d8fbee6ef9 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/device/DeviceContextImpl.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/device/DeviceContextImpl.java @@ -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 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 messageTranslator = translatorLibrary.lookupTranslator(translatorKey); final PacketReceived packetReceived = messageTranslator.translate(packetInMessage, this, null); - //TODO publish to MD-SAL + notificationService.publish(packetReceived); } @Override diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/device/DeviceManagerImpl.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/device/DeviceManagerImpl.java index 2aab9e865c..40020aee7c 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/device/DeviceManagerImpl.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/device/DeviceManagerImpl.java @@ -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);