You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ah...@apache.org on 2013/06/26 02:19:54 UTC

[1/3] git commit: updated refs/heads/vmsync to 1f0186a

Updated Branches:
  refs/heads/vmsync c1272055c -> 1f0186aaf


fixed a class cast exception


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/fe4cc37e
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/fe4cc37e
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/fe4cc37e

Branch: refs/heads/vmsync
Commit: fe4cc37e150d7ae0d7c08085f7022bda86de8236
Parents: c127205
Author: Alex Huang <al...@gmail.com>
Authored: Tue Jun 25 16:19:46 2013 -0700
Committer: Alex Huang <al...@gmail.com>
Committed: Tue Jun 25 16:19:46 2013 -0700

----------------------------------------------------------------------
 .../apache/cloudstack/api/command/admin/vm/MigrateVMCmd.java    | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/fe4cc37e/api/src/org/apache/cloudstack/api/command/admin/vm/MigrateVMCmd.java
----------------------------------------------------------------------
diff --git a/api/src/org/apache/cloudstack/api/command/admin/vm/MigrateVMCmd.java b/api/src/org/apache/cloudstack/api/command/admin/vm/MigrateVMCmd.java
index 4ef0668..1704677 100644
--- a/api/src/org/apache/cloudstack/api/command/admin/vm/MigrateVMCmd.java
+++ b/api/src/org/apache/cloudstack/api/command/admin/vm/MigrateVMCmd.java
@@ -150,9 +150,10 @@ public class MigrateVMCmd extends BaseAsyncCmd {
                 migratedVm = _userVmService.vmStorageMigration(getVirtualMachineId(), destStoragePool);
             }
             if (migratedVm != null) {
-                UserVmResponse response = _responseGenerator.createUserVmResponse("virtualmachine", (UserVm)migratedVm).get(0);
+                UserVm vm = _entityMgr.findById(UserVm.class, migratedVm.getId());
+                UserVmResponse response = _responseGenerator.createUserVmResponse("virtualmachine", vm).get(0);
                 response.setResponseName(getCommandName());
-                this.setResponseObject(response);
+                setResponseObject(response);
             } else {
                 throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to migrate vm");
             }


[2/3] git commit: updated refs/heads/vmsync to 1f0186a

Posted by ah...@apache.org.
Migrate bugs fixed


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/241d5469
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/241d5469
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/241d5469

Branch: refs/heads/vmsync
Commit: 241d54696e4bce374381ba00c358bff1554d3e97
Parents: fe4cc37
Author: Alex Huang <al...@gmail.com>
Authored: Tue Jun 25 16:49:56 2013 -0700
Committer: Alex Huang <al...@gmail.com>
Committed: Tue Jun 25 16:49:56 2013 -0700

----------------------------------------------------------------------
 .../src/com/cloud/vm/VirtualMachineManagerImpl.java          | 7 +++----
 .../orchestration/src/com/cloud/vm/VmWorkJobDispatcher.java  | 7 ++++++-
 engine/orchestration/src/com/cloud/vm/VmWorkMigrate.java     | 8 +++++++-
 .../src/org/apache/cloudstack/vm/jobs/VmWorkJobVO.java       | 4 +++-
 4 files changed, 19 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/241d5469/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java
