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
----------------------------------------------------------------------

Reply via email to