cloudstack-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Wei Zhou" <w.z...@leaseweb.com>
Subject Re: Review Request: SolidFire storage plug-in and enhancements to the storage framework and GUI
Date Fri, 31 May 2013 20:32:06 GMT

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


Mike,

I think it is better to create a table for SolidFire instead of changing disk_offering table.
It is not a good idea to change disk_offering for a specific vendor.
You can have a look at what nicira did in the past, maybe it helps you.


-Wei

- Wei Zhou


On May 31, 2013, 12:08 a.m., Mike Tutkowski wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/11479/
> -----------------------------------------------------------
> 
> (Updated May 31, 2013, 12:08 a.m.)
> 
> 
> Review request for cloudstack, edison su and John Burwell.
> 
> 
> Description
> -------
> 
> This patch implements a storage plug-in for SolidFire. The plug-in is based on the new
storage framework that went in with 4.2, as well.
> 
> In addition, there are GUI (and related) changes to enable admins and end users to specify
a Min, Max, and Burst number of IOPS for a Disk Offering. These fields (although optional)
tend to follow the pattern previously established for the Disk Size field.
> 
> Also, the storage framework itself has been enhanced. For example, it now supports creating
and deleting storage repositories as is necessary for a dynamic type of zone-wide primary
storage (such as the SolidFire plug-in is).
> 
> The desired behavior of the software is as such:
> 
> * Allow an admin to invoke the CloudStack API to add Primary Storage based on the SolidFire
plug-in.
> 
> * Allow an admin to create a Disk Offering that specifies a Min, Max, and Burst number
of IOPS or allows the admin to pass this ability on to the end user.
> 
> * Allow an end user to execute such a Disk Offering. As is the case for any Disk Offering,
this leads to the creation of a row in the volumes table.
> 
> * Allow an end user to attach the resultant volume (noted in the DB) to a VM. The storage
framework invokes logic in the plug-in and the plug-in creates a volume on its SAN with the
correct size and IOPS values. The agent software for XenServer detects that such an attach
is being requested and creates a Storage Repository (and single VDI within the SR) based on
the storage IP address of the SAN and the IQN of the volume. The VDI is then hooked up to
the VM.
> 
> * Allow an end user to detach the volume. This leads to the destruction of the SR, but
the SAN volume remains intact and can be reattached later to any VM running in a XenServer
resource pool in the zone.
> 
> * Allow an end user to delete the volume. This leads to the volume being deleted on the
SAN and being marked in the CloudStack DB as deleted.
> 
> 
> Diffs
> -----
> 
>   api/src/com/cloud/offering/DiskOffering.java dd77c70 
>   api/src/com/cloud/storage/Storage.java c130fe2 
>   api/src/com/cloud/storage/Volume.java 4903594 
>   api/src/org/apache/cloudstack/api/ApiConstants.java 1e9435f 
>   api/src/org/apache/cloudstack/api/command/admin/offering/CreateDiskOfferingCmd.java
aa11599 
>   api/src/org/apache/cloudstack/api/command/user/volume/CreateVolumeCmd.java 86a494b

>   api/src/org/apache/cloudstack/api/response/DiskOfferingResponse.java 377e66e 
>   api/src/org/apache/cloudstack/api/response/VolumeResponse.java 21d7d1a 
>   client/WEB-INF/classes/resources/messages.properties 1638be1 
>   client/pom.xml 0c38ecb 
>   client/tomcatconf/applicationContext.xml.in edf83a9 
>   core/src/com/cloud/agent/api/AttachVolumeCommand.java 302b8f8 
>   core/test/org/apache/cloudstack/api/agent/test/AttachVolumeAnswerTest.java 251a6cb

>   core/test/org/apache/cloudstack/api/agent/test/AttachVolumeCommandTest.java 1ec416a

>   engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/PrimaryDataStoreParameters.java
b2b787c 
>   engine/schema/src/com/cloud/storage/DiskOfferingVO.java 909d7fe 
>   engine/schema/src/com/cloud/storage/VolumeVO.java 1699afd 
>   engine/storage/integration-test/test/org/apache/cloudstack/storage/allocator/StorageAllocatorTest.java
9444fa5 
>   engine/storage/src/org/apache/cloudstack/storage/allocator/ZoneWideStoragePoolAllocator.java
e976980 
>   engine/storage/src/org/apache/cloudstack/storage/volume/datastore/PrimaryDataStoreHelper.java
5f8daf4 
>   engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeObject.java ea31be3

