package org.opendaylight.ovsdb.openstack.netvirt;
-import org.opendaylight.controller.networkconfig.neutron.INeutronLoadBalancerAware;
-import org.opendaylight.controller.networkconfig.neutron.INeutronLoadBalancerCRUD;
-import org.opendaylight.controller.networkconfig.neutron.INeutronLoadBalancerPoolCRUD;
-import org.opendaylight.controller.networkconfig.neutron.INeutronPortCRUD;
-import org.opendaylight.controller.networkconfig.neutron.NeutronLoadBalancer;
-import org.opendaylight.controller.networkconfig.neutron.NeutronLoadBalancerPool;
-import org.opendaylight.controller.networkconfig.neutron.NeutronLoadBalancerPoolMember;
+import org.opendaylight.neutron.spi.INeutronLoadBalancerAware;
+import org.opendaylight.neutron.spi.INeutronLoadBalancerCRUD;
+import org.opendaylight.neutron.spi.INeutronLoadBalancerPoolCRUD;
+import org.opendaylight.neutron.spi.INeutronNetworkCRUD;
+import org.opendaylight.neutron.spi.INeutronPortCRUD;
+import org.opendaylight.neutron.spi.INeutronSubnetCRUD;
+import org.opendaylight.neutron.spi.NeutronLoadBalancer;
+import org.opendaylight.neutron.spi.NeutronLoadBalancerPool;
+import org.opendaylight.neutron.spi.NeutronLoadBalancerPoolMember;
import org.opendaylight.controller.sal.core.Node;
import org.opendaylight.controller.sal.core.NodeConnector;
import org.opendaylight.controller.sal.core.Property;
private volatile INeutronLoadBalancerCRUD neutronLBCache;
private volatile INeutronLoadBalancerPoolCRUD neutronLBPoolCache;
private volatile INeutronPortCRUD neutronPortsCache;
+ private volatile INeutronNetworkCRUD neutronNetworkCache;
+ private volatile INeutronSubnetCRUD neutronSubnetCache;
private volatile LoadBalancerProvider loadBalancerProvider;
private volatile ISwitchManager switchManager;
} else if (this.switchManager.getNodes().size() == 0) {
logger.debug("Noop with LB {} creation because no nodes available.", lbConfig.getName());
} else {
- for (Node node: this.switchManager.getNodes())
+ for (Node node: this.switchManager.getNodes()) {
loadBalancerProvider.programLoadBalancerRules(node, lbConfig, Action.ADD);
+ }
}
}
} else if (this.switchManager.getNodes().size() == 0) {
logger.debug("Noop with LB {} deletion because no nodes available.", lbConfig.getName());
} else {
- for (Node node: this.switchManager.getNodes())
+ for (Node node: this.switchManager.getNodes()) {
loadBalancerProvider.programLoadBalancerRules(node, lbConfig, Action.DELETE);
+ }
}
}
String loadBalancerName = neutronLB.getLoadBalancerName();
String loadBalancerVip = neutronLB.getLoadBalancerVipAddress();
String loadBalancerSubnetID = neutronLB.getLoadBalancerVipSubnetID();
+
LoadBalancerConfiguration lbConfig = new LoadBalancerConfiguration(loadBalancerName, loadBalancerVip);
- lbConfig.setVmac(NeutronCacheUtils.getMacAddress(neutronPortsCache, loadBalancerVip));
+ Map.Entry<String,String> providerInfo = NeutronCacheUtils.getProviderInformation(neutronNetworkCache, neutronSubnetCache, loadBalancerSubnetID);
+ if (providerInfo != null) {
+ lbConfig.setProviderNetworkType(providerInfo.getKey());
+ lbConfig.setProviderSegmentationId(providerInfo.getValue());
+ }
+ lbConfig.setVmac(NeutronCacheUtils.getMacAddress(neutronPortsCache, loadBalancerSubnetID, loadBalancerVip));
String memberID, memberIP, memberMAC, memberProtocol, memberSubnetID;
Integer memberPort;
for (NeutronLoadBalancerPool neutronLBPool: neutronLBPoolCache.getAllNeutronLoadBalancerPools()) {
List<NeutronLoadBalancerPoolMember> members = neutronLBPool.getLoadBalancerPoolMembers();
memberProtocol = neutronLBPool.getLoadBalancerPoolProtocol();
- if (memberProtocol == null)
+ if (memberProtocol == null) {
continue;
+ }
if (!(memberProtocol.equalsIgnoreCase(LoadBalancerConfiguration.PROTOCOL_TCP) ||
memberProtocol.equalsIgnoreCase(LoadBalancerConfiguration.PROTOCOL_HTTP) ||
- memberProtocol.equalsIgnoreCase(LoadBalancerConfiguration.PROTOCOL_HTTPS)))
+ memberProtocol.equalsIgnoreCase(LoadBalancerConfiguration.PROTOCOL_HTTPS))) {
continue;
+ }
for (NeutronLoadBalancerPoolMember neutronLBPoolMember: members) {
memberAdminStateIsUp = neutronLBPoolMember.getPoolMemberAdminStateIsUp();
memberSubnetID = neutronLBPoolMember.getPoolMemberSubnetID();
- if (memberSubnetID == null || memberAdminStateIsUp == null)
+ if (memberSubnetID == null || memberAdminStateIsUp == null) {
continue;
+ }
else if (memberSubnetID.equals(loadBalancerSubnetID) && memberAdminStateIsUp.booleanValue()) {
memberID = neutronLBPoolMember.getPoolMemberID();
memberIP = neutronLBPoolMember.getPoolMemberAddress();
logger.debug("Neutron LB pool member details incomplete: {}", neutronLBPoolMember);
continue;
}
- memberMAC = NeutronCacheUtils.getMacAddress(neutronPortsCache, memberIP);
- if (memberMAC == null)
+ memberMAC = NeutronCacheUtils.getMacAddress(neutronPortsCache, memberSubnetID, memberIP);
+ if (memberMAC == null) {
continue;
+ }
lbConfig.addMember(memberID, memberIP, memberMAC, memberProtocol, memberPort);
}
}
for (NeutronLoadBalancer neutronLB: neutronLBCache.getAllNeutronLoadBalancers()) {
LoadBalancerConfiguration lbConfig = extractLBConfiguration(neutronLB);
- if (!lbConfig.isValid())
+ if (!lbConfig.isValid()) {
logger.debug("Neutron LB configuration invalid for {} ", lbConfig.getName());
- else {
- if (type.equals(UpdateType.ADDED))
- loadBalancerProvider.programLoadBalancerRules(node, lbConfig, Action.ADD);
+ } else {
+ if (type.equals(UpdateType.ADDED)) {
+ loadBalancerProvider.programLoadBalancerRules(node, lbConfig, Action.ADD);
/* When node disappears, we do nothing for now. Making a call to
* loadBalancerProvider.programLoadBalancerRules(node, lbConfig, Action.DELETE)
* can lead to TransactionCommitFailedException. Similarly when node is changed,
* because of remove followed by add, we do nothing.
*/
- else //(type.equals(UpdateType.REMOVED) || type.equals(UpdateType.CHANGED))
- continue;
+
+ //(type.equals(UpdateType.REMOVED) || type.equals(UpdateType.CHANGED))
+ } else {
+ continue;
+ }
}
}
}