Merge pull request #1403 from mike-tutkowski/xs-snapshots Taking fast and efficient volume snapshots with XenServer (and your storage provider)A XenServer storage repository (SR) and virtual disk image (VDI) each have UUIDs that are immutable.
This poses a problem for SAN snapshots, if you intend on mounting the underlying snapshot SR alongside the source SR (duplicate UUIDs). VMware has a solution for this called re-signaturing (so, in other words, the snapshot UUIDs can be changed). This PR only deals with the CloudStack side of things, but it works in concert with a new XenServer storage manager created by CloudOps (this storage manager enables re-signaturing of XenServer SR and VDI UUIDs). I have written Marvin integration tests to go along with this, but cannot yet check those into the CloudStack repo as they rely on SolidFire hardware. If anyone would like to see these integration tests, please let me know. JIRA ticket: https://issues.apache.org/jira/browse/CLOUDSTACK-9281 Here's a video I made that shows this feature in action: https://www.youtube.com/watch?v=YQ3pBeL-WaA&list=PLqOXKM0Bt13DFnQnwUx8ZtJzoyDV0Uuye&index=13 * pr/1403: Faster logic to see if a cluster supports resigning Support for backend snapshots with XenServer Signed-off-by: Will Stevens <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/82b702dc Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/82b702dc Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/82b702dc Branch: refs/heads/master Commit: 82b702dc9ae4db2d87ea213c49e168a430872ca4 Parents: 3f5b3a1 9d21556 Author: Will Stevens <[email protected]> Authored: Fri May 20 08:33:06 2016 -0400 Committer: Will Stevens <[email protected]> Committed: Fri May 20 08:33:07 2016 -0400 ---------------------------------------------------------------------- .../cloud/agent/api/StartupRoutingCommand.java | 10 +- .../agent/api/storage/ResizeVolumeCommand.java | 37 +- .../storage/resource/StorageProcessor.java | 3 + .../StorageSubsystemCommandHandlerBase.java | 3 + .../storage/command/ResignatureAnswer.java | 60 + .../storage/command/ResignatureCommand.java | 48 + .../storage/to/PrimaryDataStoreTO.java | 1 + .../api/storage/DataStoreCapabilities.java | 18 +- .../subsystem/api/storage/PrimaryDataStore.java | 2 + .../api/storage/PrimaryDataStoreDriver.java | 35 +- .../api/storage/PrimaryDataStoreInfo.java | 1 + .../subsystem/api/storage/TemplateService.java | 3 + .../subsystem/api/storage/VolumeService.java | 4 +- .../src/com/cloud/vm/VmWorkResizeVolume.java | 9 +- .../orchestration/VolumeOrchestrator.java | 12 +- .../schema/src/com/cloud/dc/dao/ClusterDao.java | 2 + .../src/com/cloud/dc/dao/ClusterDaoImpl.java | 27 +- .../schema/src/com/cloud/host/dao/HostDao.java | 3 + .../src/com/cloud/host/dao/HostDaoImpl.java | 33 + .../com/cloud/host/dao/HostDetailsDaoImpl.java | 4 + .../storage/dao/VMTemplatePoolDaoImpl.java | 4 +- .../motion/StorageSystemDataMotionStrategy.java | 687 +++++++++--- .../storage/image/TemplateServiceImpl.java | 19 + .../storage/image/store/TemplateObject.java | 65 +- .../test/FakePrimaryDataStoreDriver.java | 27 +- .../snapshot/StorageSystemSnapshotStrategy.java | 213 +++- .../snapshot/XenserverSnapshotStrategy.java | 4 +- .../allocator/AbstractStoragePoolAllocator.java | 2 +- engine/storage/volume/pom.xml | 5 + .../storage/datastore/PrimaryDataStoreImpl.java | 30 +- .../storage/volume/VolumeServiceImpl.java | 431 +++++++- plugins/api/solidfire-intg-test/pom.xml | 2 +- .../spring-solidfire-intg-test-context.xml | 4 +- .../admin/solidfire/GetPathForVolumeCmd.java | 67 ++ .../solidfire/GetSolidFireAccountIdCmd.java | 72 ++ .../GetSolidFireVolumeAccessGroupIdCmd.java | 81 ++ .../solidfire/GetSolidFireVolumeSizeCmd.java | 70 ++ .../solidfire/GetVolumeSnapshotDetailsCmd.java | 73 ++ .../admin/solidfire/GetVolumeiScsiNameCmd.java | 68 ++ .../solidfire/GetSolidFireAccountIdCmd.java | 83 -- .../GetSolidFireVolumeAccessGroupIdCmd.java | 84 -- .../GetSolidFireVolumeIscsiNameCmd.java | 78 -- .../solidfire/GetSolidFireVolumeSizeCmd.java | 84 -- .../response/ApiSolidFireAccountIdResponse.java | 37 - ...ApiSolidFireVolumeAccessGroupIdResponse.java | 37 - .../ApiSolidFireVolumeIscsiNameResponse.java | 37 - .../ApiSolidFireVolumeSizeResponse.java | 37 - .../solidfire/ApiPathForVolumeResponse.java | 33 + .../ApiSolidFireAccountIdResponse.java | 33 + ...ApiSolidFireVolumeAccessGroupIdResponse.java | 33 + .../ApiSolidFireVolumeSizeResponse.java | 33 + .../ApiVolumeSnapshotDetailsResponse.java | 43 + .../solidfire/ApiVolumeiScsiNameResponse.java | 33 + .../ApiSolidFireIntegrationTestService.java | 22 + .../ApiSolidFireIntegrationTestServiceImpl.java | 48 + .../solidfire/ApiSolidFireService.java | 37 - .../solidfire/ApiSolidFireServiceImpl.java | 126 --- .../SolidFireIntegrationTestManager.java | 23 + .../SolidFireIntegrationTestManagerImpl.java | 78 ++ .../solidfire/SolidFireIntegrationTestUtil.java | 112 ++ .../kvm/storage/KVMStorageProcessor.java | 9 + .../ovm3/resources/Ovm3StorageProcessor.java | 16 +- .../resource/SimulatorStorageProcessor.java | 9 + .../resource/VmwareStorageProcessor.java | 9 + .../xenserver/resource/CitrixResourceBase.java | 119 +- .../resource/XenServerStorageProcessor.java | 61 +- .../resource/Xenserver625StorageProcessor.java | 14 +- .../CitrixResizeVolumeCommandWrapper.java | 70 +- .../xenbase/CitrixStartCommandWrapper.java | 4 +- .../ElastistorPrimaryDataStoreDriver.java | 8 +- .../CloudStackPrimaryDataStoreDriverImpl.java | 13 +- .../driver/NexentaPrimaryDataStoreDriver.java | 13 +- .../SamplePrimaryDataStoreDriverImpl.java | 17 +- .../driver/SolidFirePrimaryDataStoreDriver.java | 1022 ++++++++++++++---- .../SolidFirePrimaryDataStoreLifeCycle.java | 67 +- .../provider/SolidFireSharedHostListener.java | 64 +- .../storage/datastore/util/SolidFireUtil.java | 508 +++++---- .../com/cloud/capacity/CapacityManagerImpl.java | 25 +- .../deploy/DeploymentPlanningManagerImpl.java | 3 +- .../hypervisor/CloudZonesStartupProcessor.java | 23 + .../com/cloud/resource/ResourceManagerImpl.java | 64 ++ .../com/cloud/storage/ResizeVolumePayload.java | 7 +- .../src/com/cloud/storage/StorageManager.java | 24 + .../com/cloud/storage/StorageManagerImpl.java | 75 +- .../com/cloud/storage/VolumeApiServiceImpl.java | 64 +- .../storage/snapshot/SnapshotManagerImpl.java | 32 +- .../com/cloud/template/TemplateManagerImpl.java | 52 +- ui/scripts/storage.js | 2 + utils/src/main/java/com/cloud/utils/Utils.java | 38 + 89 files changed, 4240 insertions(+), 1562 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/82b702dc/server/src/com/cloud/resource/ResourceManagerImpl.java ----------------------------------------------------------------------
