From cc23a23324f31a30ab005a4a77a8b5899e99b910 Mon Sep 17 00:00:00 2001 From: Kelven Yang Date: Tue, 8 Jan 2013 18:42:12 -0800 Subject: [PATCH] Fix startup sequence for classes that have due Manager/Adapter interfaces --- client/tomcatconf/applicationContext.xml.in | 2 ++ server/src/com/cloud/baremetal/BareMetalResourceBase.java | 2 -- server/src/com/cloud/baremetal/BareMetalVmManagerImpl.java | 4 ---- server/src/com/cloud/server/ManagementServerImpl.java | 5 +++-- server/src/com/cloud/vm/UserVmManagerImpl.java | 2 +- 5 files changed, 6 insertions(+), 9 deletions(-) diff --git a/client/tomcatconf/applicationContext.xml.in b/client/tomcatconf/applicationContext.xml.in index 34bb853c52e..07c9aeef873 100644 --- a/client/tomcatconf/applicationContext.xml.in +++ b/client/tomcatconf/applicationContext.xml.in @@ -58,4 +58,6 @@ + + diff --git a/server/src/com/cloud/baremetal/BareMetalResourceBase.java b/server/src/com/cloud/baremetal/BareMetalResourceBase.java index 2f679e7d678..8c14ccecf2e 100755 --- a/server/src/com/cloud/baremetal/BareMetalResourceBase.java +++ b/server/src/com/cloud/baremetal/BareMetalResourceBase.java @@ -23,7 +23,6 @@ import javax.ejb.Local; import javax.naming.ConfigurationException; import org.apache.log4j.Logger; -import org.springframework.stereotype.Component; import com.cloud.agent.IAgentControl; import com.cloud.agent.api.Answer; @@ -66,7 +65,6 @@ import com.cloud.utils.script.Script2.ParamType; import com.cloud.vm.VirtualMachine; import com.cloud.vm.VirtualMachine.State; -@Component @Local(value = ServerResource.class) public class BareMetalResourceBase implements ServerResource { private static final Logger s_logger = Logger.getLogger(BareMetalResourceBase.class); diff --git a/server/src/com/cloud/baremetal/BareMetalVmManagerImpl.java b/server/src/com/cloud/baremetal/BareMetalVmManagerImpl.java index c76fd37eb2f..f6b6a8ea606 100755 --- a/server/src/com/cloud/baremetal/BareMetalVmManagerImpl.java +++ b/server/src/com/cloud/baremetal/BareMetalVmManagerImpl.java @@ -28,8 +28,6 @@ import javax.inject.Inject; import javax.naming.ConfigurationException; import org.apache.log4j.Logger; -import org.springframework.context.annotation.Primary; -import org.springframework.stereotype.Component; import com.cloud.agent.api.Answer; import com.cloud.agent.api.StopAnswer; @@ -104,8 +102,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/server/ManagementServerImpl.java b/server/src/com/cloud/server/ManagementServerImpl.java index 374d1ab8aa5..2c24ee10f1d 100755 --- a/server/src/com/cloud/server/ManagementServerImpl.java +++ b/server/src/com/cloud/server/ManagementServerImpl.java @@ -26,7 +26,6 @@ import java.util.ArrayList; import java.util.Calendar; import java.util.Comparator; import java.util.Date; -import java.util.Enumeration; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; @@ -453,7 +452,9 @@ public class ManagementServerImpl implements ManagementServer { Map params = new HashMap(); for(Adapter adapter : adapters.values()) { try { - if(!ComponentContext.isPrimary(adapter, Adapter.class)) + // we also skip Adapter class that is both a manager class and a adapter class + if(!ComponentContext.isPrimary(adapter, Adapter.class) || + Manager.class.isAssignableFrom(ComponentContext.getTargetClass(adapter))) continue; if(!adapter.configure(adapter.getClass().getSimpleName(), params)) { diff --git a/server/src/com/cloud/vm/UserVmManagerImpl.java b/server/src/com/cloud/vm/UserVmManagerImpl.java index 09d5578f998..890c89b8522 100755 --- a/server/src/com/cloud/vm/UserVmManagerImpl.java +++ b/server/src/com/cloud/vm/UserVmManagerImpl.java @@ -36,6 +36,7 @@ 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.context.annotation.Primary; import org.springframework.stereotype.Component; import com.cloud.acl.ControlledEntity.ACLType; @@ -239,7 +240,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