cloudstack-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "edison su" <edison...@citrix.com>
Subject Re: Review Request: Storage motion changes for xenserver
Date Wed, 17 Apr 2013 06:22:52 GMT

-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/10196/#review19306
-----------------------------------------------------------

Ship it!


Ship It!

- edison su


On April 15, 2013, 7:24 a.m., Devdeep Singh wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/10196/
> -----------------------------------------------------------
> 
> (Updated April 15, 2013, 7:24 a.m.)
> 
> 
> Review request for cloudstack, Abhinandan Prateek, edison su, Alex Huang, and anthony
xu.
> 
> 
> Description
> -------
> 
> Storage motion for Xenserver. FS for the feature https://cwiki.apache.org/confluence/display/CLOUDSTACK/Enabling+Storage+XenMotion+for+XenServer
>     1. Implemented Api findStoragePoolsForMigration. Added a new response objects to
list storage pools available for migration.
>     2. Updated migrateVolume api for allowing migrating volumes of running vms. These
changes are integrated into the latest storage refactoring changes.
>     3. Added the implementation for findHostsForMigration api. It lists the hosts to
which an instance can be migrated, including hosts from within and across clusters to which
an instance may be migrated with storage motion. The work of migrating a volume of a running
vm is also done in copyAsync.
>     4. Updated the listHosts api for backward compatibility.
>     5. Added the implementation for migrateVirtualMachineWithVolume api. It migrates
an instance with its volumes within a cluster and also across clusters. Also introduced a
new XenServerStorageMotionStrategy for migrating volumes of a vm. When a vm is being migrated
with its volumes, the vm is put in migrating state and a request is send to the volume manager
to migrate the vm and its volumes. Volume manager calls into the volume service which forwards
the request to data motion service after moving all the volumes to migrating state. Data motion
service enumerates the strategies and the request reaches the XenServerStorageMotionStrategy.
It calls in to the resource to complete the operation.
>     6. Resolved an issue where storage xenmotion of 2nd VM created from the same template
to a host was failing with duplicate_vm exception. Made changes to remove the mac_seed key
value pair from other_config when vms are created. This is was storage motion to fail.
>     7. Updated the db upgrade schema script.
>     8. Added the right permissions in commands.properties
>     9. Marvin tests for testing storage motion. Following scenarios are tested.
>     9.1. A virtual machine is migrated to another host. Its volumes are also migrated
to another storage pool.
>     9.2. Just the volumes of a vm are migrated to another storage pool while the vm continues
to run on the same host.
>     10. Unit tests for testing migration of a vm with its volumes.
> 
> 
> This addresses bug https://issues.apache.org/jira/browse/CLOUDSTACK-659.
> 
> 
> Diffs
> -----
> 
>   api/src/com/cloud/agent/api/MigrateWithStorageAnswer.java PRE-CREATION 
>   api/src/com/cloud/agent/api/MigrateWithStorageCommand.java PRE-CREATION 
>   api/src/com/cloud/agent/api/MigrateWithStorageCompleteAnswer.java PRE-CREATION 
>   api/src/com/cloud/agent/api/MigrateWithStorageCompleteCommand.java PRE-CREATION 
>   api/src/com/cloud/agent/api/MigrateWithStorageReceiveAnswer.java PRE-CREATION 
>   api/src/com/cloud/agent/api/MigrateWithStorageReceiveCommand.java PRE-CREATION 
>   api/src/com/cloud/agent/api/MigrateWithStorageSendAnswer.java PRE-CREATION 
>   api/src/com/cloud/agent/api/MigrateWithStorageSendCommand.java PRE-CREATION 
>   api/src/com/cloud/agent/api/storage/MigrateVolumeAnswer.java PRE-CREATION 
>   api/src/com/cloud/agent/api/storage/MigrateVolumeCommand.java PRE-CREATION 
>   api/src/com/cloud/hypervisor/HypervisorCapabilities.java aff81b0 
>   api/src/com/cloud/server/ManagementService.java 6e6dbc3 
>   api/src/com/cloud/vm/UserVmService.java d963b74 
>   api/src/org/apache/cloudstack/api/ApiConstants.java b08e992 
>   api/src/org/apache/cloudstack/api/ResponseGenerator.java c0dd57e 
>   api/src/org/apache/cloudstack/api/command/admin/host/FindHostsForMigrationCmd.java
PRE-CREATION 
>   api/src/org/apache/cloudstack/api/command/admin/host/ListHostsCmd.java 29844c3 
>   api/src/org/apache/cloudstack/api/command/admin/storage/FindStoragePoolsForMigrationCmd.java
PRE-CREATION 
>   api/src/org/apache/cloudstack/api/command/admin/vm/MigrateVirtualMachineWithVolumeCmd.java
PRE-CREATION 
>   api/src/org/apache/cloudstack/api/command/user/volume/MigrateVolumeCmd.java 287241a

>   api/src/org/apache/cloudstack/api/response/HostForMigrationResponse.java PRE-CREATION

>   api/src/org/apache/cloudstack/api/response/HostResponse.java f5aa8f9 
>   api/src/org/apache/cloudstack/api/response/StoragePoolForMigrationResponse.java PRE-CREATION

>   api/src/org/apache/cloudstack/api/response/StoragePoolResponse.java 0b16226 
>   client/tomcatconf/applicationContext.xml.in 15cd6fe 
>   client/tomcatconf/commands.properties.in 798d226 
>   core/src/com/cloud/hypervisor/HypervisorCapabilitiesVO.java fafc0a3 
>   engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/ObjectInDataStoreStateMachine.java
f619ef4 
>   engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/VolumeService.java
102c471 
>   engine/storage/imagemotion/src/org/apache/cloudstack/storage/image/motion/DefaultImageMotionStrategy.java
a70fd8a 
>   engine/storage/integration-test/test/org/apache/cloudstack/storage/test/MockStorageMotionStrategy.java
b619ee9 
>   engine/storage/src/org/apache/cloudstack/storage/motion/AncientDataMotionStrategy.java
3602bb1 
>   engine/storage/src/org/apache/cloudstack/storage/motion/DataMotionService.java db36f64

>   engine/storage/src/org/apache/cloudstack/storage/motion/DataMotionServiceImpl.java
343140f 
>   engine/storage/src/org/apache/cloudstack/storage/motion/DataMotionStrategy.java ba40c6d

>   engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeObject.java ceadb25

>   engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java
32e7d27 
>   plugins/host-allocators/random/src/com/cloud/agent/manager/allocator/impl/RandomAllocator.java
a672efd 
>   plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
4ef583a 
>   plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/XenServer56FP1Resource.java
d64e173 
>   plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/XenServer610Resource.java
8d267b1 
>   plugins/hypervisors/xen/src/org/apache/cloudstack/storage/motion/XenServerStorageMotionStrategy.java
PRE-CREATION 
>   server/src/com/cloud/agent/manager/allocator/HostAllocator.java 60027e7 
>   server/src/com/cloud/agent/manager/allocator/impl/FirstFitAllocator.java 0091e43 
>   server/src/com/cloud/agent/manager/allocator/impl/TestingAllocator.java 90bd956 
>   server/src/com/cloud/api/ApiDBUtils.java 303f328 
>   server/src/com/cloud/api/ApiResponseHelper.java 50c137a 
>   server/src/com/cloud/api/query/ViewResponseHelper.java dc2727e 
>   server/src/com/cloud/api/query/dao/HostJoinDao.java 1a21299 
>   server/src/com/cloud/api/query/dao/HostJoinDaoImpl.java 1adff40 
>   server/src/com/cloud/api/query/dao/StoragePoolJoinDao.java bbb0242 
>   server/src/com/cloud/api/query/dao/StoragePoolJoinDaoImpl.java 58968df 
>   server/src/com/cloud/server/ManagementServerImpl.java d9a4317 
>   server/src/com/cloud/storage/VolumeManager.java 2101038 
>   server/src/com/cloud/storage/VolumeManagerImpl.java 1e8edaf 
>   server/src/com/cloud/vm/UserVmManagerImpl.java d281e5b 
>   server/src/com/cloud/vm/VirtualMachineManager.java 4a30d97 
>   server/src/com/cloud/vm/VirtualMachineManagerImpl.java 4072531 
>   server/test/com/cloud/vm/MockUserVmManagerImpl.java fd826d9 
>   server/test/com/cloud/vm/MockVirtualMachineManagerImpl.java 4917e77 
>   server/test/com/cloud/vm/VirtualMachineManagerImplTest.java 322f051 
>   setup/db/db/schema-410to420.sql 92b2d9c 
>   test/integration/component/test_storage_motion.py PRE-CREATION 
>   tools/marvin/marvin/integration/lib/base.py 3df68ab 
> 
> Diff: https://reviews.apache.org/r/10196/diff/
> 
> 
> Testing
> -------
> 
> 1. Unit tests for testing vm migration with volume. They test when a vm is migrated within
a cluster or across cluster. Also added negative tests for the scenrios.
> 2. Marvin tests to do functional testing. Including tests to varify vm migration with
volume across cluster.
> 3. Marvin test for volume migration to another storage pool in the cluster while the
vm continues to run on the same host.
> 4. Also did additional manual testing for the following scenarios:
> 4.1 VM migration with volumes within and across cluster.
> 4.2 Tested both the scenarios when 'migrateto' optional parameter is passed to the migrate
vm with volume api. When it isn't passed, cloudstack picks up a storage pool for migration.
When it is passed, the volume is migrated to the pool passed in the parameter.
> 4.3 Tested that storage tags are honored when a vm is migrated with its volumes.
> 4.4 Tested volume migration when the vm stays on the same host.
> 4.5 For volume migration verified that storage tags are honored.
> 
> Other tests done to verify patch:
> 1. Verified that there are no rat failures.
> 2. Applied the patch to verify it applies cleanly.
> 
> 
> Thanks,
> 
> Devdeep Singh
> 
>


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message