>   plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
4680fde 
>   plugins/storage/volume/solidfire/pom.xml 9db0685 
>   plugins/storage/volume/solidfire/src/org/apache/cloudstack/storage/datastore/driver/SolidfirePrimaryDataStoreDriver.java
f31126c 
>   plugins/storage/volume/solidfire/src/org/apache/cloudstack/storage/datastore/lifecycle/SolidFirePrimaryDataStoreLifeCycle.java
PRE-CREATION 
>   plugins/storage/volume/solidfire/src/org/apache/cloudstack/storage/datastore/provider/SolidfirePrimaryDataStoreProvider.java
650cac8 
>   plugins/storage/volume/solidfire/src/org/apache/cloudstack/storage/datastore/util/SolidFireUtil.java
PRE-CREATION 
>   server/src/com/cloud/api/query/dao/DiskOfferingJoinDaoImpl.java 283181f 
>   server/src/com/cloud/api/query/dao/VolumeJoinDaoImpl.java e27e2d9 
>   server/src/com/cloud/api/query/vo/DiskOfferingJoinVO.java 6d3cdcb 
>   server/src/com/cloud/api/query/vo/VolumeJoinVO.java 6ef8c91 
>   server/src/com/cloud/configuration/ConfigurationManager.java 8db037b 
>   server/src/com/cloud/configuration/ConfigurationManagerImpl.java 8baf1fb 
>   server/src/com/cloud/server/ConfigurationServerImpl.java bc52e9a 
>   server/src/com/cloud/storage/VolumeManager.java d198e5d 
>   server/src/com/cloud/storage/VolumeManagerImpl.java 4b654eb 
>   server/src/com/cloud/test/DatabaseConfig.java 70c8178 
>   server/test/com/cloud/vpc/MockConfigurationManagerImpl.java 21b3590 
>   setup/db/db/schema-410to420.sql cf4e98d 
>   tools/marvin/marvin/cloudstackConnection.py b092ef0 
>   ui/dictionary.jsp ded9ea0 
>   ui/scripts/configuration.js 211d7b7 
>   ui/scripts/docs.js 7c1aaf8 
>   ui/scripts/storage.js e816334 
>   ui/scripts/system.js 8b9a81f 
> 
> Diff: https://reviews.apache.org/r/11479/diff/
> 
> 
> Testing
> -------
> 
> Manual testing has been performed:
> 
> A plug-in can be added to CloudStack via an API call.
> 
> Create a Disk Offering where the admin specifies both Disk Size and Disk IOPS. Disk IOPS
are left blank.
> Create a Disk Offering where the admin allows the end user to customize both Disk Size
and Disk IOPS. Disk IOPS are left blank.
> Create a Disk Offering where the admin specifies Disk Size, but allows the end user to
customize Disk IOPS. Disk IOPS are left blank.
> Create a Disk Offering where the admin specifies Disk IOPS, but allows the end user to
customize Disk Size. Disk IOPS are left blank.
> 
> Create a Disk Offering where the admin specifies both Disk Size and Disk IOPS. Disk IOPS
are all filled in.
> Create a Disk Offering where the admin allows the end user to customize both Disk Size
and Disk IOPS. Disk IOPS are all filled in.
> Create a Disk Offering where the admin specifies Disk Size, but allows the end user to
customize Disk IOPS. Disk IOPS are all filled in.
> Create a Disk Offering where the admin specifies Disk IOPS, but allows the end user to
customize Disk Size. Disk IOPS are all filled in.
> 
> A newly created volume is attached to a VM for the first time and an SR and VDI are created.
> This volume is detached and the VDI and SR are deleted.
> The volume is reattach and is properly introduced into the SR and VDI ("introduced" in
the sense that the data that was previously on the volume is not destroyed upon reattach).
> This volume is detached and the VDI and SR are deleted.
> 
> 
> Thanks,
> 
> Mike Tutkowski
> 
>


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