diff --git a/client/tomcatconf/componentContext.xml.in b/client/tomcatconf/componentContext.xml.in
index d6ed25a3645..782dfe080e2 100644
--- a/client/tomcatconf/componentContext.xml.in
+++ b/client/tomcatconf/componentContext.xml.in
@@ -32,11 +32,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/engine/storage/src/org/apache/cloudstack/storage/datastore/provider/DataStoreProviderManagerImpl.java b/engine/storage/src/org/apache/cloudstack/storage/datastore/provider/DataStoreProviderManagerImpl.java
index 1276825acbc..2f6bd6cd5bc 100644
--- a/engine/storage/src/org/apache/cloudstack/storage/datastore/provider/DataStoreProviderManagerImpl.java
+++ b/engine/storage/src/org/apache/cloudstack/storage/datastore/provider/DataStoreProviderManagerImpl.java
@@ -56,8 +56,10 @@ public class DataStoreProviderManagerImpl implements DataStoreProviderManager {
@Override
public boolean configure(String name, Map params)
- throws ConfigurationException {
- //TODO: hold global lock
+ throws ConfigurationException {
+
+/*
+ //TODO: hold global lock
List providerVos = providerDao.listAll();
for (DataStoreProvider provider : providers) {
boolean existingProvider = false;
@@ -82,6 +84,7 @@ public class DataStoreProviderManagerImpl implements DataStoreProviderManager {
provider.configure(params);
providerMap.put(uuid, provider);
}
+*/
return true;
}
diff --git a/server/src/com/cloud/agent/manager/AgentManagerImpl.java b/server/src/com/cloud/agent/manager/AgentManagerImpl.java
index 26370d75bff..364f8fb6dce 100755
--- a/server/src/com/cloud/agent/manager/AgentManagerImpl.java
+++ b/server/src/com/cloud/agent/manager/AgentManagerImpl.java
@@ -140,7 +140,6 @@ import edu.emory.mathcs.backport.java.util.Collections;
* ping.interval before announcing an agent has timed out | float | 2.0x || || router.stats.interval | interval to
* report router statistics | seconds | 300s || * }
**/
-@Component
@Local(value = { AgentManager.class })
public class AgentManagerImpl implements AgentManager, HandlerFactory, Manager {
private static final Logger s_logger = Logger.getLogger(AgentManagerImpl.class);
diff --git a/server/src/com/cloud/agent/manager/ClusteredAgentManagerImpl.java b/server/src/com/cloud/agent/manager/ClusteredAgentManagerImpl.java
index 25c71687bed..c33e0e13442 100755
--- a/server/src/com/cloud/agent/manager/ClusteredAgentManagerImpl.java
+++ b/server/src/com/cloud/agent/manager/ClusteredAgentManagerImpl.java
@@ -88,8 +88,6 @@ import com.cloud.utils.exception.CloudRuntimeException;
import com.cloud.utils.nio.Link;
import com.cloud.utils.nio.Task;
-@Component
-@Primary
@Local(value = { AgentManager.class, ClusteredAgentRebalanceService.class })
public class ClusteredAgentManagerImpl extends AgentManagerImpl implements ClusterManagerListener, ClusteredAgentRebalanceService {
final static Logger s_logger = Logger.getLogger(ClusteredAgentManagerImpl.class);
@@ -117,8 +115,6 @@ public class ClusteredAgentManagerImpl extends AgentManagerImpl implements Clust
// @com.cloud.utils.component.Inject(adapter = AgentLoadBalancerPlanner.class)
@Inject protected List _lbPlanners;
- @Inject
- protected AgentManager _agentMgr;
@Inject ConfigurationDao _configDao;
protected ClusteredAgentManagerImpl() {
diff --git a/server/src/com/cloud/baremetal/BareMetalVmManagerImpl.java b/server/src/com/cloud/baremetal/BareMetalVmManagerImpl.java
index 7ddfe06eb07..19f8418237d 100755
--- a/server/src/com/cloud/baremetal/BareMetalVmManagerImpl.java
+++ b/server/src/com/cloud/baremetal/BareMetalVmManagerImpl.java
@@ -105,8 +105,6 @@ import com.cloud.vm.VirtualMachineName;
import com.cloud.vm.VirtualMachineProfile;
import com.cloud.vm.VirtualMachineProfile.Param;
-@Component
-@Primary
@Local(value={BareMetalVmManager.class, BareMetalVmService.class})
public class BareMetalVmManagerImpl extends UserVmManagerImpl implements BareMetalVmManager, BareMetalVmService, Manager,
StateListener {
diff --git a/server/src/com/cloud/cluster/ClusterManagerImpl.java b/server/src/com/cloud/cluster/ClusterManagerImpl.java
index f71a8665951..1ad98e8ef7e 100755
--- a/server/src/com/cloud/cluster/ClusterManagerImpl.java
+++ b/server/src/com/cloud/cluster/ClusterManagerImpl.java
@@ -88,8 +88,6 @@ import com.cloud.utils.mgmt.JmxUtil;
import com.cloud.utils.net.NetUtils;
import com.google.gson.Gson;
-@Component
-@Primary
@Local(value = { ClusterManager.class })
public class ClusterManagerImpl implements ClusterManager {
private static final Logger s_logger = Logger.getLogger(ClusterManagerImpl.class);
diff --git a/server/src/com/cloud/cluster/DummyClusterManagerImpl.java b/server/src/com/cloud/cluster/DummyClusterManagerImpl.java
index 9c8aef4e825..ea4d9510cf5 100755
--- a/server/src/com/cloud/cluster/DummyClusterManagerImpl.java
+++ b/server/src/com/cloud/cluster/DummyClusterManagerImpl.java
@@ -32,7 +32,6 @@ import com.cloud.host.Status.Event;
import com.cloud.utils.exception.CloudRuntimeException;
import com.cloud.utils.net.MacAddress;
-@Component
@Local(value={ClusterManager.class})
public class DummyClusterManagerImpl implements ClusterManager {
private static final Logger s_logger = Logger.getLogger(DummyClusterManagerImpl.class);
diff --git a/server/src/com/cloud/consoleproxy/AgentBasedConsoleProxyManager.java b/server/src/com/cloud/consoleproxy/AgentBasedConsoleProxyManager.java
index a2399977ab0..15aa9f1906c 100755
--- a/server/src/com/cloud/consoleproxy/AgentBasedConsoleProxyManager.java
+++ b/server/src/com/cloud/consoleproxy/AgentBasedConsoleProxyManager.java
@@ -62,7 +62,6 @@ import com.cloud.vm.dao.ConsoleProxyDao;
import com.cloud.vm.dao.UserVmDao;
import com.cloud.vm.dao.VMInstanceDao;
-@Component
@Local(value = { ConsoleProxyManager.class })
public class AgentBasedConsoleProxyManager implements ConsoleProxyManager, VirtualMachineGuru, AgentHook {
private static final Logger s_logger = Logger.getLogger(AgentBasedConsoleProxyManager.class);
diff --git a/server/src/com/cloud/consoleproxy/AgentBasedStandaloneConsoleProxyManager.java b/server/src/com/cloud/consoleproxy/AgentBasedStandaloneConsoleProxyManager.java
index 13aa3e6bb31..3cfdf22bf08 100644
--- a/server/src/com/cloud/consoleproxy/AgentBasedStandaloneConsoleProxyManager.java
+++ b/server/src/com/cloud/consoleproxy/AgentBasedStandaloneConsoleProxyManager.java
@@ -28,7 +28,6 @@ import com.cloud.host.HostVO;
import com.cloud.info.ConsoleProxyInfo;
import com.cloud.vm.UserVmVO;
-@Component
@Local(value={ConsoleProxyManager.class})
public class AgentBasedStandaloneConsoleProxyManager extends
AgentBasedConsoleProxyManager {
diff --git a/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java b/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java
index 9e63d69b39e..52c90af70dc 100755
--- a/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java
+++ b/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java
@@ -170,8 +170,6 @@ import com.google.gson.GsonBuilder;
// Starting, HA, Migrating, Running state are all counted as "Open" for available capacity calculation
// because sooner or later, it will be driven into Running state
//
-@Component
-@Primary
@Local(value = { ConsoleProxyManager.class, ConsoleProxyService.class })
public class ConsoleProxyManagerImpl implements ConsoleProxyManager, ConsoleProxyService, Manager, AgentHook, VirtualMachineGuru, SystemVmLoadScanHandler, ResourceStateAdapter {
private static final Logger s_logger = Logger.getLogger(ConsoleProxyManagerImpl.class);
diff --git a/server/src/com/cloud/consoleproxy/StaticConsoleProxyManager.java b/server/src/com/cloud/consoleproxy/StaticConsoleProxyManager.java
index 13d3112c827..3a4386f0acb 100755
--- a/server/src/com/cloud/consoleproxy/StaticConsoleProxyManager.java
+++ b/server/src/com/cloud/consoleproxy/StaticConsoleProxyManager.java
@@ -33,7 +33,6 @@ import com.cloud.resource.ResourceManager;
import com.cloud.vm.VMInstanceVO;
import com.cloud.vm.dao.ConsoleProxyDao;
-@Component
@Local(value={ConsoleProxyManager.class})
public class StaticConsoleProxyManager extends AgentBasedConsoleProxyManager implements ConsoleProxyManager {
String _ip = null;
diff --git a/server/src/com/cloud/ha/HighAvailabilityManagerExtImpl.java b/server/src/com/cloud/ha/HighAvailabilityManagerExtImpl.java
index 09e65a02812..ae6fe4e00b3 100644
--- a/server/src/com/cloud/ha/HighAvailabilityManagerExtImpl.java
+++ b/server/src/com/cloud/ha/HighAvailabilityManagerExtImpl.java
@@ -32,8 +32,6 @@ import com.cloud.configuration.dao.ConfigurationDao;
import com.cloud.usage.dao.UsageJobDao;
import com.cloud.utils.db.Transaction;
-@Component
-@Primary
@Local(value={HighAvailabilityManager.class})
public class HighAvailabilityManagerExtImpl extends HighAvailabilityManagerImpl {
diff --git a/server/src/com/cloud/ha/HighAvailabilityManagerImpl.java b/server/src/com/cloud/ha/HighAvailabilityManagerImpl.java
index 813728f78ca..7671f2d641f 100755
--- a/server/src/com/cloud/ha/HighAvailabilityManagerImpl.java
+++ b/server/src/com/cloud/ha/HighAvailabilityManagerImpl.java
@@ -95,7 +95,6 @@ import com.cloud.vm.dao.VMInstanceDao;
* ha.retry.wait | time to wait before retrying the work item | seconds | 120 || || stop.retry.wait | time to wait
* before retrying the stop | seconds | 120 || * }
**/
-@Component
@Local(value = { HighAvailabilityManager.class })
public class HighAvailabilityManagerImpl implements HighAvailabilityManager, ClusterManagerListener {
protected static final Logger s_logger = Logger.getLogger(HighAvailabilityManagerImpl.class);
diff --git a/server/src/com/cloud/network/NetworkModelImpl.java b/server/src/com/cloud/network/NetworkModelImpl.java
index 09378b45b48..307294cafc3 100644
--- a/server/src/com/cloud/network/NetworkModelImpl.java
+++ b/server/src/com/cloud/network/NetworkModelImpl.java
@@ -1778,8 +1778,9 @@ public class NetworkModelImpl implements NetworkModel, Manager{
if (s_providerToNetworkElementMap.containsKey(implementedProvider.getName())) {
s_logger.error("Cannot start NetworkModel: Provider <-> NetworkElement must be a one-to-one map, " +
"multiple NetworkElements found for Provider: " + implementedProvider.getName());
- return false;
+ continue;
}
+ s_logger.info("Add provider <-> element map entry. " + implementedProvider.getName() + "-" + element.getName() + "-" + element.getClass().getSimpleName());
s_providerToNetworkElementMap.put(implementedProvider.getName(), element.getName());
}
if (capabilities != null && implementedProvider != null) {
diff --git a/server/src/com/cloud/network/security/SecurityGroupManagerImpl.java b/server/src/com/cloud/network/security/SecurityGroupManagerImpl.java
index 361dedac47e..58505eeef26 100755
--- a/server/src/com/cloud/network/security/SecurityGroupManagerImpl.java
+++ b/server/src/com/cloud/network/security/SecurityGroupManagerImpl.java
@@ -115,7 +115,6 @@ import com.cloud.vm.dao.VMInstanceDao;
import edu.emory.mathcs.backport.java.util.Collections;
-@Component
@Local(value = { SecurityGroupManager.class, SecurityGroupService.class })
public class SecurityGroupManagerImpl implements SecurityGroupManager, SecurityGroupService, Manager, StateListener {
public static final Logger s_logger = Logger.getLogger(SecurityGroupManagerImpl.class);
diff --git a/server/src/com/cloud/network/security/SecurityGroupManagerImpl2.java b/server/src/com/cloud/network/security/SecurityGroupManagerImpl2.java
index 0ea43943853..a3a0fc300f9 100644
--- a/server/src/com/cloud/network/security/SecurityGroupManagerImpl2.java
+++ b/server/src/com/cloud/network/security/SecurityGroupManagerImpl2.java
@@ -47,8 +47,6 @@ import com.cloud.network.security.SecurityRule.SecurityRuleType;
* Same as the base class -- except it uses the abstracted security group work queue
*
*/
-@Component
-@Primary
@Local(value={ SecurityGroupManager.class, SecurityGroupService.class })
public class SecurityGroupManagerImpl2 extends SecurityGroupManagerImpl{
SecurityGroupWorkQueue _workQueue = new LocalSecurityGroupWorkQueue();
diff --git a/server/src/com/cloud/resource/ResourceManagerImpl.java b/server/src/com/cloud/resource/ResourceManagerImpl.java
index 0cc00aa3803..2934da3d1d3 100755
--- a/server/src/com/cloud/resource/ResourceManagerImpl.java
+++ b/server/src/com/cloud/resource/ResourceManagerImpl.java
@@ -235,7 +235,7 @@ public class ResourceManagerImpl implements ResourceManager, ResourceService,
protected HashMap> _lifeCycleListeners = new HashMap>();
private HypervisorType _defaultSystemVMHypervisor;
-
+
@PostConstruct
public void init() {
// TODO initialize pod allocators here instead
diff --git a/server/src/com/cloud/secstorage/PremiumSecondaryStorageManagerImpl.java b/server/src/com/cloud/secstorage/PremiumSecondaryStorageManagerImpl.java
index d4f44541c85..73015c11464 100755
--- a/server/src/com/cloud/secstorage/PremiumSecondaryStorageManagerImpl.java
+++ b/server/src/com/cloud/secstorage/PremiumSecondaryStorageManagerImpl.java
@@ -49,8 +49,6 @@ import com.cloud.vm.SystemVmLoadScanner.AfterScanAction;
import com.cloud.vm.VirtualMachine.State;
import com.cloud.vm.dao.SecondaryStorageVmDao;
-@Component
-@Primary
@Local(value = { SecondaryStorageVmManager.class })
public class PremiumSecondaryStorageManagerImpl extends SecondaryStorageManagerImpl {
private static final Logger s_logger = Logger.getLogger(PremiumSecondaryStorageManagerImpl.class);
diff --git a/server/src/com/cloud/server/CloudStackComponentComposer.java b/server/src/com/cloud/server/CloudStackComponentComposer.java
deleted file mode 100644
index ae063259a53..00000000000
--- a/server/src/com/cloud/server/CloudStackComponentComposer.java
+++ /dev/null
@@ -1,184 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied. See the License for the
-// specific language governing permissions and limitations
-// under the License.
-package com.cloud.server;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.annotation.PostConstruct;
-import javax.inject.Inject;
-
-import org.springframework.stereotype.Component;
-
-import com.cloud.agent.AgentManager;
-import com.cloud.alert.AlertManagerImpl;
-import com.cloud.api.query.QueryManagerImpl;
-import com.cloud.async.AsyncJobManager;
-import com.cloud.async.SyncQueueManager;
-import com.cloud.capacity.CapacityManagerImpl;
-import com.cloud.cluster.ClusterFenceManagerImpl;
-import com.cloud.cluster.ClusterManagerImpl;
-import com.cloud.configuration.ConfigurationManager;
-import com.cloud.consoleproxy.ConsoleProxyManager;
-import com.cloud.dao.EntityManagerImpl;
-import com.cloud.ha.HighAvailabilityManager;
-import com.cloud.hypervisor.HypervisorGuruManagerImpl;
-import com.cloud.keystore.KeystoreManager;
-import com.cloud.maint.UpgradeManagerImpl;
-import com.cloud.network.ExternalLoadBalancerUsageManager;
-import com.cloud.network.NetworkManagerImpl;
-import com.cloud.network.StorageNetworkManager;
-import com.cloud.network.as.AutoScaleManagerImpl;
-import com.cloud.network.firewall.FirewallManagerImpl;
-import com.cloud.network.lb.LoadBalancingRulesManagerImpl;
-import com.cloud.network.router.VpcVirtualNetworkApplianceManager;
-import com.cloud.network.rules.RulesManagerImpl;
-import com.cloud.network.security.SecurityGroupManagerImpl2;
-import com.cloud.network.vpc.NetworkACLManagerImpl;
-import com.cloud.network.vpc.VpcManagerImpl;
-import com.cloud.network.vpn.RemoteAccessVpnManagerImpl;
-import com.cloud.network.vpn.Site2SiteVpnManagerImpl;
-import com.cloud.projects.ProjectManagerImpl;
-import com.cloud.resource.ResourceManagerImpl;
-import com.cloud.resourcelimit.ResourceLimitManagerImpl;
-import com.cloud.storage.OCFS2Manager;
-import com.cloud.storage.StorageManagerImpl;
-import com.cloud.storage.download.DownloadMonitor;
-import com.cloud.storage.s3.S3Manager;
-import com.cloud.storage.secondary.SecondaryStorageManagerImpl;
-import com.cloud.storage.snapshot.SnapshotManagerImpl;
-import com.cloud.storage.snapshot.SnapshotSchedulerImpl;
-import com.cloud.storage.swift.SwiftManager;
-import com.cloud.storage.upload.UploadMonitor;
-import com.cloud.tags.TaggedResourceManagerImpl;
-import com.cloud.template.TemplateManagerImpl;
-import com.cloud.user.AccountManagerImpl;
-import com.cloud.user.DomainManagerImpl;
-import com.cloud.utils.component.Manager;
-import com.cloud.vm.UserVmManagerImpl;
-import com.cloud.vm.VirtualMachineManager;
-
-@Component
-public class CloudStackComponentComposer {
- // @Inject CheckPointManagerImpl _checkPointMgr;
- @Inject ClusterManagerImpl _clusterMgr;
- @Inject ClusterFenceManagerImpl _clusterFenceMgr;
- @Inject AgentManager _AgentMgr;
- @Inject SyncQueueManager _sycnQueueMgr;
- @Inject AsyncJobManager _jobMgr;
- @Inject ConfigurationManager _confMgr;
- @Inject AccountManagerImpl _accountMgr;
- @Inject DomainManagerImpl _domainMgr;
- @Inject ResourceLimitManagerImpl _resLimitMgr;
- @Inject NetworkManagerImpl _networkMgr;
- @Inject DownloadMonitor _downloadMonitor;
- @Inject UploadMonitor _uploadMonitor;
- @Inject KeystoreManager _ksMgr;
- @Inject SecondaryStorageManagerImpl _ssMgr;
- @Inject UserVmManagerImpl _userVmMgr;
- @Inject UpgradeManagerImpl _upgradeMgr;
- @Inject StorageManagerImpl _storageMgr;
- @Inject AlertManagerImpl _alertMgr;
- @Inject TemplateManagerImpl _tmplMgr;
- @Inject SnapshotManagerImpl _snpahsotMgr;
- @Inject SnapshotSchedulerImpl _snapshotScheduleMgr;
- @Inject SecurityGroupManagerImpl2 _sgMgr;
- @Inject EntityManagerImpl _entityMgr;
- @Inject LoadBalancingRulesManagerImpl _lbRuleMgr;
- @Inject AutoScaleManagerImpl _asMgr;
- @Inject RulesManagerImpl _rulesMgr;
- @Inject RemoteAccessVpnManagerImpl _acVpnMgr;
- @Inject CapacityManagerImpl _capacityMgr;
- @Inject VirtualMachineManager _vmMgr;
- @Inject HypervisorGuruManagerImpl _hvGuruMgr;
- @Inject ResourceManagerImpl _resMgr;
- @Inject OCFS2Manager _ocfsMgr;
- @Inject FirewallManagerImpl _fwMgr;
- @Inject ConsoleProxyManager _cpMgr;
- @Inject ProjectManagerImpl _prjMgr;
- @Inject SwiftManager _swiftMgr;
- @Inject S3Manager _s3Mgr;
- @Inject StorageNetworkManager _storageNetworkMgr;
- @Inject ExternalLoadBalancerUsageManager _extlbUsageMgr;
- @Inject HighAvailabilityManager _haMgr;
- @Inject VpcManagerImpl _vpcMgr;
- @Inject VpcVirtualNetworkApplianceManager _vpcNetApplianceMgr;
- @Inject NetworkACLManagerImpl _networkAclMgr;
- @Inject TaggedResourceManagerImpl _taggedResMgr;
- @Inject Site2SiteVpnManagerImpl _s2sVpnMgr;
- @Inject QueryManagerImpl _queryMgr;
-
- List _managers = new ArrayList();
-
- public CloudStackComponentComposer() {
- }
-
- @PostConstruct
- void init() {
- // _managers.add(_checkPointMgr);
- _managers.add(_clusterMgr);
- _managers.add(_clusterFenceMgr);
- _managers.add(_AgentMgr);
- _managers.add(_sycnQueueMgr);
- _managers.add(_jobMgr);
- _managers.add(_confMgr);
- _managers.add(_accountMgr);
- _managers.add(_domainMgr);
- _managers.add(_resLimitMgr);
- _managers.add(_networkMgr);
- _managers.add(_downloadMonitor);
- _managers.add(_uploadMonitor);
- _managers.add(_ksMgr);
- _managers.add(_ssMgr);
- _managers.add(_userVmMgr);
- _managers.add(_upgradeMgr);
- _managers.add(_storageMgr);
- _managers.add(_alertMgr);
- _managers.add(_tmplMgr);
- _managers.add(_snpahsotMgr);
- _managers.add(_snapshotScheduleMgr);
- _managers.add(_sgMgr);
- _managers.add(_entityMgr);
- _managers.add(_lbRuleMgr);
- _managers.add(_asMgr);
- _managers.add(_rulesMgr);
- _managers.add(_acVpnMgr);
- _managers.add(_capacityMgr);
- _managers.add(_vmMgr);
- _managers.add(_hvGuruMgr);
- _managers.add(_resMgr);
- _managers.add(_ocfsMgr);
- _managers.add(_fwMgr);
- _managers.add(_cpMgr);
- _managers.add(_prjMgr);
- _managers.add(_swiftMgr);
- _managers.add(_s3Mgr);
- _managers.add(_storageNetworkMgr);
- _managers.add(_extlbUsageMgr);
- _managers.add(_haMgr);
- _managers.add(_vpcMgr);
- _managers.add(_vpcNetApplianceMgr);
- _managers.add(_networkAclMgr);
- _managers.add(_taggedResMgr);
- _managers.add(_s2sVpnMgr);
- _managers.add(_queryMgr);
- }
-
- public List getManagers() {
- return _managers;
- }
-}
diff --git a/server/src/com/cloud/server/ManagementServerImpl.java b/server/src/com/cloud/server/ManagementServerImpl.java
index 342a2300a53..ede0ce81e7e 100755
--- a/server/src/com/cloud/server/ManagementServerImpl.java
+++ b/server/src/com/cloud/server/ManagementServerImpl.java
@@ -107,6 +107,7 @@ import com.cloud.capacity.Capacity;
import com.cloud.capacity.CapacityVO;
import com.cloud.capacity.dao.CapacityDao;
import com.cloud.capacity.dao.CapacityDaoImpl.SummedCapacity;
+import com.cloud.cluster.ClusterManager;
import com.cloud.configuration.Config;
import com.cloud.configuration.Configuration;
import com.cloud.configuration.ConfigurationManager;
@@ -396,6 +397,7 @@ public class ManagementServerImpl implements ManagementServer {
@Inject List _userAuthenticators;
+ @Inject ClusterManager _clusterMgr;
private String _hashKey = null;
public ManagementServerImpl() {
@@ -429,8 +431,10 @@ public class ManagementServerImpl implements ManagementServer {
private void initCloudStackComponents() {
runCheckers();
startDaos(); // daos should not be using managers and adapters.
- startManagers();
- startAdapters();
+
+ Map avoidMap = new HashMap();
+ startManagers(avoidMap);
+ startAdapters(avoidMap);
}
private void runCheckers() {
@@ -464,12 +468,28 @@ public class ManagementServerImpl implements ManagementServer {
}
}
- private void startManagers() {
+ private void startManagers(Map avoidMap) {
Map params = new HashMap();
- for(Manager manager : _componentRegistry.getManagers()) {
+ // make sure startup sequence is maintained
+ try {
+ _clusterMgr.configure("ClusterMgr", params);
+ _clusterMgr.start();
+
+ avoidMap.put(ComponentContext.getTargetClass(_clusterMgr).getName(), _clusterMgr);
+ } catch(Exception e) {
+ s_logger.error("Problems to start manager:" + ComponentContext.getTargetClass(_clusterMgr).getName(), e);
+ System.exit(1);
+ }
+
+ for(Manager manager : ComponentContext.getComponentsOfType(Manager.class).values()) {
s_logger.info("Start manager: " + ComponentContext.getTargetClass(manager).getName() + "...");
try {
+ if(avoidMap.get(ComponentContext.getTargetClass(manager).getName()) != null) {
+ s_logger.info("Skip manager: " + ComponentContext.getTargetClass(manager).getName() + " as it is already started");
+ continue;
+ }
+
if(!manager.configure(manager.getClass().getSimpleName(), params)) {
throw new CloudRuntimeException("Failed to start manager: " + ComponentContext.getTargetClass(manager).getName());
}
@@ -477,6 +497,7 @@ public class ManagementServerImpl implements ManagementServer {
if (!manager.start()) {
throw new CloudRuntimeException("Failed to start manager: " + ComponentContext.getTargetClass(manager).getName());
}
+ avoidMap.put(ComponentContext.getTargetClass(manager).getName(), manager);
if (manager instanceof ManagementBean) {
registerMBean((ManagementBean) manager);
@@ -488,7 +509,7 @@ public class ManagementServerImpl implements ManagementServer {
}
}
- private void startAdapters() {
+ private void startAdapters(Map avoidMap) {
@SuppressWarnings("rawtypes")
Map adapters = ComponentContext.getApplicationContext().getBeansOfType(
Adapter.class);
@@ -497,22 +518,27 @@ public class ManagementServerImpl implements ManagementServer {
for(Adapter adapter : adapters.values()) {
try {
- // we also skip Adapter class that is both a manager class and a adapter class
- if(Manager.class.isAssignableFrom(ComponentContext.getTargetClass(adapter)))
- continue;
+ s_logger.info("Start adapter: " + ComponentContext.getTargetClass(adapter).getName() + "...");
+
+ if(avoidMap.get(ComponentContext.getTargetClass(adapter).getName()) != null) {
+ s_logger.info("Skip adapter: " + ComponentContext.getTargetClass(adapter).getName() + " as it is already started");
+ continue;
+ }
if(!adapter.configure(adapter.getName(), params)) {
- throw new CloudRuntimeException("Failed to start adapter: " + ComponentContext.getTargetClass(adapter).getName());
+ throw new CloudRuntimeException("Failed to configure adapter: " + ComponentContext.getTargetClass(adapter).getName());
}
if (!adapter.start()) {
throw new CloudRuntimeException("Failed to start adapter: " + ComponentContext.getTargetClass(adapter).getName());
}
+
+ avoidMap.put(ComponentContext.getTargetClass(adapter).getName(), adapter);
if (adapter instanceof ManagementBean) {
registerMBean((ManagementBean) adapter);
}
} catch (Exception e) {
- s_logger.error("Problems to start manager:" + ComponentContext.getTargetClass(adapter).getName(), e);
+ s_logger.error("Problems to start adapter:" + ComponentContext.getTargetClass(adapter).getName(), e);
System.exit(1);
}
}
diff --git a/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java b/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java
index 90777d6fa74..aed514b28b7 100755
--- a/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java
+++ b/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java
@@ -157,7 +157,6 @@ import com.cloud.vm.dao.VMInstanceDao;
// Starting, HA, Migrating, Creating and Running state are all counted as "Open" for available capacity calculation
// because sooner or later, it will be driven into Running state
//
-@Component
@Local(value = { SecondaryStorageVmManager.class })
public class SecondaryStorageManagerImpl implements SecondaryStorageVmManager, VirtualMachineGuru, SystemVmLoadScanHandler, ResourceStateAdapter {
private static final Logger s_logger = Logger.getLogger(SecondaryStorageManagerImpl.class);
diff --git a/server/src/com/cloud/upgrade/PremiumDatabaseUpgradeChecker.java b/server/src/com/cloud/upgrade/PremiumDatabaseUpgradeChecker.java
index 896cb5618ed..14a81439670 100755
--- a/server/src/com/cloud/upgrade/PremiumDatabaseUpgradeChecker.java
+++ b/server/src/com/cloud/upgrade/PremiumDatabaseUpgradeChecker.java
@@ -46,8 +46,6 @@ import com.cloud.upgrade.dao.VersionDaoImpl;
import com.cloud.utils.component.SystemIntegrityChecker;
-@Component
-@Primary
@Local(value = { SystemIntegrityChecker.class })
public class PremiumDatabaseUpgradeChecker extends DatabaseUpgradeChecker {
public PremiumDatabaseUpgradeChecker() {
diff --git a/server/src/com/cloud/vm/ClusteredVirtualMachineManagerImpl.java b/server/src/com/cloud/vm/ClusteredVirtualMachineManagerImpl.java
index 96c7446f8fd..42ff5d44bf4 100644
--- a/server/src/com/cloud/vm/ClusteredVirtualMachineManagerImpl.java
+++ b/server/src/com/cloud/vm/ClusteredVirtualMachineManagerImpl.java
@@ -28,8 +28,6 @@ import org.springframework.stereotype.Component;
import com.cloud.cluster.ClusterManagerListener;
import com.cloud.cluster.ManagementServerHostVO;
-@Component
-@Primary
@Local(value=VirtualMachineManager.class)
public class ClusteredVirtualMachineManagerImpl extends VirtualMachineManagerImpl implements ClusterManagerListener {
diff --git a/server/src/com/cloud/vm/UserVmManagerImpl.java b/server/src/com/cloud/vm/UserVmManagerImpl.java
index 4139013676d..0464420842b 100644
--- a/server/src/com/cloud/vm/UserVmManagerImpl.java
+++ b/server/src/com/cloud/vm/UserVmManagerImpl.java
@@ -54,7 +54,6 @@ import org.apache.cloudstack.engine.cloud.entity.api.VirtualMachineEntity;
import org.apache.cloudstack.engine.service.api.OrchestrationService;
import org.apache.commons.codec.binary.Base64;
import org.apache.log4j.Logger;
-import org.springframework.stereotype.Component;
import com.cloud.agent.AgentManager;
import com.cloud.agent.api.Answer;
@@ -237,7 +236,6 @@ import com.cloud.vm.dao.UserVmDao;
import com.cloud.vm.dao.UserVmDetailsDao;
import com.cloud.vm.dao.VMInstanceDao;
-@Component
@Local(value = { UserVmManager.class, UserVmService.class })
public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager {
private static final Logger s_logger = Logger
diff --git a/server/src/com/cloud/vm/VirtualMachineManagerImpl.java b/server/src/com/cloud/vm/VirtualMachineManagerImpl.java
index 45495ad2e2b..64c55cacf1d 100755
--- a/server/src/com/cloud/vm/VirtualMachineManagerImpl.java
+++ b/server/src/com/cloud/vm/VirtualMachineManagerImpl.java
@@ -158,7 +158,6 @@ import com.cloud.vm.dao.SecondaryStorageVmDao;
import com.cloud.vm.dao.UserVmDao;
import com.cloud.vm.dao.VMInstanceDao;
-@Component
@Local(value = VirtualMachineManager.class)
public class VirtualMachineManagerImpl implements VirtualMachineManager, Listener {
private static final Logger s_logger = Logger.getLogger(VirtualMachineManagerImpl.class);
diff --git a/server/src/com/cloud/vm/dao/RandomlyIncreasingVMInstanceDaoImpl.java b/server/src/com/cloud/vm/dao/RandomlyIncreasingVMInstanceDaoImpl.java
index 1e316678c81..cc5c5368a81 100644
--- a/server/src/com/cloud/vm/dao/RandomlyIncreasingVMInstanceDaoImpl.java
+++ b/server/src/com/cloud/vm/dao/RandomlyIncreasingVMInstanceDaoImpl.java
@@ -23,8 +23,6 @@ import org.apache.log4j.Logger;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Component;
-@Component
-@Primary
@Local(value = { UserVmDao.class })
public class RandomlyIncreasingVMInstanceDaoImpl extends UserVmDaoImpl {
diff --git a/server/src/com/cloud/vm/dao/UserVmDaoImpl.java b/server/src/com/cloud/vm/dao/UserVmDaoImpl.java
index e2cf02e010c..f72f03e23e1 100755
--- a/server/src/com/cloud/vm/dao/UserVmDaoImpl.java
+++ b/server/src/com/cloud/vm/dao/UserVmDaoImpl.java
@@ -55,7 +55,6 @@ import com.cloud.vm.dao.UserVmData.NicData;
import com.cloud.vm.dao.UserVmData.SecurityGroupData;
-@Component
@Local(value={UserVmDao.class})
public class UserVmDaoImpl extends GenericDaoBase implements UserVmDao {
public static final Logger s_logger = Logger.getLogger(UserVmDaoImpl.class);
diff --git a/setup/db/4.1-new-db-schema.sql b/setup/db/4.1-new-db-schema.sql
index 6770214fac8..07564b6072b 100644
--- a/setup/db/4.1-new-db-schema.sql
+++ b/setup/db/4.1-new-db-schema.sql
@@ -23,7 +23,7 @@ alter table template_spool_ref add state varchar(255);
alter table template_spool_ref add update_count bigint unsigned;
alter table volumes add disk_type varchar(255);
alter table volumes drop foreign key `fk_volumes__account_id`;
-CREATE TABLE `cloud`.`primary_data_store_provider` (
+CREATE TABLE `cloud`.`data_store_provider` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',
`name` varchar(255) NOT NULL COMMENT 'name of primary data store provider',
PRIMARY KEY(`id`)
diff --git a/utils/test/com/cloud/utils/DummyPremiumImpl.java b/utils/test/com/cloud/utils/DummyPremiumImpl.java
index 111f08701e6..bf8bfea75e5 100644
--- a/utils/test/com/cloud/utils/DummyPremiumImpl.java
+++ b/utils/test/com/cloud/utils/DummyPremiumImpl.java
@@ -16,11 +16,6 @@
// under the License.
package com.cloud.utils;
-import org.springframework.context.annotation.Primary;
-import org.springframework.stereotype.Component;
-
-@Component
-@Primary
public class DummyPremiumImpl implements DummyInterface {
@Override