import org.opendaylight.netvirt.openstack.netvirt.api.BridgeConfigurationManager;
import org.opendaylight.netvirt.openstack.netvirt.api.NetworkingProviderManager;
import org.opendaylight.netvirt.openstack.netvirt.api.NodeCacheManager;
+import org.opendaylight.netvirt.openstack.netvirt.api.NodeCacheListener;
import org.opendaylight.netvirt.openstack.netvirt.api.TenantNetworkManager;
import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronNetwork;
import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronPort;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronPortCRUD;
import org.opendaylight.netvirt.openstack.netvirt.translator.iaware.INeutronPortAware;
import org.opendaylight.netvirt.openstack.netvirt.api.Constants;
import org.opendaylight.netvirt.openstack.netvirt.api.EventDispatcher;
import org.opendaylight.netvirt.openstack.netvirt.api.Southbound;
-import org.opendaylight.netvirt.openstack.netvirt.impl.DistributedArpService;
import org.opendaylight.netvirt.openstack.netvirt.impl.NeutronL3Adapter;
import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbTerminationPointAugmentation;
/**
* Handle requests for Neutron Port.
*/
-public class PortHandler extends AbstractHandler implements INeutronPortAware, ConfigInterface {
+public class PortHandler extends AbstractHandler implements INeutronPortAware, NodeCacheListener, ConfigInterface {
private static final Logger LOG = LoggerFactory.getLogger(PortHandler.class);
// The implementation for each of these services is resolved by the OSGi Service Manager
private volatile TenantNetworkManager tenantNetworkManager;
private volatile NetworkingProviderManager networkingProviderManager;
private volatile NeutronL3Adapter neutronL3Adapter;
- private volatile DistributedArpService distributedArpService;
private volatile Southbound southbound;
+ private volatile INeutronPortCRUD neutronPortCache;
/**
* Invoked when a port creation is requested
}
}
- distributedArpService.handlePortEvent(neutronPort, Action.ADD);
neutronL3Adapter.handleNeutronPortEvent(neutronPort, Action.ADD);
}
}
private void doNeutronPortUpdated(NeutronPort neutronPort) {
LOG.debug("Handling neutron update port {}", neutronPort);
- distributedArpService.handlePortEvent(neutronPort, Action.UPDATE);
neutronL3Adapter.handleNeutronPortEvent(neutronPort, Action.UPDATE);
}
}
private void doNeutronPortDeleted(NeutronPort neutronPort) {
LOG.debug("Handling neutron delete port {}", neutronPort);
- distributedArpService.handlePortEvent(neutronPort, Action.DELETE);
neutronL3Adapter.handleNeutronPortEvent(neutronPort, Action.DELETE);
//TODO: Need to implement getNodes
return null;
}
+ @Override
+ public void notifyNode(Node node, Action action) {
+ if (action == Action.ADD) {
+ List<NeutronPort> neutronPorts = neutronPortCache.getAllPorts();
+ for (NeutronPort neutronPort : neutronPorts) {
+ LOG.info("in notifyNode, neutronPort {} will be added", neutronPort);
+ neutronPortCreated(neutronPort);
+ }
+ }
+ }
+
/**
* Process the event.
*
public void setDependencies(ServiceReference serviceReference) {
nodeCacheManager =
(NodeCacheManager) ServiceHelper.getGlobalInstance(NodeCacheManager.class, this);
+ nodeCacheManager.cacheListenerAdded(serviceReference, this);
networkingProviderManager =
(NetworkingProviderManager) ServiceHelper.getGlobalInstance(NetworkingProviderManager.class, this);
tenantNetworkManager =
(BridgeConfigurationManager) ServiceHelper.getGlobalInstance(BridgeConfigurationManager.class, this);
neutronL3Adapter =
(NeutronL3Adapter) ServiceHelper.getGlobalInstance(NeutronL3Adapter.class, this);
- distributedArpService =
- (DistributedArpService) ServiceHelper.getGlobalInstance(DistributedArpService.class, this);
southbound =
(Southbound) ServiceHelper.getGlobalInstance(Southbound.class, this);
eventDispatcher =
(EventDispatcher) ServiceHelper.getGlobalInstance(EventDispatcher.class, this);
eventDispatcher.eventHandlerAdded(serviceReference, this);
+
}
@Override
- public void setDependencies(Object impl) {}
+ public void setDependencies(Object impl) {
+ if (impl instanceof INeutronPortCRUD) {
+ neutronPortCache = (INeutronPortCRUD)impl;
+ }
+ }
}