----------------------------------------------------------------------
diff --git a/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java b/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java
index f378f4f..3ca651f 100755
--- a/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java
+++ b/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java
@@ -216,7 +216,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
 
     protected static final StateMachine<Step, VirtualMachine.Event> MigrationStateMachine = new StateMachine<Step, VirtualMachine.Event>();
     static {
-        MigrationStateMachine.addTransition(null, VirtualMachine.Event.MigrationRequested, Step.Prepare);
+        MigrationStateMachine.addTransition(Step.Filed, VirtualMachine.Event.MigrationRequested, Step.Prepare);
         MigrationStateMachine.addTransition(Step.Prepare, VirtualMachine.Event.OperationSucceeded, Step.Migrating);
         MigrationStateMachine.addTransition(Step.Prepare, VirtualMachine.Event.OperationFailed, Step.Error);
         MigrationStateMachine.addTransition(Step.Migrating, VirtualMachine.Event.OperationSucceeded, Step.Started);
@@ -1462,16 +1462,15 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
             workJob = new VmWorkJobVO(context.getContextId());
 
             workJob.setDispatcher(VmWorkJobDispatcher.VM_WORK_JOB_DISPATCHER);
-            workJob.setCmd(VmWorkJobDispatcher.Start);
+            workJob.setCmd(VmWorkJobDispatcher.Migrate);
 
             workJob.setAccountId(account.getId());
             workJob.setUserId(user.getId());
-            workJob.setStep(VmWorkJobVO.Step.Migrating);
             workJob.setVmType(vm.getType());
             workJob.setVmInstanceId(vm.getId());
 
             // save work context info (there are some duplications)
-            VmWorkMigrate workInfo = new VmWorkMigrate(user.getId(), account.getId(), vm.getId(), dest);
+            VmWorkMigrate workInfo = new VmWorkMigrate(user.getId(), account.getId(), vm.getId(), srcHostId, dest);
             workJob.setCmdInfo(VmWorkJobDispatcher.serialize(workInfo));
 
             _jobMgr.submitAsyncJob(workJob, VmWorkJobDispatcher.VM_WORK_QUEUE, vm.getId());

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/241d5469/engine/orchestration/src/com/cloud/vm/VmWorkJobDispatcher.java
----------------------------------------------------------------------
diff --git a/engine/orchestration/src/com/cloud/vm/VmWorkJobDispatcher.java b/engine/orchestration/src/com/cloud/vm/VmWorkJobDispatcher.java
index f869bf6..272a18b 100644
--- a/engine/orchestration/src/com/cloud/vm/VmWorkJobDispatcher.java
+++ b/engine/orchestration/src/com/cloud/vm/VmWorkJobDispatcher.java
@@ -78,8 +78,10 @@ public class VmWorkJobDispatcher extends AdapterBase implements AsyncJobDispatch
         	
         	if (cmd.equals(Start)) {
                 work = deserialize(VmWorkStart.class, job.getCmdInfo());
-            } else {
+            } else if (cmd.equals(Stop)){
                 work = deserialize(VmWorkStop.class, job.getCmdInfo());
+            } else if (cmd.equals(Migrate)) {
+                work = deserialize(VmWorkMigrate.class, job.getCmdInfo());
             }
         	assert(work != null);
         	
@@ -97,6 +99,9 @@ public class VmWorkJobDispatcher extends AdapterBase implements AsyncJobDispatch
             } else if (cmd.equals(Stop)) {
                 VmWorkStop stop = (VmWorkStop)work;
                 _vmMgr.orchestrateStop(vm.getUuid(), stop.isCleanup());
+            } else if (cmd.equals(Migrate)) {
+                VmWorkMigrate migrate = (VmWorkMigrate)work;
+                _vmMgr.orchestrateMigrate(vm.getUuid(), migrate.getSrcHostId(), migrate.getDeployDestination());
             }
             _asyncJobMgr.completeAsyncJob(job.getId(), JobInfo.Status.SUCCEEDED, 0, null);
         } catch(Throwable e) {

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/241d5469/engine/orchestration/src/com/cloud/vm/VmWorkMigrate.java
----------------------------------------------------------------------
diff --git a/engine/orchestration/src/com/cloud/vm/VmWorkMigrate.java b/engine/orchestration/src/com/cloud/vm/VmWorkMigrate.java
index 85892fd..f4543b8 100644
--- a/engine/orchestration/src/com/cloud/vm/VmWorkMigrate.java
+++ b/engine/orchestration/src/com/cloud/vm/VmWorkMigrate.java
@@ -34,9 +34,11 @@ public class VmWorkMigrate extends VmWork {
     Long clusterId;
     Long hostId;
     private Map<String, String> storage;
+    long srcHostId;
 
-    public VmWorkMigrate(long userId, long accountId, long vmId, DeployDestination dst) {
+    public VmWorkMigrate(long userId, long accountId, long vmId, long srcHostId, DeployDestination dst) {
         super(userId, accountId, vmId);
+        this.srcHostId = srcHostId;
         zoneId = dst.getDataCenter() != null ? dst.getDataCenter().getId() : null;
         podId = dst.getPod() != null ? dst.getPod().getId() : null;
         clusterId = dst.getCluster() != null ? dst.getCluster().getId() : null;
@@ -70,6 +72,10 @@ public class VmWorkMigrate extends VmWork {
         return dest;
     }
 
+    public long getSrcHostId() {
+        return srcHostId;
+    }
+
     static private EntityManager s_entityMgr;
 
     static public void init(EntityManager entityMgr) {

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/241d5469/engine/schema/src/org/apache/cloudstack/vm/jobs/VmWorkJobVO.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/org/apache/cloudstack/vm/jobs/VmWorkJobVO.java b/engine/schema/src/org/apache/cloudstack/vm/jobs/VmWorkJobVO.java
index e8c0304..824f8e7 100644
--- a/engine/schema/src/org/apache/cloudstack/vm/jobs/VmWorkJobVO.java
+++ b/engine/schema/src/org/apache/cloudstack/vm/jobs/VmWorkJobVO.java
@@ -35,9 +35,10 @@ import com.cloud.vm.VirtualMachine;
 @PrimaryKeyJoinColumn(name="id")
 public class VmWorkJobVO extends AsyncJobVO {
 
-    // These steps are rather arbiturary.  What's recorded depends on the
+    // These steps are rather arbitrary.  What's recorded depends on the
     // the operation being performed.
 	public enum Step {
+        Filed(false),
         Prepare(false),
         Starting(true),
         Started(false),
@@ -71,6 +72,7 @@ public class VmWorkJobVO extends AsyncJobVO {
     }
 
     public VmWorkJobVO(String related) {
+        step = Step.Filed;
         setRelated(related);
     }
     


[3/3] git commit: updated refs/heads/vmsync to 1f0186a

Posted by ah...@apache.org.
Removed all traces of casting


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/1f0186aa
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/1f0186aa
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/1f0186aa

Branch: refs/heads/vmsync
Commit: 1f0186aafec37462fccc002e56ec2ece15a6c173
Parents: 241d546
Author: Alex Huang <al...@gmail.com>
Authored: Tue Jun 25 17:20:39 2013 -0700
Committer: Alex Huang <al...@gmail.com>
Committed: Tue Jun 25 17:20:39 2013 -0700

----------------------------------------------------------------------
 .../com/cloud/hypervisor/guru/VMwareGuru.java   |  4 ++--
 .../network/element/VirtualRouterElement.java   | 23 +++++++++-----------
 .../VirtualNetworkApplianceManagerImpl.java     |  3 ++-
 .../com/cloud/storage/VolumeManagerImpl.java    | 14 +++++-------
 4 files changed, 20 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/1f0186aa/plugins/hypervisors/vmware/src/com/cloud/hypervisor/guru/VMwareGuru.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/guru/VMwareGuru.java b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/guru/VMwareGuru.java
index 60839b1..9d2b842 100644
--- a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/guru/VMwareGuru.java
+++ b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/guru/VMwareGuru.java
@@ -117,8 +117,8 @@ public class VMwareGuru extends HypervisorGuruBase implements HypervisorGuru {
             details = new HashMap<String, String>();
 
         String nicDeviceType = details.get(VmDetailConstants.NIC_ADAPTER);
-        if(vm.getVirtualMachine() instanceof DomainRouterVO || vm.getVirtualMachine() instanceof ConsoleProxyVO
-                || vm.getVirtualMachine() instanceof SecondaryStorageVmVO) {
+        if (vm.getType() == VirtualMachine.Type.DomainRouter || vm.getType() == VirtualMachine.Type.ConsoleProxy
+                || vm.getType() == VirtualMachine.Type.SecondaryStorageVm) {
 
             if(nicDeviceType == null) {
                 details.put(VmDetailConstants.NIC_ADAPTER, _vmwareMgr.getSystemVMDefaultNicAdapterType());

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/1f0186aa/server/src/com/cloud/network/element/VirtualRouterElement.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/element/VirtualRouterElement.java b/server/src/com/cloud/network/element/VirtualRouterElement.java
index 22eb86a..d2314e0 100755
--- a/server/src/com/cloud/network/element/VirtualRouterElement.java
+++ b/server/src/com/cloud/network/element/VirtualRouterElement.java
@@ -79,8 +79,10 @@ import com.cloud.offering.NetworkOffering;
 import com.cloud.offerings.NetworkOfferingVO;
 import com.cloud.offerings.dao.NetworkOfferingDao;
 import com.cloud.user.AccountManager;
+import com.cloud.uservm.UserVm;
 import com.cloud.utils.Pair;
 import com.cloud.utils.component.AdapterBase;
+import com.cloud.utils.db.EntityManager;
 import com.cloud.utils.db.SearchCriteria.Op;
 import com.cloud.utils.db.SearchCriteria2;
 import com.cloud.utils.db.SearchCriteriaService;
@@ -89,7 +91,6 @@ import com.cloud.vm.DomainRouterVO;
 import com.cloud.vm.NicProfile;
 import com.cloud.vm.ReservationContext;
 import com.cloud.vm.UserVmManager;
-import com.cloud.vm.UserVmVO;
 import com.cloud.vm.VirtualMachine;
 import com.cloud.vm.VirtualMachine.State;
 import com.cloud.vm.VirtualMachine.Type;
@@ -143,6 +144,8 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl
     VirtualRouterProviderDao _vrProviderDao;
     @Inject
     IPAddressDao _ipAddressDao;
+    @Inject
+    EntityManager _entityMgr;
 
     protected boolean canHandle(Network network, Service service) {
         Long physicalNetworkId = _networkMgr.getPhysicalNetworkId(network);
@@ -1026,12 +1029,10 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl
 			return true;
 		}
 		if (vm.getType() == Type.DomainRouter) {
-			assert vm instanceof DomainRouterVO;
-			DomainRouterVO router = (DomainRouterVO)vm.getVirtualMachine();
+            DomainRouterVO router = _entityMgr.findById(DomainRouterVO.class, vm.getId());
 			_routerMgr.setupDhcpForPvlan(false, router, router.getHostId(), nic);
 		} else if (vm.getType() == Type.User){
-			assert vm instanceof UserVmVO;
-			UserVmVO userVm = (UserVmVO)vm.getVirtualMachine();
+            UserVm userVm = _entityMgr.findById(UserVm.class, vm.getId());
 			_userVmMgr.setupVmForPvlan(false, userVm.getHostId(), nic);
 		}
 		return true;
@@ -1045,12 +1046,10 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl
 			return;
 		}
 		if (vm.getType() == Type.DomainRouter) {
-			assert vm instanceof DomainRouterVO;
-			DomainRouterVO router = (DomainRouterVO)vm.getVirtualMachine();
+            DomainRouterVO router = _entityMgr.findById(DomainRouterVO.class, vm.getId());
 			_routerMgr.setupDhcpForPvlan(true, router, router.getHostId(), nic);
 		} else if (vm.getType() == Type.User){
-			assert vm instanceof UserVmVO;
-			UserVmVO userVm = (UserVmVO)vm.getVirtualMachine();
+            UserVm userVm = _entityMgr.findById(UserVm.class, vm.getId());
 			_userVmMgr.setupVmForPvlan(true, userVm.getHostId(), nic);
 		}
 	}
@@ -1063,12 +1062,10 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl
 			return;
 		}
 		if (vm.getType() == Type.DomainRouter) {
-			assert vm instanceof DomainRouterVO;
-			DomainRouterVO router = (DomainRouterVO)vm.getVirtualMachine();
+            DomainRouterVO router = _entityMgr.findById(DomainRouterVO.class, vm.getId());
 			_routerMgr.setupDhcpForPvlan(true, router, router.getHostId(), nic);
 		} else if (vm.getType() == Type.User){
-			assert vm instanceof UserVmVO;
-			UserVmVO userVm = (UserVmVO)vm.getVirtualMachine();
+            UserVm userVm = _entityMgr.findById(UserVm.class, vm.getId());
 			_userVmMgr.setupVmForPvlan(true, userVm.getHostId(), nic);
 		}
 	}

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/1f0186aa/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
index 9bceb32..488577e 100755
--- a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
+++ b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
@@ -486,7 +486,8 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V
     @Override
     public boolean savePasswordToRouter(Network network, final NicProfile nic, VirtualMachineProfile profile, List<? extends VirtualRouter> routers)
             throws ResourceUnavailableException {
-        _userVmDao.loadDetails((UserVmVO)profile.getVirtualMachine());
+        UserVmVO vm = _userVmDao.findById(profile.getId());
+        _userVmDao.loadDetails(vm);
 
         final VirtualMachineProfile updatedProfile = profile;
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/1f0186aa/server/src/com/cloud/storage/VolumeManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/storage/VolumeManagerImpl.java b/server/src/com/cloud/storage/VolumeManagerImpl.java
index 235adf6..da2f9c4 100644
--- a/server/src/com/cloud/storage/VolumeManagerImpl.java
+++ b/server/src/com/cloud/storage/VolumeManagerImpl.java
@@ -33,7 +33,6 @@ import javax.naming.ConfigurationException;
 
 import org.apache.commons.lang.StringUtils;
 import org.apache.log4j.Logger;
-import org.springframework.stereotype.Component;
 
 import org.apache.cloudstack.api.BaseCmd;
 import org.apache.cloudstack.api.command.user.volume.AttachVolumeCmd;
@@ -162,6 +161,7 @@ import com.cloud.utils.Pair;
 import com.cloud.utils.UriUtils;
 import com.cloud.utils.component.ManagerBase;
 import com.cloud.utils.db.DB;
+import com.cloud.utils.db.EntityManager;
 import com.cloud.utils.db.Transaction;
 import com.cloud.utils.exception.CloudRuntimeException;
 import com.cloud.utils.fsm.NoTransitionException;
@@ -182,10 +182,8 @@ import com.cloud.vm.dao.VMInstanceDao;
 import com.cloud.vm.snapshot.VMSnapshotVO;
 import com.cloud.vm.snapshot.dao.VMSnapshotDao;
 
-@Component
 public class VolumeManagerImpl extends ManagerBase implements VolumeManager {
-    private static final Logger s_logger = Logger
-            .getLogger(VolumeManagerImpl.class);
+    private static final Logger s_logger = Logger.getLogger(VolumeManagerImpl.class);
     @Inject
     protected UserVmManager _userVmMgr;
     @Inject
@@ -328,6 +326,8 @@ public class VolumeManagerImpl extends ManagerBase implements VolumeManager {
     UploadMonitor _uploadMonitor;
     @Inject
     UploadDao _uploadDao;
+    @Inject
+    EntityManager _entityMgr;
 
     private int _copyvolumewait;
     @Inject
@@ -2209,9 +2209,7 @@ public class VolumeManagerImpl extends ManagerBase implements VolumeManager {
     }
     
     @Override
-    public void prepareForMigration(
-            VirtualMachineProfile vm,
-            DeployDestination dest) {
+    public void prepareForMigration(VirtualMachineProfile vm, DeployDestination dest) {
         List<VolumeVO> vols = _volsDao.findUsableVolumesForInstance(vm.getId());
         if (s_logger.isDebugEnabled()) {
             s_logger.debug("Preparing " + vols.size() + " volumes for " + vm);
@@ -2224,7 +2222,7 @@ public class VolumeManagerImpl extends ManagerBase implements VolumeManager {
         }
 
         if (vm.getType() == VirtualMachine.Type.User) {
-            UserVmVO userVM = (UserVmVO) vm.getVirtualMachine();
+            UserVm userVM = _entityMgr.findById(UserVm.class, vm.getId());
             if (userVM.getIsoId() != null) {
                 DataTO dataTO = tmplFactory.getTemplate(userVM.getIsoId(), DataStoreRole.Image, userVM.getDataCenterId()).getTO();
                 DiskTO iso = new DiskTO(dataTO, 3L, Volume.Type.ISO);