diff --git a/client/tomcatconf/applicationContext.xml.in b/client/tomcatconf/applicationContext.xml.in index 206d890c531..2c2031f8d09 100644 --- a/client/tomcatconf/applicationContext.xml.in +++ b/client/tomcatconf/applicationContext.xml.in @@ -780,6 +780,8 @@ + + @@ -791,6 +793,7 @@ + @@ -805,6 +808,8 @@ + + diff --git a/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java b/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java index 7ee889b1c6e..a9b62e24a40 100755 --- a/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java +++ b/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java @@ -2053,6 +2053,7 @@ public class ConsoleProxyManagerImpl extends ManagerBase implements ConsoleProxy _itMgr.processVmStartWork(vm, ((VmWorkStart)work).getParams(), user, account, ((VmWorkStart)work).getPlan()); } catch(Exception e) { + s_logger.error("Exception in process VM-start work", e); String result = SerializerHelper.toObjectSerializedString(e); AsyncJobExecutionContext.getCurrentExecutionContext().completeAsyncJob(AsyncJobResult.STATUS_FAILED, 0, result); } diff --git a/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java b/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java index 170e4bf0d39..49d29fc3519 100755 --- a/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java +++ b/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java @@ -51,6 +51,8 @@ import com.cloud.agent.api.check.CheckSshCommand; import com.cloud.agent.api.to.NicTO; import com.cloud.agent.api.to.VirtualMachineTO; import com.cloud.agent.manager.Commands; +import com.cloud.async.AsyncJobExecutionContext; +import com.cloud.async.AsyncJobResult; import com.cloud.capacity.dao.CapacityDao; import com.cloud.cluster.ClusterManager; import com.cloud.cluster.ManagementServerNode; @@ -58,6 +60,7 @@ import com.cloud.configuration.Config; import com.cloud.configuration.ZoneConfig; import com.cloud.configuration.dao.ConfigurationDao; import com.cloud.consoleproxy.ConsoleProxyManager; +import com.cloud.dao.EntityManager; import com.cloud.dc.DataCenter; import com.cloud.dc.DataCenter.NetworkType; import com.cloud.dc.DataCenterVO; @@ -93,6 +96,7 @@ import com.cloud.resource.ResourceManager; import com.cloud.resource.ResourceStateAdapter; import com.cloud.resource.ServerResource; import com.cloud.resource.UnableDeleteHostException; +import com.cloud.serializer.SerializerHelper; import com.cloud.service.ServiceOfferingVO; import com.cloud.service.dao.ServiceOfferingDao; import com.cloud.storage.SnapshotVO; @@ -109,8 +113,10 @@ import com.cloud.storage.swift.SwiftManager; import com.cloud.storage.template.TemplateConstants; import com.cloud.user.Account; import com.cloud.user.AccountService; +import com.cloud.user.AccountVO; import com.cloud.user.User; import com.cloud.user.UserContext; +import com.cloud.user.UserVO; import com.cloud.utils.DateUtil; import com.cloud.utils.NumbersUtil; import com.cloud.utils.Pair; @@ -137,6 +143,7 @@ import com.cloud.vm.VirtualMachineGuru; import com.cloud.vm.VirtualMachineManager; import com.cloud.vm.VirtualMachineName; import com.cloud.vm.VirtualMachineProfile; +import com.cloud.vm.VmWorkStart; import com.cloud.vm.dao.SecondaryStorageVmDao; import com.cloud.vm.dao.UserVmDetailsDao; import com.cloud.vm.dao.VMInstanceDao; @@ -250,6 +257,9 @@ public class SecondaryStorageManagerImpl extends ManagerBase implements Secondar private SystemVmLoadScanner _loadScanner; private Map _zoneHostInfoMap; // map + @Inject + EntityManager _entityMgr; + private final GlobalLock _allocLock = GlobalLock.getInternLock(getAllocLockName()); public SecondaryStorageManagerImpl() { @@ -1476,10 +1486,25 @@ public class SecondaryStorageManagerImpl extends ManagerBase implements Secondar @Override public void vmWorkStart(VmWork work) { + assert(work instanceof VmWorkStart); + + SecondaryStorageVmVO vm = findById(work.getVmId()); + + UserVO user = _entityMgr.findById(UserVO.class, work.getUserId()); + AccountVO account = _entityMgr.findById(AccountVO.class, work.getAccountId()); + + try { + _itMgr.processVmStartWork(vm, ((VmWorkStart)work).getParams(), + user, account, ((VmWorkStart)work).getPlan()); + } catch(Exception e) { + s_logger.error("Exception in process VM-start work", e); + String result = SerializerHelper.toObjectSerializedString(e); + AsyncJobExecutionContext.getCurrentExecutionContext().completeAsyncJob(AsyncJobResult.STATUS_FAILED, 0, result); + } } @Override public void vmWorkStop(VmWork work) { + // TODO } - } diff --git a/server/src/com/cloud/vm/dao/VMInstanceDaoImpl.java b/server/src/com/cloud/vm/dao/VMInstanceDaoImpl.java index 254c9654a0d..bb159a4f27d 100644 --- a/server/src/com/cloud/vm/dao/VMInstanceDaoImpl.java +++ b/server/src/com/cloud/vm/dao/VMInstanceDaoImpl.java @@ -390,7 +390,6 @@ public class VMInstanceDaoImpl extends GenericDaoBase implem ub.set(vmi, "hostId", newHostId); ub.set(vmi, "podIdToDeployIn", vmi.getPodIdToDeployIn()); ub.set(vmi, _updateTimeAttr, new Date()); - ub.set(vmi, "lastEvent", event); int result = update(vmi, sc); if (result == 0 && s_logger.isDebugEnabled()) {