Bug Reference
The Jira issue associated with this design spec
Branch
Jira |
---|
server | ASF JIRA |
---|
serverId | 5aa69414-a9e9-3523-82ec-879b028fb15b |
---|
key | CLOUDSTACK-9278 |
---|
|
Branch
masterWhat branch is this work being done in
Introduction
Purpose
State the purpose of the document; something like: this is functional specificationS of feature "..." which has Jira ID CS-xyzw
The objective of this API is to enable storage vendor side snapshots of virtual disk when using managed hardware as Primary Storage. When using the Primary storage plugins such as SolidFire vendor, each virtual disks are LUNs on the storage array. Using the storage array snapshot capability benefits for performance and feature set supported by the storage vendor.
StorageSnapshot does not fit in the VolumeSnapshot API because it would not perform the same tasks, a Volume Snapshot uses the hypervisor capability to create a volume snapshot then extract it and archive it into the secondary storage. The intent of a StorageSnapshot is to perform a snapshot at the hardware vendor level, and keep it there for rollback purposes and disk cloning. StorageSnapshot is more aligned with the VMsnapshot API capability but is intent to be per virtual disk basis.
. References
Document History
Glossary
Feature Specifications
- put a summary or a brief description of the feature in question
- list what is deliberately not supported or what the feature will not offer - to clear any prospective ambiguities
- list all open items or unresolved issues the developer is unable to decide about without further discussion
- quality risks (test guidelines)
- functional
- non functional: performance, scalability, stability, overload scenarios, etc
- corner cases and boundary conditions
- negative usage scenarios
- specify supportability characteristics:
- what new logging (or at least the important one) is introduced
- how to debug and troubleshoot
- what are the audit events
- list JMX interfaces
- graceful failure and recovery scenarios
- possible fallback or work around route if feature does not work as expected, if those workarounds do exist ofcourse.
- if feature depends other run-time environment related requirements, provide sanity check list for support people to run
- explain configuration characteristics:
- configuration parameters or files introduced/changed
- branding parameters or files introduced/changed
- highlight parameters for performance tweaking
- highlight how installation/upgrade scenarios change
- deployment requirements (fresh install vs. upgrade) if any
- system requirements: memory, CPU, desk space, etc
- interoperability and compatibility requirements:
- OS
- xenserver, hypervisors
- storage, networks, other
- list localization and internationalization specifications
- explain the impact and possible upgrade/migration solution introduced by the feature
- explain performance & scalability implications when feature is used from small scale to large scale
- explain security specifications
- list your evaluation of possible security attacks against the feature and the answers in your design* *
- explain marketing specifications
- explain levels or types of users communities of this feature (e.g. admin, user, etc)
Use cases
put the relevant use case/stories to explain how the feature is going to be used/work
Architecture and Design description
- discussion of alternatives amongst design ideas, their resources/time tradeoffs and limitations. Explain why a certain design idea is chosen over others
- highlight architectural patterns being used (queues, async/sync, state machines, etc)
- talk about main algorithms used
- explain what components are being changed and what the dependent components are
- regarding database: talk about tables being added/modified
- performance implications: what are the improvements or risks introduced to capacity, response time, resources usage and other relevant KPIs
- preferably show class diagrams, sequence diagrams and state diagrams
- if possible, publish signatures of all methods classes and interfaces implement, and the explain the object information of different classes
Web Services APIs
list changes to existing web services APIs and new APIs introduced with signatures and throughout documentation
UI flow
- The initial scope of work is to define the API and enable it for infrastructure specific: SolidFire storage plugin with XenServer 6.5, but also create the API skeleton for other deployment scenario.
- When using VDI-per-LUN (storage plugin for vendor specific)
- Create storage snapshots of a volume;
- support multiple snapshots of the same volume.
- keep track of snapshot inventory/hierarchy in cloudstack database.
- Revert volume from a snapshot
- Create new volume from a snapshot "clone".
- Scheduling auto snapshot ?
- UI would support the feature in the snapshot drop down, as "StorageSnapshot"
- Usage report should be track per volume or snapshots and tracked secondary storage usage, TBD
Use cases
When using VDI-per-LUN with XenServer 6.5 + SolidFire storage array, all VirtualDisks are unique LUNs on the storage array so it leverages snapshot capabilities of the storage vendor for volumes.
On XenServer each VDI resides on a dedicated SR which occupies the whole LUN, and the LUN is presented as an iSCSI-LVM SR to Xenserver. Storage snapshots would allow the creation of volumes more efficiently by creating a clone on the backend instead of doing a hypervisor copy.
Architecture and Design description
- The API skeleton should allow other storage vendors to implement their own methods
Web Services APIs
New API | params | Description |
---|
createStorageSnapshot | id: volume ID | Create storage-snapshot of a volume |
createVolumeFromStorageSnapshot | id: StorageSnapshot ID | Create a volume from a storage snapshot by cloning it on the device |
deleteStorageSnapshot | id: StorageSnapshot ID | Delete a single storage-snapshot |
listStorageSnapshot | volumeID: volume ID storageID: storage array ID (admin)? | List storage-snapshot of a volume |
UI flow
- StorageSnapshots would be listed in the Storage section under the StorageSnapshot dropdown.either demonstrate it visually here or link to relevant mockups
IP Clearance
- what dependencies will you be adding to the project?
- are you expecting to include any code developed outside the Apache CloudStack project?
Usage Impact
Are there any entities being created that require usage reporting for billing purposes?
Does this change any existing entities for which usage is being tracked already?
Appendix
Appendix A:
Appendix B: