From 2c5859dbd4cec202ea0dbd248e95834eadd83ecf Mon Sep 17 00:00:00 2001 From: Kelven Yang Date: Fri, 18 Jan 2013 19:15:09 -0800 Subject: [PATCH] Bring javelin back to the status of being able to start System VMs after another round of master branch merge --- client/tomcatconf/componentContext.xml.in | 15 +- .../DataStoreProviderManagerImpl.java | 7 +- .../cloud/agent/manager/AgentManagerImpl.java | 1 - .../manager/ClusteredAgentManagerImpl.java | 4 - .../baremetal/BareMetalVmManagerImpl.java | 2 - .../com/cloud/cluster/ClusterManagerImpl.java | 2 - .../cluster/DummyClusterManagerImpl.java | 1 - .../AgentBasedConsoleProxyManager.java | 1 - ...entBasedStandaloneConsoleProxyManager.java | 1 - .../consoleproxy/ConsoleProxyManagerImpl.java | 2 - .../StaticConsoleProxyManager.java | 1 - .../ha/HighAvailabilityManagerExtImpl.java | 2 - .../cloud/ha/HighAvailabilityManagerImpl.java | 1 - .../com/cloud/network/NetworkModelImpl.java | 3 +- .../security/SecurityGroupManagerImpl.java | 1 - .../security/SecurityGroupManagerImpl2.java | 2 - .../cloud/resource/ResourceManagerImpl.java | 2 +- .../PremiumSecondaryStorageManagerImpl.java | 2 - .../server/CloudStackComponentComposer.java | 184 ------------------ .../cloud/server/ManagementServerImpl.java | 46 ++++- .../SecondaryStorageManagerImpl.java | 1 - .../PremiumDatabaseUpgradeChecker.java | 2 - .../ClusteredVirtualMachineManagerImpl.java | 2 - .../src/com/cloud/vm/UserVmManagerImpl.java | 2 - .../cloud/vm/VirtualMachineManagerImpl.java | 1 - .../RandomlyIncreasingVMInstanceDaoImpl.java | 2 - .../src/com/cloud/vm/dao/UserVmDaoImpl.java | 1 - setup/db/4.1-new-db-schema.sql | 2 +- .../com/cloud/utils/DummyPremiumImpl.java | 5 - 29 files changed, 59 insertions(+), 239 deletions(-) delete mode 100644 server/src/com/cloud/server/CloudStackComponentComposer.java 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