You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by wi...@apache.org on 2013/02/14 20:57:52 UTC
[3/50] [abbrv] git commit: refs/heads/qemu-img - CLOUDSTACK-1242: Fix
inline mode
CLOUDSTACK-1242: Fix inline mode
Network refactor dropped many inline mode codes. I've added at least part of
them back. Now I can create LB rule for inline mode.
Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/2776ad14
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/2776ad14
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/2776ad14
Branch: refs/heads/qemu-img
Commit: 2776ad14c8d5c090956867a68473ce28316e0286
Parents: 06a733a
Author: Sheng Yang <sh...@citrix.com>
Authored: Tue Feb 12 20:09:44 2013 -0800
Committer: Sheng Yang <sh...@citrix.com>
Committed: Tue Feb 12 20:27:26 2013 -0800
----------------------------------------------------------------------
.../src/com/cloud/network/NetworkManagerImpl.java | 9 +++++--
server/src/com/cloud/network/NetworkModelImpl.java | 17 ++++++++++++--
.../src/com/cloud/network/NetworkServiceImpl.java | 12 ++++++++++
3 files changed, 32 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/2776ad14/server/src/com/cloud/network/NetworkManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/NetworkManagerImpl.java b/server/src/com/cloud/network/NetworkManagerImpl.java
index 7a6ac27..f586865 100755
--- a/server/src/com/cloud/network/NetworkManagerImpl.java
+++ b/server/src/com/cloud/network/NetworkManagerImpl.java
@@ -98,6 +98,7 @@ import com.cloud.network.dao.PhysicalNetworkVO;
import com.cloud.network.dao.UserIpv6AddressDao;
import com.cloud.network.element.DhcpServiceProvider;
import com.cloud.network.element.IpDeployer;
+import com.cloud.network.element.IpDeployingRequester;
import com.cloud.network.element.LoadBalancingServiceProvider;
import com.cloud.network.element.NetworkElement;
import com.cloud.network.element.StaticNatServiceProvider;
@@ -536,9 +537,11 @@ public class NetworkManagerImpl extends ManagerBase implements NetworkManager, L
}
IpDeployer deployer = null;
NetworkElement element = _networkModel.getElementImplementingProvider(provider.getName());
- if (element instanceof IpDeployer) {
- deployer = (IpDeployer) element;
- } else {
+ if (!(element instanceof IpDeployingRequester)) {
+ throw new CloudRuntimeException("Element " + element + " is not a IpDeployingRequester!");
+ }
+ deployer = ((IpDeployingRequester)element).getIpDeployer(network);
+ if (deployer == null) {
throw new CloudRuntimeException("Fail to get ip deployer for element: " + element);
}
Set<Service> services = new HashSet<Service>();
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/2776ad14/server/src/com/cloud/network/NetworkModelImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/NetworkModelImpl.java b/server/src/com/cloud/network/NetworkModelImpl.java
index ce48e84..ca7a900 100644
--- a/server/src/com/cloud/network/NetworkModelImpl.java
+++ b/server/src/com/cloud/network/NetworkModelImpl.java
@@ -75,6 +75,8 @@ import com.cloud.network.dao.PhysicalNetworkTrafficTypeDao;
import com.cloud.network.dao.PhysicalNetworkTrafficTypeVO;
import com.cloud.network.dao.PhysicalNetworkVO;
import com.cloud.network.dao.UserIpv6AddressDao;
+import com.cloud.network.element.IpDeployer;
+import com.cloud.network.element.IpDeployingRequester;
import com.cloud.network.element.NetworkElement;
import com.cloud.network.element.UserDataServiceProvider;
import com.cloud.network.rules.FirewallRule.Purpose;
@@ -390,9 +392,18 @@ public class NetworkModelImpl extends ManagerBase implements NetworkModel {
throw new InvalidParameterException("There is no new provider for IP " + publicIp.getAddress() + " of service " + service.getName() + "!");
}
Provider newProvider = (Provider) newProviders.toArray()[0];
- if (!oldProvider.equals(newProvider)) {
- throw new InvalidParameterException("There would be multiple providers for IP " + publicIp.getAddress() + "!");
- }
+ Network network = _networksDao.findById(networkId);
+ NetworkElement oldElement = getElementImplementingProvider(oldProvider.getName());
+ NetworkElement newElement = getElementImplementingProvider(newProvider.getName());
+ if (oldElement instanceof IpDeployingRequester && newElement instanceof IpDeployingRequester) {
+ IpDeployer oldIpDeployer = ((IpDeployingRequester)oldElement).getIpDeployer(network);
+ IpDeployer newIpDeployer = ((IpDeployingRequester)newElement).getIpDeployer(network);
+ if (!oldIpDeployer.getProvider().getName().equals(newIpDeployer.getProvider().getName())) {
+ throw new InvalidParameterException("There would be multiple providers for IP " + publicIp.getAddress() + "!");
+ }
+ } else {
+ throw new InvalidParameterException("Ip cannot be applied for new provider!");
+ }
return true;
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/2776ad14/server/src/com/cloud/network/NetworkServiceImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/NetworkServiceImpl.java b/server/src/com/cloud/network/NetworkServiceImpl.java
index 050a1fe..70f0fa8 100755
--- a/server/src/com/cloud/network/NetworkServiceImpl.java
+++ b/server/src/com/cloud/network/NetworkServiceImpl.java
@@ -333,6 +333,18 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService {
private boolean canIpsUseOffering(List<PublicIp> publicIps, long offeringId) {
Map<PublicIp, Set<Service>> ipToServices = getIpToServices(publicIps, false, true);
Map<Service, Set<Provider>> serviceToProviders = _networkModel.getNetworkOfferingServiceProvidersMap(offeringId);
+ NetworkOfferingVO offering = _networkOfferingDao.findById(offeringId);
+ //For inline mode checking, using firewall provider for LB instead, because public ip would apply on firewall provider
+ if (offering.isInline()) {
+ Provider firewallProvider = null;
+ if (serviceToProviders.containsKey(Service.Firewall)) {
+ firewallProvider = (Provider)serviceToProviders.get(Service.Firewall).toArray()[0];
+ }
+ Set<Provider> p = new HashSet<Provider>();
+ p.add(firewallProvider);
+ serviceToProviders.remove(Service.Lb);
+ serviceToProviders.put(Service.Lb, p);
+ }
for (PublicIp ip : ipToServices.keySet()) {
Set<Service> services = ipToServices.get(ip);
Provider provider = null;