You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ke...@apache.org on 2013/02/26 20:56:40 UTC
git commit: refs/heads/4.1 - CLOUDSTACK-1173: fix the regression
caused by life-cycle management changes
Updated Branches:
refs/heads/4.1 62d7dc9d3 -> df8c7506f
CLOUDSTACK-1173: fix the regression caused by life-cycle management changes
Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/df8c7506
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/df8c7506
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/df8c7506
Branch: refs/heads/4.1
Commit: df8c7506fc7a83c0187223eb712962e27438a9dd
Parents: 62d7dc9
Author: Kelven Yang <ke...@gmail.com>
Authored: Tue Feb 26 11:51:03 2013 -0800
Committer: Kelven Yang <ke...@gmail.com>
Committed: Tue Feb 26 11:51:31 2013 -0800
----------------------------------------------------------------------
.../consoleproxy/ConsoleProxyResource.java | 25 ++++++++++++-
.../src/com/cloud/consoleproxy/ConsoleProxy.java | 29 ++++++++++-----
.../src/com/cloud/cluster/ClusterManagerImpl.java | 5 ++-
.../ExternalLoadBalancerDeviceManagerImpl.java | 3 +-
.../src/com/cloud/network/NetworkManagerImpl.java | 17 +++++----
server/src/com/cloud/network/NetworkModelImpl.java | 7 ++--
.../src/com/cloud/network/NetworkServiceImpl.java | 21 ++---------
.../src/com/cloud/utils/component/AdapterBase.java | 2 +-
.../cloud/utils/component/ComponentContext.java | 2 +-
9 files changed, 66 insertions(+), 45 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/df8c7506/agent/src/com/cloud/agent/resource/consoleproxy/ConsoleProxyResource.java
----------------------------------------------------------------------
diff --git a/agent/src/com/cloud/agent/resource/consoleproxy/ConsoleProxyResource.java b/agent/src/com/cloud/agent/resource/consoleproxy/ConsoleProxyResource.java
index 8a3a271..516430b 100644
--- a/agent/src/com/cloud/agent/resource/consoleproxy/ConsoleProxyResource.java
+++ b/agent/src/com/cloud/agent/resource/consoleproxy/ConsoleProxyResource.java
@@ -26,6 +26,7 @@ import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.net.URL;
import java.net.URLConnection;
+import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
@@ -77,7 +78,7 @@ import com.google.gson.Gson;
* server.
*
*/
-public abstract class ConsoleProxyResource extends ServerResourceBase implements
+public class ConsoleProxyResource extends ServerResourceBase implements
ServerResource {
static final Logger s_logger = Logger.getLogger(ConsoleProxyResource.class);
@@ -489,4 +490,26 @@ public abstract class ConsoleProxyResource extends ServerResourceBase implements
}
}
}
+
+ @Override
+ public void setName(String name) {
+ }
+
+ @Override
+ public void setConfigParams(Map<String, Object> params) {
+ }
+
+ @Override
+ public Map<String, Object> getConfigParams() {
+ return new HashMap<String, Object>();
+ }
+
+ @Override
+ public int getRunLevel() {
+ return 0;
+ }
+
+ @Override
+ public void setRunLevel(int level) {
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/df8c7506/console-proxy/src/com/cloud/consoleproxy/ConsoleProxy.java
----------------------------------------------------------------------
diff --git a/console-proxy/src/com/cloud/consoleproxy/ConsoleProxy.java b/console-proxy/src/com/cloud/consoleproxy/ConsoleProxy.java
index a722d83..b5c2989 100644
--- a/console-proxy/src/com/cloud/consoleproxy/ConsoleProxy.java
+++ b/console-proxy/src/com/cloud/consoleproxy/ConsoleProxy.java
@@ -425,23 +425,32 @@ public class ConsoleProxy {
synchronized (connectionMap) {
ConsoleProxyClient viewer = connectionMap.get(clientKey);
if (viewer == null) {
+ authenticationExternally(param);
viewer = new ConsoleProxyVncClient();
viewer.initClient(param);
connectionMap.put(clientKey, viewer);
s_logger.info("Added viewer object " + viewer);
reportLoadChange = true;
- } else if (!viewer.isFrontEndAlive()) {
- s_logger.info("The rfb thread died, reinitializing the viewer " + viewer);
- viewer.initClient(param);
- } else if (!param.getClientHostPassword().equals(viewer.getClientHostPassword())) {
- s_logger.warn("Bad sid detected(VNC port may be reused). sid in session: "
- + viewer.getClientHostPassword() + ", sid in request: " + param.getClientHostPassword());
- viewer.initClient(param);
- } else {
- if(ajaxSession == null || ajaxSession.isEmpty())
+ } else {
+ // protected against malicous attack by modifying URL content
+ if(ajaxSession != null) {
+ long ajaxSessionIdFromUrl = Long.parseLong(ajaxSession);
+ if(ajaxSessionIdFromUrl != viewer.getAjaxSessionId())
+ throw new AuthenticationException ("Cannot use the existing viewer " +
+ viewer + ": modified AJAX session id");
+ }
+
+ if(param.getClientHostPassword() == null || param.getClientHostPassword().isEmpty() || !param.getClientHostPassword().equals(viewer.getClientHostPassword()))
+ throw new AuthenticationException ("Cannot use the existing viewer " +
+ viewer + ": bad sid");
+
+ if(!viewer.isFrontEndAlive()) {
authenticationExternally(param);
- }
+ viewer.initClient(param);
+ reportLoadChange = true;
+ }
+ }
if(reportLoadChange) {
ConsoleProxyClientStatsCollector statsCollector = getStatsCollector();
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/df8c7506/server/src/com/cloud/cluster/ClusterManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/cluster/ClusterManagerImpl.java b/server/src/com/cloud/cluster/ClusterManagerImpl.java
index 45d9dca..27e0e03 100755
--- a/server/src/com/cloud/cluster/ClusterManagerImpl.java
+++ b/server/src/com/cloud/cluster/ClusterManagerImpl.java
@@ -74,6 +74,7 @@ import com.cloud.utils.DateUtil;
import com.cloud.utils.NumbersUtil;
import com.cloud.utils.Profiler;
import com.cloud.utils.PropertiesUtil;
+import com.cloud.utils.component.ComponentContext;
import com.cloud.utils.component.ComponentLifecycle;
import com.cloud.utils.component.ManagerBase;
import com.cloud.utils.concurrency.NamedThreadFactory;
@@ -364,11 +365,11 @@ public class ClusterManagerImpl extends ManagerBase implements ClusterManager {
try {
// schedule a scan task immediately
- if (_agentMgr instanceof ClusteredAgentManagerImpl) {
+ if (ComponentContext.getTargetObject(_agentMgr) instanceof ClusteredAgentManagerImpl) {
if (s_logger.isDebugEnabled()) {
s_logger.debug("Received notification as part of addHost command to start a host scan task");
}
- ClusteredAgentManagerImpl clusteredAgentMgr = (ClusteredAgentManagerImpl)_agentMgr;
+ ClusteredAgentManagerImpl clusteredAgentMgr = (ClusteredAgentManagerImpl)ComponentContext.getTargetObject(_agentMgr);
clusteredAgentMgr.scheduleHostScanTask();
}
} catch (Exception e) {
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/df8c7506/server/src/com/cloud/network/ExternalLoadBalancerDeviceManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/ExternalLoadBalancerDeviceManagerImpl.java b/server/src/com/cloud/network/ExternalLoadBalancerDeviceManagerImpl.java
index bcefccc..8856881 100644
--- a/server/src/com/cloud/network/ExternalLoadBalancerDeviceManagerImpl.java
+++ b/server/src/com/cloud/network/ExternalLoadBalancerDeviceManagerImpl.java
@@ -109,6 +109,7 @@ import com.cloud.user.dao.AccountDao;
import com.cloud.user.dao.UserStatisticsDao;
import com.cloud.utils.NumbersUtil;
import com.cloud.utils.component.AdapterBase;
+import com.cloud.utils.component.ComponentContext;
import com.cloud.utils.db.DB;
import com.cloud.utils.db.GlobalLock;
import com.cloud.utils.db.Transaction;
@@ -1102,7 +1103,7 @@ public abstract class ExternalLoadBalancerDeviceManagerImpl extends AdapterBase
}
NetworkElement element = _networkModel.getElementImplementingProvider(providers.get(0).getName());
- if (!(element instanceof IpDeployer)) {
+ if (!(ComponentContext.getTargetObject(element) instanceof IpDeployer)) {
s_logger.error("The firewall provider for network " + network.getName() + " don't have ability to deploy IP address!");
return null;
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/df8c7506/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 9599916..fa5dd46 100755
--- a/server/src/com/cloud/network/NetworkManagerImpl.java
+++ b/server/src/com/cloud/network/NetworkManagerImpl.java
@@ -129,6 +129,7 @@ import com.cloud.utils.Journal;
import com.cloud.utils.NumbersUtil;
import com.cloud.utils.Pair;
import com.cloud.utils.component.AdapterBase;
+import com.cloud.utils.component.ComponentContext;
import com.cloud.utils.component.ManagerBase;
import com.cloud.utils.concurrency.NamedThreadFactory;
import com.cloud.utils.db.*;
@@ -537,10 +538,10 @@ public class NetworkManagerImpl extends ManagerBase implements NetworkManager, L
}
IpDeployer deployer = null;
NetworkElement element = _networkModel.getElementImplementingProvider(provider.getName());
- if (!(element instanceof IpDeployingRequester)) {
+ if (!(ComponentContext.getTargetObject(element) instanceof IpDeployingRequester)) {
throw new CloudRuntimeException("Element " + element + " is not a IpDeployingRequester!");
}
- deployer = ((IpDeployingRequester)element).getIpDeployer(network);
+ deployer = ((IpDeployingRequester)ComponentContext.getTargetObject(element)).getIpDeployer(network);
if (deployer == null) {
throw new CloudRuntimeException("Fail to get ip deployer for element: " + element);
}
@@ -1520,13 +1521,13 @@ public class NetworkManagerImpl extends ManagerBase implements NetworkManager, L
if (vmProfile.getType() == Type.User && element.getProvider() != null) {
if (_networkModel.areServicesSupportedInNetwork(network.getId(), Service.Dhcp) &&
_networkModel.isProviderSupportServiceInNetwork(network.getId(), Service.Dhcp, element.getProvider()) &&
- (element instanceof DhcpServiceProvider)) {
+ (ComponentContext.getTargetObject(element) instanceof DhcpServiceProvider)) {
DhcpServiceProvider sp = (DhcpServiceProvider) element;
sp.addDhcpEntry(network, profile, vmProfile, dest, context);
}
if (_networkModel.areServicesSupportedInNetwork(network.getId(), Service.UserData) &&
_networkModel.isProviderSupportServiceInNetwork(network.getId(), Service.UserData, element.getProvider()) &&
- (element instanceof UserDataServiceProvider)) {
+ (ComponentContext.getTargetObject(element) instanceof UserDataServiceProvider)) {
UserDataServiceProvider sp = (UserDataServiceProvider) element;
sp.addPasswordAndUserdata(network, profile, vmProfile, dest, context);
}
@@ -3575,15 +3576,15 @@ public class NetworkManagerImpl extends ManagerBase implements NetworkManager, L
@Override
public StaticNatServiceProvider getStaticNatProviderForNetwork(Network network) {
NetworkElement element = getElementForServiceInNetwork(network, Service.StaticNat);
- assert element instanceof StaticNatServiceProvider;
- return (StaticNatServiceProvider)element;
+ assert ComponentContext.getTargetObject(element) instanceof StaticNatServiceProvider;
+ return (StaticNatServiceProvider)ComponentContext.getTargetObject(element);
}
@Override
public LoadBalancingServiceProvider getLoadBalancingProviderForNetwork(Network network) {
NetworkElement element = getElementForServiceInNetwork(network, Service.Lb);
- assert element instanceof LoadBalancingServiceProvider;
- return ( LoadBalancingServiceProvider)element;
+ assert ComponentContext.getTargetObject(element) instanceof LoadBalancingServiceProvider;
+ return ( LoadBalancingServiceProvider)ComponentContext.getTargetObject(element);
}
@Override
public boolean isNetworkInlineMode(Network network) {
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/df8c7506/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 7b3717a..189382e 100644
--- a/server/src/com/cloud/network/NetworkModelImpl.java
+++ b/server/src/com/cloud/network/NetworkModelImpl.java
@@ -92,6 +92,7 @@ import com.cloud.user.Account;
import com.cloud.user.DomainManager;
import com.cloud.user.dao.AccountDao;
import com.cloud.utils.component.AdapterBase;
+import com.cloud.utils.component.ComponentContext;
import com.cloud.utils.component.Manager;
import com.cloud.utils.component.ManagerBase;
import com.cloud.utils.db.DB;
@@ -395,9 +396,9 @@ public class NetworkModelImpl extends ManagerBase implements NetworkModel {
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 (ComponentContext.getTargetObject(oldElement) instanceof IpDeployingRequester && ComponentContext.getTargetObject(newElement) instanceof IpDeployingRequester) {
+ IpDeployer oldIpDeployer = ((IpDeployingRequester)ComponentContext.getTargetObject(oldElement)).getIpDeployer(network);
+ IpDeployer newIpDeployer = ((IpDeployingRequester)ComponentContext.getTargetObject(newElement)).getIpDeployer(network);
if (!oldIpDeployer.getProvider().getName().equals(newIpDeployer.getProvider().getName())) {
throw new InvalidParameterException("There would be multiple providers for IP " + publicIp.getAddress() + "!");
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/df8c7506/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 b0aeffe..f679e13 100755
--- a/server/src/com/cloud/network/NetworkServiceImpl.java
+++ b/server/src/com/cloud/network/NetworkServiceImpl.java
@@ -1938,10 +1938,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService {
addDefaultSecurityGroupProviderToPhysicalNetwork(pNetwork.getId());
// add VPCVirtualRouter as the defualt network service provider
- addDefaultVpcVirtualRouterToPhysicalNetwork(pNetwork.getId());
-
- // add baremetal pxe/dhcp provider to the physical network
- addDefaultBaremetalProvidersToPhysicalNetwork(pNetwork.getId());
+ addDefaultVpcVirtualRouterToPhysicalNetwork(pNetwork.getId());
txn.commit();
return pNetwork;
@@ -2747,22 +2744,10 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService {
throw new CloudRuntimeException("Unable to find the Network Element implementing the VirtualRouter Provider");
}
- VirtualRouterElement element = ComponentContext.getTargetObject(networkElement);
+ VirtualRouterElement element = (VirtualRouterElement)networkElement;
element.addElement(nsp.getId(), VirtualRouterProviderType.VirtualRouter);
return nsp;
- }
-
-
- private PhysicalNetworkServiceProvider addDefaultBaremetalProvidersToPhysicalNetwork(long physicalNetworkId) {
- PhysicalNetworkVO pvo = _physicalNetworkDao.findById(physicalNetworkId);
- DataCenterVO dvo = _dcDao.findById(pvo.getDataCenterId());
- if (dvo.getNetworkType() == NetworkType.Basic) {
- addProviderToPhysicalNetwork(physicalNetworkId, "BaremetalDhcpProvider", null, null);
- addProviderToPhysicalNetwork(physicalNetworkId, "BaremetalPxeProvider", null, null);
- addProviderToPhysicalNetwork(physicalNetworkId, "BaremetaUserdataProvider", null, null);
- }
- return null;
}
protected PhysicalNetworkServiceProvider addDefaultVpcVirtualRouterToPhysicalNetwork(long physicalNetworkId) {
@@ -2775,7 +2760,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService {
throw new CloudRuntimeException("Unable to find the Network Element implementing the VPCVirtualRouter Provider");
}
- VpcVirtualRouterElement element = ComponentContext.getTargetObject(networkElement);
+ VpcVirtualRouterElement element = (VpcVirtualRouterElement)networkElement;
element.addElement(nsp.getId(), VirtualRouterProviderType.VPCVirtualRouter);
return nsp;
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/df8c7506/utils/src/com/cloud/utils/component/AdapterBase.java
----------------------------------------------------------------------
diff --git a/utils/src/com/cloud/utils/component/AdapterBase.java b/utils/src/com/cloud/utils/component/AdapterBase.java
index 405762d..a8f4f46 100644
--- a/utils/src/com/cloud/utils/component/AdapterBase.java
+++ b/utils/src/com/cloud/utils/component/AdapterBase.java
@@ -27,7 +27,7 @@ public class AdapterBase extends ComponentLifecycleBase implements Adapter {
public static <T extends Adapter> T getAdapterByName(List<T> adapters, String name) {
for(T adapter : adapters) {
if(adapter.getName() != null && adapter.getName().equalsIgnoreCase(name))
- return adapter;
+ return ComponentContext.getTargetObject(adapter);
}
return null;
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/df8c7506/utils/src/com/cloud/utils/component/ComponentContext.java
----------------------------------------------------------------------
diff --git a/utils/src/com/cloud/utils/component/ComponentContext.java b/utils/src/com/cloud/utils/component/ComponentContext.java
index e598b85..82fe90d 100644
--- a/utils/src/com/cloud/utils/component/ComponentContext.java
+++ b/utils/src/com/cloud/utils/component/ComponentContext.java
@@ -214,7 +214,7 @@ public class ComponentContext implements ApplicationContextAware {
return (T)instance;
}
-
+
public static <T> T inject(Class<T> clz) {
T instance = s_appContext.getAutowireCapableBeanFactory().createBean(clz);
return instance;