.add(createServiceDependency().setService(BridgeConfigurationManager.class).setRequired(true))
.add(createServiceDependency().setService(TenantNetworkManager.class).setRequired(true))
.add(createServiceDependency().setService(SecurityServicesManager.class).setRequired(true))
- .add(createServiceDependency().setService(OvsdbConnectionService.class).setRequired(true))
.add(createServiceDependency().setService(MdsalConsumer.class).setRequired(true))
.add(createServiceDependency().setService(ClassifierProvider.class).setRequired(true))
.add(createServiceDependency().setService(IngressAclProvider.class).setRequired(true))
.setInterface(new String[]{AbstractServiceInstance.class.getName(), ArpProvider.class.getName()},
props3)
.setImplementation(ArpResponderService.class)
- .add(createServiceDependency().setService(OvsdbConnectionService.class).setRequired(true))
.add(createServiceDependency().setService(PipelineOrchestrator.class).setRequired(true))
.add(createServiceDependency().setService(MdsalConsumer.class).setRequired(true)));
.setInterface(new String[]{AbstractServiceInstance.class.getName(),
InboundNatProvider.class.getName()}, props4)
.setImplementation(InboundNatService.class)
- .add(createServiceDependency().setService(OvsdbConnectionService.class).setRequired(true))
.add(createServiceDependency().setService(PipelineOrchestrator.class).setRequired(true))
.add(createServiceDependency().setService(MdsalConsumer.class).setRequired(true)));
.setInterface(new String[]{AbstractServiceInstance.class.getName(), IngressAclProvider.class.getName()},
props5)
.setImplementation(IngressAclService.class)
- .add(createServiceDependency().setService(OvsdbConnectionService.class).setRequired(true))
.add(createServiceDependency().setService(PipelineOrchestrator.class).setRequired(true))
.add(createServiceDependency().setService(MdsalConsumer.class).setRequired(true)));
.setInterface(new String[] {AbstractServiceInstance.class.getName(),
LoadBalancerProvider.class.getName()}, props6)
.setImplementation(LoadBalancerService.class)
- .add(createServiceDependency().setService(OvsdbConnectionService.class).setRequired(true))
.add(createServiceDependency().setService(PipelineOrchestrator.class).setRequired(true))
.add(createServiceDependency().setService(MdsalConsumer.class).setRequired(true)));
.setInterface(new String[] {AbstractServiceInstance.class.getName(), RoutingProvider.class.getName()},
props7)
.setImplementation(RoutingService.class)
- .add(createServiceDependency().setService(OvsdbConnectionService.class).setRequired(true))
.add(createServiceDependency().setService(PipelineOrchestrator.class).setRequired(true))
.add(createServiceDependency().setService(MdsalConsumer.class).setRequired(true)));
.setInterface(new String[] {AbstractServiceInstance.class.getName(),
L3ForwardingProvider.class.getName()}, props8)
.setImplementation(L3ForwardingService.class)
- .add(createServiceDependency().setService(OvsdbConnectionService.class).setRequired(true))
.add(createServiceDependency().setService(PipelineOrchestrator.class).setRequired(true))
.add(createServiceDependency().setService(MdsalConsumer.class).setRequired(true)));
manager.add(createComponent()
.setInterface(AbstractServiceInstance.class.getName(), props9)
.setImplementation(L2RewriteService.class)
- .add(createServiceDependency().setService(OvsdbConnectionService.class).setRequired(true))
.add(createServiceDependency().setService(PipelineOrchestrator.class).setRequired(true))
.add(createServiceDependency().setService(MdsalConsumer.class).setRequired(true)));
L2ForwardingProvider.class.getName()},
props10)
.setImplementation(L2ForwardingService.class)
- .add(createServiceDependency().setService(OvsdbConnectionService.class).setRequired(true))
.add(createServiceDependency().setService(PipelineOrchestrator.class).setRequired(true))
.add(createServiceDependency().setService(MdsalConsumer.class).setRequired(true)));
.setInterface(new String[]{AbstractServiceInstance.class.getName(), EgressAclProvider.class.getName()},
props11)
.setImplementation(EgressAclService.class)
- .add(createServiceDependency().setService(OvsdbConnectionService.class).setRequired(true))
.add(createServiceDependency().setService(PipelineOrchestrator.class).setRequired(true))
.add(createServiceDependency().setService(MdsalConsumer.class).setRequired(true)));
.setInterface(new String[]{AbstractServiceInstance.class.getName(),
OutboundNatProvider.class.getName()}, props12)
.setImplementation(OutboundNatService.class)
- .add(createServiceDependency().setService(OvsdbConnectionService.class).setRequired(true))
.add(createServiceDependency().setService(PipelineOrchestrator.class).setRequired(true))
.add(createServiceDependency().setService(MdsalConsumer.class).setRequired(true)));
}
+ intf.getName() + " on srcNode " + srcNode.getNodeId().getValue());
removeTunnelRules(tunnelType, network.getProviderSegmentationID(),
dst, srcNode, intf, true, isLastInstanceOnNode);
- logger.info("Remove tunnel rules for interface "
- + intf.getName() + " on dstNode " + dstNode.getNodeId().getValue());
- removeTunnelRules(tunnelType, network.getProviderSegmentationID(),
- src, dstNode, intf, false, isLastInstanceOnNode);
+ Node dstBridgeNode = MdsalUtils.getBridgeNode(dstNode, Constants.INTEGRATION_BRIDGE);
+ if(dstBridgeNode != null){
+ logger.info("Remove tunnel rules for interface "
+ + intf.getName() + " on dstNode " + dstNode.getNodeId().getValue());
+ removeTunnelRules(tunnelType, network.getProviderSegmentationID(),
+ src, dstBridgeNode, intf, false, isLastInstanceOnNode);
+ }
} else {
logger.warn("Tunnel end-point configuration missing. Please configure it in "
+ "OpenVSwitch Table. "
import org.opendaylight.ovsdb.openstack.netvirt.api.NodeCacheListener;
import org.opendaylight.ovsdb.openstack.netvirt.api.NodeCacheManager;
import org.opendaylight.ovsdb.openstack.netvirt.api.OutboundNatProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.OvsdbConnectionService;
import org.opendaylight.ovsdb.openstack.netvirt.api.OvsdbInventoryListener;
import org.opendaylight.ovsdb.openstack.netvirt.api.OvsdbInventoryService;
import org.opendaylight.ovsdb.openstack.netvirt.api.RoutingProvider;
.setImplementation(NetworkHandler.class)
.add(createServiceDependency().setService(TenantNetworkManager.class).setRequired(true))
.add(createServiceDependency().setService(BridgeConfigurationManager.class).setRequired(true))
- .add(createServiceDependency().setService(OvsdbConnectionService.class).setRequired(true))
+ .add(createServiceDependency().setService(NodeCacheManager.class).setRequired(true))
.add(createServiceDependency().setService(INeutronNetworkCRUD.class).setRequired(true))
.add(createServiceDependency().setService(EventDispatcher.class).setRequired(true))
.add(createServiceDependency().setService(NeutronL3Adapter.class).setRequired(true)));
.setInterface(new String[]{INeutronPortAware.class.getName(), AbstractHandler.class.getName()},
portHandlerProperties)
.setImplementation(PortHandler.class)
- .add(createServiceDependency().setService(OvsdbConnectionService.class).setRequired(true))
+ .add(createServiceDependency().setService(NodeCacheManager.class).setRequired(true))
.add(createServiceDependency().setService(EventDispatcher.class).setRequired(true))
.add(createServiceDependency().setService(NeutronL3Adapter.class).setRequired(true)));
.add(createServiceDependency().setService(BridgeConfigurationManager.class).setRequired(true))
.add(createServiceDependency().setService(TenantNetworkManager.class).setRequired(true))
.add(createServiceDependency().setService(NetworkingProviderManager.class).setRequired(true))
- .add(createServiceDependency().setService(OvsdbConnectionService.class).setRequired(true))
.add(createServiceDependency().setService(EventDispatcher.class).setRequired(true))
.add(createServiceDependency().setService(NeutronL3Adapter.class).setRequired(true))
.add(createServiceDependency().setService(OvsdbInventoryService.class).setRequired(true))
.setImplementation(NeutronL3Adapter.class)
.add(createServiceDependency().setService(ConfigurationService.class).setRequired(true))
.add(createServiceDependency().setService(TenantNetworkManager.class).setRequired(true))
- .add(createServiceDependency().setService(OvsdbConnectionService.class).setRequired(true))
+ .add(createServiceDependency().setService(NodeCacheManager.class).setRequired(true))
.add(createServiceDependency().setService(INeutronNetworkCRUD.class).setRequired(true))
.add(createServiceDependency().setService(INeutronSubnetCRUD.class).setRequired(true))
.add(createServiceDependency().setService(INeutronPortCRUD.class).setRequired(true))
.setCallbacks("cacheListenerAdded", "cacheListenerRemoved")));
manager.add(createComponent()
- .setInterface(new String[] {OvsdbConnectionService.class.getName(),
- OvsdbInventoryService.class.getName()}, null)
+ .setInterface(new String[] {OvsdbInventoryService.class.getName()}, null)
.setImplementation(OvsdbInventoryServiceImpl.class)
.add(createServiceDependency().setService(OvsdbInventoryListener.class)
.setCallbacks("listenerAdded", "listenerRemoved"))
}
public static boolean isTunnel(OvsdbTerminationPointAugmentation port) {
+ LOG.trace("MdsalUtils#isTunnel: Interface : {}", port);
+
+ if(port.getInterfaceType() == null){
+ LOG.warn("No type found for the interface : {}", port);
+ return false;
+ }
return MdsalHelper.createOvsdbInterfaceType(
port.getInterfaceType()).equals(NetworkHandler.NETWORK_TYPE_VXLAN)
|| MdsalHelper.createOvsdbInterfaceType(
import org.opendaylight.neutron.spi.NeutronNetwork;
import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
import org.opendaylight.ovsdb.openstack.netvirt.api.BridgeConfigurationManager;
-import org.opendaylight.ovsdb.openstack.netvirt.api.OvsdbConnectionService;
+import org.opendaylight.ovsdb.openstack.netvirt.api.NodeCacheManager;
import org.opendaylight.ovsdb.openstack.netvirt.api.TenantNetworkManager;
import org.opendaylight.ovsdb.openstack.netvirt.impl.NeutronL3Adapter;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbTerminationPointAugmentation;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private volatile TenantNetworkManager tenantNetworkManager;
private volatile BridgeConfigurationManager bridgeConfigurationManager;
/* TODO SB_MIGRATION */
- private volatile OvsdbConnectionService connectionService;
+ private volatile NodeCacheManager nodeCacheManager;
private volatile INeutronNetworkCRUD neutronNetworkCache;
private volatile NeutronL3Adapter neutronL3Adapter;
networks = neutronNetworkCache.getAllNetworks();
if (networks.isEmpty()) {
logger.trace("neutronNetworkDeleted: last tenant network, delete tunnel ports...");
- List<Node> nodes = connectionService.getNodes();
+ List<Node> nodes = nodeCacheManager.getNodes();
for (Node node : nodes) {
List<String> phyIfName = bridgeConfigurationManager.getAllPhysicalInterfaceNames(node);
import org.opendaylight.neutron.spi.NeutronPort;
import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
import org.opendaylight.ovsdb.openstack.netvirt.api.Constants;
-import org.opendaylight.ovsdb.openstack.netvirt.api.OvsdbConnectionService;
+import org.opendaylight.ovsdb.openstack.netvirt.api.NodeCacheManager;
import org.opendaylight.ovsdb.openstack.netvirt.impl.NeutronL3Adapter;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbTerminationPointAugmentation;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
static final Logger logger = LoggerFactory.getLogger(PortHandler.class);
// The implementation for each of these services is resolved by the OSGi Service Manager
- private volatile OvsdbConnectionService connectionService;
+ private volatile NodeCacheManager nodeCacheManager;
private volatile NeutronL3Adapter neutronL3Adapter;
/**
logger.debug("Handling neutron delete port " + neutronPort);
neutronL3Adapter.handleNeutronPortEvent(neutronPort, Action.DELETE);
//TODO: Need to implement getNodes
- List<Node> nodes = connectionService.getNodes();
+ List<Node> nodes = nodeCacheManager.getNodes();
for (Node node : nodes) {
try {
List<OvsdbTerminationPointAugmentation> ports = MdsalUtils.getTerminationPointsOfBridge(node);
private volatile BridgeConfigurationManager bridgeConfigurationManager;
private volatile TenantNetworkManager tenantNetworkManager;
private volatile NetworkingProviderManager networkingProviderManager;
- private volatile OvsdbConnectionService connectionService;
private volatile NeutronL3Adapter neutronL3Adapter;
private volatile NodeCacheManager nodeCacheManager = null;
}
private boolean isInterfaceOfInterest(OvsdbTerminationPointAugmentation terminationPoint, List<String> phyIfName) {
- logger.warn("isInterfaceOfInterest: getInterfaceType: {}", terminationPoint.getInterfaceType());
+ logger.trace("SouthboundHandler#isInterfaceOfInterest: Interface : {}", terminationPoint);
+
+ if(terminationPoint.getInterfaceType() == null){
+ logger.warn("No type found for the interface : {}", terminationPoint);
+ return false;
+ }
return (MdsalHelper.createOvsdbInterfaceType(
terminationPoint.getInterfaceType()).equals(NetworkHandler.NETWORK_TYPE_VXLAN)
||
+++ /dev/null
-package org.opendaylight.ovsdb.openstack.netvirt.api;
-
-import java.util.List;
-import java.util.Map;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
-
-/**
- * Created by shague on 4/20/15.
- */
-public interface OvsdbConnectionService {
- public List<Node> getNodes();
- public List<Node> getOvsdbNodes();
- public List<Node> getBridgeNodes();
- public Node getNode(String identifier);
-}
// The implementation for each of these services is resolved by the OSGi Service Manager
private volatile ConfigurationService configurationService;
private volatile TenantNetworkManager tenantNetworkManager;
- private volatile OvsdbConnectionService connectionService;
+ private volatile NodeCacheManager nodeCacheManager;
private volatile INeutronNetworkCRUD neutronNetworkCache;
private volatile INeutronSubnetCRUD neutronSubnetCache;
private volatile INeutronPortCRUD neutronPortCache;
}
final Action action = isDelete ? Action.DELETE : Action.ADD;
- List<Node> nodes = connectionService.getBridgeNodes();
+ List<Node> nodes = nodeCacheManager.getBridgeNodes();
if (nodes.isEmpty()) {
logger.trace("updateL3ForNeutronPort has no nodes to work with");
}
for (Node node : nodes) {
- final Long dpid = getDpid(node);
+ final Long dpid = getDpidForIntegrationBridge(node);
+ if (dpid == null) {
+ continue;
+ }
+
final boolean tenantNetworkPresentInNode =
tenantNetworkManager.isTenantNetworkPresentInNode(node, providerSegmentationId);
for (Neutron_IPs neutronIP : neutronPort.getFixedIPs()) {
subnetIdToRouterInterfaceCache.put(subnet.getSubnetUUID(), destNeutronRouterInterface);
}
- List<Node> nodes = connectionService.getBridgeNodes();
+ List<Node> nodes = nodeCacheManager.getBridgeNodes();
if (nodes.isEmpty()) {
logger.trace("programFlowsForNeutronRouterInterface has no nodes to work with");
}
for (Node node : nodes) {
- final Long dpid = getDpid(node);
+ final Long dpid = getDpidForIntegrationBridge(node);
+ if (dpid == null) {
+ continue;
+ }
+
final Action actionForNode =
tenantNetworkManager.isTenantNetworkPresentInNode(node, destinationSegmentationId) ?
action : Action.DELETE;
}
final Action action = isDelete ? Action.DELETE : Action.ADD;
- List<Node> nodes = connectionService.getBridgeNodes();
+ List<Node> nodes = nodeCacheManager.getBridgeNodes();
if (nodes.isEmpty()) {
logger.trace("programFlowsForFloatingIP has no nodes to work with");
}
for (Node node : nodes) {
- final Long dpid = getDpid(node);
+ final Long dpid = getDpidForIntegrationBridge(node);
+ if (dpid == null) {
+ continue;
+ }
+
final Action actionForNode =
tenantNetworkManager.isTenantNetworkPresentInNode(node, providerSegmentationId) ?
action : Action.DELETE;
return result;
}
- private Long getDpid(Node node) {
- /* TODO SB_MIGRATION */
- // may need to go from OvsdbNode to BridgeNode
- // get integration bridge on this node and then get dpid
- return MdsalUtils.getDataPathId(node);
+ private Long getDpidForIntegrationBridge(Node node) {
+ // Check if node is integration bridge; and only then return its dpid
+ if (MdsalUtils.getBridge(node, configurationService.getIntegrationBridgeName()) != null) {
+ return MdsalUtils.getDataPathId(node);
+ }
+ return null;
}
}
import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ConsumerContext;
import org.opendaylight.controller.sal.binding.api.BindingAwareConsumer;
import org.opendaylight.ovsdb.openstack.netvirt.MdsalUtils;
-import org.opendaylight.ovsdb.openstack.netvirt.api.OvsdbConnectionService;
import org.opendaylight.ovsdb.openstack.netvirt.api.OvsdbInventoryService;
import org.opendaylight.ovsdb.openstack.netvirt.api.OvsdbInventoryListener;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
*
* @author Sam Hague (shague@redhat.com)
*/
-public class OvsdbInventoryServiceImpl implements BindingAwareConsumer,
- OvsdbConnectionService, OvsdbInventoryService {
+public class OvsdbInventoryServiceImpl implements BindingAwareConsumer, OvsdbInventoryService {
private static final Logger LOG = LoggerFactory.getLogger(OvsdbInventoryServiceImpl.class);
private static DataBroker dataBroker = null;
public static Set<OvsdbInventoryListener> getMdsalConsumerListeners () {
return mdsalConsumerListeners;
}
-
- @Override
- public List<Node> getNodes() {
- return null;
- }
-
- @Override
- public List<Node> getOvsdbNodes() {
- return null;
- }
-
- @Override
- public List<Node> getBridgeNodes() {
- return null;
- }
-
- @Override
- public Node getNode(String identifier) {
- return null;
- }
}