You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cloudstack.apache.org by punith s <pu...@cloudbyte.com> on 2014/03/11 08:28:13 UTC

Review Request 19021: Cloudbyte Elastistor storage plug-in

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

Review request for cloudstack, edison su and Mike Tutkowski.


Repository: cloudstack-git


Description
-------

This patch implements a basic storage plug-in for cloudbyte elastistor v1.3.0, The plug-in is a new feature for cloudstack 4.4 and above.

this does not implement managed storage yet, it is been integrated only with CreateStoragePool and DeleteStoragePool api's.

the desired behavior of the plugin are:

* Allow an Admin to create a primary storage at cluster level, hence creates a volume in elastistor and gets attached to the host with the given capacityiops and capacitybytes through CreateStoragePool api with provider being elastistor.

*Allow an admin to delete a primary storage at cluster level, hence it deletes the volume from host in cloudstack and deletes the respective volume in elastistor.

* volume and datadisks fuctions performs the default storage fuctions, ie. the driver extends the CloudStackPrimaryDataStoreDriverImpl.

* support for both nfs and icsci primary storage.


Diffs
-----

  client/pom.xml af724b1 
  plugins/pom.xml 097f224 
  plugins/storage/volume/cloudbyte/pom.xml PRE-CREATION 
  plugins/storage/volume/cloudbyte/resources/META-INF/cloudstack/storage-volume-cloudbyte/module.properties PRE-CREATION 
  plugins/storage/volume/cloudbyte/resources/META-INF/cloudstack/storage-volume-cloudbyte/spring-storage-volume-cloudbyte-context.xml PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/client/BaseCommand.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/client/ElastiCenterClient.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/client/ElastiCenterCommand.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/AddQosGroupCmd.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/CreateTsmCmd.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/CreateVolumeCmd.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/DeleteTsmCmd.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/DeleteVolumeCmd.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/ListCapabilitiesCmd.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/ListTsmCmd.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/QueryAsyncJobResultCmd.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/driver/ElastistorPrimaryDataStoreDriver.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/lifecycle/ElastistorPrimaryDataStoreLifeCycle.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/Async.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/Capabilities.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/FileSystem.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/FileSystemWrapper.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/FilesystemQoSWrapper.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/JobId.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/QoSGroup.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/QoSGroupWrapper.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/StorageVolume.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/StorageVolumeWrapper.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/StorageVolumes.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/Tsm.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/TsmWrapper.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/Tsms.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/VolumeProperties.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/provider/ElastistorHostListener.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/provider/ElastistorPrimaryDataStoreProvider.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/AddQoSGroupResponse.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/AddQosGroupCmdResponse.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/CreateTsmCmdResponse.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/CreateVolumeCmdResponse.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/DeleteTsmResponse.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/DeleteVolumeResponse.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/ListCapabilitiesResponse.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/ListTsmsResponse.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/QueryAsyncJobResultResponse.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/util/ElastistorUtil.java PRE-CREATION 

Diff: https://reviews.apache.org/r/19021/diff/


Testing
-------

Build test using, 

mvn -P developer,systemvm clean install, which is successful.

Manual testing has been performed using cloudmonkey.

* Creating a primary storage based on cloudbyte storage plugin.

cloudmonkey# create storagepool scope=cluster zoneid=dac7223c-6d09-4dcb-82fb-bdecf7c657f5 podid=20a613c4-eccf-4fdc-b8ca-c51df483326f clusterid=9a89bc12-bf00-496b-b1d8-8e92cdf1795f name=cloudbytevolume provider=elastistor url=nfs://10.10.171.137/cloudbytetest capacityiops=500 capacitybytes=214748364800 tags=cloudbytetest
storagepool:
name = cloudbytevolume
id = 57f70aa4-659b-3b53-b8ab-2f712474f107
capacityiops = 500
clusterid = 9a89bc12-bf00-496b-b1d8-8e92cdf1795f
clustername = test000
created = 2014-03-11T12:42:38+0530
disksizeallocated = 0
disksizetotal = 214748364800
hypervisor = Any
ipaddress = 10.10.171.137
path = /cloudbytetest
podid = 20a613c4-eccf-4fdc-b8ca-c51df483326f
podname = test00
scope = CLUSTER
state = Up
tags = cloudbytetest
type = NetworkFilesystem
zoneid = dac7223c-6d09-4dcb-82fb-bdecf7c657f5
zonename = DevCloud0

* Deleting the primary storage based on cloudbyte storage plugin.

cloudmonkey# delete storagepool id=57f70aa4-659b-3b53-b8ab-2f712474f107
success = true

* creation of primary storage with negative capacityiops throws an exception.

* creation of primary storage with already available name and ip throws an exception.


Thanks,

punith s


Re: Review Request 19021: Cloudbyte Elastistor storage plug-in

Posted by punith s <pu...@cloudbyte.com>.

> On March 12, 2014, 9:39 a.m., Mike Tutkowski wrote:
> > plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/lifecycle/ElastistorPrimaryDataStoreLifeCycle.java, line 345
> > <https://reviews.apache.org/r/19021/diff/1/?file=516018#file516018line345>
> >
> >     Perhaps I don't understand, but isn't this storage provider servicing a cluster...not an entire zone?
> >     
> >     If it's only servicing a cluster, I'm not sure why we're getting the hosts for the entire zone?
> >     
> >     Maybe you want to use a HostListener instead to create an association between hosts in a cluster and this storage?

yes, i have worked on cluster scope , but i have implemented the same logic of default storage in attachZone, so it will work as usual with respect to default storage plugin.

i have no implementation at attachZone apart for default one.

yes, i'm using HostListner to create an association between hosts in a cluster and elastistor storage volume.


- punith


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


On March 12, 2014, 9:39 p.m., punith s wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/19021/
> -----------------------------------------------------------
> 
> (Updated March 12, 2014, 9:39 p.m.)
> 
> 
> Review request for cloudstack, edison su and Mike Tutkowski.
> 
> 
> Repository: cloudstack-git
> 
> 
> Description
> -------
> 
> This patch implements a basic storage plug-in for cloudbyte elastistor v1.3.0, The plug-in is a new feature for cloudstack 4.4 and above.
> 
> this does not implement managed storage yet, it is been integrated only with CreateStoragePool and DeleteStoragePool api's.
> 
> the desired behavior of the plugin are:
> 
> * Allow an Admin to create a primary storage at cluster level, hence creates a volume in elastistor and gets attached to the host with the given capacityiops and capacitybytes through CreateStoragePool api with provider being elastistor.
> 
> *Allow an admin to delete a primary storage at cluster level, hence it deletes the volume from host in cloudstack and deletes the respective volume in elastistor.
> 
> * volume and datadisks fuctions performs the default storage fuctions, ie. the driver extends the CloudStackPrimaryDataStoreDriverImpl.
> 
> * support for both nfs and icsci primary storage.
> 
> 
> Diffs
> -----
> 
>   plugins/storage/volume/cloudbyte/pom.xml PRE-CREATION 
>   plugins/storage/volume/cloudbyte/resources/META-INF/cloudstack/storage-volume-cloudbyte/spring-storage-volume-cloudbyte-context.xml PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/client/BaseCommand.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/client/ElastiCenterClient.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/client/ElastiCenterCommand.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/AddQosGroupCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/CreateTsmCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/CreateVolumeCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/DeleteTsmCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/DeleteVolumeCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/ListCapabilitiesCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/ListTsmCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/QueryAsyncJobResultCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/driver/ElastistorPrimaryDataStoreDriver.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/lifecycle/ElastistorPrimaryDataStoreLifeCycle.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/Async.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/Capabilities.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/FileSystem.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/FileSystemWrapper.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/FilesystemQoSWrapper.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/JobId.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/QoSGroup.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/QoSGroupWrapper.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/StorageVolume.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/StorageVolumeWrapper.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/StorageVolumes.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/Tsm.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/TsmWrapper.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/Tsms.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/VolumeProperties.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/provider/ElastistorPrimaryDataStoreProvider.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/AddQoSGroupResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/AddQosGroupCmdResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/CreateTsmCmdResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/CreateVolumeCmdResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/DeleteTsmResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/DeleteVolumeResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/ListCapabilitiesResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/ListTsmsResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/QueryAsyncJobResultResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/util/ElastistorUtil.java PRE-CREATION 
> 
> Diff: https://reviews.apache.org/r/19021/diff/
> 
> 
> Testing
> -------
> 
> Build test using, 
> 
> mvn -P developer,systemvm clean install, which is successful.
> 
> Manual testing has been performed using cloudmonkey.
> 
> * Creating a primary storage based on cloudbyte storage plugin.
> 
> cloudmonkey# create storagepool scope=cluster zoneid=dac7223c-6d09-4dcb-82fb-bdecf7c657f5 podid=20a613c4-eccf-4fdc-b8ca-c51df483326f clusterid=9a89bc12-bf00-496b-b1d8-8e92cdf1795f name=cloudbytevolume provider=elastistor url=nfs://10.10.171.137/cloudbytetest capacityiops=500 capacitybytes=214748364800 tags=cloudbytetest
> storagepool:
> name = cloudbytevolume
> id = 57f70aa4-659b-3b53-b8ab-2f712474f107
> capacityiops = 500
> clusterid = 9a89bc12-bf00-496b-b1d8-8e92cdf1795f
> clustername = test000
> created = 2014-03-11T12:42:38+0530
> disksizeallocated = 0
> disksizetotal = 214748364800
> hypervisor = Any
> ipaddress = 10.10.171.137
> path = /cloudbytetest
> podid = 20a613c4-eccf-4fdc-b8ca-c51df483326f
> podname = test00
> scope = CLUSTER
> state = Up
> tags = cloudbytetest
> type = NetworkFilesystem
> zoneid = dac7223c-6d09-4dcb-82fb-bdecf7c657f5
> zonename = DevCloud0
> 
> * Deleting the primary storage based on cloudbyte storage plugin.
> 
> cloudmonkey# delete storagepool id=57f70aa4-659b-3b53-b8ab-2f712474f107
> success = true
> 
> * creation of primary storage with negative capacityiops throws an exception.
> 
> * creation of primary storage with already available name and ip throws an exception.
> 
> * if the elastistor params which are required for plugin configuration are not injected through spring-storage-volume-cloudbyte-context.xml, it can be set from details map.
> 
> cloudmonkey# create storagepool scope=cluster zoneid=afacc706-3f4d-4f50-82e6-bf0f82959ba8 podid=821ad540-6c98-43f3-935d-72a47a319b20 clusterid=e0ced156-532e-4941-99c0-f34ff1727544 name=nfsvol provider=elastistor url=nfs://10.10.171.143/volnfs details[0].esaccountid=9e9f67d5-e06f-4d63-a0b8-e7255cba84b8 details[1].espoolid=d2d15d11-0f06-3426-a097-3e6e8b36f85c details[2].esdefaultgateway=10.10.1.1 details[3].essubnet=8  details[4].estntinterface=em0 details[5].esmanagementip=10.10.171.180
> details[6].esapikey=PubSInZaCji8hrRfOsCxgbug2I2k_sRJ0i2a9qmAzZIiCTcFPmZelzx6uNK9TYgqkdohCmq1L2J9eYmUe9YO6A capacityiops=100 capacitybytes=214748364800
> 
> storagepool:
> name = nfsvol
> id = 7ea08bf6-777a-3553-8f1e-c3a9f9b626cb
> capacityiops = 100
> clusterid = e0ced156-532e-4941-99c0-f34ff1727544
> clustername = test000
> created = 2014-03-12T17:45:10+0530
> disksizeallocated = 0
> disksizetotal = 214748364800
> hypervisor = Any
> ipaddress = 10.10.171.143
> path = /volnfs
> podid = 821ad540-6c98-43f3-935d-72a47a319b20
> podname = test00
> scope = CLUSTER
> state = Up
> type = NetworkFilesystem
> zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
> zonename = DevCloud0
> 
> 
> Thanks,
> 
> punith s
> 
>


Re: Review Request 19021: Cloudbyte Elastistor storage plug-in

Posted by Mike Tutkowski <mi...@solidfire.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/19021/#review36900
-----------------------------------------------------------



plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/lifecycle/ElastistorPrimaryDataStoreLifeCycle.java
<https://reviews.apache.org/r/19021/#comment68092>

    Perhaps I don't understand, but isn't this storage provider servicing a cluster...not an entire zone?
    
    If it's only servicing a cluster, I'm not sure why we're getting the hosts for the entire zone?
    
    Maybe you want to use a HostListener instead to create an association between hosts in a cluster and this storage?



plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/lifecycle/ElastistorPrimaryDataStoreLifeCycle.java
<https://reviews.apache.org/r/19021/#comment68093>

    What if the hypervisor type is VMware?


- Mike Tutkowski


On March 11, 2014, 7:28 a.m., punith s wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/19021/
> -----------------------------------------------------------
> 
> (Updated March 11, 2014, 7:28 a.m.)
> 
> 
> Review request for cloudstack, edison su and Mike Tutkowski.
> 
> 
> Repository: cloudstack-git
> 
> 
> Description
> -------
> 
> This patch implements a basic storage plug-in for cloudbyte elastistor v1.3.0, The plug-in is a new feature for cloudstack 4.4 and above.
> 
> this does not implement managed storage yet, it is been integrated only with CreateStoragePool and DeleteStoragePool api's.
> 
> the desired behavior of the plugin are:
> 
> * Allow an Admin to create a primary storage at cluster level, hence creates a volume in elastistor and gets attached to the host with the given capacityiops and capacitybytes through CreateStoragePool api with provider being elastistor.
> 
> *Allow an admin to delete a primary storage at cluster level, hence it deletes the volume from host in cloudstack and deletes the respective volume in elastistor.
> 
> * volume and datadisks fuctions performs the default storage fuctions, ie. the driver extends the CloudStackPrimaryDataStoreDriverImpl.
> 
> * support for both nfs and icsci primary storage.
> 
> 
> Diffs
> -----
> 
>   client/pom.xml af724b1 
>   plugins/pom.xml 097f224 
>   plugins/storage/volume/cloudbyte/pom.xml PRE-CREATION 
>   plugins/storage/volume/cloudbyte/resources/META-INF/cloudstack/storage-volume-cloudbyte/module.properties PRE-CREATION 
>   plugins/storage/volume/cloudbyte/resources/META-INF/cloudstack/storage-volume-cloudbyte/spring-storage-volume-cloudbyte-context.xml PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/client/BaseCommand.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/client/ElastiCenterClient.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/client/ElastiCenterCommand.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/AddQosGroupCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/CreateTsmCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/CreateVolumeCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/DeleteTsmCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/DeleteVolumeCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/ListCapabilitiesCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/ListTsmCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/QueryAsyncJobResultCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/driver/ElastistorPrimaryDataStoreDriver.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/lifecycle/ElastistorPrimaryDataStoreLifeCycle.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/Async.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/Capabilities.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/FileSystem.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/FileSystemWrapper.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/FilesystemQoSWrapper.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/JobId.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/QoSGroup.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/QoSGroupWrapper.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/StorageVolume.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/StorageVolumeWrapper.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/StorageVolumes.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/Tsm.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/TsmWrapper.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/Tsms.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/VolumeProperties.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/provider/ElastistorHostListener.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/provider/ElastistorPrimaryDataStoreProvider.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/AddQoSGroupResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/AddQosGroupCmdResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/CreateTsmCmdResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/CreateVolumeCmdResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/DeleteTsmResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/DeleteVolumeResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/ListCapabilitiesResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/ListTsmsResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/QueryAsyncJobResultResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/util/ElastistorUtil.java PRE-CREATION 
> 
> Diff: https://reviews.apache.org/r/19021/diff/
> 
> 
> Testing
> -------
> 
> Build test using, 
> 
> mvn -P developer,systemvm clean install, which is successful.
> 
> Manual testing has been performed using cloudmonkey.
> 
> * Creating a primary storage based on cloudbyte storage plugin.
> 
> cloudmonkey# create storagepool scope=cluster zoneid=dac7223c-6d09-4dcb-82fb-bdecf7c657f5 podid=20a613c4-eccf-4fdc-b8ca-c51df483326f clusterid=9a89bc12-bf00-496b-b1d8-8e92cdf1795f name=cloudbytevolume provider=elastistor url=nfs://10.10.171.137/cloudbytetest capacityiops=500 capacitybytes=214748364800 tags=cloudbytetest
> storagepool:
> name = cloudbytevolume
> id = 57f70aa4-659b-3b53-b8ab-2f712474f107
> capacityiops = 500
> clusterid = 9a89bc12-bf00-496b-b1d8-8e92cdf1795f
> clustername = test000
> created = 2014-03-11T12:42:38+0530
> disksizeallocated = 0
> disksizetotal = 214748364800
> hypervisor = Any
> ipaddress = 10.10.171.137
> path = /cloudbytetest
> podid = 20a613c4-eccf-4fdc-b8ca-c51df483326f
> podname = test00
> scope = CLUSTER
> state = Up
> tags = cloudbytetest
> type = NetworkFilesystem
> zoneid = dac7223c-6d09-4dcb-82fb-bdecf7c657f5
> zonename = DevCloud0
> 
> * Deleting the primary storage based on cloudbyte storage plugin.
> 
> cloudmonkey# delete storagepool id=57f70aa4-659b-3b53-b8ab-2f712474f107
> success = true
> 
> * creation of primary storage with negative capacityiops throws an exception.
> 
> * creation of primary storage with already available name and ip throws an exception.
> 
> 
> Thanks,
> 
> punith s
> 
>


Re: Review Request 19021: Cloudbyte Elastistor storage plug-in

Posted by punith s <pu...@cloudbyte.com>.

> On March 12, 2014, 10:19 p.m., Mike Tutkowski wrote:
> > plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/util/ElastistorUtil.java, line 495
> > <https://reviews.apache.org/r/19021/diff/2/?file=517486#file517486line495>
> >
> >     I like how you removed the standalone files for each command and integrated the commands into this one file.
> >     
> >     Quick question: It looks like your testing includes creating and deleting a storage pool, which would lead to the creation and deletion of a SAN volume. Have you had a chance to create a root disk and/or a data disk on such a storage pool and then delete it?

thanks mike.

yea of course, i have tested all volume related api's such as createVolume, attachVolume, detachVolume and deleteVolume through my plugin.
even we can make volumes to sit on specific storage pool by mapping with unique tags with respect to your concept.
for more details i have added the cloudmonkey responses for volume api's.
 


- punith


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


On March 12, 2014, 9:39 p.m., punith s wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/19021/
> -----------------------------------------------------------
> 
> (Updated March 12, 2014, 9:39 p.m.)
> 
> 
> Review request for cloudstack, edison su and Mike Tutkowski.
> 
> 
> Repository: cloudstack-git
> 
> 
> Description
> -------
> 
> This patch implements a basic storage plug-in for cloudbyte elastistor v1.3.0, The plug-in is a new feature for cloudstack 4.4 and above.
> 
> this does not implement managed storage yet, it is been integrated only with CreateStoragePool and DeleteStoragePool api's.
> 
> the desired behavior of the plugin are:
> 
> * Allow an Admin to create a primary storage at cluster level, hence creates a volume in elastistor and gets attached to the host with the given capacityiops and capacitybytes through CreateStoragePool api with provider being elastistor.
> 
> *Allow an admin to delete a primary storage at cluster level, hence it deletes the volume from host in cloudstack and deletes the respective volume in elastistor.
> 
> * volume and datadisks fuctions performs the default storage fuctions, ie. the driver extends the CloudStackPrimaryDataStoreDriverImpl.
> 
> * support for both nfs and icsci primary storage.
> 
> 
> Diffs
> -----
> 
>   plugins/storage/volume/cloudbyte/pom.xml PRE-CREATION 
>   plugins/storage/volume/cloudbyte/resources/META-INF/cloudstack/storage-volume-cloudbyte/spring-storage-volume-cloudbyte-context.xml PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/client/BaseCommand.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/client/ElastiCenterClient.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/client/ElastiCenterCommand.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/AddQosGroupCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/CreateTsmCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/CreateVolumeCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/DeleteTsmCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/DeleteVolumeCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/ListCapabilitiesCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/ListTsmCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/QueryAsyncJobResultCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/driver/ElastistorPrimaryDataStoreDriver.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/lifecycle/ElastistorPrimaryDataStoreLifeCycle.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/Async.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/Capabilities.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/FileSystem.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/FileSystemWrapper.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/FilesystemQoSWrapper.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/JobId.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/QoSGroup.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/QoSGroupWrapper.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/StorageVolume.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/StorageVolumeWrapper.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/StorageVolumes.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/Tsm.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/TsmWrapper.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/Tsms.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/VolumeProperties.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/provider/ElastistorPrimaryDataStoreProvider.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/AddQoSGroupResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/AddQosGroupCmdResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/CreateTsmCmdResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/CreateVolumeCmdResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/DeleteTsmResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/DeleteVolumeResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/ListCapabilitiesResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/ListTsmsResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/QueryAsyncJobResultResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/util/ElastistorUtil.java PRE-CREATION 
> 
> Diff: https://reviews.apache.org/r/19021/diff/
> 
> 
> Testing
> -------
> 
> Build test using, 
> 
> mvn -P developer,systemvm clean install, which is successful.
> 
> Manual testing has been performed using cloudmonkey.
> 
> * Creating a primary storage based on cloudbyte storage plugin.
> 
> cloudmonkey# create storagepool scope=cluster zoneid=dac7223c-6d09-4dcb-82fb-bdecf7c657f5 podid=20a613c4-eccf-4fdc-b8ca-c51df483326f clusterid=9a89bc12-bf00-496b-b1d8-8e92cdf1795f name=cloudbytevolume provider=elastistor url=nfs://10.10.171.137/cloudbytetest capacityiops=500 capacitybytes=214748364800 tags=cloudbytetest
> storagepool:
> name = cloudbytevolume
> id = 57f70aa4-659b-3b53-b8ab-2f712474f107
> capacityiops = 500
> clusterid = 9a89bc12-bf00-496b-b1d8-8e92cdf1795f
> clustername = test000
> created = 2014-03-11T12:42:38+0530
> disksizeallocated = 0
> disksizetotal = 214748364800
> hypervisor = Any
> ipaddress = 10.10.171.137
> path = /cloudbytetest
> podid = 20a613c4-eccf-4fdc-b8ca-c51df483326f
> podname = test00
> scope = CLUSTER
> state = Up
> tags = cloudbytetest
> type = NetworkFilesystem
> zoneid = dac7223c-6d09-4dcb-82fb-bdecf7c657f5
> zonename = DevCloud0
> 
> * Deleting the primary storage based on cloudbyte storage plugin.
> 
> cloudmonkey# delete storagepool id=57f70aa4-659b-3b53-b8ab-2f712474f107
> success = true
> 
> * creation of primary storage with negative capacityiops throws an exception.
> 
> * creation of primary storage with already available name and ip throws an exception.
> 
> * if the elastistor params which are required for plugin configuration are not injected through spring-storage-volume-cloudbyte-context.xml, it can be set from details map.
> 
> cloudmonkey# create storagepool scope=cluster zoneid=afacc706-3f4d-4f50-82e6-bf0f82959ba8 podid=821ad540-6c98-43f3-935d-72a47a319b20 clusterid=e0ced156-532e-4941-99c0-f34ff1727544 name=nfsvol provider=elastistor url=nfs://10.10.171.143/volnfs details[0].esaccountid=9e9f67d5-e06f-4d63-a0b8-e7255cba84b8 details[1].espoolid=d2d15d11-0f06-3426-a097-3e6e8b36f85c details[2].esdefaultgateway=10.10.1.1 details[3].essubnet=8  details[4].estntinterface=em0 details[5].esmanagementip=10.10.171.180
> details[6].esapikey=PubSInZaCji8hrRfOsCxgbug2I2k_sRJ0i2a9qmAzZIiCTcFPmZelzx6uNK9TYgqkdohCmq1L2J9eYmUe9YO6A capacityiops=100 capacitybytes=214748364800
> 
> storagepool:
> name = nfsvol
> id = 7ea08bf6-777a-3553-8f1e-c3a9f9b626cb
> capacityiops = 100
> clusterid = e0ced156-532e-4941-99c0-f34ff1727544
> clustername = test000
> created = 2014-03-12T17:45:10+0530
> disksizeallocated = 0
> disksizetotal = 214748364800
> hypervisor = Any
> ipaddress = 10.10.171.143
> path = /volnfs
> podid = 821ad540-6c98-43f3-935d-72a47a319b20
> podname = test00
> scope = CLUSTER
> state = Up
> type = NetworkFilesystem
> zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
> zonename = DevCloud0
> 
> 
> Thanks,
> 
> punith s
> 
>


Re: Review Request 19021: Cloudbyte Elastistor storage plug-in

Posted by punith s <pu...@cloudbyte.com>.

> On March 12, 2014, 10:19 p.m., Mike Tutkowski wrote:
> > plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/util/ElastistorUtil.java, line 495
> > <https://reviews.apache.org/r/19021/diff/2/?file=517486#file517486line495>
> >
> >     I like how you removed the standalone files for each command and integrated the commands into this one file.
> >     
> >     Quick question: It looks like your testing includes creating and deleting a storage pool, which would lead to the creation and deletion of a SAN volume. Have you had a chance to create a root disk and/or a data disk on such a storage pool and then delete it?
> 
> punith s wrote:
>     thanks mike.
>     
>     yea of course, i have tested all volume related api's such as createVolume, attachVolume, detachVolume and deleteVolume through my plugin.
>     even we can make volumes to sit on specific storage pool by mapping with unique tags with respect to your concept.
>     for more details i have added the cloudmonkey responses for volume api's.
>

and yes while creating a instance root disk will be mapped to the required storage pool by creating a new compute offering with the storage tag of the corresponding storage pool.


- punith


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


On March 13, 2014, 2:46 p.m., punith s wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/19021/
> -----------------------------------------------------------
> 
> (Updated March 13, 2014, 2:46 p.m.)
> 
> 
> Review request for cloudstack, edison su and Mike Tutkowski.
> 
> 
> Repository: cloudstack-git
> 
> 
> Description
> -------
> 
> This patch implements a basic storage plug-in for cloudbyte elastistor v1.3.0, The plug-in is a new feature for cloudstack 4.4 and above.
> 
> this does not implement managed storage yet, it is been integrated only with CreateStoragePool and DeleteStoragePool api's.
> 
> the desired behavior of the plugin are:
> 
> * Allow an Admin to create a primary storage at cluster level, hence creates a volume in elastistor and gets attached to the host with the given capacityiops and capacitybytes through CreateStoragePool api with provider being elastistor.
> 
> *Allow an admin to delete a primary storage at cluster level, hence it deletes the volume from host in cloudstack and deletes the respective volume in elastistor.
> 
> * volume and datadisks fuctions performs the default storage fuctions, ie. the driver extends the CloudStackPrimaryDataStoreDriverImpl.
> 
> * support for both nfs and icsci primary storage.
> 
> 
> Diffs
> -----
> 
>   client/pom.xml af724b1 
>   plugins/pom.xml 097f224 
>   plugins/storage/volume/cloudbyte/pom.xml PRE-CREATION 
>   plugins/storage/volume/cloudbyte/resources/META-INF/cloudstack/storage-volume-cloudbyte/module.properties PRE-CREATION 
>   plugins/storage/volume/cloudbyte/resources/META-INF/cloudstack/storage-volume-cloudbyte/spring-storage-volume-cloudbyte-context.xml PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/driver/ElastistorPrimaryDataStoreDriver.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/lifecycle/ElastistorPrimaryDataStoreLifeCycle.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/provider/ElastistorHostListener.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/provider/ElastistorPrimaryDataStoreProvider.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/util/ElastistorUtil.java PRE-CREATION 
> 
> Diff: https://reviews.apache.org/r/19021/diff/
> 
> 
> Testing
> -------
> 
> Build test using, 
> 
> mvn -P developer,systemvm clean install, which is successful.
> 
> Manual testing has been performed using cloudmonkey.
> 
> * Creating a primary storage based on cloudbyte storage plugin.
> 
> cloudmonkey# create storagepool scope=cluster zoneid=dac7223c-6d09-4dcb-82fb-bdecf7c657f5 podid=20a613c4-eccf-4fdc-b8ca-c51df483326f clusterid=9a89bc12-bf00-496b-b1d8-8e92cdf1795f name=cloudbytevolume provider=elastistor url=nfs://10.10.171.137/cloudbytetest capacityiops=500 capacitybytes=214748364800 tags=cloudbytetest
> storagepool:
> name = cloudbytevolume
> id = 57f70aa4-659b-3b53-b8ab-2f712474f107
> capacityiops = 500
> clusterid = 9a89bc12-bf00-496b-b1d8-8e92cdf1795f
> clustername = test000
> created = 2014-03-11T12:42:38+0530
> disksizeallocated = 0
> disksizetotal = 214748364800
> hypervisor = Any
> ipaddress = 10.10.171.137
> path = /cloudbytetest
> podid = 20a613c4-eccf-4fdc-b8ca-c51df483326f
> podname = test00
> scope = CLUSTER
> state = Up
> tags = cloudbytetest
> type = NetworkFilesystem
> zoneid = dac7223c-6d09-4dcb-82fb-bdecf7c657f5
> zonename = DevCloud0
> 
> * Deleting the primary storage based on cloudbyte storage plugin.
> 
> cloudmonkey# delete storagepool id=57f70aa4-659b-3b53-b8ab-2f712474f107
> success = true
> 
> * creation of primary storage with negative capacityiops throws an exception.
> 
> * creation of primary storage with already available name and ip throws an exception.
> 
> * if the elastistor params which are required for plugin configuration are not injected through spring-storage-volume-cloudbyte-context.xml, it can be set from details map.
> 
> cloudmonkey# create storagepool scope=cluster zoneid=afacc706-3f4d-4f50-82e6-bf0f82959ba8 podid=821ad540-6c98-43f3-935d-72a47a319b20 clusterid=e0ced156-532e-4941-99c0-f34ff1727544 name=nfsvol provider=elastistor url=nfs://10.10.171.143/volnfs details[0].esaccountid=9e9f67d5-e06f-4d63-a0b8-e7255cba84b8 details[1].espoolid=d2d15d11-0f06-3426-a097-3e6e8b36f85c details[2].esdefaultgateway=10.10.1.1 details[3].essubnet=8  details[4].estntinterface=em0 details[5].esmanagementip=10.10.171.180
> details[6].esapikey=PubSInZaCji8hrRfOsCxgbug2I2k_sRJ0i2a9qmAzZIiCTcFPmZelzx6uNK9TYgqkdohCmq1L2J9eYmUe9YO6A capacityiops=100 capacitybytes=214748364800
> 
> storagepool:
> name = nfsvol
> id = 7ea08bf6-777a-3553-8f1e-c3a9f9b626cb
> capacityiops = 100
> clusterid = e0ced156-532e-4941-99c0-f34ff1727544
> clustername = test000
> created = 2014-03-12T17:45:10+0530
> disksizeallocated = 0
> disksizetotal = 214748364800
> hypervisor = Any
> ipaddress = 10.10.171.143
> path = /volnfs
> podid = 821ad540-6c98-43f3-935d-72a47a319b20
> podname = test00
> scope = CLUSTER
> state = Up
> type = NetworkFilesystem
> zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
> zonename = DevCloud0
> 
> * creation of volume on created storage pool.
> cloudmonkey# create volume zoneid=afacc706-3f4d-4f50-82e6-bf0f82959ba8 diskofferingid=f20e3b76-82e3-43d1-91e3-3ff337d7181d name=testvolume
> 
> accountid = 819b1dfe-a9d3-11e3-a500-f46d04ee0527
> cmd = org.apache.cloudstack.api.command.user.volume.CreateVolumeCmd
> created = 2014-03-13T11:51:27+0530
> jobid = 596294b8-2b49-4b49-8526-9117cf56c95d
> jobprocstatus = 0
> jobresult:
> volume:
> name = testvolume
> id = e079281e-d822-4b90-9e85-9648350a0369
> account = admin
> created = 2014-03-13T11:51:27+0530
> destroyed = False
> diskofferingdisplaytext = Small Disk, 5 GB
> diskofferingid = f20e3b76-82e3-43d1-91e3-3ff337d7181d
> diskofferingname = Small
> displayvolume = True
> domain = ROOT
> domainid = 819ae3b6-a9d3-11e3-a500-f46d04ee0527
> isextractable = True
> jobid = 596294b8-2b49-4b49-8526-9117cf56c95d
> jobstatus = 0
> size = 5368709120
> state = Allocated
> storagetype = shared
> tags:
> type = DATADISK
> zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
> zonename = DevCloud0
> jobresultcode = 0
> jobresulttype = object
> jobstatus = 1
> userid = 819b856e-a9d3-11e3-a500-f46d04ee0527
> 
> * attaching a specific volume.
> cloudmonkey# attach volume id=e079281e-d822-4b90-9e85-9648350a0369 virtualmachineid=3e6eeab1-e624-461e-94e0-230215a8dbc3
> 
> accountid = 819b1dfe-a9d3-11e3-a500-f46d04ee0527
> cmd = org.apache.cloudstack.api.command.user.volume.AttachVolumeCmd
> created = 2014-03-13T11:55:09+0530
> jobid = 364d7636-72ad-410c-891c-c38ac34b6d42
> jobprocstatus = 0
> jobresult:
> volume:
> id = e079281e-d822-4b90-9e85-9648350a0369
> name = testvolume
> account = admin
> attached = 2014-03-13T11:55:11+0530
> created = 2014-03-13T11:51:27+0530
> destroyed = False
> deviceid = 2
> diskofferingdisplaytext = Small Disk, 5 GB
> diskofferingid = f20e3b76-82e3-43d1-91e3-3ff337d7181d
> diskofferingname = Small
> displayvolume = True
> domain = ROOT
> domainid = 819ae3b6-a9d3-11e3-a500-f46d04ee0527
> hypervisor = XenServer
> isextractable = True
> jobid = 364d7636-72ad-410c-891c-c38ac34b6d42
> jobstatus = 0
> size = 5368709120
> state = Ready
> storage = okay
> storagetype = shared
> tags:
> type = DATADISK
> virtualmachineid = 3e6eeab1-e624-461e-94e0-230215a8dbc3
> vmdisplayname = tiny
> vmname = tiny
> vmstate = Running
> zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
> zonename = DevCloud0
> jobresultcode = 0
> jobresulttype = object
> jobstatus = 1
> userid = 819b856e-a9d3-11e3-a500-f46d04ee0527
> 
> *detaching a specific volume.
> cloudmonkey# detach volume id=e079281e-d822-4b90-9e85-9648350a0369
> 
> accountid = 819b1dfe-a9d3-11e3-a500-f46d04ee0527
> cmd = org.apache.cloudstack.api.command.user.volume.DetachVolumeCmd
> created = 2014-03-13T11:57:40+0530
> jobid = 38fb6463-7d95-4d4c-8a50-1ec8a1c9ba98
> jobprocstatus = 0
> jobresult:
> volume:
> id = e079281e-d822-4b90-9e85-9648350a0369
> name = testvolume
> account = admin
> created = 2014-03-13T11:51:27+0530
> destroyed = False
> diskofferingdisplaytext = Small Disk, 5 GB
> diskofferingid = f20e3b76-82e3-43d1-91e3-3ff337d7181d
> diskofferingname = Small
> displayvolume = True
> domain = ROOT
> domainid = 819ae3b6-a9d3-11e3-a500-f46d04ee0527
> hypervisor = XenServer
> isextractable = True
> jobid = 38fb6463-7d95-4d4c-8a50-1ec8a1c9ba98
> jobstatus = 0
> size = 5368709120
> state = Ready
> storage = okay
> storagetype = shared
> tags:
> type = DATADISK
> zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
> zonename = DevCloud0
> jobresultcode = 0
> jobresulttype = object
> jobstatus = 1
> userid = 819b856e-a9d3-11e3-a500-f46d04ee0527
> 
> *deleting a volume
> cloudmonkey# delete volume id=e079281e-d822-4b90-9e85-9648350a0369
> success = true
> 
> 
> Thanks,
> 
> punith s
> 
>


Re: Review Request 19021: Cloudbyte Elastistor storage plug-in

Posted by Mike Tutkowski <mi...@solidfire.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/19021/#review36929
-----------------------------------------------------------



plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/util/ElastistorUtil.java
<https://reviews.apache.org/r/19021/#comment68119>

    I like how you removed the standalone files for each command and integrated the commands into this one file.
    
    Quick question: It looks like your testing includes creating and deleting a storage pool, which would lead to the creation and deletion of a SAN volume. Have you had a chance to create a root disk and/or a data disk on such a storage pool and then delete it?


- Mike Tutkowski


On March 12, 2014, 4:09 p.m., punith s wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/19021/
> -----------------------------------------------------------
> 
> (Updated March 12, 2014, 4:09 p.m.)
> 
> 
> Review request for cloudstack, edison su and Mike Tutkowski.
> 
> 
> Repository: cloudstack-git
> 
> 
> Description
> -------
> 
> This patch implements a basic storage plug-in for cloudbyte elastistor v1.3.0, The plug-in is a new feature for cloudstack 4.4 and above.
> 
> this does not implement managed storage yet, it is been integrated only with CreateStoragePool and DeleteStoragePool api's.
> 
> the desired behavior of the plugin are:
> 
> * Allow an Admin to create a primary storage at cluster level, hence creates a volume in elastistor and gets attached to the host with the given capacityiops and capacitybytes through CreateStoragePool api with provider being elastistor.
> 
> *Allow an admin to delete a primary storage at cluster level, hence it deletes the volume from host in cloudstack and deletes the respective volume in elastistor.
> 
> * volume and datadisks fuctions performs the default storage fuctions, ie. the driver extends the CloudStackPrimaryDataStoreDriverImpl.
> 
> * support for both nfs and icsci primary storage.
> 
> 
> Diffs
> -----
> 
>   plugins/storage/volume/cloudbyte/pom.xml PRE-CREATION 
>   plugins/storage/volume/cloudbyte/resources/META-INF/cloudstack/storage-volume-cloudbyte/spring-storage-volume-cloudbyte-context.xml PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/client/BaseCommand.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/client/ElastiCenterClient.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/client/ElastiCenterCommand.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/AddQosGroupCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/CreateTsmCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/CreateVolumeCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/DeleteTsmCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/DeleteVolumeCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/ListCapabilitiesCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/ListTsmCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/QueryAsyncJobResultCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/driver/ElastistorPrimaryDataStoreDriver.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/lifecycle/ElastistorPrimaryDataStoreLifeCycle.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/Async.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/Capabilities.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/FileSystem.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/FileSystemWrapper.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/FilesystemQoSWrapper.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/JobId.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/QoSGroup.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/QoSGroupWrapper.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/StorageVolume.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/StorageVolumeWrapper.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/StorageVolumes.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/Tsm.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/TsmWrapper.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/Tsms.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/VolumeProperties.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/provider/ElastistorPrimaryDataStoreProvider.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/AddQoSGroupResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/AddQosGroupCmdResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/CreateTsmCmdResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/CreateVolumeCmdResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/DeleteTsmResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/DeleteVolumeResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/ListCapabilitiesResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/ListTsmsResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/QueryAsyncJobResultResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/util/ElastistorUtil.java PRE-CREATION 
> 
> Diff: https://reviews.apache.org/r/19021/diff/
> 
> 
> Testing
> -------
> 
> Build test using, 
> 
> mvn -P developer,systemvm clean install, which is successful.
> 
> Manual testing has been performed using cloudmonkey.
> 
> * Creating a primary storage based on cloudbyte storage plugin.
> 
> cloudmonkey# create storagepool scope=cluster zoneid=dac7223c-6d09-4dcb-82fb-bdecf7c657f5 podid=20a613c4-eccf-4fdc-b8ca-c51df483326f clusterid=9a89bc12-bf00-496b-b1d8-8e92cdf1795f name=cloudbytevolume provider=elastistor url=nfs://10.10.171.137/cloudbytetest capacityiops=500 capacitybytes=214748364800 tags=cloudbytetest
> storagepool:
> name = cloudbytevolume
> id = 57f70aa4-659b-3b53-b8ab-2f712474f107
> capacityiops = 500
> clusterid = 9a89bc12-bf00-496b-b1d8-8e92cdf1795f
> clustername = test000
> created = 2014-03-11T12:42:38+0530
> disksizeallocated = 0
> disksizetotal = 214748364800
> hypervisor = Any
> ipaddress = 10.10.171.137
> path = /cloudbytetest
> podid = 20a613c4-eccf-4fdc-b8ca-c51df483326f
> podname = test00
> scope = CLUSTER
> state = Up
> tags = cloudbytetest
> type = NetworkFilesystem
> zoneid = dac7223c-6d09-4dcb-82fb-bdecf7c657f5
> zonename = DevCloud0
> 
> * Deleting the primary storage based on cloudbyte storage plugin.
> 
> cloudmonkey# delete storagepool id=57f70aa4-659b-3b53-b8ab-2f712474f107
> success = true
> 
> * creation of primary storage with negative capacityiops throws an exception.
> 
> * creation of primary storage with already available name and ip throws an exception.
> 
> * if the elastistor params which are required for plugin configuration are not injected through spring-storage-volume-cloudbyte-context.xml, it can be set from details map.
> 
> cloudmonkey# create storagepool scope=cluster zoneid=afacc706-3f4d-4f50-82e6-bf0f82959ba8 podid=821ad540-6c98-43f3-935d-72a47a319b20 clusterid=e0ced156-532e-4941-99c0-f34ff1727544 name=nfsvol provider=elastistor url=nfs://10.10.171.143/volnfs details[0].esaccountid=9e9f67d5-e06f-4d63-a0b8-e7255cba84b8 details[1].espoolid=d2d15d11-0f06-3426-a097-3e6e8b36f85c details[2].esdefaultgateway=10.10.1.1 details[3].essubnet=8  details[4].estntinterface=em0 details[5].esmanagementip=10.10.171.180
> details[6].esapikey=PubSInZaCji8hrRfOsCxgbug2I2k_sRJ0i2a9qmAzZIiCTcFPmZelzx6uNK9TYgqkdohCmq1L2J9eYmUe9YO6A capacityiops=100 capacitybytes=214748364800
> 
> storagepool:
> name = nfsvol
> id = 7ea08bf6-777a-3553-8f1e-c3a9f9b626cb
> capacityiops = 100
> clusterid = e0ced156-532e-4941-99c0-f34ff1727544
> clustername = test000
> created = 2014-03-12T17:45:10+0530
> disksizeallocated = 0
> disksizetotal = 214748364800
> hypervisor = Any
> ipaddress = 10.10.171.143
> path = /volnfs
> podid = 821ad540-6c98-43f3-935d-72a47a319b20
> podname = test00
> scope = CLUSTER
> state = Up
> type = NetworkFilesystem
> zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
> zonename = DevCloud0
> 
> 
> Thanks,
> 
> punith s
> 
>


Re: Review Request 19021: Cloudbyte Elastistor storage plug-in

Posted by edison su <ed...@citrix.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/19021/#review37582
-----------------------------------------------------------

Ship it!


Ship It!

- edison su


On March 13, 2014, 9:16 a.m., punith s wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/19021/
> -----------------------------------------------------------
> 
> (Updated March 13, 2014, 9:16 a.m.)
> 
> 
> Review request for cloudstack, edison su and Mike Tutkowski.
> 
> 
> Repository: cloudstack-git
> 
> 
> Description
> -------
> 
> This patch implements a basic storage plug-in for cloudbyte elastistor v1.3.0, The plug-in is a new feature for cloudstack 4.4 and above.
> 
> this does not implement managed storage yet, it is been integrated only with CreateStoragePool and DeleteStoragePool api's.
> 
> the desired behavior of the plugin are:
> 
> * Allow an Admin to create a primary storage at cluster level, hence creates a volume in elastistor and gets attached to the host with the given capacityiops and capacitybytes through CreateStoragePool api with provider being elastistor.
> 
> *Allow an admin to delete a primary storage at cluster level, hence it deletes the volume from host in cloudstack and deletes the respective volume in elastistor.
> 
> * volume and datadisks fuctions performs the default storage fuctions, ie. the driver extends the CloudStackPrimaryDataStoreDriverImpl.
> 
> * support for both nfs and icsci primary storage.
> 
> 
> Diffs
> -----
> 
>   client/pom.xml af724b1 
>   plugins/pom.xml 097f224 
>   plugins/storage/volume/cloudbyte/pom.xml PRE-CREATION 
>   plugins/storage/volume/cloudbyte/resources/META-INF/cloudstack/storage-volume-cloudbyte/module.properties PRE-CREATION 
>   plugins/storage/volume/cloudbyte/resources/META-INF/cloudstack/storage-volume-cloudbyte/spring-storage-volume-cloudbyte-context.xml PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/driver/ElastistorPrimaryDataStoreDriver.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/lifecycle/ElastistorPrimaryDataStoreLifeCycle.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/provider/ElastistorHostListener.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/provider/ElastistorPrimaryDataStoreProvider.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/util/ElastistorUtil.java PRE-CREATION 
> 
> Diff: https://reviews.apache.org/r/19021/diff/
> 
> 
> Testing
> -------
> 
> Build test using, 
> 
> mvn -P developer,systemvm clean install, which is successful.
> 
> Manual testing has been performed using cloudmonkey.
> 
> * Creating a primary storage based on cloudbyte storage plugin.
> 
> cloudmonkey# create storagepool scope=cluster zoneid=dac7223c-6d09-4dcb-82fb-bdecf7c657f5 podid=20a613c4-eccf-4fdc-b8ca-c51df483326f clusterid=9a89bc12-bf00-496b-b1d8-8e92cdf1795f name=cloudbytevolume provider=elastistor url=nfs://10.10.171.137/cloudbytetest capacityiops=500 capacitybytes=214748364800 tags=cloudbytetest
> storagepool:
> name = cloudbytevolume
> id = 57f70aa4-659b-3b53-b8ab-2f712474f107
> capacityiops = 500
> clusterid = 9a89bc12-bf00-496b-b1d8-8e92cdf1795f
> clustername = test000
> created = 2014-03-11T12:42:38+0530
> disksizeallocated = 0
> disksizetotal = 214748364800
> hypervisor = Any
> ipaddress = 10.10.171.137
> path = /cloudbytetest
> podid = 20a613c4-eccf-4fdc-b8ca-c51df483326f
> podname = test00
> scope = CLUSTER
> state = Up
> tags = cloudbytetest
> type = NetworkFilesystem
> zoneid = dac7223c-6d09-4dcb-82fb-bdecf7c657f5
> zonename = DevCloud0
> 
> * Deleting the primary storage based on cloudbyte storage plugin.
> 
> cloudmonkey# delete storagepool id=57f70aa4-659b-3b53-b8ab-2f712474f107
> success = true
> 
> * creation of primary storage with negative capacityiops throws an exception.
> 
> * creation of primary storage with already available name and ip throws an exception.
> 
> * if the elastistor params which are required for plugin configuration are not injected through spring-storage-volume-cloudbyte-context.xml, it can be set from details map.
> 
> cloudmonkey# create storagepool scope=cluster zoneid=afacc706-3f4d-4f50-82e6-bf0f82959ba8 podid=821ad540-6c98-43f3-935d-72a47a319b20 clusterid=e0ced156-532e-4941-99c0-f34ff1727544 name=nfsvol provider=elastistor url=nfs://10.10.171.143/volnfs details[0].esaccountid=9e9f67d5-e06f-4d63-a0b8-e7255cba84b8 details[1].espoolid=d2d15d11-0f06-3426-a097-3e6e8b36f85c details[2].esdefaultgateway=10.10.1.1 details[3].essubnet=8  details[4].estntinterface=em0 details[5].esmanagementip=10.10.171.180
> details[6].esapikey=PubSInZaCji8hrRfOsCxgbug2I2k_sRJ0i2a9qmAzZIiCTcFPmZelzx6uNK9TYgqkdohCmq1L2J9eYmUe9YO6A capacityiops=100 capacitybytes=214748364800
> 
> storagepool:
> name = nfsvol
> id = 7ea08bf6-777a-3553-8f1e-c3a9f9b626cb
> capacityiops = 100
> clusterid = e0ced156-532e-4941-99c0-f34ff1727544
> clustername = test000
> created = 2014-03-12T17:45:10+0530
> disksizeallocated = 0
> disksizetotal = 214748364800
> hypervisor = Any
> ipaddress = 10.10.171.143
> path = /volnfs
> podid = 821ad540-6c98-43f3-935d-72a47a319b20
> podname = test00
> scope = CLUSTER
> state = Up
> type = NetworkFilesystem
> zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
> zonename = DevCloud0
> 
> * creation of volume on created storage pool.
> cloudmonkey# create volume zoneid=afacc706-3f4d-4f50-82e6-bf0f82959ba8 diskofferingid=f20e3b76-82e3-43d1-91e3-3ff337d7181d name=testvolume
> 
> accountid = 819b1dfe-a9d3-11e3-a500-f46d04ee0527
> cmd = org.apache.cloudstack.api.command.user.volume.CreateVolumeCmd
> created = 2014-03-13T11:51:27+0530
> jobid = 596294b8-2b49-4b49-8526-9117cf56c95d
> jobprocstatus = 0
> jobresult:
> volume:
> name = testvolume
> id = e079281e-d822-4b90-9e85-9648350a0369
> account = admin
> created = 2014-03-13T11:51:27+0530
> destroyed = False
> diskofferingdisplaytext = Small Disk, 5 GB
> diskofferingid = f20e3b76-82e3-43d1-91e3-3ff337d7181d
> diskofferingname = Small
> displayvolume = True
> domain = ROOT
> domainid = 819ae3b6-a9d3-11e3-a500-f46d04ee0527
> isextractable = True
> jobid = 596294b8-2b49-4b49-8526-9117cf56c95d
> jobstatus = 0
> size = 5368709120
> state = Allocated
> storagetype = shared
> tags:
> type = DATADISK
> zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
> zonename = DevCloud0
> jobresultcode = 0
> jobresulttype = object
> jobstatus = 1
> userid = 819b856e-a9d3-11e3-a500-f46d04ee0527
> 
> * attaching a specific volume.
> cloudmonkey# attach volume id=e079281e-d822-4b90-9e85-9648350a0369 virtualmachineid=3e6eeab1-e624-461e-94e0-230215a8dbc3
> 
> accountid = 819b1dfe-a9d3-11e3-a500-f46d04ee0527
> cmd = org.apache.cloudstack.api.command.user.volume.AttachVolumeCmd
> created = 2014-03-13T11:55:09+0530
> jobid = 364d7636-72ad-410c-891c-c38ac34b6d42
> jobprocstatus = 0
> jobresult:
> volume:
> id = e079281e-d822-4b90-9e85-9648350a0369
> name = testvolume
> account = admin
> attached = 2014-03-13T11:55:11+0530
> created = 2014-03-13T11:51:27+0530
> destroyed = False
> deviceid = 2
> diskofferingdisplaytext = Small Disk, 5 GB
> diskofferingid = f20e3b76-82e3-43d1-91e3-3ff337d7181d
> diskofferingname = Small
> displayvolume = True
> domain = ROOT
> domainid = 819ae3b6-a9d3-11e3-a500-f46d04ee0527
> hypervisor = XenServer
> isextractable = True
> jobid = 364d7636-72ad-410c-891c-c38ac34b6d42
> jobstatus = 0
> size = 5368709120
> state = Ready
> storage = okay
> storagetype = shared
> tags:
> type = DATADISK
> virtualmachineid = 3e6eeab1-e624-461e-94e0-230215a8dbc3
> vmdisplayname = tiny
> vmname = tiny
> vmstate = Running
> zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
> zonename = DevCloud0
> jobresultcode = 0
> jobresulttype = object
> jobstatus = 1
> userid = 819b856e-a9d3-11e3-a500-f46d04ee0527
> 
> *detaching a specific volume.
> cloudmonkey# detach volume id=e079281e-d822-4b90-9e85-9648350a0369
> 
> accountid = 819b1dfe-a9d3-11e3-a500-f46d04ee0527
> cmd = org.apache.cloudstack.api.command.user.volume.DetachVolumeCmd
> created = 2014-03-13T11:57:40+0530
> jobid = 38fb6463-7d95-4d4c-8a50-1ec8a1c9ba98
> jobprocstatus = 0
> jobresult:
> volume:
> id = e079281e-d822-4b90-9e85-9648350a0369
> name = testvolume
> account = admin
> created = 2014-03-13T11:51:27+0530
> destroyed = False
> diskofferingdisplaytext = Small Disk, 5 GB
> diskofferingid = f20e3b76-82e3-43d1-91e3-3ff337d7181d
> diskofferingname = Small
> displayvolume = True
> domain = ROOT
> domainid = 819ae3b6-a9d3-11e3-a500-f46d04ee0527
> hypervisor = XenServer
> isextractable = True
> jobid = 38fb6463-7d95-4d4c-8a50-1ec8a1c9ba98
> jobstatus = 0
> size = 5368709120
> state = Ready
> storage = okay
> storagetype = shared
> tags:
> type = DATADISK
> zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
> zonename = DevCloud0
> jobresultcode = 0
> jobresulttype = object
> jobstatus = 1
> userid = 819b856e-a9d3-11e3-a500-f46d04ee0527
> 
> *deleting a volume
> cloudmonkey# delete volume id=e079281e-d822-4b90-9e85-9648350a0369
> success = true
> 
> 
> Thanks,
> 
> punith s
> 
>


Re: Review Request 19021: Cloudbyte Elastistor storage plug-in

Posted by Mike Tutkowski <mi...@solidfire.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/19021/#review37199
-----------------------------------------------------------

Ship it!


Ship It!

- Mike Tutkowski


On March 13, 2014, 9:16 a.m., punith s wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/19021/
> -----------------------------------------------------------
> 
> (Updated March 13, 2014, 9:16 a.m.)
> 
> 
> Review request for cloudstack, edison su and Mike Tutkowski.
> 
> 
> Repository: cloudstack-git
> 
> 
> Description
> -------
> 
> This patch implements a basic storage plug-in for cloudbyte elastistor v1.3.0, The plug-in is a new feature for cloudstack 4.4 and above.
> 
> this does not implement managed storage yet, it is been integrated only with CreateStoragePool and DeleteStoragePool api's.
> 
> the desired behavior of the plugin are:
> 
> * Allow an Admin to create a primary storage at cluster level, hence creates a volume in elastistor and gets attached to the host with the given capacityiops and capacitybytes through CreateStoragePool api with provider being elastistor.
> 
> *Allow an admin to delete a primary storage at cluster level, hence it deletes the volume from host in cloudstack and deletes the respective volume in elastistor.
> 
> * volume and datadisks fuctions performs the default storage fuctions, ie. the driver extends the CloudStackPrimaryDataStoreDriverImpl.
> 
> * support for both nfs and icsci primary storage.
> 
> 
> Diffs
> -----
> 
>   client/pom.xml af724b1 
>   plugins/pom.xml 097f224 
>   plugins/storage/volume/cloudbyte/pom.xml PRE-CREATION 
>   plugins/storage/volume/cloudbyte/resources/META-INF/cloudstack/storage-volume-cloudbyte/module.properties PRE-CREATION 
>   plugins/storage/volume/cloudbyte/resources/META-INF/cloudstack/storage-volume-cloudbyte/spring-storage-volume-cloudbyte-context.xml PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/driver/ElastistorPrimaryDataStoreDriver.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/lifecycle/ElastistorPrimaryDataStoreLifeCycle.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/provider/ElastistorHostListener.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/provider/ElastistorPrimaryDataStoreProvider.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/util/ElastistorUtil.java PRE-CREATION 
> 
> Diff: https://reviews.apache.org/r/19021/diff/
> 
> 
> Testing
> -------
> 
> Build test using, 
> 
> mvn -P developer,systemvm clean install, which is successful.
> 
> Manual testing has been performed using cloudmonkey.
> 
> * Creating a primary storage based on cloudbyte storage plugin.
> 
> cloudmonkey# create storagepool scope=cluster zoneid=dac7223c-6d09-4dcb-82fb-bdecf7c657f5 podid=20a613c4-eccf-4fdc-b8ca-c51df483326f clusterid=9a89bc12-bf00-496b-b1d8-8e92cdf1795f name=cloudbytevolume provider=elastistor url=nfs://10.10.171.137/cloudbytetest capacityiops=500 capacitybytes=214748364800 tags=cloudbytetest
> storagepool:
> name = cloudbytevolume
> id = 57f70aa4-659b-3b53-b8ab-2f712474f107
> capacityiops = 500
> clusterid = 9a89bc12-bf00-496b-b1d8-8e92cdf1795f
> clustername = test000
> created = 2014-03-11T12:42:38+0530
> disksizeallocated = 0
> disksizetotal = 214748364800
> hypervisor = Any
> ipaddress = 10.10.171.137
> path = /cloudbytetest
> podid = 20a613c4-eccf-4fdc-b8ca-c51df483326f
> podname = test00
> scope = CLUSTER
> state = Up
> tags = cloudbytetest
> type = NetworkFilesystem
> zoneid = dac7223c-6d09-4dcb-82fb-bdecf7c657f5
> zonename = DevCloud0
> 
> * Deleting the primary storage based on cloudbyte storage plugin.
> 
> cloudmonkey# delete storagepool id=57f70aa4-659b-3b53-b8ab-2f712474f107
> success = true
> 
> * creation of primary storage with negative capacityiops throws an exception.
> 
> * creation of primary storage with already available name and ip throws an exception.
> 
> * if the elastistor params which are required for plugin configuration are not injected through spring-storage-volume-cloudbyte-context.xml, it can be set from details map.
> 
> cloudmonkey# create storagepool scope=cluster zoneid=afacc706-3f4d-4f50-82e6-bf0f82959ba8 podid=821ad540-6c98-43f3-935d-72a47a319b20 clusterid=e0ced156-532e-4941-99c0-f34ff1727544 name=nfsvol provider=elastistor url=nfs://10.10.171.143/volnfs details[0].esaccountid=9e9f67d5-e06f-4d63-a0b8-e7255cba84b8 details[1].espoolid=d2d15d11-0f06-3426-a097-3e6e8b36f85c details[2].esdefaultgateway=10.10.1.1 details[3].essubnet=8  details[4].estntinterface=em0 details[5].esmanagementip=10.10.171.180
> details[6].esapikey=PubSInZaCji8hrRfOsCxgbug2I2k_sRJ0i2a9qmAzZIiCTcFPmZelzx6uNK9TYgqkdohCmq1L2J9eYmUe9YO6A capacityiops=100 capacitybytes=214748364800
> 
> storagepool:
> name = nfsvol
> id = 7ea08bf6-777a-3553-8f1e-c3a9f9b626cb
> capacityiops = 100
> clusterid = e0ced156-532e-4941-99c0-f34ff1727544
> clustername = test000
> created = 2014-03-12T17:45:10+0530
> disksizeallocated = 0
> disksizetotal = 214748364800
> hypervisor = Any
> ipaddress = 10.10.171.143
> path = /volnfs
> podid = 821ad540-6c98-43f3-935d-72a47a319b20
> podname = test00
> scope = CLUSTER
> state = Up
> type = NetworkFilesystem
> zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
> zonename = DevCloud0
> 
> * creation of volume on created storage pool.
> cloudmonkey# create volume zoneid=afacc706-3f4d-4f50-82e6-bf0f82959ba8 diskofferingid=f20e3b76-82e3-43d1-91e3-3ff337d7181d name=testvolume
> 
> accountid = 819b1dfe-a9d3-11e3-a500-f46d04ee0527
> cmd = org.apache.cloudstack.api.command.user.volume.CreateVolumeCmd
> created = 2014-03-13T11:51:27+0530
> jobid = 596294b8-2b49-4b49-8526-9117cf56c95d
> jobprocstatus = 0
> jobresult:
> volume:
> name = testvolume
> id = e079281e-d822-4b90-9e85-9648350a0369
> account = admin
> created = 2014-03-13T11:51:27+0530
> destroyed = False
> diskofferingdisplaytext = Small Disk, 5 GB
> diskofferingid = f20e3b76-82e3-43d1-91e3-3ff337d7181d
> diskofferingname = Small
> displayvolume = True
> domain = ROOT
> domainid = 819ae3b6-a9d3-11e3-a500-f46d04ee0527
> isextractable = True
> jobid = 596294b8-2b49-4b49-8526-9117cf56c95d
> jobstatus = 0
> size = 5368709120
> state = Allocated
> storagetype = shared
> tags:
> type = DATADISK
> zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
> zonename = DevCloud0
> jobresultcode = 0
> jobresulttype = object
> jobstatus = 1
> userid = 819b856e-a9d3-11e3-a500-f46d04ee0527
> 
> * attaching a specific volume.
> cloudmonkey# attach volume id=e079281e-d822-4b90-9e85-9648350a0369 virtualmachineid=3e6eeab1-e624-461e-94e0-230215a8dbc3
> 
> accountid = 819b1dfe-a9d3-11e3-a500-f46d04ee0527
> cmd = org.apache.cloudstack.api.command.user.volume.AttachVolumeCmd
> created = 2014-03-13T11:55:09+0530
> jobid = 364d7636-72ad-410c-891c-c38ac34b6d42
> jobprocstatus = 0
> jobresult:
> volume:
> id = e079281e-d822-4b90-9e85-9648350a0369
> name = testvolume
> account = admin
> attached = 2014-03-13T11:55:11+0530
> created = 2014-03-13T11:51:27+0530
> destroyed = False
> deviceid = 2
> diskofferingdisplaytext = Small Disk, 5 GB
> diskofferingid = f20e3b76-82e3-43d1-91e3-3ff337d7181d
> diskofferingname = Small
> displayvolume = True
> domain = ROOT
> domainid = 819ae3b6-a9d3-11e3-a500-f46d04ee0527
> hypervisor = XenServer
> isextractable = True
> jobid = 364d7636-72ad-410c-891c-c38ac34b6d42
> jobstatus = 0
> size = 5368709120
> state = Ready
> storage = okay
> storagetype = shared
> tags:
> type = DATADISK
> virtualmachineid = 3e6eeab1-e624-461e-94e0-230215a8dbc3
> vmdisplayname = tiny
> vmname = tiny
> vmstate = Running
> zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
> zonename = DevCloud0
> jobresultcode = 0
> jobresulttype = object
> jobstatus = 1
> userid = 819b856e-a9d3-11e3-a500-f46d04ee0527
> 
> *detaching a specific volume.
> cloudmonkey# detach volume id=e079281e-d822-4b90-9e85-9648350a0369
> 
> accountid = 819b1dfe-a9d3-11e3-a500-f46d04ee0527
> cmd = org.apache.cloudstack.api.command.user.volume.DetachVolumeCmd
> created = 2014-03-13T11:57:40+0530
> jobid = 38fb6463-7d95-4d4c-8a50-1ec8a1c9ba98
> jobprocstatus = 0
> jobresult:
> volume:
> id = e079281e-d822-4b90-9e85-9648350a0369
> name = testvolume
> account = admin
> created = 2014-03-13T11:51:27+0530
> destroyed = False
> diskofferingdisplaytext = Small Disk, 5 GB
> diskofferingid = f20e3b76-82e3-43d1-91e3-3ff337d7181d
> diskofferingname = Small
> displayvolume = True
> domain = ROOT
> domainid = 819ae3b6-a9d3-11e3-a500-f46d04ee0527
> hypervisor = XenServer
> isextractable = True
> jobid = 38fb6463-7d95-4d4c-8a50-1ec8a1c9ba98
> jobstatus = 0
> size = 5368709120
> state = Ready
> storage = okay
> storagetype = shared
> tags:
> type = DATADISK
> zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
> zonename = DevCloud0
> jobresultcode = 0
> jobresulttype = object
> jobstatus = 1
> userid = 819b856e-a9d3-11e3-a500-f46d04ee0527
> 
> *deleting a volume
> cloudmonkey# delete volume id=e079281e-d822-4b90-9e85-9648350a0369
> success = true
> 
> 
> Thanks,
> 
> punith s
> 
>


Re: Review Request 19021: Cloudbyte Elastistor storage plug-in

Posted by edison su <ed...@citrix.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/19021/#review37109
-----------------------------------------------------------


The patch looks OK to me. When Mike is OK with your patch, then we can check it into master. Thanks for your patches.

- edison su


On March 13, 2014, 9:16 a.m., punith s wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/19021/
> -----------------------------------------------------------
> 
> (Updated March 13, 2014, 9:16 a.m.)
> 
> 
> Review request for cloudstack, edison su and Mike Tutkowski.
> 
> 
> Repository: cloudstack-git
> 
> 
> Description
> -------
> 
> This patch implements a basic storage plug-in for cloudbyte elastistor v1.3.0, The plug-in is a new feature for cloudstack 4.4 and above.
> 
> this does not implement managed storage yet, it is been integrated only with CreateStoragePool and DeleteStoragePool api's.
> 
> the desired behavior of the plugin are:
> 
> * Allow an Admin to create a primary storage at cluster level, hence creates a volume in elastistor and gets attached to the host with the given capacityiops and capacitybytes through CreateStoragePool api with provider being elastistor.
> 
> *Allow an admin to delete a primary storage at cluster level, hence it deletes the volume from host in cloudstack and deletes the respective volume in elastistor.
> 
> * volume and datadisks fuctions performs the default storage fuctions, ie. the driver extends the CloudStackPrimaryDataStoreDriverImpl.
> 
> * support for both nfs and icsci primary storage.
> 
> 
> Diffs
> -----
> 
>   client/pom.xml af724b1 
>   plugins/pom.xml 097f224 
>   plugins/storage/volume/cloudbyte/pom.xml PRE-CREATION 
>   plugins/storage/volume/cloudbyte/resources/META-INF/cloudstack/storage-volume-cloudbyte/module.properties PRE-CREATION 
>   plugins/storage/volume/cloudbyte/resources/META-INF/cloudstack/storage-volume-cloudbyte/spring-storage-volume-cloudbyte-context.xml PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/driver/ElastistorPrimaryDataStoreDriver.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/lifecycle/ElastistorPrimaryDataStoreLifeCycle.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/provider/ElastistorHostListener.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/provider/ElastistorPrimaryDataStoreProvider.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/util/ElastistorUtil.java PRE-CREATION 
> 
> Diff: https://reviews.apache.org/r/19021/diff/
> 
> 
> Testing
> -------
> 
> Build test using, 
> 
> mvn -P developer,systemvm clean install, which is successful.
> 
> Manual testing has been performed using cloudmonkey.
> 
> * Creating a primary storage based on cloudbyte storage plugin.
> 
> cloudmonkey# create storagepool scope=cluster zoneid=dac7223c-6d09-4dcb-82fb-bdecf7c657f5 podid=20a613c4-eccf-4fdc-b8ca-c51df483326f clusterid=9a89bc12-bf00-496b-b1d8-8e92cdf1795f name=cloudbytevolume provider=elastistor url=nfs://10.10.171.137/cloudbytetest capacityiops=500 capacitybytes=214748364800 tags=cloudbytetest
> storagepool:
> name = cloudbytevolume
> id = 57f70aa4-659b-3b53-b8ab-2f712474f107
> capacityiops = 500
> clusterid = 9a89bc12-bf00-496b-b1d8-8e92cdf1795f
> clustername = test000
> created = 2014-03-11T12:42:38+0530
> disksizeallocated = 0
> disksizetotal = 214748364800
> hypervisor = Any
> ipaddress = 10.10.171.137
> path = /cloudbytetest
> podid = 20a613c4-eccf-4fdc-b8ca-c51df483326f
> podname = test00
> scope = CLUSTER
> state = Up
> tags = cloudbytetest
> type = NetworkFilesystem
> zoneid = dac7223c-6d09-4dcb-82fb-bdecf7c657f5
> zonename = DevCloud0
> 
> * Deleting the primary storage based on cloudbyte storage plugin.
> 
> cloudmonkey# delete storagepool id=57f70aa4-659b-3b53-b8ab-2f712474f107
> success = true
> 
> * creation of primary storage with negative capacityiops throws an exception.
> 
> * creation of primary storage with already available name and ip throws an exception.
> 
> * if the elastistor params which are required for plugin configuration are not injected through spring-storage-volume-cloudbyte-context.xml, it can be set from details map.
> 
> cloudmonkey# create storagepool scope=cluster zoneid=afacc706-3f4d-4f50-82e6-bf0f82959ba8 podid=821ad540-6c98-43f3-935d-72a47a319b20 clusterid=e0ced156-532e-4941-99c0-f34ff1727544 name=nfsvol provider=elastistor url=nfs://10.10.171.143/volnfs details[0].esaccountid=9e9f67d5-e06f-4d63-a0b8-e7255cba84b8 details[1].espoolid=d2d15d11-0f06-3426-a097-3e6e8b36f85c details[2].esdefaultgateway=10.10.1.1 details[3].essubnet=8  details[4].estntinterface=em0 details[5].esmanagementip=10.10.171.180
> details[6].esapikey=PubSInZaCji8hrRfOsCxgbug2I2k_sRJ0i2a9qmAzZIiCTcFPmZelzx6uNK9TYgqkdohCmq1L2J9eYmUe9YO6A capacityiops=100 capacitybytes=214748364800
> 
> storagepool:
> name = nfsvol
> id = 7ea08bf6-777a-3553-8f1e-c3a9f9b626cb
> capacityiops = 100
> clusterid = e0ced156-532e-4941-99c0-f34ff1727544
> clustername = test000
> created = 2014-03-12T17:45:10+0530
> disksizeallocated = 0
> disksizetotal = 214748364800
> hypervisor = Any
> ipaddress = 10.10.171.143
> path = /volnfs
> podid = 821ad540-6c98-43f3-935d-72a47a319b20
> podname = test00
> scope = CLUSTER
> state = Up
> type = NetworkFilesystem
> zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
> zonename = DevCloud0
> 
> * creation of volume on created storage pool.
> cloudmonkey# create volume zoneid=afacc706-3f4d-4f50-82e6-bf0f82959ba8 diskofferingid=f20e3b76-82e3-43d1-91e3-3ff337d7181d name=testvolume
> 
> accountid = 819b1dfe-a9d3-11e3-a500-f46d04ee0527
> cmd = org.apache.cloudstack.api.command.user.volume.CreateVolumeCmd
> created = 2014-03-13T11:51:27+0530
> jobid = 596294b8-2b49-4b49-8526-9117cf56c95d
> jobprocstatus = 0
> jobresult:
> volume:
> name = testvolume
> id = e079281e-d822-4b90-9e85-9648350a0369
> account = admin
> created = 2014-03-13T11:51:27+0530
> destroyed = False
> diskofferingdisplaytext = Small Disk, 5 GB
> diskofferingid = f20e3b76-82e3-43d1-91e3-3ff337d7181d
> diskofferingname = Small
> displayvolume = True
> domain = ROOT
> domainid = 819ae3b6-a9d3-11e3-a500-f46d04ee0527
> isextractable = True
> jobid = 596294b8-2b49-4b49-8526-9117cf56c95d
> jobstatus = 0
> size = 5368709120
> state = Allocated
> storagetype = shared
> tags:
> type = DATADISK
> zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
> zonename = DevCloud0
> jobresultcode = 0
> jobresulttype = object
> jobstatus = 1
> userid = 819b856e-a9d3-11e3-a500-f46d04ee0527
> 
> * attaching a specific volume.
> cloudmonkey# attach volume id=e079281e-d822-4b90-9e85-9648350a0369 virtualmachineid=3e6eeab1-e624-461e-94e0-230215a8dbc3
> 
> accountid = 819b1dfe-a9d3-11e3-a500-f46d04ee0527
> cmd = org.apache.cloudstack.api.command.user.volume.AttachVolumeCmd
> created = 2014-03-13T11:55:09+0530
> jobid = 364d7636-72ad-410c-891c-c38ac34b6d42
> jobprocstatus = 0
> jobresult:
> volume:
> id = e079281e-d822-4b90-9e85-9648350a0369
> name = testvolume
> account = admin
> attached = 2014-03-13T11:55:11+0530
> created = 2014-03-13T11:51:27+0530
> destroyed = False
> deviceid = 2
> diskofferingdisplaytext = Small Disk, 5 GB
> diskofferingid = f20e3b76-82e3-43d1-91e3-3ff337d7181d
> diskofferingname = Small
> displayvolume = True
> domain = ROOT
> domainid = 819ae3b6-a9d3-11e3-a500-f46d04ee0527
> hypervisor = XenServer
> isextractable = True
> jobid = 364d7636-72ad-410c-891c-c38ac34b6d42
> jobstatus = 0
> size = 5368709120
> state = Ready
> storage = okay
> storagetype = shared
> tags:
> type = DATADISK
> virtualmachineid = 3e6eeab1-e624-461e-94e0-230215a8dbc3
> vmdisplayname = tiny
> vmname = tiny
> vmstate = Running
> zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
> zonename = DevCloud0
> jobresultcode = 0
> jobresulttype = object
> jobstatus = 1
> userid = 819b856e-a9d3-11e3-a500-f46d04ee0527
> 
> *detaching a specific volume.
> cloudmonkey# detach volume id=e079281e-d822-4b90-9e85-9648350a0369
> 
> accountid = 819b1dfe-a9d3-11e3-a500-f46d04ee0527
> cmd = org.apache.cloudstack.api.command.user.volume.DetachVolumeCmd
> created = 2014-03-13T11:57:40+0530
> jobid = 38fb6463-7d95-4d4c-8a50-1ec8a1c9ba98
> jobprocstatus = 0
> jobresult:
> volume:
> id = e079281e-d822-4b90-9e85-9648350a0369
> name = testvolume
> account = admin
> created = 2014-03-13T11:51:27+0530
> destroyed = False
> diskofferingdisplaytext = Small Disk, 5 GB
> diskofferingid = f20e3b76-82e3-43d1-91e3-3ff337d7181d
> diskofferingname = Small
> displayvolume = True
> domain = ROOT
> domainid = 819ae3b6-a9d3-11e3-a500-f46d04ee0527
> hypervisor = XenServer
> isextractable = True
> jobid = 38fb6463-7d95-4d4c-8a50-1ec8a1c9ba98
> jobstatus = 0
> size = 5368709120
> state = Ready
> storage = okay
> storagetype = shared
> tags:
> type = DATADISK
> zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
> zonename = DevCloud0
> jobresultcode = 0
> jobresulttype = object
> jobstatus = 1
> userid = 819b856e-a9d3-11e3-a500-f46d04ee0527
> 
> *deleting a volume
> cloudmonkey# delete volume id=e079281e-d822-4b90-9e85-9648350a0369
> success = true
> 
> 
> Thanks,
> 
> punith s
> 
>


Re: Review Request 19021: Cloudbyte Elastistor storage plug-in

Posted by Punith S <pu...@cloudbyte.com>.
hi guys,

i have resolved all issues with fixes and refactoring of plugin code, its
good to go now ,
i'll submit once i get the ship it message. thanks for the review.


On Fri, Mar 14, 2014 at 11:19 AM, punith s <pu...@cloudbyte.com> wrote:

>    This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/19021/
>
> On March 14th, 2014, 3:54 a.m. IST, *Mike Tutkowski* wrote:
>
>
> plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/lifecycle/ElastistorPrimaryDataStoreLifeCycle.java<https://reviews.apache.org/r/19021/diff/5/?file=518383#file518383line99> (Diff
> revision 5)
>
> 99
>
>         if(details.get("esaccountid") != null)
>
>   Does this plug-in support multiple CloudByte SANs at the same time?
>
> It looks like whatever values you set most recently for ElastistorUtil will be utilized if you don't provide them in the details. Is this OK if you don't provide all of the details for your second or more SAN?
>
>  yes it will.
>
> yes, we are expecting admin to use cloudmonkey to create storage pool if the elastistor params are not set for the first time.
> once the details are set he can use cloudstack UI to add or deleted storage pools on the same SAN but if he wants to use different SAN
> we are expecting him to use cloudmonkey again to change elastistor params through details map.
>
> thanks.
>
>
>
>
> - punith
>
> On March 13th, 2014, 2:46 p.m. IST, punith s wrote:
>   Review request for cloudstack, edison su and Mike Tutkowski.
> By punith s.
>
> *Updated March 13, 2014, 2:46 p.m.*
>  *Repository: * cloudstack-git
> Description
>
> This patch implements a basic storage plug-in for cloudbyte elastistor v1.3.0, The plug-in is a new feature for cloudstack 4.4 and above.
>
> this does not implement managed storage yet, it is been integrated only with CreateStoragePool and DeleteStoragePool api's.
>
> the desired behavior of the plugin are:
>
> * Allow an Admin to create a primary storage at cluster level, hence creates a volume in elastistor and gets attached to the host with the given capacityiops and capacitybytes through CreateStoragePool api with provider being elastistor.
>
> *Allow an admin to delete a primary storage at cluster level, hence it deletes the volume from host in cloudstack and deletes the respective volume in elastistor.
>
> * volume and datadisks fuctions performs the default storage fuctions, ie. the driver extends the CloudStackPrimaryDataStoreDriverImpl.
>
> * support for both nfs and icsci primary storage.
>
>   Testing
>
> Build test using,
>
> mvn -P developer,systemvm clean install, which is successful.
>
> Manual testing has been performed using cloudmonkey.
>
> * Creating a primary storage based on cloudbyte storage plugin.
>
> cloudmonkey# create storagepool scope=cluster zoneid=dac7223c-6d09-4dcb-82fb-bdecf7c657f5 podid=20a613c4-eccf-4fdc-b8ca-c51df483326f clusterid=9a89bc12-bf00-496b-b1d8-8e92cdf1795f name=cloudbytevolume provider=elastistor url=nfs://10.10.171.137/cloudbytetest capacityiops=500 capacitybytes=214748364800 tags=cloudbytetest
> storagepool:
> name = cloudbytevolume
> id = 57f70aa4-659b-3b53-b8ab-2f712474f107
> capacityiops = 500
> clusterid = 9a89bc12-bf00-496b-b1d8-8e92cdf1795f
> clustername = test000
> created = 2014-03-11T12:42:38+0530
> disksizeallocated = 0
> disksizetotal = 214748364800
> hypervisor = Any
> ipaddress = 10.10.171.137
> path = /cloudbytetest
> podid = 20a613c4-eccf-4fdc-b8ca-c51df483326f
> podname = test00
> scope = CLUSTER
> state = Up
> tags = cloudbytetest
> type = NetworkFilesystem
> zoneid = dac7223c-6d09-4dcb-82fb-bdecf7c657f5
> zonename = DevCloud0
>
> * Deleting the primary storage based on cloudbyte storage plugin.
>
> cloudmonkey# delete storagepool id=57f70aa4-659b-3b53-b8ab-2f712474f107
> success = true
>
> * creation of primary storage with negative capacityiops throws an exception.
>
> * creation of primary storage with already available name and ip throws an exception.
>
> * if the elastistor params which are required for plugin configuration are not injected through spring-storage-volume-cloudbyte-context.xml, it can be set from details map.
>
> cloudmonkey# create storagepool scope=cluster zoneid=afacc706-3f4d-4f50-82e6-bf0f82959ba8 podid=821ad540-6c98-43f3-935d-72a47a319b20 clusterid=e0ced156-532e-4941-99c0-f34ff1727544 name=nfsvol provider=elastistor url=nfs://10.10.171.143/volnfs details[0].esaccountid=9e9f67d5-e06f-4d63-a0b8-e7255cba84b8 details[1].espoolid=d2d15d11-0f06-3426-a097-3e6e8b36f85c details[2].esdefaultgateway=10.10.1.1 details[3].essubnet=8  details[4].estntinterface=em0 details[5].esmanagementip=10.10.171.180
> details[6].esapikey=PubSInZaCji8hrRfOsCxgbug2I2k_sRJ0i2a9qmAzZIiCTcFPmZelzx6uNK9TYgqkdohCmq1L2J9eYmUe9YO6A capacityiops=100 capacitybytes=214748364800
>
> storagepool:
> name = nfsvol
> id = 7ea08bf6-777a-3553-8f1e-c3a9f9b626cb
> capacityiops = 100
> clusterid = e0ced156-532e-4941-99c0-f34ff1727544
> clustername = test000
> created = 2014-03-12T17:45:10+0530
> disksizeallocated = 0
> disksizetotal = 214748364800
> hypervisor = Any
> ipaddress = 10.10.171.143
> path = /volnfs
> podid = 821ad540-6c98-43f3-935d-72a47a319b20
> podname = test00
> scope = CLUSTER
> state = Up
> type = NetworkFilesystem
> zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
> zonename = DevCloud0
>
> * creation of volume on created storage pool.
> cloudmonkey# create volume zoneid=afacc706-3f4d-4f50-82e6-bf0f82959ba8 diskofferingid=f20e3b76-82e3-43d1-91e3-3ff337d7181d name=testvolume
>
> accountid = 819b1dfe-a9d3-11e3-a500-f46d04ee0527
> cmd = org.apache.cloudstack.api.command.user.volume.CreateVolumeCmd
> created = 2014-03-13T11:51:27+0530
> jobid = 596294b8-2b49-4b49-8526-9117cf56c95d
> jobprocstatus = 0
> jobresult:
> volume:
> name = testvolume
> id = e079281e-d822-4b90-9e85-9648350a0369
> account = admin
> created = 2014-03-13T11:51:27+0530
> destroyed = False
> diskofferingdisplaytext = Small Disk, 5 GB
> diskofferingid = f20e3b76-82e3-43d1-91e3-3ff337d7181d
> diskofferingname = Small
> displayvolume = True
> domain = ROOT
> domainid = 819ae3b6-a9d3-11e3-a500-f46d04ee0527
> isextractable = True
> jobid = 596294b8-2b49-4b49-8526-9117cf56c95d
> jobstatus = 0
> size = 5368709120
> state = Allocated
> storagetype = shared
> tags:
> type = DATADISK
> zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
> zonename = DevCloud0
> jobresultcode = 0
> jobresulttype = object
> jobstatus = 1
> userid = 819b856e-a9d3-11e3-a500-f46d04ee0527
>
> * attaching a specific volume.
> cloudmonkey# attach volume id=e079281e-d822-4b90-9e85-9648350a0369 virtualmachineid=3e6eeab1-e624-461e-94e0-230215a8dbc3
>
> accountid = 819b1dfe-a9d3-11e3-a500-f46d04ee0527
> cmd = org.apache.cloudstack.api.command.user.volume.AttachVolumeCmd
> created = 2014-03-13T11:55:09+0530
> jobid = 364d7636-72ad-410c-891c-c38ac34b6d42
> jobprocstatus = 0
> jobresult:
> volume:
> id = e079281e-d822-4b90-9e85-9648350a0369
> name = testvolume
> account = admin
> attached = 2014-03-13T11:55:11+0530
> created = 2014-03-13T11:51:27+0530
> destroyed = False
> deviceid = 2
> diskofferingdisplaytext = Small Disk, 5 GB
> diskofferingid = f20e3b76-82e3-43d1-91e3-3ff337d7181d
> diskofferingname = Small
> displayvolume = True
> domain = ROOT
> domainid = 819ae3b6-a9d3-11e3-a500-f46d04ee0527
> hypervisor = XenServer
> isextractable = True
> jobid = 364d7636-72ad-410c-891c-c38ac34b6d42
> jobstatus = 0
> size = 5368709120
> state = Ready
> storage = okay
> storagetype = shared
> tags:
> type = DATADISK
> virtualmachineid = 3e6eeab1-e624-461e-94e0-230215a8dbc3
> vmdisplayname = tiny
> vmname = tiny
> vmstate = Running
> zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
> zonename = DevCloud0
> jobresultcode = 0
> jobresulttype = object
> jobstatus = 1
> userid = 819b856e-a9d3-11e3-a500-f46d04ee0527
>
> *detaching a specific volume.
> cloudmonkey# detach volume id=e079281e-d822-4b90-9e85-9648350a0369
>
> accountid = 819b1dfe-a9d3-11e3-a500-f46d04ee0527
> cmd = org.apache.cloudstack.api.command.user.volume.DetachVolumeCmd
> created = 2014-03-13T11:57:40+0530
> jobid = 38fb6463-7d95-4d4c-8a50-1ec8a1c9ba98
> jobprocstatus = 0
> jobresult:
> volume:
> id = e079281e-d822-4b90-9e85-9648350a0369
> name = testvolume
> account = admin
> created = 2014-03-13T11:51:27+0530
> destroyed = False
> diskofferingdisplaytext = Small Disk, 5 GB
> diskofferingid = f20e3b76-82e3-43d1-91e3-3ff337d7181d
> diskofferingname = Small
> displayvolume = True
> domain = ROOT
> domainid = 819ae3b6-a9d3-11e3-a500-f46d04ee0527
> hypervisor = XenServer
> isextractable = True
> jobid = 38fb6463-7d95-4d4c-8a50-1ec8a1c9ba98
> jobstatus = 0
> size = 5368709120
> state = Ready
> storage = okay
> storagetype = shared
> tags:
> type = DATADISK
> zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
> zonename = DevCloud0
> jobresultcode = 0
> jobresulttype = object
> jobstatus = 1
> userid = 819b856e-a9d3-11e3-a500-f46d04ee0527
>
> *deleting a volume
> cloudmonkey# delete volume id=e079281e-d822-4b90-9e85-9648350a0369
> success = true
>
>   Diffs
>
>    - client/pom.xml (af724b1)
>    - plugins/pom.xml (097f224)
>    - plugins/storage/volume/cloudbyte/pom.xml (PRE-CREATION)
>    - plugins/storage/volume/cloudbyte/resources/META-INF/cloudstack/storage-volume-cloudbyte/module.properties
>    (PRE-CREATION)
>    - plugins/storage/volume/cloudbyte/resources/META-INF/cloudstack/storage-volume-cloudbyte/spring-storage-volume-cloudbyte-context.xml
>    (PRE-CREATION)
>    - plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/driver/ElastistorPrimaryDataStoreDriver.java
>    (PRE-CREATION)
>    - plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/lifecycle/ElastistorPrimaryDataStoreLifeCycle.java
>    (PRE-CREATION)
>    - plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/provider/ElastistorHostListener.java
>    (PRE-CREATION)
>    - plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/provider/ElastistorPrimaryDataStoreProvider.java
>    (PRE-CREATION)
>    - plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/util/ElastistorUtil.java
>    (PRE-CREATION)
>
> View Diff <https://reviews.apache.org/r/19021/diff/>
>



-- 
regards,

punith s
cloudbyte.com

Re: Review Request 19021: Cloudbyte Elastistor storage plug-in

Posted by punith s <pu...@cloudbyte.com>.

> On March 14, 2014, 3:54 a.m., Mike Tutkowski wrote:
> > plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/lifecycle/ElastistorPrimaryDataStoreLifeCycle.java, line 99
> > <https://reviews.apache.org/r/19021/diff/5/?file=518383#file518383line99>
> >
> >     Does this plug-in support multiple CloudByte SANs at the same time?
> >     
> >     It looks like whatever values you set most recently for ElastistorUtil will be utilized if you don't provide them in the details. Is this OK if you don't provide all of the details for your second or more SAN?

yes it will.

yes, we are expecting admin to use cloudmonkey to create storage pool if the elastistor params are not set for the first time.
once the details are set he can use cloudstack UI to add or deleted storage pools on the same SAN but if he wants to use different SAN 
we are expecting him to use cloudmonkey again to change elastistor params through details map.

thanks.

 


- punith


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


On March 13, 2014, 2:46 p.m., punith s wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/19021/
> -----------------------------------------------------------
> 
> (Updated March 13, 2014, 2:46 p.m.)
> 
> 
> Review request for cloudstack, edison su and Mike Tutkowski.
> 
> 
> Repository: cloudstack-git
> 
> 
> Description
> -------
> 
> This patch implements a basic storage plug-in for cloudbyte elastistor v1.3.0, The plug-in is a new feature for cloudstack 4.4 and above.
> 
> this does not implement managed storage yet, it is been integrated only with CreateStoragePool and DeleteStoragePool api's.
> 
> the desired behavior of the plugin are:
> 
> * Allow an Admin to create a primary storage at cluster level, hence creates a volume in elastistor and gets attached to the host with the given capacityiops and capacitybytes through CreateStoragePool api with provider being elastistor.
> 
> *Allow an admin to delete a primary storage at cluster level, hence it deletes the volume from host in cloudstack and deletes the respective volume in elastistor.
> 
> * volume and datadisks fuctions performs the default storage fuctions, ie. the driver extends the CloudStackPrimaryDataStoreDriverImpl.
> 
> * support for both nfs and icsci primary storage.
> 
> 
> Diffs
> -----
> 
>   client/pom.xml af724b1 
>   plugins/pom.xml 097f224 
>   plugins/storage/volume/cloudbyte/pom.xml PRE-CREATION 
>   plugins/storage/volume/cloudbyte/resources/META-INF/cloudstack/storage-volume-cloudbyte/module.properties PRE-CREATION 
>   plugins/storage/volume/cloudbyte/resources/META-INF/cloudstack/storage-volume-cloudbyte/spring-storage-volume-cloudbyte-context.xml PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/driver/ElastistorPrimaryDataStoreDriver.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/lifecycle/ElastistorPrimaryDataStoreLifeCycle.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/provider/ElastistorHostListener.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/provider/ElastistorPrimaryDataStoreProvider.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/util/ElastistorUtil.java PRE-CREATION 
> 
> Diff: https://reviews.apache.org/r/19021/diff/
> 
> 
> Testing
> -------
> 
> Build test using, 
> 
> mvn -P developer,systemvm clean install, which is successful.
> 
> Manual testing has been performed using cloudmonkey.
> 
> * Creating a primary storage based on cloudbyte storage plugin.
> 
> cloudmonkey# create storagepool scope=cluster zoneid=dac7223c-6d09-4dcb-82fb-bdecf7c657f5 podid=20a613c4-eccf-4fdc-b8ca-c51df483326f clusterid=9a89bc12-bf00-496b-b1d8-8e92cdf1795f name=cloudbytevolume provider=elastistor url=nfs://10.10.171.137/cloudbytetest capacityiops=500 capacitybytes=214748364800 tags=cloudbytetest
> storagepool:
> name = cloudbytevolume
> id = 57f70aa4-659b-3b53-b8ab-2f712474f107
> capacityiops = 500
> clusterid = 9a89bc12-bf00-496b-b1d8-8e92cdf1795f
> clustername = test000
> created = 2014-03-11T12:42:38+0530
> disksizeallocated = 0
> disksizetotal = 214748364800
> hypervisor = Any
> ipaddress = 10.10.171.137
> path = /cloudbytetest
> podid = 20a613c4-eccf-4fdc-b8ca-c51df483326f
> podname = test00
> scope = CLUSTER
> state = Up
> tags = cloudbytetest
> type = NetworkFilesystem
> zoneid = dac7223c-6d09-4dcb-82fb-bdecf7c657f5
> zonename = DevCloud0
> 
> * Deleting the primary storage based on cloudbyte storage plugin.
> 
> cloudmonkey# delete storagepool id=57f70aa4-659b-3b53-b8ab-2f712474f107
> success = true
> 
> * creation of primary storage with negative capacityiops throws an exception.
> 
> * creation of primary storage with already available name and ip throws an exception.
> 
> * if the elastistor params which are required for plugin configuration are not injected through spring-storage-volume-cloudbyte-context.xml, it can be set from details map.
> 
> cloudmonkey# create storagepool scope=cluster zoneid=afacc706-3f4d-4f50-82e6-bf0f82959ba8 podid=821ad540-6c98-43f3-935d-72a47a319b20 clusterid=e0ced156-532e-4941-99c0-f34ff1727544 name=nfsvol provider=elastistor url=nfs://10.10.171.143/volnfs details[0].esaccountid=9e9f67d5-e06f-4d63-a0b8-e7255cba84b8 details[1].espoolid=d2d15d11-0f06-3426-a097-3e6e8b36f85c details[2].esdefaultgateway=10.10.1.1 details[3].essubnet=8  details[4].estntinterface=em0 details[5].esmanagementip=10.10.171.180
> details[6].esapikey=PubSInZaCji8hrRfOsCxgbug2I2k_sRJ0i2a9qmAzZIiCTcFPmZelzx6uNK9TYgqkdohCmq1L2J9eYmUe9YO6A capacityiops=100 capacitybytes=214748364800
> 
> storagepool:
> name = nfsvol
> id = 7ea08bf6-777a-3553-8f1e-c3a9f9b626cb
> capacityiops = 100
> clusterid = e0ced156-532e-4941-99c0-f34ff1727544
> clustername = test000
> created = 2014-03-12T17:45:10+0530
> disksizeallocated = 0
> disksizetotal = 214748364800
> hypervisor = Any
> ipaddress = 10.10.171.143
> path = /volnfs
> podid = 821ad540-6c98-43f3-935d-72a47a319b20
> podname = test00
> scope = CLUSTER
> state = Up
> type = NetworkFilesystem
> zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
> zonename = DevCloud0
> 
> * creation of volume on created storage pool.
> cloudmonkey# create volume zoneid=afacc706-3f4d-4f50-82e6-bf0f82959ba8 diskofferingid=f20e3b76-82e3-43d1-91e3-3ff337d7181d name=testvolume
> 
> accountid = 819b1dfe-a9d3-11e3-a500-f46d04ee0527
> cmd = org.apache.cloudstack.api.command.user.volume.CreateVolumeCmd
> created = 2014-03-13T11:51:27+0530
> jobid = 596294b8-2b49-4b49-8526-9117cf56c95d
> jobprocstatus = 0
> jobresult:
> volume:
> name = testvolume
> id = e079281e-d822-4b90-9e85-9648350a0369
> account = admin
> created = 2014-03-13T11:51:27+0530
> destroyed = False
> diskofferingdisplaytext = Small Disk, 5 GB
> diskofferingid = f20e3b76-82e3-43d1-91e3-3ff337d7181d
> diskofferingname = Small
> displayvolume = True
> domain = ROOT
> domainid = 819ae3b6-a9d3-11e3-a500-f46d04ee0527
> isextractable = True
> jobid = 596294b8-2b49-4b49-8526-9117cf56c95d
> jobstatus = 0
> size = 5368709120
> state = Allocated
> storagetype = shared
> tags:
> type = DATADISK
> zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
> zonename = DevCloud0
> jobresultcode = 0
> jobresulttype = object
> jobstatus = 1
> userid = 819b856e-a9d3-11e3-a500-f46d04ee0527
> 
> * attaching a specific volume.
> cloudmonkey# attach volume id=e079281e-d822-4b90-9e85-9648350a0369 virtualmachineid=3e6eeab1-e624-461e-94e0-230215a8dbc3
> 
> accountid = 819b1dfe-a9d3-11e3-a500-f46d04ee0527
> cmd = org.apache.cloudstack.api.command.user.volume.AttachVolumeCmd
> created = 2014-03-13T11:55:09+0530
> jobid = 364d7636-72ad-410c-891c-c38ac34b6d42
> jobprocstatus = 0
> jobresult:
> volume:
> id = e079281e-d822-4b90-9e85-9648350a0369
> name = testvolume
> account = admin
> attached = 2014-03-13T11:55:11+0530
> created = 2014-03-13T11:51:27+0530
> destroyed = False
> deviceid = 2
> diskofferingdisplaytext = Small Disk, 5 GB
> diskofferingid = f20e3b76-82e3-43d1-91e3-3ff337d7181d
> diskofferingname = Small
> displayvolume = True
> domain = ROOT
> domainid = 819ae3b6-a9d3-11e3-a500-f46d04ee0527
> hypervisor = XenServer
> isextractable = True
> jobid = 364d7636-72ad-410c-891c-c38ac34b6d42
> jobstatus = 0
> size = 5368709120
> state = Ready
> storage = okay
> storagetype = shared
> tags:
> type = DATADISK
> virtualmachineid = 3e6eeab1-e624-461e-94e0-230215a8dbc3
> vmdisplayname = tiny
> vmname = tiny
> vmstate = Running
> zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
> zonename = DevCloud0
> jobresultcode = 0
> jobresulttype = object
> jobstatus = 1
> userid = 819b856e-a9d3-11e3-a500-f46d04ee0527
> 
> *detaching a specific volume.
> cloudmonkey# detach volume id=e079281e-d822-4b90-9e85-9648350a0369
> 
> accountid = 819b1dfe-a9d3-11e3-a500-f46d04ee0527
> cmd = org.apache.cloudstack.api.command.user.volume.DetachVolumeCmd
> created = 2014-03-13T11:57:40+0530
> jobid = 38fb6463-7d95-4d4c-8a50-1ec8a1c9ba98
> jobprocstatus = 0
> jobresult:
> volume:
> id = e079281e-d822-4b90-9e85-9648350a0369
> name = testvolume
> account = admin
> created = 2014-03-13T11:51:27+0530
> destroyed = False
> diskofferingdisplaytext = Small Disk, 5 GB
> diskofferingid = f20e3b76-82e3-43d1-91e3-3ff337d7181d
> diskofferingname = Small
> displayvolume = True
> domain = ROOT
> domainid = 819ae3b6-a9d3-11e3-a500-f46d04ee0527
> hypervisor = XenServer
> isextractable = True
> jobid = 38fb6463-7d95-4d4c-8a50-1ec8a1c9ba98
> jobstatus = 0
> size = 5368709120
> state = Ready
> storage = okay
> storagetype = shared
> tags:
> type = DATADISK
> zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
> zonename = DevCloud0
> jobresultcode = 0
> jobresulttype = object
> jobstatus = 1
> userid = 819b856e-a9d3-11e3-a500-f46d04ee0527
> 
> *deleting a volume
> cloudmonkey# delete volume id=e079281e-d822-4b90-9e85-9648350a0369
> success = true
> 
> 
> Thanks,
> 
> punith s
> 
>


Re: Review Request 19021: Cloudbyte Elastistor storage plug-in

Posted by Mike Tutkowski <mi...@solidfire.com>.
Also, Punith has already refactored his code as I asked to put it in
CloudByte-specific packages, so I think we're good to go.


On Thu, Mar 13, 2014 at 5:04 PM, Mike Tutkowski <
mike.tutkowski@solidfire.com> wrote:

> OK, if that's all we're checking, then I'm good with checking it in.
>
> Punith - Can you just close out those last issues in the review?
>
> Thanks!
>
>
> On Thu, Mar 13, 2014 at 5:02 PM, Edison Su <Ed...@citrix.com> wrote:
>
>>  Hi Mike,
>>
>>    Seems some of your comments are related to the scope of their
>> implementation, such as do you support this, do you support that, can you
>> do this, can you do that etc. From my point of view, it's not important, as
>> the capability of driver is totally controlled by the vendors, vendors can
>> implement whatever functionalities they want. My criteria to check in the
>> code is very simple: the plugin should not modify common code.
>>
>>
>>
>> *From:* Mike Tutkowski [mailto:mike.tutkowski@solidfire.com]
>> *Sent:* Thursday, March 13, 2014 3:25 PM
>> *To:* Edison Su; Mike Tutkowski
>> *Cc:* punith s; cloudstack
>> *Subject:* Re: Review Request 19021: Cloudbyte Elastistor storage plug-in
>>
>>
>>
>> Hi Punith,
>>
>>
>>
>> Once you close out the open issues, we can work to get your code in.
>>
>>
>>
>> Feature freeze is Friday, March 14th, so we should do it sometime
>> tomorrow.
>>
>>
>>
>> Thanks!
>>
>>
>>
>> On Thu, Mar 13, 2014 at 4:24 PM, Mike Tutkowski <
>> mike.tutkowski@solidfire.com> wrote:
>>
>> This is an automatically generated e-mail. To reply, visit:
>> https://reviews.apache.org/r/19021/
>>
>>
>>
>> *plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/lifecycle/ElastistorPrimaryDataStoreLifeCycle.java
>> <https://reviews.apache.org/r/19021/diff/5/?file=518383#file518383line99> *(Diff
>> revision 5)
>>
>> *99*
>>
>>         if(details.get("esaccountid") != null)
>>
>>   Does this plug-in support multiple CloudByte SANs at the same time?
>>
>>
>>
>> It looks like whatever values you set most recently for ElastistorUtil will be utilized if you don't provide them in the details. Is this OK if you don't provide all of the details for your second or more SAN?
>>
>>
>>
>> - Mike Tutkowski
>>
>>
>>
>> On March 13th, 2014, 9:16 a.m. UTC, punith s wrote:
>>
>> Review request for cloudstack, edison su and Mike Tutkowski.
>>
>> By punith s.
>>
>> *Updated March 13, 2014, 9:16 a.m.*
>>
>> *Repository: *cloudstack-git
>>  Description
>>
>> This patch implements a basic storage plug-in for cloudbyte elastistor v1.3.0, The plug-in is a new feature for cloudstack 4.4 and above.
>>
>>
>>
>> this does not implement managed storage yet, it is been integrated only with CreateStoragePool and DeleteStoragePool api's.
>>
>>
>>
>> the desired behavior of the plugin are:
>>
>>
>>
>> * Allow an Admin to create a primary storage at cluster level, hence creates a volume in elastistor and gets attached to the host with the given capacityiops and capacitybytes through CreateStoragePool api with provider being elastistor.
>>
>>
>>
>> *Allow an admin to delete a primary storage at cluster level, hence it deletes the volume from host in cloudstack and deletes the respective volume in elastistor.
>>
>>
>>
>> * volume and datadisks fuctions performs the default storage fuctions, ie. the driver extends the CloudStackPrimaryDataStoreDriverImpl.
>>
>>
>>
>> * support for both nfs and icsci primary storage.
>>
>>   Testing
>>
>> Build test using,
>>
>>
>>
>> mvn -P developer,systemvm clean install, which is successful.
>>
>>
>>
>> Manual testing has been performed using cloudmonkey.
>>
>>
>>
>> * Creating a primary storage based on cloudbyte storage plugin.
>>
>>
>>
>> cloudmonkey# create storagepool scope=cluster zoneid=dac7223c-6d09-4dcb-82fb-bdecf7c657f5 podid=20a613c4-eccf-4fdc-b8ca-c51df483326f clusterid=9a89bc12-bf00-496b-b1d8-8e92cdf1795f name=cloudbytevolume provider=elastistor url=nfs://10.10.171.137/cloudbytetest capacityiops=500 capacitybytes=214748364800 tags=cloudbytetest
>>
>> storagepool:
>>
>> name = cloudbytevolume
>>
>> id = 57f70aa4-659b-3b53-b8ab-2f712474f107
>>
>> capacityiops = 500
>>
>> clusterid = 9a89bc12-bf00-496b-b1d8-8e92cdf1795f
>>
>> clustername = test000
>>
>> created = 2014-03-11T12:42:38+0530
>>
>> disksizeallocated = 0
>>
>> disksizetotal = 214748364800
>>
>> hypervisor = Any
>>
>> ipaddress = 10.10.171.137
>>
>> path = /cloudbytetest
>>
>> podid = 20a613c4-eccf-4fdc-b8ca-c51df483326f
>>
>> podname = test00
>>
>> scope = CLUSTER
>>
>> state = Up
>>
>> tags = cloudbytetest
>>
>> type = NetworkFilesystem
>>
>> zoneid = dac7223c-6d09-4dcb-82fb-bdecf7c657f5
>>
>> zonename = DevCloud0
>>
>>
>>
>> * Deleting the primary storage based on cloudbyte storage plugin.
>>
>>
>>
>> cloudmonkey# delete storagepool id=57f70aa4-659b-3b53-b8ab-2f712474f107
>>
>> success = true
>>
>>
>>
>> * creation of primary storage with negative capacityiops throws an exception.
>>
>>
>>
>> * creation of primary storage with already available name and ip throws an exception.
>>
>>
>>
>> * if the elastistor params which are required for plugin configuration are not injected through spring-storage-volume-cloudbyte-context.xml, it can be set from details map.
>>
>>
>>
>> cloudmonkey# create storagepool scope=cluster zoneid=afacc706-3f4d-4f50-82e6-bf0f82959ba8 podid=821ad540-6c98-43f3-935d-72a47a319b20 clusterid=e0ced156-532e-4941-99c0-f34ff1727544 name=nfsvol provider=elastistor url=nfs://10.10.171.143/volnfs details[0].esaccountid=9e9f67d5-e06f-4d63-a0b8-e7255cba84b8 details[1].espoolid=d2d15d11-0f06-3426-a097-3e6e8b36f85c details[2].esdefaultgateway=10.10.1.1 details[3].essubnet=8  details[4].estntinterface=em0 details[5].esmanagementip=10.10.171.180
>>
>> details[6].esapikey=PubSInZaCji8hrRfOsCxgbug2I2k_sRJ0i2a9qmAzZIiCTcFPmZelzx6uNK9TYgqkdohCmq1L2J9eYmUe9YO6A capacityiops=100 capacitybytes=214748364800
>>
>>
>>
>> storagepool:
>>
>> name = nfsvol
>>
>> id = 7ea08bf6-777a-3553-8f1e-c3a9f9b626cb
>>
>> capacityiops = 100
>>
>> clusterid = e0ced156-532e-4941-99c0-f34ff1727544
>>
>> clustername = test000
>>
>> created = 2014-03-12T17:45:10+0530
>>
>> disksizeallocated = 0
>>
>> disksizetotal = 214748364800
>>
>> hypervisor = Any
>>
>> ipaddress = 10.10.171.143
>>
>> path = /volnfs
>>
>> podid = 821ad540-6c98-43f3-935d-72a47a319b20
>>
>> podname = test00
>>
>> scope = CLUSTER
>>
>> state = Up
>>
>> type = NetworkFilesystem
>>
>> zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
>>
>> zonename = DevCloud0
>>
>>
>>
>> * creation of volume on created storage pool.
>>
>> cloudmonkey# create volume zoneid=afacc706-3f4d-4f50-82e6-bf0f82959ba8 diskofferingid=f20e3b76-82e3-43d1-91e3-3ff337d7181d name=testvolume
>>
>>
>>
>> accountid = 819b1dfe-a9d3-11e3-a500-f46d04ee0527
>>
>> cmd = org.apache.cloudstack.api.command.user.volume.CreateVolumeCmd
>>
>> created = 2014-03-13T11:51:27+0530
>>
>> jobid = 596294b8-2b49-4b49-8526-9117cf56c95d
>>
>> jobprocstatus = 0
>>
>> jobresult:
>>
>> volume:
>>
>> name = testvolume
>>
>> id = e079281e-d822-4b90-9e85-9648350a0369
>>
>> account = admin
>>
>> created = 2014-03-13T11:51:27+0530
>>
>> destroyed = False
>>
>> diskofferingdisplaytext = Small Disk, 5 GB
>>
>> diskofferingid = f20e3b76-82e3-43d1-91e3-3ff337d7181d
>>
>> diskofferingname = Small
>>
>> displayvolume = True
>>
>> domain = ROOT
>>
>> domainid = 819ae3b6-a9d3-11e3-a500-f46d04ee0527
>>
>> isextractable = True
>>
>> jobid = 596294b8-2b49-4b49-8526-9117cf56c95d
>>
>> jobstatus = 0
>>
>> size = 5368709120
>>
>> state = Allocated
>>
>> storagetype = shared
>>
>> tags:
>>
>> type = DATADISK
>>
>> zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
>>
>> zonename = DevCloud0
>>
>> jobresultcode = 0
>>
>> jobresulttype = object
>>
>> jobstatus = 1
>>
>> userid = 819b856e-a9d3-11e3-a500-f46d04ee0527
>>
>>
>>
>> * attaching a specific volume.
>>
>> cloudmonkey# attach volume id=e079281e-d822-4b90-9e85-9648350a0369 virtualmachineid=3e6eeab1-e624-461e-94e0-230215a8dbc3
>>
>>
>>
>> accountid = 819b1dfe-a9d3-11e3-a500-f46d04ee0527
>>
>> cmd = org.apache.cloudstack.api.command.user.volume.AttachVolumeCmd
>>
>> created = 2014-03-13T11:55:09+0530
>>
>> jobid = 364d7636-72ad-410c-891c-c38ac34b6d42
>>
>> jobprocstatus = 0
>>
>> jobresult:
>>
>> volume:
>>
>> id = e079281e-d822-4b90-9e85-9648350a0369
>>
>> name = testvolume
>>
>> account = admin
>>
>> attached = 2014-03-13T11:55:11+0530
>>
>> created = 2014-03-13T11:51:27+0530
>>
>> destroyed = False
>>
>> deviceid = 2
>>
>> diskofferingdisplaytext = Small Disk, 5 GB
>>
>> diskofferingid = f20e3b76-82e3-43d1-91e3-3ff337d7181d
>>
>> diskofferingname = Small
>>
>> displayvolume = True
>>
>> domain = ROOT
>>
>> domainid = 819ae3b6-a9d3-11e3-a500-f46d04ee0527
>>
>> hypervisor = XenServer
>>
>> isextractable = True
>>
>> jobid = 364d7636-72ad-410c-891c-c38ac34b6d42
>>
>> jobstatus = 0
>>
>> size = 5368709120
>>
>> state = Ready
>>
>> storage = okay
>>
>> storagetype = shared
>>
>> tags:
>>
>> type = DATADISK
>>
>> virtualmachineid = 3e6eeab1-e624-461e-94e0-230215a8dbc3
>>
>> vmdisplayname = tiny
>>
>> vmname = tiny
>>
>> vmstate = Running
>>
>> zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
>>
>> zonename = DevCloud0
>>
>> jobresultcode = 0
>>
>> jobresulttype = object
>>
>> jobstatus = 1
>>
>> userid = 819b856e-a9d3-11e3-a500-f46d04ee0527
>>
>>
>>
>> *detaching a specific volume.
>>
>> cloudmonkey# detach volume id=e079281e-d822-4b90-9e85-9648350a0369
>>
>>
>>
>> accountid = 819b1dfe-a9d3-11e3-a500-f46d04ee0527
>>
>> cmd = org.apache.cloudstack.api.command.user.volume.DetachVolumeCmd
>>
>> created = 2014-03-13T11:57:40+0530
>>
>> jobid = 38fb6463-7d95-4d4c-8a50-1ec8a1c9ba98
>>
>> jobprocstatus = 0
>>
>> jobresult:
>>
>> volume:
>>
>> id = e079281e-d822-4b90-9e85-9648350a0369
>>
>> name = testvolume
>>
>> account = admin
>>
>> created = 2014-03-13T11:51:27+0530
>>
>> destroyed = False
>>
>> diskofferingdisplaytext = Small Disk, 5 GB
>>
>> diskofferingid = f20e3b76-82e3-43d1-91e3-3ff337d7181d
>>
>> diskofferingname = Small
>>
>> displayvolume = True
>>
>> domain = ROOT
>>
>> domainid = 819ae3b6-a9d3-11e3-a500-f46d04ee0527
>>
>> hypervisor = XenServer
>>
>> isextractable = True
>>
>> jobid = 38fb6463-7d95-4d4c-8a50-1ec8a1c9ba98
>>
>> jobstatus = 0
>>
>> size = 5368709120
>>
>> state = Ready
>>
>> storage = okay
>>
>> storagetype = shared
>>
>> tags:
>>
>> type = DATADISK
>>
>> zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
>>
>> zonename = DevCloud0
>>
>> jobresultcode = 0
>>
>> jobresulttype = object
>>
>> jobstatus = 1
>>
>> userid = 819b856e-a9d3-11e3-a500-f46d04ee0527
>>
>>
>>
>> *deleting a volume
>>
>> cloudmonkey# delete volume id=e079281e-d822-4b90-9e85-9648350a0369
>>
>> success = true
>>
>>   Diffs
>>
>>    - client/pom.xml (af724b1)
>>    - plugins/pom.xml (097f224)
>>    - plugins/storage/volume/cloudbyte/pom.xml (PRE-CREATION)
>>    - plugins/storage/volume/cloudbyte/resources/META-INF/cloudstack/storage-volume-cloudbyte/module.properties
>>    (PRE-CREATION)
>>    - plugins/storage/volume/cloudbyte/resources/META-INF/cloudstack/storage-volume-cloudbyte/spring-storage-volume-cloudbyte-context.xml
>>    (PRE-CREATION)
>>    - plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/driver/ElastistorPrimaryDataStoreDriver.java
>>    (PRE-CREATION)
>>    - plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/lifecycle/ElastistorPrimaryDataStoreLifeCycle.java
>>    (PRE-CREATION)
>>    - plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/provider/ElastistorHostListener.java
>>    (PRE-CREATION)
>>    - plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/provider/ElastistorPrimaryDataStoreProvider.java
>>    (PRE-CREATION)
>>    - plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/util/ElastistorUtil.java
>>    (PRE-CREATION)
>>
>> View Diff <https://reviews.apache.org/r/19021/diff/>
>>
>>
>>
>>
>>
>> --
>> *Mike Tutkowski*
>>
>> *Senior CloudStack Developer, SolidFire Inc.*
>>
>> e: mike.tutkowski@solidfire.com
>>
>> o: 303.746.7302
>>
>> Advancing the way the world uses the cloud<http://solidfire.com/solution/overview/?video=play>
>> *(tm)*
>>
>
>
>
> --
> *Mike Tutkowski*
> *Senior CloudStack Developer, SolidFire Inc.*
> e: mike.tutkowski@solidfire.com
> o: 303.746.7302
> Advancing the way the world uses the cloud<http://solidfire.com/solution/overview/?video=play>
> *(tm)*
>



-- 
*Mike Tutkowski*
*Senior CloudStack Developer, SolidFire Inc.*
e: mike.tutkowski@solidfire.com
o: 303.746.7302
Advancing the way the world uses the
cloud<http://solidfire.com/solution/overview/?video=play>
*(tm)*

Re: Review Request 19021: Cloudbyte Elastistor storage plug-in

Posted by Mike Tutkowski <mi...@solidfire.com>.
OK, if that's all we're checking, then I'm good with checking it in.

Punith - Can you just close out those last issues in the review?

Thanks!


On Thu, Mar 13, 2014 at 5:02 PM, Edison Su <Ed...@citrix.com> wrote:

>  Hi Mike,
>
>    Seems some of your comments are related to the scope of their
> implementation, such as do you support this, do you support that, can you
> do this, can you do that etc. From my point of view, it's not important, as
> the capability of driver is totally controlled by the vendors, vendors can
> implement whatever functionalities they want. My criteria to check in the
> code is very simple: the plugin should not modify common code.
>
>
>
> *From:* Mike Tutkowski [mailto:mike.tutkowski@solidfire.com]
> *Sent:* Thursday, March 13, 2014 3:25 PM
> *To:* Edison Su; Mike Tutkowski
> *Cc:* punith s; cloudstack
> *Subject:* Re: Review Request 19021: Cloudbyte Elastistor storage plug-in
>
>
>
> Hi Punith,
>
>
>
> Once you close out the open issues, we can work to get your code in.
>
>
>
> Feature freeze is Friday, March 14th, so we should do it sometime tomorrow.
>
>
>
> Thanks!
>
>
>
> On Thu, Mar 13, 2014 at 4:24 PM, Mike Tutkowski <
> mike.tutkowski@solidfire.com> wrote:
>
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/19021/
>
>
>
> *plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/lifecycle/ElastistorPrimaryDataStoreLifeCycle.java
> <https://reviews.apache.org/r/19021/diff/5/?file=518383#file518383line99> *(Diff
> revision 5)
>
> *99*
>
>         if(details.get("esaccountid") != null)
>
>   Does this plug-in support multiple CloudByte SANs at the same time?
>
>
>
> It looks like whatever values you set most recently for ElastistorUtil will be utilized if you don't provide them in the details. Is this OK if you don't provide all of the details for your second or more SAN?
>
>
>
> - Mike Tutkowski
>
>
>
> On March 13th, 2014, 9:16 a.m. UTC, punith s wrote:
>
> Review request for cloudstack, edison su and Mike Tutkowski.
>
> By punith s.
>
> *Updated March 13, 2014, 9:16 a.m.*
>
> *Repository: *cloudstack-git
>  Description
>
> This patch implements a basic storage plug-in for cloudbyte elastistor v1.3.0, The plug-in is a new feature for cloudstack 4.4 and above.
>
>
>
> this does not implement managed storage yet, it is been integrated only with CreateStoragePool and DeleteStoragePool api's.
>
>
>
> the desired behavior of the plugin are:
>
>
>
> * Allow an Admin to create a primary storage at cluster level, hence creates a volume in elastistor and gets attached to the host with the given capacityiops and capacitybytes through CreateStoragePool api with provider being elastistor.
>
>
>
> *Allow an admin to delete a primary storage at cluster level, hence it deletes the volume from host in cloudstack and deletes the respective volume in elastistor.
>
>
>
> * volume and datadisks fuctions performs the default storage fuctions, ie. the driver extends the CloudStackPrimaryDataStoreDriverImpl.
>
>
>
> * support for both nfs and icsci primary storage.
>
>   Testing
>
> Build test using,
>
>
>
> mvn -P developer,systemvm clean install, which is successful.
>
>
>
> Manual testing has been performed using cloudmonkey.
>
>
>
> * Creating a primary storage based on cloudbyte storage plugin.
>
>
>
> cloudmonkey# create storagepool scope=cluster zoneid=dac7223c-6d09-4dcb-82fb-bdecf7c657f5 podid=20a613c4-eccf-4fdc-b8ca-c51df483326f clusterid=9a89bc12-bf00-496b-b1d8-8e92cdf1795f name=cloudbytevolume provider=elastistor url=nfs://10.10.171.137/cloudbytetest capacityiops=500 capacitybytes=214748364800 tags=cloudbytetest
>
> storagepool:
>
> name = cloudbytevolume
>
> id = 57f70aa4-659b-3b53-b8ab-2f712474f107
>
> capacityiops = 500
>
> clusterid = 9a89bc12-bf00-496b-b1d8-8e92cdf1795f
>
> clustername = test000
>
> created = 2014-03-11T12:42:38+0530
>
> disksizeallocated = 0
>
> disksizetotal = 214748364800
>
> hypervisor = Any
>
> ipaddress = 10.10.171.137
>
> path = /cloudbytetest
>
> podid = 20a613c4-eccf-4fdc-b8ca-c51df483326f
>
> podname = test00
>
> scope = CLUSTER
>
> state = Up
>
> tags = cloudbytetest
>
> type = NetworkFilesystem
>
> zoneid = dac7223c-6d09-4dcb-82fb-bdecf7c657f5
>
> zonename = DevCloud0
>
>
>
> * Deleting the primary storage based on cloudbyte storage plugin.
>
>
>
> cloudmonkey# delete storagepool id=57f70aa4-659b-3b53-b8ab-2f712474f107
>
> success = true
>
>
>
> * creation of primary storage with negative capacityiops throws an exception.
>
>
>
> * creation of primary storage with already available name and ip throws an exception.
>
>
>
> * if the elastistor params which are required for plugin configuration are not injected through spring-storage-volume-cloudbyte-context.xml, it can be set from details map.
>
>
>
> cloudmonkey# create storagepool scope=cluster zoneid=afacc706-3f4d-4f50-82e6-bf0f82959ba8 podid=821ad540-6c98-43f3-935d-72a47a319b20 clusterid=e0ced156-532e-4941-99c0-f34ff1727544 name=nfsvol provider=elastistor url=nfs://10.10.171.143/volnfs details[0].esaccountid=9e9f67d5-e06f-4d63-a0b8-e7255cba84b8 details[1].espoolid=d2d15d11-0f06-3426-a097-3e6e8b36f85c details[2].esdefaultgateway=10.10.1.1 details[3].essubnet=8  details[4].estntinterface=em0 details[5].esmanagementip=10.10.171.180
>
> details[6].esapikey=PubSInZaCji8hrRfOsCxgbug2I2k_sRJ0i2a9qmAzZIiCTcFPmZelzx6uNK9TYgqkdohCmq1L2J9eYmUe9YO6A capacityiops=100 capacitybytes=214748364800
>
>
>
> storagepool:
>
> name = nfsvol
>
> id = 7ea08bf6-777a-3553-8f1e-c3a9f9b626cb
>
> capacityiops = 100
>
> clusterid = e0ced156-532e-4941-99c0-f34ff1727544
>
> clustername = test000
>
> created = 2014-03-12T17:45:10+0530
>
> disksizeallocated = 0
>
> disksizetotal = 214748364800
>
> hypervisor = Any
>
> ipaddress = 10.10.171.143
>
> path = /volnfs
>
> podid = 821ad540-6c98-43f3-935d-72a47a319b20
>
> podname = test00
>
> scope = CLUSTER
>
> state = Up
>
> type = NetworkFilesystem
>
> zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
>
> zonename = DevCloud0
>
>
>
> * creation of volume on created storage pool.
>
> cloudmonkey# create volume zoneid=afacc706-3f4d-4f50-82e6-bf0f82959ba8 diskofferingid=f20e3b76-82e3-43d1-91e3-3ff337d7181d name=testvolume
>
>
>
> accountid = 819b1dfe-a9d3-11e3-a500-f46d04ee0527
>
> cmd = org.apache.cloudstack.api.command.user.volume.CreateVolumeCmd
>
> created = 2014-03-13T11:51:27+0530
>
> jobid = 596294b8-2b49-4b49-8526-9117cf56c95d
>
> jobprocstatus = 0
>
> jobresult:
>
> volume:
>
> name = testvolume
>
> id = e079281e-d822-4b90-9e85-9648350a0369
>
> account = admin
>
> created = 2014-03-13T11:51:27+0530
>
> destroyed = False
>
> diskofferingdisplaytext = Small Disk, 5 GB
>
> diskofferingid = f20e3b76-82e3-43d1-91e3-3ff337d7181d
>
> diskofferingname = Small
>
> displayvolume = True
>
> domain = ROOT
>
> domainid = 819ae3b6-a9d3-11e3-a500-f46d04ee0527
>
> isextractable = True
>
> jobid = 596294b8-2b49-4b49-8526-9117cf56c95d
>
> jobstatus = 0
>
> size = 5368709120
>
> state = Allocated
>
> storagetype = shared
>
> tags:
>
> type = DATADISK
>
> zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
>
> zonename = DevCloud0
>
> jobresultcode = 0
>
> jobresulttype = object
>
> jobstatus = 1
>
> userid = 819b856e-a9d3-11e3-a500-f46d04ee0527
>
>
>
> * attaching a specific volume.
>
> cloudmonkey# attach volume id=e079281e-d822-4b90-9e85-9648350a0369 virtualmachineid=3e6eeab1-e624-461e-94e0-230215a8dbc3
>
>
>
> accountid = 819b1dfe-a9d3-11e3-a500-f46d04ee0527
>
> cmd = org.apache.cloudstack.api.command.user.volume.AttachVolumeCmd
>
> created = 2014-03-13T11:55:09+0530
>
> jobid = 364d7636-72ad-410c-891c-c38ac34b6d42
>
> jobprocstatus = 0
>
> jobresult:
>
> volume:
>
> id = e079281e-d822-4b90-9e85-9648350a0369
>
> name = testvolume
>
> account = admin
>
> attached = 2014-03-13T11:55:11+0530
>
> created = 2014-03-13T11:51:27+0530
>
> destroyed = False
>
> deviceid = 2
>
> diskofferingdisplaytext = Small Disk, 5 GB
>
> diskofferingid = f20e3b76-82e3-43d1-91e3-3ff337d7181d
>
> diskofferingname = Small
>
> displayvolume = True
>
> domain = ROOT
>
> domainid = 819ae3b6-a9d3-11e3-a500-f46d04ee0527
>
> hypervisor = XenServer
>
> isextractable = True
>
> jobid = 364d7636-72ad-410c-891c-c38ac34b6d42
>
> jobstatus = 0
>
> size = 5368709120
>
> state = Ready
>
> storage = okay
>
> storagetype = shared
>
> tags:
>
> type = DATADISK
>
> virtualmachineid = 3e6eeab1-e624-461e-94e0-230215a8dbc3
>
> vmdisplayname = tiny
>
> vmname = tiny
>
> vmstate = Running
>
> zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
>
> zonename = DevCloud0
>
> jobresultcode = 0
>
> jobresulttype = object
>
> jobstatus = 1
>
> userid = 819b856e-a9d3-11e3-a500-f46d04ee0527
>
>
>
> *detaching a specific volume.
>
> cloudmonkey# detach volume id=e079281e-d822-4b90-9e85-9648350a0369
>
>
>
> accountid = 819b1dfe-a9d3-11e3-a500-f46d04ee0527
>
> cmd = org.apache.cloudstack.api.command.user.volume.DetachVolumeCmd
>
> created = 2014-03-13T11:57:40+0530
>
> jobid = 38fb6463-7d95-4d4c-8a50-1ec8a1c9ba98
>
> jobprocstatus = 0
>
> jobresult:
>
> volume:
>
> id = e079281e-d822-4b90-9e85-9648350a0369
>
> name = testvolume
>
> account = admin
>
> created = 2014-03-13T11:51:27+0530
>
> destroyed = False
>
> diskofferingdisplaytext = Small Disk, 5 GB
>
> diskofferingid = f20e3b76-82e3-43d1-91e3-3ff337d7181d
>
> diskofferingname = Small
>
> displayvolume = True
>
> domain = ROOT
>
> domainid = 819ae3b6-a9d3-11e3-a500-f46d04ee0527
>
> hypervisor = XenServer
>
> isextractable = True
>
> jobid = 38fb6463-7d95-4d4c-8a50-1ec8a1c9ba98
>
> jobstatus = 0
>
> size = 5368709120
>
> state = Ready
>
> storage = okay
>
> storagetype = shared
>
> tags:
>
> type = DATADISK
>
> zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
>
> zonename = DevCloud0
>
> jobresultcode = 0
>
> jobresulttype = object
>
> jobstatus = 1
>
> userid = 819b856e-a9d3-11e3-a500-f46d04ee0527
>
>
>
> *deleting a volume
>
> cloudmonkey# delete volume id=e079281e-d822-4b90-9e85-9648350a0369
>
> success = true
>
>   Diffs
>
>    - client/pom.xml (af724b1)
>    - plugins/pom.xml (097f224)
>    - plugins/storage/volume/cloudbyte/pom.xml (PRE-CREATION)
>    - plugins/storage/volume/cloudbyte/resources/META-INF/cloudstack/storage-volume-cloudbyte/module.properties
>    (PRE-CREATION)
>    - plugins/storage/volume/cloudbyte/resources/META-INF/cloudstack/storage-volume-cloudbyte/spring-storage-volume-cloudbyte-context.xml
>    (PRE-CREATION)
>    - plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/driver/ElastistorPrimaryDataStoreDriver.java
>    (PRE-CREATION)
>    - plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/lifecycle/ElastistorPrimaryDataStoreLifeCycle.java
>    (PRE-CREATION)
>    - plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/provider/ElastistorHostListener.java
>    (PRE-CREATION)
>    - plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/provider/ElastistorPrimaryDataStoreProvider.java
>    (PRE-CREATION)
>    - plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/util/ElastistorUtil.java
>    (PRE-CREATION)
>
> View Diff <https://reviews.apache.org/r/19021/diff/>
>
>
>
>
>
> --
> *Mike Tutkowski*
>
> *Senior CloudStack Developer, SolidFire Inc.*
>
> e: mike.tutkowski@solidfire.com
>
> o: 303.746.7302
>
> Advancing the way the world uses the cloud<http://solidfire.com/solution/overview/?video=play>
> *(tm)*
>



-- 
*Mike Tutkowski*
*Senior CloudStack Developer, SolidFire Inc.*
e: mike.tutkowski@solidfire.com
o: 303.746.7302
Advancing the way the world uses the
cloud<http://solidfire.com/solution/overview/?video=play>
*(tm)*

RE: Review Request 19021: Cloudbyte Elastistor storage plug-in

Posted by Edison Su <Ed...@citrix.com>.
Hi Mike,
   Seems some of your comments are related to the scope of their implementation, such as do you support this, do you support that, can you do this, can you do that etc. From my point of view, it's not important, as the capability of driver is totally controlled by the vendors, vendors can implement whatever functionalities they want. My criteria to check in the code is very simple: the plugin should not modify common code.

From: Mike Tutkowski [mailto:mike.tutkowski@solidfire.com]
Sent: Thursday, March 13, 2014 3:25 PM
To: Edison Su; Mike Tutkowski
Cc: punith s; cloudstack
Subject: Re: Review Request 19021: Cloudbyte Elastistor storage plug-in

Hi Punith,

Once you close out the open issues, we can work to get your code in.

Feature freeze is Friday, March 14th, so we should do it sometime tomorrow.

Thanks!

On Thu, Mar 13, 2014 at 4:24 PM, Mike Tutkowski <mi...@solidfire.com>> wrote:
This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/19021/


plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/lifecycle/ElastistorPrimaryDataStoreLifeCycle.java<https://reviews.apache.org/r/19021/diff/5/?file=518383#file518383line99> (Diff revision 5)


99


        if(details.get("esaccountid") != null)


Does this plug-in support multiple CloudByte SANs at the same time?



It looks like whatever values you set most recently for ElastistorUtil will be utilized if you don't provide them in the details. Is this OK if you don't provide all of the details for your second or more SAN?


- Mike Tutkowski


On March 13th, 2014, 9:16 a.m. UTC, punith s wrote:
Review request for cloudstack, edison su and Mike Tutkowski.
By punith s.

Updated March 13, 2014, 9:16 a.m.
Repository: cloudstack-git
Description

This patch implements a basic storage plug-in for cloudbyte elastistor v1.3.0, The plug-in is a new feature for cloudstack 4.4 and above.



this does not implement managed storage yet, it is been integrated only with CreateStoragePool and DeleteStoragePool api's.



the desired behavior of the plugin are:



* Allow an Admin to create a primary storage at cluster level, hence creates a volume in elastistor and gets attached to the host with the given capacityiops and capacitybytes through CreateStoragePool api with provider being elastistor.



*Allow an admin to delete a primary storage at cluster level, hence it deletes the volume from host in cloudstack and deletes the respective volume in elastistor.



* volume and datadisks fuctions performs the default storage fuctions, ie. the driver extends the CloudStackPrimaryDataStoreDriverImpl.



* support for both nfs and icsci primary storage.


Testing

Build test using,



mvn -P developer,systemvm clean install, which is successful.



Manual testing has been performed using cloudmonkey.



* Creating a primary storage based on cloudbyte storage plugin.



cloudmonkey# create storagepool scope=cluster zoneid=dac7223c-6d09-4dcb-82fb-bdecf7c657f5 podid=20a613c4-eccf-4fdc-b8ca-c51df483326f clusterid=9a89bc12-bf00-496b-b1d8-8e92cdf1795f name=cloudbytevolume provider=elastistor url=nfs://10.10.171.137/cloudbytetest<http://10.10.171.137/cloudbytetest> capacityiops=500 capacitybytes=214748364800 tags=cloudbytetest

storagepool:

name = cloudbytevolume

id = 57f70aa4-659b-3b53-b8ab-2f712474f107

capacityiops = 500

clusterid = 9a89bc12-bf00-496b-b1d8-8e92cdf1795f

clustername = test000

created = 2014-03-11T12:42:38+0530

disksizeallocated = 0

disksizetotal = 214748364800

hypervisor = Any

ipaddress = 10.10.171.137

path = /cloudbytetest

podid = 20a613c4-eccf-4fdc-b8ca-c51df483326f

podname = test00

scope = CLUSTER

state = Up

tags = cloudbytetest

type = NetworkFilesystem

zoneid = dac7223c-6d09-4dcb-82fb-bdecf7c657f5

zonename = DevCloud0



* Deleting the primary storage based on cloudbyte storage plugin.



cloudmonkey# delete storagepool id=57f70aa4-659b-3b53-b8ab-2f712474f107

success = true



* creation of primary storage with negative capacityiops throws an exception.



* creation of primary storage with already available name and ip throws an exception.



* if the elastistor params which are required for plugin configuration are not injected through spring-storage-volume-cloudbyte-context.xml, it can be set from details map.



cloudmonkey# create storagepool scope=cluster zoneid=afacc706-3f4d-4f50-82e6-bf0f82959ba8 podid=821ad540-6c98-43f3-935d-72a47a319b20 clusterid=e0ced156-532e-4941-99c0-f34ff1727544 name=nfsvol provider=elastistor url=nfs://10.10.171.143/volnfs<http://10.10.171.143/volnfs> details[0].esaccountid=9e9f67d5-e06f-4d63-a0b8-e7255cba84b8 details[1].espoolid=d2d15d11-0f06-3426-a097-3e6e8b36f85c details[2].esdefaultgateway=10.10.1.1 details[3].essubnet=8  details[4].estntinterface=em0 details[5].esmanagementip=10.10.171.180

details[6].esapikey=PubSInZaCji8hrRfOsCxgbug2I2k_sRJ0i2a9qmAzZIiCTcFPmZelzx6uNK9TYgqkdohCmq1L2J9eYmUe9YO6A capacityiops=100 capacitybytes=214748364800



storagepool:

name = nfsvol

id = 7ea08bf6-777a-3553-8f1e-c3a9f9b626cb

capacityiops = 100

clusterid = e0ced156-532e-4941-99c0-f34ff1727544

clustername = test000

created = 2014-03-12T17:45:10+0530

disksizeallocated = 0

disksizetotal = 214748364800

hypervisor = Any

ipaddress = 10.10.171.143

path = /volnfs

podid = 821ad540-6c98-43f3-935d-72a47a319b20

podname = test00

scope = CLUSTER

state = Up

type = NetworkFilesystem

zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8

zonename = DevCloud0



* creation of volume on created storage pool.

cloudmonkey# create volume zoneid=afacc706-3f4d-4f50-82e6-bf0f82959ba8 diskofferingid=f20e3b76-82e3-43d1-91e3-3ff337d7181d name=testvolume



accountid = 819b1dfe-a9d3-11e3-a500-f46d04ee0527

cmd = org.apache.cloudstack.api.command.user.volume.CreateVolumeCmd

created = 2014-03-13T11:51:27+0530

jobid = 596294b8-2b49-4b49-8526-9117cf56c95d

jobprocstatus = 0

jobresult:

volume:

name = testvolume

id = e079281e-d822-4b90-9e85-9648350a0369

account = admin

created = 2014-03-13T11:51:27+0530

destroyed = False

diskofferingdisplaytext = Small Disk, 5 GB

diskofferingid = f20e3b76-82e3-43d1-91e3-3ff337d7181d

diskofferingname = Small

displayvolume = True

domain = ROOT

domainid = 819ae3b6-a9d3-11e3-a500-f46d04ee0527

isextractable = True

jobid = 596294b8-2b49-4b49-8526-9117cf56c95d

jobstatus = 0

size = 5368709120

state = Allocated

storagetype = shared

tags:

type = DATADISK

zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8

zonename = DevCloud0

jobresultcode = 0

jobresulttype = object

jobstatus = 1

userid = 819b856e-a9d3-11e3-a500-f46d04ee0527



* attaching a specific volume.

cloudmonkey# attach volume id=e079281e-d822-4b90-9e85-9648350a0369 virtualmachineid=3e6eeab1-e624-461e-94e0-230215a8dbc3



accountid = 819b1dfe-a9d3-11e3-a500-f46d04ee0527

cmd = org.apache.cloudstack.api.command.user.volume.AttachVolumeCmd

created = 2014-03-13T11:55:09+0530

jobid = 364d7636-72ad-410c-891c-c38ac34b6d42

jobprocstatus = 0

jobresult:

volume:

id = e079281e-d822-4b90-9e85-9648350a0369

name = testvolume

account = admin

attached = 2014-03-13T11:55:11+0530

created = 2014-03-13T11:51:27+0530

destroyed = False

deviceid = 2

diskofferingdisplaytext = Small Disk, 5 GB

diskofferingid = f20e3b76-82e3-43d1-91e3-3ff337d7181d

diskofferingname = Small

displayvolume = True

domain = ROOT

domainid = 819ae3b6-a9d3-11e3-a500-f46d04ee0527

hypervisor = XenServer

isextractable = True

jobid = 364d7636-72ad-410c-891c-c38ac34b6d42

jobstatus = 0

size = 5368709120

state = Ready

storage = okay

storagetype = shared

tags:

type = DATADISK

virtualmachineid = 3e6eeab1-e624-461e-94e0-230215a8dbc3

vmdisplayname = tiny

vmname = tiny

vmstate = Running

zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8

zonename = DevCloud0

jobresultcode = 0

jobresulttype = object

jobstatus = 1

userid = 819b856e-a9d3-11e3-a500-f46d04ee0527



*detaching a specific volume.

cloudmonkey# detach volume id=e079281e-d822-4b90-9e85-9648350a0369



accountid = 819b1dfe-a9d3-11e3-a500-f46d04ee0527

cmd = org.apache.cloudstack.api.command.user.volume.DetachVolumeCmd

created = 2014-03-13T11:57:40+0530

jobid = 38fb6463-7d95-4d4c-8a50-1ec8a1c9ba98

jobprocstatus = 0

jobresult:

volume:

id = e079281e-d822-4b90-9e85-9648350a0369

name = testvolume

account = admin

created = 2014-03-13T11:51:27+0530

destroyed = False

diskofferingdisplaytext = Small Disk, 5 GB

diskofferingid = f20e3b76-82e3-43d1-91e3-3ff337d7181d

diskofferingname = Small

displayvolume = True

domain = ROOT

domainid = 819ae3b6-a9d3-11e3-a500-f46d04ee0527

hypervisor = XenServer

isextractable = True

jobid = 38fb6463-7d95-4d4c-8a50-1ec8a1c9ba98

jobstatus = 0

size = 5368709120

state = Ready

storage = okay

storagetype = shared

tags:

type = DATADISK

zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8

zonename = DevCloud0

jobresultcode = 0

jobresulttype = object

jobstatus = 1

userid = 819b856e-a9d3-11e3-a500-f46d04ee0527



*deleting a volume

cloudmonkey# delete volume id=e079281e-d822-4b90-9e85-9648350a0369

success = true


Diffs

  *   client/pom.xml (af724b1)
  *   plugins/pom.xml (097f224)
  *   plugins/storage/volume/cloudbyte/pom.xml (PRE-CREATION)
  *   plugins/storage/volume/cloudbyte/resources/META-INF/cloudstack/storage-volume-cloudbyte/module.properties (PRE-CREATION)
  *   plugins/storage/volume/cloudbyte/resources/META-INF/cloudstack/storage-volume-cloudbyte/spring-storage-volume-cloudbyte-context.xml (PRE-CREATION)
  *   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/driver/ElastistorPrimaryDataStoreDriver.java (PRE-CREATION)
  *   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/lifecycle/ElastistorPrimaryDataStoreLifeCycle.java (PRE-CREATION)
  *   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/provider/ElastistorHostListener.java (PRE-CREATION)
  *   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/provider/ElastistorPrimaryDataStoreProvider.java (PRE-CREATION)
  *   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/util/ElastistorUtil.java (PRE-CREATION)

View Diff<https://reviews.apache.org/r/19021/diff/>




--
Mike Tutkowski
Senior CloudStack Developer, SolidFire Inc.
e: mike.tutkowski@solidfire.com<ma...@solidfire.com>
o: 303.746.7302
Advancing the way the world uses the cloud<http://solidfire.com/solution/overview/?video=play>(tm)

Re: Review Request 19021: Cloudbyte Elastistor storage plug-in

Posted by Mike Tutkowski <mi...@solidfire.com>.
Hi Punith,

Once you close out the open issues, we can work to get your code in.

Feature freeze is Friday, March 14th, so we should do it sometime tomorrow.

Thanks!


On Thu, Mar 13, 2014 at 4:24 PM, Mike Tutkowski <
mike.tutkowski@solidfire.com> wrote:

>    This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/19021/
>
> plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/lifecycle/ElastistorPrimaryDataStoreLifeCycle.java<https://reviews.apache.org/r/19021/diff/5/?file=518383#file518383line99> (Diff
> revision 5)
>
> 99
>
>         if(details.get("esaccountid") != null)
>
>   Does this plug-in support multiple CloudByte SANs at the same time?
>
> It looks like whatever values you set most recently for ElastistorUtil will be utilized if you don't provide them in the details. Is this OK if you don't provide all of the details for your second or more SAN?
>
>
> - Mike Tutkowski
>
> On March 13th, 2014, 9:16 a.m. UTC, punith s wrote:
>   Review request for cloudstack, edison su and Mike Tutkowski.
> By punith s.
>
> *Updated March 13, 2014, 9:16 a.m.*
>  *Repository: * cloudstack-git
> Description
>
> This patch implements a basic storage plug-in for cloudbyte elastistor v1.3.0, The plug-in is a new feature for cloudstack 4.4 and above.
>
> this does not implement managed storage yet, it is been integrated only with CreateStoragePool and DeleteStoragePool api's.
>
> the desired behavior of the plugin are:
>
> * Allow an Admin to create a primary storage at cluster level, hence creates a volume in elastistor and gets attached to the host with the given capacityiops and capacitybytes through CreateStoragePool api with provider being elastistor.
>
> *Allow an admin to delete a primary storage at cluster level, hence it deletes the volume from host in cloudstack and deletes the respective volume in elastistor.
>
> * volume and datadisks fuctions performs the default storage fuctions, ie. the driver extends the CloudStackPrimaryDataStoreDriverImpl.
>
> * support for both nfs and icsci primary storage.
>
>   Testing
>
> Build test using,
>
> mvn -P developer,systemvm clean install, which is successful.
>
> Manual testing has been performed using cloudmonkey.
>
> * Creating a primary storage based on cloudbyte storage plugin.
>
> cloudmonkey# create storagepool scope=cluster zoneid=dac7223c-6d09-4dcb-82fb-bdecf7c657f5 podid=20a613c4-eccf-4fdc-b8ca-c51df483326f clusterid=9a89bc12-bf00-496b-b1d8-8e92cdf1795f name=cloudbytevolume provider=elastistor url=nfs://10.10.171.137/cloudbytetest capacityiops=500 capacitybytes=214748364800 tags=cloudbytetest
> storagepool:
> name = cloudbytevolume
> id = 57f70aa4-659b-3b53-b8ab-2f712474f107
> capacityiops = 500
> clusterid = 9a89bc12-bf00-496b-b1d8-8e92cdf1795f
> clustername = test000
> created = 2014-03-11T12:42:38+0530
> disksizeallocated = 0
> disksizetotal = 214748364800
> hypervisor = Any
> ipaddress = 10.10.171.137
> path = /cloudbytetest
> podid = 20a613c4-eccf-4fdc-b8ca-c51df483326f
> podname = test00
> scope = CLUSTER
> state = Up
> tags = cloudbytetest
> type = NetworkFilesystem
> zoneid = dac7223c-6d09-4dcb-82fb-bdecf7c657f5
> zonename = DevCloud0
>
> * Deleting the primary storage based on cloudbyte storage plugin.
>
> cloudmonkey# delete storagepool id=57f70aa4-659b-3b53-b8ab-2f712474f107
> success = true
>
> * creation of primary storage with negative capacityiops throws an exception.
>
> * creation of primary storage with already available name and ip throws an exception.
>
> * if the elastistor params which are required for plugin configuration are not injected through spring-storage-volume-cloudbyte-context.xml, it can be set from details map.
>
> cloudmonkey# create storagepool scope=cluster zoneid=afacc706-3f4d-4f50-82e6-bf0f82959ba8 podid=821ad540-6c98-43f3-935d-72a47a319b20 clusterid=e0ced156-532e-4941-99c0-f34ff1727544 name=nfsvol provider=elastistor url=nfs://10.10.171.143/volnfs details[0].esaccountid=9e9f67d5-e06f-4d63-a0b8-e7255cba84b8 details[1].espoolid=d2d15d11-0f06-3426-a097-3e6e8b36f85c details[2].esdefaultgateway=10.10.1.1 details[3].essubnet=8  details[4].estntinterface=em0 details[5].esmanagementip=10.10.171.180
> details[6].esapikey=PubSInZaCji8hrRfOsCxgbug2I2k_sRJ0i2a9qmAzZIiCTcFPmZelzx6uNK9TYgqkdohCmq1L2J9eYmUe9YO6A capacityiops=100 capacitybytes=214748364800
>
> storagepool:
> name = nfsvol
> id = 7ea08bf6-777a-3553-8f1e-c3a9f9b626cb
> capacityiops = 100
> clusterid = e0ced156-532e-4941-99c0-f34ff1727544
> clustername = test000
> created = 2014-03-12T17:45:10+0530
> disksizeallocated = 0
> disksizetotal = 214748364800
> hypervisor = Any
> ipaddress = 10.10.171.143
> path = /volnfs
> podid = 821ad540-6c98-43f3-935d-72a47a319b20
> podname = test00
> scope = CLUSTER
> state = Up
> type = NetworkFilesystem
> zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
> zonename = DevCloud0
>
> * creation of volume on created storage pool.
> cloudmonkey# create volume zoneid=afacc706-3f4d-4f50-82e6-bf0f82959ba8 diskofferingid=f20e3b76-82e3-43d1-91e3-3ff337d7181d name=testvolume
>
> accountid = 819b1dfe-a9d3-11e3-a500-f46d04ee0527
> cmd = org.apache.cloudstack.api.command.user.volume.CreateVolumeCmd
> created = 2014-03-13T11:51:27+0530
> jobid = 596294b8-2b49-4b49-8526-9117cf56c95d
> jobprocstatus = 0
> jobresult:
> volume:
> name = testvolume
> id = e079281e-d822-4b90-9e85-9648350a0369
> account = admin
> created = 2014-03-13T11:51:27+0530
> destroyed = False
> diskofferingdisplaytext = Small Disk, 5 GB
> diskofferingid = f20e3b76-82e3-43d1-91e3-3ff337d7181d
> diskofferingname = Small
> displayvolume = True
> domain = ROOT
> domainid = 819ae3b6-a9d3-11e3-a500-f46d04ee0527
> isextractable = True
> jobid = 596294b8-2b49-4b49-8526-9117cf56c95d
> jobstatus = 0
> size = 5368709120
> state = Allocated
> storagetype = shared
> tags:
> type = DATADISK
> zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
> zonename = DevCloud0
> jobresultcode = 0
> jobresulttype = object
> jobstatus = 1
> userid = 819b856e-a9d3-11e3-a500-f46d04ee0527
>
> * attaching a specific volume.
> cloudmonkey# attach volume id=e079281e-d822-4b90-9e85-9648350a0369 virtualmachineid=3e6eeab1-e624-461e-94e0-230215a8dbc3
>
> accountid = 819b1dfe-a9d3-11e3-a500-f46d04ee0527
> cmd = org.apache.cloudstack.api.command.user.volume.AttachVolumeCmd
> created = 2014-03-13T11:55:09+0530
> jobid = 364d7636-72ad-410c-891c-c38ac34b6d42
> jobprocstatus = 0
> jobresult:
> volume:
> id = e079281e-d822-4b90-9e85-9648350a0369
> name = testvolume
> account = admin
> attached = 2014-03-13T11:55:11+0530
> created = 2014-03-13T11:51:27+0530
> destroyed = False
> deviceid = 2
> diskofferingdisplaytext = Small Disk, 5 GB
> diskofferingid = f20e3b76-82e3-43d1-91e3-3ff337d7181d
> diskofferingname = Small
> displayvolume = True
> domain = ROOT
> domainid = 819ae3b6-a9d3-11e3-a500-f46d04ee0527
> hypervisor = XenServer
> isextractable = True
> jobid = 364d7636-72ad-410c-891c-c38ac34b6d42
> jobstatus = 0
> size = 5368709120
> state = Ready
> storage = okay
> storagetype = shared
> tags:
> type = DATADISK
> virtualmachineid = 3e6eeab1-e624-461e-94e0-230215a8dbc3
> vmdisplayname = tiny
> vmname = tiny
> vmstate = Running
> zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
> zonename = DevCloud0
> jobresultcode = 0
> jobresulttype = object
> jobstatus = 1
> userid = 819b856e-a9d3-11e3-a500-f46d04ee0527
>
> *detaching a specific volume.
> cloudmonkey# detach volume id=e079281e-d822-4b90-9e85-9648350a0369
>
> accountid = 819b1dfe-a9d3-11e3-a500-f46d04ee0527
> cmd = org.apache.cloudstack.api.command.user.volume.DetachVolumeCmd
> created = 2014-03-13T11:57:40+0530
> jobid = 38fb6463-7d95-4d4c-8a50-1ec8a1c9ba98
> jobprocstatus = 0
> jobresult:
> volume:
> id = e079281e-d822-4b90-9e85-9648350a0369
> name = testvolume
> account = admin
> created = 2014-03-13T11:51:27+0530
> destroyed = False
> diskofferingdisplaytext = Small Disk, 5 GB
> diskofferingid = f20e3b76-82e3-43d1-91e3-3ff337d7181d
> diskofferingname = Small
> displayvolume = True
> domain = ROOT
> domainid = 819ae3b6-a9d3-11e3-a500-f46d04ee0527
> hypervisor = XenServer
> isextractable = True
> jobid = 38fb6463-7d95-4d4c-8a50-1ec8a1c9ba98
> jobstatus = 0
> size = 5368709120
> state = Ready
> storage = okay
> storagetype = shared
> tags:
> type = DATADISK
> zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
> zonename = DevCloud0
> jobresultcode = 0
> jobresulttype = object
> jobstatus = 1
> userid = 819b856e-a9d3-11e3-a500-f46d04ee0527
>
> *deleting a volume
> cloudmonkey# delete volume id=e079281e-d822-4b90-9e85-9648350a0369
> success = true
>
>   Diffs
>
>    - client/pom.xml (af724b1)
>    - plugins/pom.xml (097f224)
>    - plugins/storage/volume/cloudbyte/pom.xml (PRE-CREATION)
>    - plugins/storage/volume/cloudbyte/resources/META-INF/cloudstack/storage-volume-cloudbyte/module.properties
>    (PRE-CREATION)
>    - plugins/storage/volume/cloudbyte/resources/META-INF/cloudstack/storage-volume-cloudbyte/spring-storage-volume-cloudbyte-context.xml
>    (PRE-CREATION)
>    - plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/driver/ElastistorPrimaryDataStoreDriver.java
>    (PRE-CREATION)
>    - plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/lifecycle/ElastistorPrimaryDataStoreLifeCycle.java
>    (PRE-CREATION)
>    - plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/provider/ElastistorHostListener.java
>    (PRE-CREATION)
>    - plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/provider/ElastistorPrimaryDataStoreProvider.java
>    (PRE-CREATION)
>    - plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/util/ElastistorUtil.java
>    (PRE-CREATION)
>
> View Diff <https://reviews.apache.org/r/19021/diff/>
>



-- 
*Mike Tutkowski*
*Senior CloudStack Developer, SolidFire Inc.*
e: mike.tutkowski@solidfire.com
o: 303.746.7302
Advancing the way the world uses the
cloud<http://solidfire.com/solution/overview/?video=play>
*(tm)*

Re: Review Request 19021: Cloudbyte Elastistor storage plug-in

Posted by Mike Tutkowski <mi...@solidfire.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/19021/#review37123
-----------------------------------------------------------



plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/lifecycle/ElastistorPrimaryDataStoreLifeCycle.java
<https://reviews.apache.org/r/19021/#comment68465>

    Does this plug-in support multiple CloudByte SANs at the same time?
    
    It looks like whatever values you set most recently for ElastistorUtil will be utilized if you don't provide them in the details. Is this OK if you don't provide all of the details for your second or more SAN?


- Mike Tutkowski


On March 13, 2014, 9:16 a.m., punith s wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/19021/
> -----------------------------------------------------------
> 
> (Updated March 13, 2014, 9:16 a.m.)
> 
> 
> Review request for cloudstack, edison su and Mike Tutkowski.
> 
> 
> Repository: cloudstack-git
> 
> 
> Description
> -------
> 
> This patch implements a basic storage plug-in for cloudbyte elastistor v1.3.0, The plug-in is a new feature for cloudstack 4.4 and above.
> 
> this does not implement managed storage yet, it is been integrated only with CreateStoragePool and DeleteStoragePool api's.
> 
> the desired behavior of the plugin are:
> 
> * Allow an Admin to create a primary storage at cluster level, hence creates a volume in elastistor and gets attached to the host with the given capacityiops and capacitybytes through CreateStoragePool api with provider being elastistor.
> 
> *Allow an admin to delete a primary storage at cluster level, hence it deletes the volume from host in cloudstack and deletes the respective volume in elastistor.
> 
> * volume and datadisks fuctions performs the default storage fuctions, ie. the driver extends the CloudStackPrimaryDataStoreDriverImpl.
> 
> * support for both nfs and icsci primary storage.
> 
> 
> Diffs
> -----
> 
>   client/pom.xml af724b1 
>   plugins/pom.xml 097f224 
>   plugins/storage/volume/cloudbyte/pom.xml PRE-CREATION 
>   plugins/storage/volume/cloudbyte/resources/META-INF/cloudstack/storage-volume-cloudbyte/module.properties PRE-CREATION 
>   plugins/storage/volume/cloudbyte/resources/META-INF/cloudstack/storage-volume-cloudbyte/spring-storage-volume-cloudbyte-context.xml PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/driver/ElastistorPrimaryDataStoreDriver.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/lifecycle/ElastistorPrimaryDataStoreLifeCycle.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/provider/ElastistorHostListener.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/provider/ElastistorPrimaryDataStoreProvider.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/util/ElastistorUtil.java PRE-CREATION 
> 
> Diff: https://reviews.apache.org/r/19021/diff/
> 
> 
> Testing
> -------
> 
> Build test using, 
> 
> mvn -P developer,systemvm clean install, which is successful.
> 
> Manual testing has been performed using cloudmonkey.
> 
> * Creating a primary storage based on cloudbyte storage plugin.
> 
> cloudmonkey# create storagepool scope=cluster zoneid=dac7223c-6d09-4dcb-82fb-bdecf7c657f5 podid=20a613c4-eccf-4fdc-b8ca-c51df483326f clusterid=9a89bc12-bf00-496b-b1d8-8e92cdf1795f name=cloudbytevolume provider=elastistor url=nfs://10.10.171.137/cloudbytetest capacityiops=500 capacitybytes=214748364800 tags=cloudbytetest
> storagepool:
> name = cloudbytevolume
> id = 57f70aa4-659b-3b53-b8ab-2f712474f107
> capacityiops = 500
> clusterid = 9a89bc12-bf00-496b-b1d8-8e92cdf1795f
> clustername = test000
> created = 2014-03-11T12:42:38+0530
> disksizeallocated = 0
> disksizetotal = 214748364800
> hypervisor = Any
> ipaddress = 10.10.171.137
> path = /cloudbytetest
> podid = 20a613c4-eccf-4fdc-b8ca-c51df483326f
> podname = test00
> scope = CLUSTER
> state = Up
> tags = cloudbytetest
> type = NetworkFilesystem
> zoneid = dac7223c-6d09-4dcb-82fb-bdecf7c657f5
> zonename = DevCloud0
> 
> * Deleting the primary storage based on cloudbyte storage plugin.
> 
> cloudmonkey# delete storagepool id=57f70aa4-659b-3b53-b8ab-2f712474f107
> success = true
> 
> * creation of primary storage with negative capacityiops throws an exception.
> 
> * creation of primary storage with already available name and ip throws an exception.
> 
> * if the elastistor params which are required for plugin configuration are not injected through spring-storage-volume-cloudbyte-context.xml, it can be set from details map.
> 
> cloudmonkey# create storagepool scope=cluster zoneid=afacc706-3f4d-4f50-82e6-bf0f82959ba8 podid=821ad540-6c98-43f3-935d-72a47a319b20 clusterid=e0ced156-532e-4941-99c0-f34ff1727544 name=nfsvol provider=elastistor url=nfs://10.10.171.143/volnfs details[0].esaccountid=9e9f67d5-e06f-4d63-a0b8-e7255cba84b8 details[1].espoolid=d2d15d11-0f06-3426-a097-3e6e8b36f85c details[2].esdefaultgateway=10.10.1.1 details[3].essubnet=8  details[4].estntinterface=em0 details[5].esmanagementip=10.10.171.180
> details[6].esapikey=PubSInZaCji8hrRfOsCxgbug2I2k_sRJ0i2a9qmAzZIiCTcFPmZelzx6uNK9TYgqkdohCmq1L2J9eYmUe9YO6A capacityiops=100 capacitybytes=214748364800
> 
> storagepool:
> name = nfsvol
> id = 7ea08bf6-777a-3553-8f1e-c3a9f9b626cb
> capacityiops = 100
> clusterid = e0ced156-532e-4941-99c0-f34ff1727544
> clustername = test000
> created = 2014-03-12T17:45:10+0530
> disksizeallocated = 0
> disksizetotal = 214748364800
> hypervisor = Any
> ipaddress = 10.10.171.143
> path = /volnfs
> podid = 821ad540-6c98-43f3-935d-72a47a319b20
> podname = test00
> scope = CLUSTER
> state = Up
> type = NetworkFilesystem
> zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
> zonename = DevCloud0
> 
> * creation of volume on created storage pool.
> cloudmonkey# create volume zoneid=afacc706-3f4d-4f50-82e6-bf0f82959ba8 diskofferingid=f20e3b76-82e3-43d1-91e3-3ff337d7181d name=testvolume
> 
> accountid = 819b1dfe-a9d3-11e3-a500-f46d04ee0527
> cmd = org.apache.cloudstack.api.command.user.volume.CreateVolumeCmd
> created = 2014-03-13T11:51:27+0530
> jobid = 596294b8-2b49-4b49-8526-9117cf56c95d
> jobprocstatus = 0
> jobresult:
> volume:
> name = testvolume
> id = e079281e-d822-4b90-9e85-9648350a0369
> account = admin
> created = 2014-03-13T11:51:27+0530
> destroyed = False
> diskofferingdisplaytext = Small Disk, 5 GB
> diskofferingid = f20e3b76-82e3-43d1-91e3-3ff337d7181d
> diskofferingname = Small
> displayvolume = True
> domain = ROOT
> domainid = 819ae3b6-a9d3-11e3-a500-f46d04ee0527
> isextractable = True
> jobid = 596294b8-2b49-4b49-8526-9117cf56c95d
> jobstatus = 0
> size = 5368709120
> state = Allocated
> storagetype = shared
> tags:
> type = DATADISK
> zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
> zonename = DevCloud0
> jobresultcode = 0
> jobresulttype = object
> jobstatus = 1
> userid = 819b856e-a9d3-11e3-a500-f46d04ee0527
> 
> * attaching a specific volume.
> cloudmonkey# attach volume id=e079281e-d822-4b90-9e85-9648350a0369 virtualmachineid=3e6eeab1-e624-461e-94e0-230215a8dbc3
> 
> accountid = 819b1dfe-a9d3-11e3-a500-f46d04ee0527
> cmd = org.apache.cloudstack.api.command.user.volume.AttachVolumeCmd
> created = 2014-03-13T11:55:09+0530
> jobid = 364d7636-72ad-410c-891c-c38ac34b6d42
> jobprocstatus = 0
> jobresult:
> volume:
> id = e079281e-d822-4b90-9e85-9648350a0369
> name = testvolume
> account = admin
> attached = 2014-03-13T11:55:11+0530
> created = 2014-03-13T11:51:27+0530
> destroyed = False
> deviceid = 2
> diskofferingdisplaytext = Small Disk, 5 GB
> diskofferingid = f20e3b76-82e3-43d1-91e3-3ff337d7181d
> diskofferingname = Small
> displayvolume = True
> domain = ROOT
> domainid = 819ae3b6-a9d3-11e3-a500-f46d04ee0527
> hypervisor = XenServer
> isextractable = True
> jobid = 364d7636-72ad-410c-891c-c38ac34b6d42
> jobstatus = 0
> size = 5368709120
> state = Ready
> storage = okay
> storagetype = shared
> tags:
> type = DATADISK
> virtualmachineid = 3e6eeab1-e624-461e-94e0-230215a8dbc3
> vmdisplayname = tiny
> vmname = tiny
> vmstate = Running
> zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
> zonename = DevCloud0
> jobresultcode = 0
> jobresulttype = object
> jobstatus = 1
> userid = 819b856e-a9d3-11e3-a500-f46d04ee0527
> 
> *detaching a specific volume.
> cloudmonkey# detach volume id=e079281e-d822-4b90-9e85-9648350a0369
> 
> accountid = 819b1dfe-a9d3-11e3-a500-f46d04ee0527
> cmd = org.apache.cloudstack.api.command.user.volume.DetachVolumeCmd
> created = 2014-03-13T11:57:40+0530
> jobid = 38fb6463-7d95-4d4c-8a50-1ec8a1c9ba98
> jobprocstatus = 0
> jobresult:
> volume:
> id = e079281e-d822-4b90-9e85-9648350a0369
> name = testvolume
> account = admin
> created = 2014-03-13T11:51:27+0530
> destroyed = False
> diskofferingdisplaytext = Small Disk, 5 GB
> diskofferingid = f20e3b76-82e3-43d1-91e3-3ff337d7181d
> diskofferingname = Small
> displayvolume = True
> domain = ROOT
> domainid = 819ae3b6-a9d3-11e3-a500-f46d04ee0527
> hypervisor = XenServer
> isextractable = True
> jobid = 38fb6463-7d95-4d4c-8a50-1ec8a1c9ba98
> jobstatus = 0
> size = 5368709120
> state = Ready
> storage = okay
> storagetype = shared
> tags:
> type = DATADISK
> zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
> zonename = DevCloud0
> jobresultcode = 0
> jobresulttype = object
> jobstatus = 1
> userid = 819b856e-a9d3-11e3-a500-f46d04ee0527
> 
> *deleting a volume
> cloudmonkey# delete volume id=e079281e-d822-4b90-9e85-9648350a0369
> success = true
> 
> 
> Thanks,
> 
> punith s
> 
>


Re: Review Request 19021: Cloudbyte Elastistor storage plug-in

Posted by punith s <pu...@cloudbyte.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/19021/
-----------------------------------------------------------

(Updated March 13, 2014, 2:46 p.m.)


Review request for cloudstack, edison su and Mike Tutkowski.


Changes
-------

final cloudbyte storage plugin patch for 4.4.


Repository: cloudstack-git


Description
-------

This patch implements a basic storage plug-in for cloudbyte elastistor v1.3.0, The plug-in is a new feature for cloudstack 4.4 and above.

this does not implement managed storage yet, it is been integrated only with CreateStoragePool and DeleteStoragePool api's.

the desired behavior of the plugin are:

* Allow an Admin to create a primary storage at cluster level, hence creates a volume in elastistor and gets attached to the host with the given capacityiops and capacitybytes through CreateStoragePool api with provider being elastistor.

*Allow an admin to delete a primary storage at cluster level, hence it deletes the volume from host in cloudstack and deletes the respective volume in elastistor.

* volume and datadisks fuctions performs the default storage fuctions, ie. the driver extends the CloudStackPrimaryDataStoreDriverImpl.

* support for both nfs and icsci primary storage.


Diffs (updated)
-----

  client/pom.xml af724b1 
  plugins/pom.xml 097f224 
  plugins/storage/volume/cloudbyte/pom.xml PRE-CREATION 
  plugins/storage/volume/cloudbyte/resources/META-INF/cloudstack/storage-volume-cloudbyte/module.properties PRE-CREATION 
  plugins/storage/volume/cloudbyte/resources/META-INF/cloudstack/storage-volume-cloudbyte/spring-storage-volume-cloudbyte-context.xml PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/driver/ElastistorPrimaryDataStoreDriver.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/lifecycle/ElastistorPrimaryDataStoreLifeCycle.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/provider/ElastistorHostListener.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/provider/ElastistorPrimaryDataStoreProvider.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/util/ElastistorUtil.java PRE-CREATION 

Diff: https://reviews.apache.org/r/19021/diff/


Testing
-------

Build test using, 

mvn -P developer,systemvm clean install, which is successful.

Manual testing has been performed using cloudmonkey.

* Creating a primary storage based on cloudbyte storage plugin.

cloudmonkey# create storagepool scope=cluster zoneid=dac7223c-6d09-4dcb-82fb-bdecf7c657f5 podid=20a613c4-eccf-4fdc-b8ca-c51df483326f clusterid=9a89bc12-bf00-496b-b1d8-8e92cdf1795f name=cloudbytevolume provider=elastistor url=nfs://10.10.171.137/cloudbytetest capacityiops=500 capacitybytes=214748364800 tags=cloudbytetest
storagepool:
name = cloudbytevolume
id = 57f70aa4-659b-3b53-b8ab-2f712474f107
capacityiops = 500
clusterid = 9a89bc12-bf00-496b-b1d8-8e92cdf1795f
clustername = test000
created = 2014-03-11T12:42:38+0530
disksizeallocated = 0
disksizetotal = 214748364800
hypervisor = Any
ipaddress = 10.10.171.137
path = /cloudbytetest
podid = 20a613c4-eccf-4fdc-b8ca-c51df483326f
podname = test00
scope = CLUSTER
state = Up
tags = cloudbytetest
type = NetworkFilesystem
zoneid = dac7223c-6d09-4dcb-82fb-bdecf7c657f5
zonename = DevCloud0

* Deleting the primary storage based on cloudbyte storage plugin.

cloudmonkey# delete storagepool id=57f70aa4-659b-3b53-b8ab-2f712474f107
success = true

* creation of primary storage with negative capacityiops throws an exception.

* creation of primary storage with already available name and ip throws an exception.

* if the elastistor params which are required for plugin configuration are not injected through spring-storage-volume-cloudbyte-context.xml, it can be set from details map.

cloudmonkey# create storagepool scope=cluster zoneid=afacc706-3f4d-4f50-82e6-bf0f82959ba8 podid=821ad540-6c98-43f3-935d-72a47a319b20 clusterid=e0ced156-532e-4941-99c0-f34ff1727544 name=nfsvol provider=elastistor url=nfs://10.10.171.143/volnfs details[0].esaccountid=9e9f67d5-e06f-4d63-a0b8-e7255cba84b8 details[1].espoolid=d2d15d11-0f06-3426-a097-3e6e8b36f85c details[2].esdefaultgateway=10.10.1.1 details[3].essubnet=8  details[4].estntinterface=em0 details[5].esmanagementip=10.10.171.180
details[6].esapikey=PubSInZaCji8hrRfOsCxgbug2I2k_sRJ0i2a9qmAzZIiCTcFPmZelzx6uNK9TYgqkdohCmq1L2J9eYmUe9YO6A capacityiops=100 capacitybytes=214748364800

storagepool:
name = nfsvol
id = 7ea08bf6-777a-3553-8f1e-c3a9f9b626cb
capacityiops = 100
clusterid = e0ced156-532e-4941-99c0-f34ff1727544
clustername = test000
created = 2014-03-12T17:45:10+0530
disksizeallocated = 0
disksizetotal = 214748364800
hypervisor = Any
ipaddress = 10.10.171.143
path = /volnfs
podid = 821ad540-6c98-43f3-935d-72a47a319b20
podname = test00
scope = CLUSTER
state = Up
type = NetworkFilesystem
zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
zonename = DevCloud0

* creation of volume on created storage pool.
cloudmonkey# create volume zoneid=afacc706-3f4d-4f50-82e6-bf0f82959ba8 diskofferingid=f20e3b76-82e3-43d1-91e3-3ff337d7181d name=testvolume

accountid = 819b1dfe-a9d3-11e3-a500-f46d04ee0527
cmd = org.apache.cloudstack.api.command.user.volume.CreateVolumeCmd
created = 2014-03-13T11:51:27+0530
jobid = 596294b8-2b49-4b49-8526-9117cf56c95d
jobprocstatus = 0
jobresult:
volume:
name = testvolume
id = e079281e-d822-4b90-9e85-9648350a0369
account = admin
created = 2014-03-13T11:51:27+0530
destroyed = False
diskofferingdisplaytext = Small Disk, 5 GB
diskofferingid = f20e3b76-82e3-43d1-91e3-3ff337d7181d
diskofferingname = Small
displayvolume = True
domain = ROOT
domainid = 819ae3b6-a9d3-11e3-a500-f46d04ee0527
isextractable = True
jobid = 596294b8-2b49-4b49-8526-9117cf56c95d
jobstatus = 0
size = 5368709120
state = Allocated
storagetype = shared
tags:
type = DATADISK
zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
zonename = DevCloud0
jobresultcode = 0
jobresulttype = object
jobstatus = 1
userid = 819b856e-a9d3-11e3-a500-f46d04ee0527

* attaching a specific volume.
cloudmonkey# attach volume id=e079281e-d822-4b90-9e85-9648350a0369 virtualmachineid=3e6eeab1-e624-461e-94e0-230215a8dbc3

accountid = 819b1dfe-a9d3-11e3-a500-f46d04ee0527
cmd = org.apache.cloudstack.api.command.user.volume.AttachVolumeCmd
created = 2014-03-13T11:55:09+0530
jobid = 364d7636-72ad-410c-891c-c38ac34b6d42
jobprocstatus = 0
jobresult:
volume:
id = e079281e-d822-4b90-9e85-9648350a0369
name = testvolume
account = admin
attached = 2014-03-13T11:55:11+0530
created = 2014-03-13T11:51:27+0530
destroyed = False
deviceid = 2
diskofferingdisplaytext = Small Disk, 5 GB
diskofferingid = f20e3b76-82e3-43d1-91e3-3ff337d7181d
diskofferingname = Small
displayvolume = True
domain = ROOT
domainid = 819ae3b6-a9d3-11e3-a500-f46d04ee0527
hypervisor = XenServer
isextractable = True
jobid = 364d7636-72ad-410c-891c-c38ac34b6d42
jobstatus = 0
size = 5368709120
state = Ready
storage = okay
storagetype = shared
tags:
type = DATADISK
virtualmachineid = 3e6eeab1-e624-461e-94e0-230215a8dbc3
vmdisplayname = tiny
vmname = tiny
vmstate = Running
zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
zonename = DevCloud0
jobresultcode = 0
jobresulttype = object
jobstatus = 1
userid = 819b856e-a9d3-11e3-a500-f46d04ee0527

*detaching a specific volume.
cloudmonkey# detach volume id=e079281e-d822-4b90-9e85-9648350a0369

accountid = 819b1dfe-a9d3-11e3-a500-f46d04ee0527
cmd = org.apache.cloudstack.api.command.user.volume.DetachVolumeCmd
created = 2014-03-13T11:57:40+0530
jobid = 38fb6463-7d95-4d4c-8a50-1ec8a1c9ba98
jobprocstatus = 0
jobresult:
volume:
id = e079281e-d822-4b90-9e85-9648350a0369
name = testvolume
account = admin
created = 2014-03-13T11:51:27+0530
destroyed = False
diskofferingdisplaytext = Small Disk, 5 GB
diskofferingid = f20e3b76-82e3-43d1-91e3-3ff337d7181d
diskofferingname = Small
displayvolume = True
domain = ROOT
domainid = 819ae3b6-a9d3-11e3-a500-f46d04ee0527
hypervisor = XenServer
isextractable = True
jobid = 38fb6463-7d95-4d4c-8a50-1ec8a1c9ba98
jobstatus = 0
size = 5368709120
state = Ready
storage = okay
storagetype = shared
tags:
type = DATADISK
zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
zonename = DevCloud0
jobresultcode = 0
jobresulttype = object
jobstatus = 1
userid = 819b856e-a9d3-11e3-a500-f46d04ee0527

*deleting a volume
cloudmonkey# delete volume id=e079281e-d822-4b90-9e85-9648350a0369
success = true


Thanks,

punith s


Re: Review Request 19021: Cloudbyte Elastistor storage plug-in

Posted by punith s <pu...@cloudbyte.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/19021/
-----------------------------------------------------------

(Updated March 13, 2014, 12:52 p.m.)


Review request for cloudstack, edison su and Mike Tutkowski.


Changes
-------

after deleting a white space in cloudbyte/pom.xml


Repository: cloudstack-git


Description
-------

This patch implements a basic storage plug-in for cloudbyte elastistor v1.3.0, The plug-in is a new feature for cloudstack 4.4 and above.

this does not implement managed storage yet, it is been integrated only with CreateStoragePool and DeleteStoragePool api's.

the desired behavior of the plugin are:

* Allow an Admin to create a primary storage at cluster level, hence creates a volume in elastistor and gets attached to the host with the given capacityiops and capacitybytes through CreateStoragePool api with provider being elastistor.

*Allow an admin to delete a primary storage at cluster level, hence it deletes the volume from host in cloudstack and deletes the respective volume in elastistor.

* volume and datadisks fuctions performs the default storage fuctions, ie. the driver extends the CloudStackPrimaryDataStoreDriverImpl.

* support for both nfs and icsci primary storage.


Diffs (updated)
-----

  plugins/storage/volume/cloudbyte/pom.xml PRE-CREATION 

Diff: https://reviews.apache.org/r/19021/diff/


Testing
-------

Build test using, 

mvn -P developer,systemvm clean install, which is successful.

Manual testing has been performed using cloudmonkey.

* Creating a primary storage based on cloudbyte storage plugin.

cloudmonkey# create storagepool scope=cluster zoneid=dac7223c-6d09-4dcb-82fb-bdecf7c657f5 podid=20a613c4-eccf-4fdc-b8ca-c51df483326f clusterid=9a89bc12-bf00-496b-b1d8-8e92cdf1795f name=cloudbytevolume provider=elastistor url=nfs://10.10.171.137/cloudbytetest capacityiops=500 capacitybytes=214748364800 tags=cloudbytetest
storagepool:
name = cloudbytevolume
id = 57f70aa4-659b-3b53-b8ab-2f712474f107
capacityiops = 500
clusterid = 9a89bc12-bf00-496b-b1d8-8e92cdf1795f
clustername = test000
created = 2014-03-11T12:42:38+0530
disksizeallocated = 0
disksizetotal = 214748364800
hypervisor = Any
ipaddress = 10.10.171.137
path = /cloudbytetest
podid = 20a613c4-eccf-4fdc-b8ca-c51df483326f
podname = test00
scope = CLUSTER
state = Up
tags = cloudbytetest
type = NetworkFilesystem
zoneid = dac7223c-6d09-4dcb-82fb-bdecf7c657f5
zonename = DevCloud0

* Deleting the primary storage based on cloudbyte storage plugin.

cloudmonkey# delete storagepool id=57f70aa4-659b-3b53-b8ab-2f712474f107
success = true

* creation of primary storage with negative capacityiops throws an exception.

* creation of primary storage with already available name and ip throws an exception.

* if the elastistor params which are required for plugin configuration are not injected through spring-storage-volume-cloudbyte-context.xml, it can be set from details map.

cloudmonkey# create storagepool scope=cluster zoneid=afacc706-3f4d-4f50-82e6-bf0f82959ba8 podid=821ad540-6c98-43f3-935d-72a47a319b20 clusterid=e0ced156-532e-4941-99c0-f34ff1727544 name=nfsvol provider=elastistor url=nfs://10.10.171.143/volnfs details[0].esaccountid=9e9f67d5-e06f-4d63-a0b8-e7255cba84b8 details[1].espoolid=d2d15d11-0f06-3426-a097-3e6e8b36f85c details[2].esdefaultgateway=10.10.1.1 details[3].essubnet=8  details[4].estntinterface=em0 details[5].esmanagementip=10.10.171.180
details[6].esapikey=PubSInZaCji8hrRfOsCxgbug2I2k_sRJ0i2a9qmAzZIiCTcFPmZelzx6uNK9TYgqkdohCmq1L2J9eYmUe9YO6A capacityiops=100 capacitybytes=214748364800

storagepool:
name = nfsvol
id = 7ea08bf6-777a-3553-8f1e-c3a9f9b626cb
capacityiops = 100
clusterid = e0ced156-532e-4941-99c0-f34ff1727544
clustername = test000
created = 2014-03-12T17:45:10+0530
disksizeallocated = 0
disksizetotal = 214748364800
hypervisor = Any
ipaddress = 10.10.171.143
path = /volnfs
podid = 821ad540-6c98-43f3-935d-72a47a319b20
podname = test00
scope = CLUSTER
state = Up
type = NetworkFilesystem
zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
zonename = DevCloud0

* creation of volume on created storage pool.
cloudmonkey# create volume zoneid=afacc706-3f4d-4f50-82e6-bf0f82959ba8 diskofferingid=f20e3b76-82e3-43d1-91e3-3ff337d7181d name=testvolume

accountid = 819b1dfe-a9d3-11e3-a500-f46d04ee0527
cmd = org.apache.cloudstack.api.command.user.volume.CreateVolumeCmd
created = 2014-03-13T11:51:27+0530
jobid = 596294b8-2b49-4b49-8526-9117cf56c95d
jobprocstatus = 0
jobresult:
volume:
name = testvolume
id = e079281e-d822-4b90-9e85-9648350a0369
account = admin
created = 2014-03-13T11:51:27+0530
destroyed = False
diskofferingdisplaytext = Small Disk, 5 GB
diskofferingid = f20e3b76-82e3-43d1-91e3-3ff337d7181d
diskofferingname = Small
displayvolume = True
domain = ROOT
domainid = 819ae3b6-a9d3-11e3-a500-f46d04ee0527
isextractable = True
jobid = 596294b8-2b49-4b49-8526-9117cf56c95d
jobstatus = 0
size = 5368709120
state = Allocated
storagetype = shared
tags:
type = DATADISK
zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
zonename = DevCloud0
jobresultcode = 0
jobresulttype = object
jobstatus = 1
userid = 819b856e-a9d3-11e3-a500-f46d04ee0527

* attaching a specific volume.
cloudmonkey# attach volume id=e079281e-d822-4b90-9e85-9648350a0369 virtualmachineid=3e6eeab1-e624-461e-94e0-230215a8dbc3

accountid = 819b1dfe-a9d3-11e3-a500-f46d04ee0527
cmd = org.apache.cloudstack.api.command.user.volume.AttachVolumeCmd
created = 2014-03-13T11:55:09+0530
jobid = 364d7636-72ad-410c-891c-c38ac34b6d42
jobprocstatus = 0
jobresult:
volume:
id = e079281e-d822-4b90-9e85-9648350a0369
name = testvolume
account = admin
attached = 2014-03-13T11:55:11+0530
created = 2014-03-13T11:51:27+0530
destroyed = False
deviceid = 2
diskofferingdisplaytext = Small Disk, 5 GB
diskofferingid = f20e3b76-82e3-43d1-91e3-3ff337d7181d
diskofferingname = Small
displayvolume = True
domain = ROOT
domainid = 819ae3b6-a9d3-11e3-a500-f46d04ee0527
hypervisor = XenServer
isextractable = True
jobid = 364d7636-72ad-410c-891c-c38ac34b6d42
jobstatus = 0
size = 5368709120
state = Ready
storage = okay
storagetype = shared
tags:
type = DATADISK
virtualmachineid = 3e6eeab1-e624-461e-94e0-230215a8dbc3
vmdisplayname = tiny
vmname = tiny
vmstate = Running
zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
zonename = DevCloud0
jobresultcode = 0
jobresulttype = object
jobstatus = 1
userid = 819b856e-a9d3-11e3-a500-f46d04ee0527

*detaching a specific volume.
cloudmonkey# detach volume id=e079281e-d822-4b90-9e85-9648350a0369

accountid = 819b1dfe-a9d3-11e3-a500-f46d04ee0527
cmd = org.apache.cloudstack.api.command.user.volume.DetachVolumeCmd
created = 2014-03-13T11:57:40+0530
jobid = 38fb6463-7d95-4d4c-8a50-1ec8a1c9ba98
jobprocstatus = 0
jobresult:
volume:
id = e079281e-d822-4b90-9e85-9648350a0369
name = testvolume
account = admin
created = 2014-03-13T11:51:27+0530
destroyed = False
diskofferingdisplaytext = Small Disk, 5 GB
diskofferingid = f20e3b76-82e3-43d1-91e3-3ff337d7181d
diskofferingname = Small
displayvolume = True
domain = ROOT
domainid = 819ae3b6-a9d3-11e3-a500-f46d04ee0527
hypervisor = XenServer
isextractable = True
jobid = 38fb6463-7d95-4d4c-8a50-1ec8a1c9ba98
jobstatus = 0
size = 5368709120
state = Ready
storage = okay
storagetype = shared
tags:
type = DATADISK
zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
zonename = DevCloud0
jobresultcode = 0
jobresulttype = object
jobstatus = 1
userid = 819b856e-a9d3-11e3-a500-f46d04ee0527

*deleting a volume
cloudmonkey# delete volume id=e079281e-d822-4b90-9e85-9648350a0369
success = true


Thanks,

punith s


Re: Review Request 19021: Cloudbyte Elastistor storage plug-in

Posted by punith s <pu...@cloudbyte.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/19021/
-----------------------------------------------------------

(Updated March 13, 2014, 12:21 p.m.)


Review request for cloudstack, edison su and Mike Tutkowski.


Changes
-------

new patch after edison's request for master's commit problems.


Repository: cloudstack-git


Description
-------

This patch implements a basic storage plug-in for cloudbyte elastistor v1.3.0, The plug-in is a new feature for cloudstack 4.4 and above.

this does not implement managed storage yet, it is been integrated only with CreateStoragePool and DeleteStoragePool api's.

the desired behavior of the plugin are:

* Allow an Admin to create a primary storage at cluster level, hence creates a volume in elastistor and gets attached to the host with the given capacityiops and capacitybytes through CreateStoragePool api with provider being elastistor.

*Allow an admin to delete a primary storage at cluster level, hence it deletes the volume from host in cloudstack and deletes the respective volume in elastistor.

* volume and datadisks fuctions performs the default storage fuctions, ie. the driver extends the CloudStackPrimaryDataStoreDriverImpl.

* support for both nfs and icsci primary storage.


Diffs (updated)
-----

  client/pom.xml af724b1 
  plugins/pom.xml 097f224 
  plugins/storage/volume/cloudbyte/pom.xml PRE-CREATION 
  plugins/storage/volume/cloudbyte/resources/META-INF/cloudstack/storage-volume-cloudbyte/module.properties PRE-CREATION 
  plugins/storage/volume/cloudbyte/resources/META-INF/cloudstack/storage-volume-cloudbyte/spring-storage-volume-cloudbyte-context.xml PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/driver/ElastistorPrimaryDataStoreDriver.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/lifecycle/ElastistorPrimaryDataStoreLifeCycle.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/provider/ElastistorHostListener.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/provider/ElastistorPrimaryDataStoreProvider.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/util/ElastistorUtil.java PRE-CREATION 

Diff: https://reviews.apache.org/r/19021/diff/


Testing (updated)
-------

Build test using, 

mvn -P developer,systemvm clean install, which is successful.

Manual testing has been performed using cloudmonkey.

* Creating a primary storage based on cloudbyte storage plugin.

cloudmonkey# create storagepool scope=cluster zoneid=dac7223c-6d09-4dcb-82fb-bdecf7c657f5 podid=20a613c4-eccf-4fdc-b8ca-c51df483326f clusterid=9a89bc12-bf00-496b-b1d8-8e92cdf1795f name=cloudbytevolume provider=elastistor url=nfs://10.10.171.137/cloudbytetest capacityiops=500 capacitybytes=214748364800 tags=cloudbytetest
storagepool:
name = cloudbytevolume
id = 57f70aa4-659b-3b53-b8ab-2f712474f107
capacityiops = 500
clusterid = 9a89bc12-bf00-496b-b1d8-8e92cdf1795f
clustername = test000
created = 2014-03-11T12:42:38+0530
disksizeallocated = 0
disksizetotal = 214748364800
hypervisor = Any
ipaddress = 10.10.171.137
path = /cloudbytetest
podid = 20a613c4-eccf-4fdc-b8ca-c51df483326f
podname = test00
scope = CLUSTER
state = Up
tags = cloudbytetest
type = NetworkFilesystem
zoneid = dac7223c-6d09-4dcb-82fb-bdecf7c657f5
zonename = DevCloud0

* Deleting the primary storage based on cloudbyte storage plugin.

cloudmonkey# delete storagepool id=57f70aa4-659b-3b53-b8ab-2f712474f107
success = true

* creation of primary storage with negative capacityiops throws an exception.

* creation of primary storage with already available name and ip throws an exception.

* if the elastistor params which are required for plugin configuration are not injected through spring-storage-volume-cloudbyte-context.xml, it can be set from details map.

cloudmonkey# create storagepool scope=cluster zoneid=afacc706-3f4d-4f50-82e6-bf0f82959ba8 podid=821ad540-6c98-43f3-935d-72a47a319b20 clusterid=e0ced156-532e-4941-99c0-f34ff1727544 name=nfsvol provider=elastistor url=nfs://10.10.171.143/volnfs details[0].esaccountid=9e9f67d5-e06f-4d63-a0b8-e7255cba84b8 details[1].espoolid=d2d15d11-0f06-3426-a097-3e6e8b36f85c details[2].esdefaultgateway=10.10.1.1 details[3].essubnet=8  details[4].estntinterface=em0 details[5].esmanagementip=10.10.171.180
details[6].esapikey=PubSInZaCji8hrRfOsCxgbug2I2k_sRJ0i2a9qmAzZIiCTcFPmZelzx6uNK9TYgqkdohCmq1L2J9eYmUe9YO6A capacityiops=100 capacitybytes=214748364800

storagepool:
name = nfsvol
id = 7ea08bf6-777a-3553-8f1e-c3a9f9b626cb
capacityiops = 100
clusterid = e0ced156-532e-4941-99c0-f34ff1727544
clustername = test000
created = 2014-03-12T17:45:10+0530
disksizeallocated = 0
disksizetotal = 214748364800
hypervisor = Any
ipaddress = 10.10.171.143
path = /volnfs
podid = 821ad540-6c98-43f3-935d-72a47a319b20
podname = test00
scope = CLUSTER
state = Up
type = NetworkFilesystem
zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
zonename = DevCloud0

* creation of volume on created storage pool.
cloudmonkey# create volume zoneid=afacc706-3f4d-4f50-82e6-bf0f82959ba8 diskofferingid=f20e3b76-82e3-43d1-91e3-3ff337d7181d name=testvolume

accountid = 819b1dfe-a9d3-11e3-a500-f46d04ee0527
cmd = org.apache.cloudstack.api.command.user.volume.CreateVolumeCmd
created = 2014-03-13T11:51:27+0530
jobid = 596294b8-2b49-4b49-8526-9117cf56c95d
jobprocstatus = 0
jobresult:
volume:
name = testvolume
id = e079281e-d822-4b90-9e85-9648350a0369
account = admin
created = 2014-03-13T11:51:27+0530
destroyed = False
diskofferingdisplaytext = Small Disk, 5 GB
diskofferingid = f20e3b76-82e3-43d1-91e3-3ff337d7181d
diskofferingname = Small
displayvolume = True
domain = ROOT
domainid = 819ae3b6-a9d3-11e3-a500-f46d04ee0527
isextractable = True
jobid = 596294b8-2b49-4b49-8526-9117cf56c95d
jobstatus = 0
size = 5368709120
state = Allocated
storagetype = shared
tags:
type = DATADISK
zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
zonename = DevCloud0
jobresultcode = 0
jobresulttype = object
jobstatus = 1
userid = 819b856e-a9d3-11e3-a500-f46d04ee0527

* attaching a specific volume.
cloudmonkey# attach volume id=e079281e-d822-4b90-9e85-9648350a0369 virtualmachineid=3e6eeab1-e624-461e-94e0-230215a8dbc3

accountid = 819b1dfe-a9d3-11e3-a500-f46d04ee0527
cmd = org.apache.cloudstack.api.command.user.volume.AttachVolumeCmd
created = 2014-03-13T11:55:09+0530
jobid = 364d7636-72ad-410c-891c-c38ac34b6d42
jobprocstatus = 0
jobresult:
volume:
id = e079281e-d822-4b90-9e85-9648350a0369
name = testvolume
account = admin
attached = 2014-03-13T11:55:11+0530
created = 2014-03-13T11:51:27+0530
destroyed = False
deviceid = 2
diskofferingdisplaytext = Small Disk, 5 GB
diskofferingid = f20e3b76-82e3-43d1-91e3-3ff337d7181d
diskofferingname = Small
displayvolume = True
domain = ROOT
domainid = 819ae3b6-a9d3-11e3-a500-f46d04ee0527
hypervisor = XenServer
isextractable = True
jobid = 364d7636-72ad-410c-891c-c38ac34b6d42
jobstatus = 0
size = 5368709120
state = Ready
storage = okay
storagetype = shared
tags:
type = DATADISK
virtualmachineid = 3e6eeab1-e624-461e-94e0-230215a8dbc3
vmdisplayname = tiny
vmname = tiny
vmstate = Running
zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
zonename = DevCloud0
jobresultcode = 0
jobresulttype = object
jobstatus = 1
userid = 819b856e-a9d3-11e3-a500-f46d04ee0527

*detaching a specific volume.
cloudmonkey# detach volume id=e079281e-d822-4b90-9e85-9648350a0369

accountid = 819b1dfe-a9d3-11e3-a500-f46d04ee0527
cmd = org.apache.cloudstack.api.command.user.volume.DetachVolumeCmd
created = 2014-03-13T11:57:40+0530
jobid = 38fb6463-7d95-4d4c-8a50-1ec8a1c9ba98
jobprocstatus = 0
jobresult:
volume:
id = e079281e-d822-4b90-9e85-9648350a0369
name = testvolume
account = admin
created = 2014-03-13T11:51:27+0530
destroyed = False
diskofferingdisplaytext = Small Disk, 5 GB
diskofferingid = f20e3b76-82e3-43d1-91e3-3ff337d7181d
diskofferingname = Small
displayvolume = True
domain = ROOT
domainid = 819ae3b6-a9d3-11e3-a500-f46d04ee0527
hypervisor = XenServer
isextractable = True
jobid = 38fb6463-7d95-4d4c-8a50-1ec8a1c9ba98
jobstatus = 0
size = 5368709120
state = Ready
storage = okay
storagetype = shared
tags:
type = DATADISK
zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
zonename = DevCloud0
jobresultcode = 0
jobresulttype = object
jobstatus = 1
userid = 819b856e-a9d3-11e3-a500-f46d04ee0527

*deleting a volume
cloudmonkey# delete volume id=e079281e-d822-4b90-9e85-9648350a0369
success = true


Thanks,

punith s


Re: Review Request 19021: Cloudbyte Elastistor storage plug-in

Posted by punith s <pu...@cloudbyte.com>.

> On March 13, 2014, 3:37 a.m., edison su wrote:
> > Could you upload a new patch? I can't apply it on master branch, git complains that some files are not indexed.

hi edison, 
i have added a fresh new patch like as if it's a new patch.

thanks.


- punith


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


On March 13, 2014, 12:21 p.m., punith s wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/19021/
> -----------------------------------------------------------
> 
> (Updated March 13, 2014, 12:21 p.m.)
> 
> 
> Review request for cloudstack, edison su and Mike Tutkowski.
> 
> 
> Repository: cloudstack-git
> 
> 
> Description
> -------
> 
> This patch implements a basic storage plug-in for cloudbyte elastistor v1.3.0, The plug-in is a new feature for cloudstack 4.4 and above.
> 
> this does not implement managed storage yet, it is been integrated only with CreateStoragePool and DeleteStoragePool api's.
> 
> the desired behavior of the plugin are:
> 
> * Allow an Admin to create a primary storage at cluster level, hence creates a volume in elastistor and gets attached to the host with the given capacityiops and capacitybytes through CreateStoragePool api with provider being elastistor.
> 
> *Allow an admin to delete a primary storage at cluster level, hence it deletes the volume from host in cloudstack and deletes the respective volume in elastistor.
> 
> * volume and datadisks fuctions performs the default storage fuctions, ie. the driver extends the CloudStackPrimaryDataStoreDriverImpl.
> 
> * support for both nfs and icsci primary storage.
> 
> 
> Diffs
> -----
> 
>   client/pom.xml af724b1 
>   plugins/pom.xml 097f224 
>   plugins/storage/volume/cloudbyte/pom.xml PRE-CREATION 
>   plugins/storage/volume/cloudbyte/resources/META-INF/cloudstack/storage-volume-cloudbyte/module.properties PRE-CREATION 
>   plugins/storage/volume/cloudbyte/resources/META-INF/cloudstack/storage-volume-cloudbyte/spring-storage-volume-cloudbyte-context.xml PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/driver/ElastistorPrimaryDataStoreDriver.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/lifecycle/ElastistorPrimaryDataStoreLifeCycle.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/provider/ElastistorHostListener.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/provider/ElastistorPrimaryDataStoreProvider.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/util/ElastistorUtil.java PRE-CREATION 
> 
> Diff: https://reviews.apache.org/r/19021/diff/
> 
> 
> Testing
> -------
> 
> Build test using, 
> 
> mvn -P developer,systemvm clean install, which is successful.
> 
> Manual testing has been performed using cloudmonkey.
> 
> * Creating a primary storage based on cloudbyte storage plugin.
> 
> cloudmonkey# create storagepool scope=cluster zoneid=dac7223c-6d09-4dcb-82fb-bdecf7c657f5 podid=20a613c4-eccf-4fdc-b8ca-c51df483326f clusterid=9a89bc12-bf00-496b-b1d8-8e92cdf1795f name=cloudbytevolume provider=elastistor url=nfs://10.10.171.137/cloudbytetest capacityiops=500 capacitybytes=214748364800 tags=cloudbytetest
> storagepool:
> name = cloudbytevolume
> id = 57f70aa4-659b-3b53-b8ab-2f712474f107
> capacityiops = 500
> clusterid = 9a89bc12-bf00-496b-b1d8-8e92cdf1795f
> clustername = test000
> created = 2014-03-11T12:42:38+0530
> disksizeallocated = 0
> disksizetotal = 214748364800
> hypervisor = Any
> ipaddress = 10.10.171.137
> path = /cloudbytetest
> podid = 20a613c4-eccf-4fdc-b8ca-c51df483326f
> podname = test00
> scope = CLUSTER
> state = Up
> tags = cloudbytetest
> type = NetworkFilesystem
> zoneid = dac7223c-6d09-4dcb-82fb-bdecf7c657f5
> zonename = DevCloud0
> 
> * Deleting the primary storage based on cloudbyte storage plugin.
> 
> cloudmonkey# delete storagepool id=57f70aa4-659b-3b53-b8ab-2f712474f107
> success = true
> 
> * creation of primary storage with negative capacityiops throws an exception.
> 
> * creation of primary storage with already available name and ip throws an exception.
> 
> * if the elastistor params which are required for plugin configuration are not injected through spring-storage-volume-cloudbyte-context.xml, it can be set from details map.
> 
> cloudmonkey# create storagepool scope=cluster zoneid=afacc706-3f4d-4f50-82e6-bf0f82959ba8 podid=821ad540-6c98-43f3-935d-72a47a319b20 clusterid=e0ced156-532e-4941-99c0-f34ff1727544 name=nfsvol provider=elastistor url=nfs://10.10.171.143/volnfs details[0].esaccountid=9e9f67d5-e06f-4d63-a0b8-e7255cba84b8 details[1].espoolid=d2d15d11-0f06-3426-a097-3e6e8b36f85c details[2].esdefaultgateway=10.10.1.1 details[3].essubnet=8  details[4].estntinterface=em0 details[5].esmanagementip=10.10.171.180
> details[6].esapikey=PubSInZaCji8hrRfOsCxgbug2I2k_sRJ0i2a9qmAzZIiCTcFPmZelzx6uNK9TYgqkdohCmq1L2J9eYmUe9YO6A capacityiops=100 capacitybytes=214748364800
> 
> storagepool:
> name = nfsvol
> id = 7ea08bf6-777a-3553-8f1e-c3a9f9b626cb
> capacityiops = 100
> clusterid = e0ced156-532e-4941-99c0-f34ff1727544
> clustername = test000
> created = 2014-03-12T17:45:10+0530
> disksizeallocated = 0
> disksizetotal = 214748364800
> hypervisor = Any
> ipaddress = 10.10.171.143
> path = /volnfs
> podid = 821ad540-6c98-43f3-935d-72a47a319b20
> podname = test00
> scope = CLUSTER
> state = Up
> type = NetworkFilesystem
> zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
> zonename = DevCloud0
> 
> * creation of volume on created storage pool.
> cloudmonkey# create volume zoneid=afacc706-3f4d-4f50-82e6-bf0f82959ba8 diskofferingid=f20e3b76-82e3-43d1-91e3-3ff337d7181d name=testvolume
> 
> accountid = 819b1dfe-a9d3-11e3-a500-f46d04ee0527
> cmd = org.apache.cloudstack.api.command.user.volume.CreateVolumeCmd
> created = 2014-03-13T11:51:27+0530
> jobid = 596294b8-2b49-4b49-8526-9117cf56c95d
> jobprocstatus = 0
> jobresult:
> volume:
> name = testvolume
> id = e079281e-d822-4b90-9e85-9648350a0369
> account = admin
> created = 2014-03-13T11:51:27+0530
> destroyed = False
> diskofferingdisplaytext = Small Disk, 5 GB
> diskofferingid = f20e3b76-82e3-43d1-91e3-3ff337d7181d
> diskofferingname = Small
> displayvolume = True
> domain = ROOT
> domainid = 819ae3b6-a9d3-11e3-a500-f46d04ee0527
> isextractable = True
> jobid = 596294b8-2b49-4b49-8526-9117cf56c95d
> jobstatus = 0
> size = 5368709120
> state = Allocated
> storagetype = shared
> tags:
> type = DATADISK
> zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
> zonename = DevCloud0
> jobresultcode = 0
> jobresulttype = object
> jobstatus = 1
> userid = 819b856e-a9d3-11e3-a500-f46d04ee0527
> 
> * attaching a specific volume.
> cloudmonkey# attach volume id=e079281e-d822-4b90-9e85-9648350a0369 virtualmachineid=3e6eeab1-e624-461e-94e0-230215a8dbc3
> 
> accountid = 819b1dfe-a9d3-11e3-a500-f46d04ee0527
> cmd = org.apache.cloudstack.api.command.user.volume.AttachVolumeCmd
> created = 2014-03-13T11:55:09+0530
> jobid = 364d7636-72ad-410c-891c-c38ac34b6d42
> jobprocstatus = 0
> jobresult:
> volume:
> id = e079281e-d822-4b90-9e85-9648350a0369
> name = testvolume
> account = admin
> attached = 2014-03-13T11:55:11+0530
> created = 2014-03-13T11:51:27+0530
> destroyed = False
> deviceid = 2
> diskofferingdisplaytext = Small Disk, 5 GB
> diskofferingid = f20e3b76-82e3-43d1-91e3-3ff337d7181d
> diskofferingname = Small
> displayvolume = True
> domain = ROOT
> domainid = 819ae3b6-a9d3-11e3-a500-f46d04ee0527
> hypervisor = XenServer
> isextractable = True
> jobid = 364d7636-72ad-410c-891c-c38ac34b6d42
> jobstatus = 0
> size = 5368709120
> state = Ready
> storage = okay
> storagetype = shared
> tags:
> type = DATADISK
> virtualmachineid = 3e6eeab1-e624-461e-94e0-230215a8dbc3
> vmdisplayname = tiny
> vmname = tiny
> vmstate = Running
> zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
> zonename = DevCloud0
> jobresultcode = 0
> jobresulttype = object
> jobstatus = 1
> userid = 819b856e-a9d3-11e3-a500-f46d04ee0527
> 
> *detaching a specific volume.
> cloudmonkey# detach volume id=e079281e-d822-4b90-9e85-9648350a0369
> 
> accountid = 819b1dfe-a9d3-11e3-a500-f46d04ee0527
> cmd = org.apache.cloudstack.api.command.user.volume.DetachVolumeCmd
> created = 2014-03-13T11:57:40+0530
> jobid = 38fb6463-7d95-4d4c-8a50-1ec8a1c9ba98
> jobprocstatus = 0
> jobresult:
> volume:
> id = e079281e-d822-4b90-9e85-9648350a0369
> name = testvolume
> account = admin
> created = 2014-03-13T11:51:27+0530
> destroyed = False
> diskofferingdisplaytext = Small Disk, 5 GB
> diskofferingid = f20e3b76-82e3-43d1-91e3-3ff337d7181d
> diskofferingname = Small
> displayvolume = True
> domain = ROOT
> domainid = 819ae3b6-a9d3-11e3-a500-f46d04ee0527
> hypervisor = XenServer
> isextractable = True
> jobid = 38fb6463-7d95-4d4c-8a50-1ec8a1c9ba98
> jobstatus = 0
> size = 5368709120
> state = Ready
> storage = okay
> storagetype = shared
> tags:
> type = DATADISK
> zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
> zonename = DevCloud0
> jobresultcode = 0
> jobresulttype = object
> jobstatus = 1
> userid = 819b856e-a9d3-11e3-a500-f46d04ee0527
> 
> *deleting a volume
> cloudmonkey# delete volume id=e079281e-d822-4b90-9e85-9648350a0369
> success = true
> 
> 
> Thanks,
> 
> punith s
> 
>


Re: Review Request 19021: Cloudbyte Elastistor storage plug-in

Posted by edison su <ed...@citrix.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/19021/#review37004
-----------------------------------------------------------


Could you upload a new patch? I can't apply it on master branch, git complains that some files are not indexed.

- edison su


On March 12, 2014, 4:09 p.m., punith s wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/19021/
> -----------------------------------------------------------
> 
> (Updated March 12, 2014, 4:09 p.m.)
> 
> 
> Review request for cloudstack, edison su and Mike Tutkowski.
> 
> 
> Repository: cloudstack-git
> 
> 
> Description
> -------
> 
> This patch implements a basic storage plug-in for cloudbyte elastistor v1.3.0, The plug-in is a new feature for cloudstack 4.4 and above.
> 
> this does not implement managed storage yet, it is been integrated only with CreateStoragePool and DeleteStoragePool api's.
> 
> the desired behavior of the plugin are:
> 
> * Allow an Admin to create a primary storage at cluster level, hence creates a volume in elastistor and gets attached to the host with the given capacityiops and capacitybytes through CreateStoragePool api with provider being elastistor.
> 
> *Allow an admin to delete a primary storage at cluster level, hence it deletes the volume from host in cloudstack and deletes the respective volume in elastistor.
> 
> * volume and datadisks fuctions performs the default storage fuctions, ie. the driver extends the CloudStackPrimaryDataStoreDriverImpl.
> 
> * support for both nfs and icsci primary storage.
> 
> 
> Diffs
> -----
> 
>   plugins/storage/volume/cloudbyte/pom.xml PRE-CREATION 
>   plugins/storage/volume/cloudbyte/resources/META-INF/cloudstack/storage-volume-cloudbyte/spring-storage-volume-cloudbyte-context.xml PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/client/BaseCommand.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/client/ElastiCenterClient.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/client/ElastiCenterCommand.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/AddQosGroupCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/CreateTsmCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/CreateVolumeCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/DeleteTsmCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/DeleteVolumeCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/ListCapabilitiesCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/ListTsmCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/QueryAsyncJobResultCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/driver/ElastistorPrimaryDataStoreDriver.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/lifecycle/ElastistorPrimaryDataStoreLifeCycle.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/Async.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/Capabilities.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/FileSystem.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/FileSystemWrapper.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/FilesystemQoSWrapper.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/JobId.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/QoSGroup.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/QoSGroupWrapper.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/StorageVolume.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/StorageVolumeWrapper.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/StorageVolumes.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/Tsm.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/TsmWrapper.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/Tsms.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/VolumeProperties.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/provider/ElastistorPrimaryDataStoreProvider.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/AddQoSGroupResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/AddQosGroupCmdResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/CreateTsmCmdResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/CreateVolumeCmdResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/DeleteTsmResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/DeleteVolumeResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/ListCapabilitiesResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/ListTsmsResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/QueryAsyncJobResultResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/util/ElastistorUtil.java PRE-CREATION 
> 
> Diff: https://reviews.apache.org/r/19021/diff/
> 
> 
> Testing
> -------
> 
> Build test using, 
> 
> mvn -P developer,systemvm clean install, which is successful.
> 
> Manual testing has been performed using cloudmonkey.
> 
> * Creating a primary storage based on cloudbyte storage plugin.
> 
> cloudmonkey# create storagepool scope=cluster zoneid=dac7223c-6d09-4dcb-82fb-bdecf7c657f5 podid=20a613c4-eccf-4fdc-b8ca-c51df483326f clusterid=9a89bc12-bf00-496b-b1d8-8e92cdf1795f name=cloudbytevolume provider=elastistor url=nfs://10.10.171.137/cloudbytetest capacityiops=500 capacitybytes=214748364800 tags=cloudbytetest
> storagepool:
> name = cloudbytevolume
> id = 57f70aa4-659b-3b53-b8ab-2f712474f107
> capacityiops = 500
> clusterid = 9a89bc12-bf00-496b-b1d8-8e92cdf1795f
> clustername = test000
> created = 2014-03-11T12:42:38+0530
> disksizeallocated = 0
> disksizetotal = 214748364800
> hypervisor = Any
> ipaddress = 10.10.171.137
> path = /cloudbytetest
> podid = 20a613c4-eccf-4fdc-b8ca-c51df483326f
> podname = test00
> scope = CLUSTER
> state = Up
> tags = cloudbytetest
> type = NetworkFilesystem
> zoneid = dac7223c-6d09-4dcb-82fb-bdecf7c657f5
> zonename = DevCloud0
> 
> * Deleting the primary storage based on cloudbyte storage plugin.
> 
> cloudmonkey# delete storagepool id=57f70aa4-659b-3b53-b8ab-2f712474f107
> success = true
> 
> * creation of primary storage with negative capacityiops throws an exception.
> 
> * creation of primary storage with already available name and ip throws an exception.
> 
> * if the elastistor params which are required for plugin configuration are not injected through spring-storage-volume-cloudbyte-context.xml, it can be set from details map.
> 
> cloudmonkey# create storagepool scope=cluster zoneid=afacc706-3f4d-4f50-82e6-bf0f82959ba8 podid=821ad540-6c98-43f3-935d-72a47a319b20 clusterid=e0ced156-532e-4941-99c0-f34ff1727544 name=nfsvol provider=elastistor url=nfs://10.10.171.143/volnfs details[0].esaccountid=9e9f67d5-e06f-4d63-a0b8-e7255cba84b8 details[1].espoolid=d2d15d11-0f06-3426-a097-3e6e8b36f85c details[2].esdefaultgateway=10.10.1.1 details[3].essubnet=8  details[4].estntinterface=em0 details[5].esmanagementip=10.10.171.180
> details[6].esapikey=PubSInZaCji8hrRfOsCxgbug2I2k_sRJ0i2a9qmAzZIiCTcFPmZelzx6uNK9TYgqkdohCmq1L2J9eYmUe9YO6A capacityiops=100 capacitybytes=214748364800
> 
> storagepool:
> name = nfsvol
> id = 7ea08bf6-777a-3553-8f1e-c3a9f9b626cb
> capacityiops = 100
> clusterid = e0ced156-532e-4941-99c0-f34ff1727544
> clustername = test000
> created = 2014-03-12T17:45:10+0530
> disksizeallocated = 0
> disksizetotal = 214748364800
> hypervisor = Any
> ipaddress = 10.10.171.143
> path = /volnfs
> podid = 821ad540-6c98-43f3-935d-72a47a319b20
> podname = test00
> scope = CLUSTER
> state = Up
> type = NetworkFilesystem
> zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
> zonename = DevCloud0
> 
> 
> Thanks,
> 
> punith s
> 
>


Re: Review Request 19021: Cloudbyte Elastistor storage plug-in

Posted by punith s <pu...@cloudbyte.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/19021/
-----------------------------------------------------------

(Updated March 12, 2014, 9:39 p.m.)


Review request for cloudstack, edison su and Mike Tutkowski.


Changes
-------

modified cloudbyte storage plugin after first review on 11-12/3/2014


Repository: cloudstack-git


Description
-------

This patch implements a basic storage plug-in for cloudbyte elastistor v1.3.0, The plug-in is a new feature for cloudstack 4.4 and above.

this does not implement managed storage yet, it is been integrated only with CreateStoragePool and DeleteStoragePool api's.

the desired behavior of the plugin are:

* Allow an Admin to create a primary storage at cluster level, hence creates a volume in elastistor and gets attached to the host with the given capacityiops and capacitybytes through CreateStoragePool api with provider being elastistor.

*Allow an admin to delete a primary storage at cluster level, hence it deletes the volume from host in cloudstack and deletes the respective volume in elastistor.

* volume and datadisks fuctions performs the default storage fuctions, ie. the driver extends the CloudStackPrimaryDataStoreDriverImpl.

* support for both nfs and icsci primary storage.


Diffs (updated)
-----

  plugins/storage/volume/cloudbyte/pom.xml PRE-CREATION 
  plugins/storage/volume/cloudbyte/resources/META-INF/cloudstack/storage-volume-cloudbyte/spring-storage-volume-cloudbyte-context.xml PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/client/BaseCommand.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/client/ElastiCenterClient.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/client/ElastiCenterCommand.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/AddQosGroupCmd.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/CreateTsmCmd.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/CreateVolumeCmd.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/DeleteTsmCmd.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/DeleteVolumeCmd.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/ListCapabilitiesCmd.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/ListTsmCmd.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/QueryAsyncJobResultCmd.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/driver/ElastistorPrimaryDataStoreDriver.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/lifecycle/ElastistorPrimaryDataStoreLifeCycle.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/Async.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/Capabilities.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/FileSystem.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/FileSystemWrapper.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/FilesystemQoSWrapper.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/JobId.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/QoSGroup.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/QoSGroupWrapper.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/StorageVolume.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/StorageVolumeWrapper.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/StorageVolumes.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/Tsm.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/TsmWrapper.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/Tsms.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/VolumeProperties.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/provider/ElastistorPrimaryDataStoreProvider.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/AddQoSGroupResponse.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/AddQosGroupCmdResponse.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/CreateTsmCmdResponse.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/CreateVolumeCmdResponse.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/DeleteTsmResponse.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/DeleteVolumeResponse.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/ListCapabilitiesResponse.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/ListTsmsResponse.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/QueryAsyncJobResultResponse.java PRE-CREATION 
  plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/util/ElastistorUtil.java PRE-CREATION 

Diff: https://reviews.apache.org/r/19021/diff/


Testing (updated)
-------

Build test using, 

mvn -P developer,systemvm clean install, which is successful.

Manual testing has been performed using cloudmonkey.

* Creating a primary storage based on cloudbyte storage plugin.

cloudmonkey# create storagepool scope=cluster zoneid=dac7223c-6d09-4dcb-82fb-bdecf7c657f5 podid=20a613c4-eccf-4fdc-b8ca-c51df483326f clusterid=9a89bc12-bf00-496b-b1d8-8e92cdf1795f name=cloudbytevolume provider=elastistor url=nfs://10.10.171.137/cloudbytetest capacityiops=500 capacitybytes=214748364800 tags=cloudbytetest
storagepool:
name = cloudbytevolume
id = 57f70aa4-659b-3b53-b8ab-2f712474f107
capacityiops = 500
clusterid = 9a89bc12-bf00-496b-b1d8-8e92cdf1795f
clustername = test000
created = 2014-03-11T12:42:38+0530
disksizeallocated = 0
disksizetotal = 214748364800
hypervisor = Any
ipaddress = 10.10.171.137
path = /cloudbytetest
podid = 20a613c4-eccf-4fdc-b8ca-c51df483326f
podname = test00
scope = CLUSTER
state = Up
tags = cloudbytetest
type = NetworkFilesystem
zoneid = dac7223c-6d09-4dcb-82fb-bdecf7c657f5
zonename = DevCloud0

* Deleting the primary storage based on cloudbyte storage plugin.

cloudmonkey# delete storagepool id=57f70aa4-659b-3b53-b8ab-2f712474f107
success = true

* creation of primary storage with negative capacityiops throws an exception.

* creation of primary storage with already available name and ip throws an exception.

* if the elastistor params which are required for plugin configuration are not injected through spring-storage-volume-cloudbyte-context.xml, it can be set from details map.

cloudmonkey# create storagepool scope=cluster zoneid=afacc706-3f4d-4f50-82e6-bf0f82959ba8 podid=821ad540-6c98-43f3-935d-72a47a319b20 clusterid=e0ced156-532e-4941-99c0-f34ff1727544 name=nfsvol provider=elastistor url=nfs://10.10.171.143/volnfs details[0].esaccountid=9e9f67d5-e06f-4d63-a0b8-e7255cba84b8 details[1].espoolid=d2d15d11-0f06-3426-a097-3e6e8b36f85c details[2].esdefaultgateway=10.10.1.1 details[3].essubnet=8  details[4].estntinterface=em0 details[5].esmanagementip=10.10.171.180
details[6].esapikey=PubSInZaCji8hrRfOsCxgbug2I2k_sRJ0i2a9qmAzZIiCTcFPmZelzx6uNK9TYgqkdohCmq1L2J9eYmUe9YO6A capacityiops=100 capacitybytes=214748364800

storagepool:
name = nfsvol
id = 7ea08bf6-777a-3553-8f1e-c3a9f9b626cb
capacityiops = 100
clusterid = e0ced156-532e-4941-99c0-f34ff1727544
clustername = test000
created = 2014-03-12T17:45:10+0530
disksizeallocated = 0
disksizetotal = 214748364800
hypervisor = Any
ipaddress = 10.10.171.143
path = /volnfs
podid = 821ad540-6c98-43f3-935d-72a47a319b20
podname = test00
scope = CLUSTER
state = Up
type = NetworkFilesystem
zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
zonename = DevCloud0


Thanks,

punith s


Re: Review Request 19021: Cloudbyte Elastistor storage plug-in

Posted by punith s <pu...@cloudbyte.com>.

> On March 12, 2014, 7:18 a.m., Mike Tutkowski wrote:
> > plugins/storage/volume/cloudbyte/pom.xml, line 1
> > <https://reviews.apache.org/r/19021/diff/1/?file=516003#file516003line1>
> >
> >     Looks like the license section is having some trouble with end-line chars

yea, checkstyle is not working on xml files in my workspace so. thanks.


> On March 12, 2014, 7:18 a.m., Mike Tutkowski wrote:
> > plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/driver/ElastistorPrimaryDataStoreDriver.java, line 65
> > <https://reviews.apache.org/r/19021/diff/1/?file=516017#file516017line65>
> >
> >     It's OK to override this method, but if you're just going to call the base implementation, it would be faster to not override this method.

yea , thanks for optimization , it'll do better now.


> On March 12, 2014, 7:18 a.m., Mike Tutkowski wrote:
> > plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/client/BaseCommand.java, line 1
> > <https://reviews.apache.org/r/19021/diff/1/?file=516006#file516006line1>
> >
> >     Generally vendor-specific classes are not placed in generic CloudStack packages.
> >     
> >     Could you give me a little background regarding what an ElastiCenter command is?
> >     
> >     Are these commands sent from your storage plug-in to your SAN?
> >     
> >     Please place all CloudByte classes/interfaces in CloudByte packages.
> >     
> >     Feel free to reference the SolidFire plug-in as an example.

yea i consider that, so now i have put all my elastistor rest client ,commands and response java files in my util with reference to solidfire.

Elasticenter command is an interface which is being implemented by all the rest commands where the plugin is issuing to elasticenter(management part of elastistor).

YES, all these commands which are put into my until now are being called to my SAN(elasticenter) through storage plugin only.

yes now all of the Cloudbyte classes/interfaces are now placed into util class.

thanks mike.


- punith


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


On March 12, 2014, 9:39 p.m., punith s wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/19021/
> -----------------------------------------------------------
> 
> (Updated March 12, 2014, 9:39 p.m.)
> 
> 
> Review request for cloudstack, edison su and Mike Tutkowski.
> 
> 
> Repository: cloudstack-git
> 
> 
> Description
> -------
> 
> This patch implements a basic storage plug-in for cloudbyte elastistor v1.3.0, The plug-in is a new feature for cloudstack 4.4 and above.
> 
> this does not implement managed storage yet, it is been integrated only with CreateStoragePool and DeleteStoragePool api's.
> 
> the desired behavior of the plugin are:
> 
> * Allow an Admin to create a primary storage at cluster level, hence creates a volume in elastistor and gets attached to the host with the given capacityiops and capacitybytes through CreateStoragePool api with provider being elastistor.
> 
> *Allow an admin to delete a primary storage at cluster level, hence it deletes the volume from host in cloudstack and deletes the respective volume in elastistor.
> 
> * volume and datadisks fuctions performs the default storage fuctions, ie. the driver extends the CloudStackPrimaryDataStoreDriverImpl.
> 
> * support for both nfs and icsci primary storage.
> 
> 
> Diffs
> -----
> 
>   plugins/storage/volume/cloudbyte/pom.xml PRE-CREATION 
>   plugins/storage/volume/cloudbyte/resources/META-INF/cloudstack/storage-volume-cloudbyte/spring-storage-volume-cloudbyte-context.xml PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/client/BaseCommand.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/client/ElastiCenterClient.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/client/ElastiCenterCommand.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/AddQosGroupCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/CreateTsmCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/CreateVolumeCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/DeleteTsmCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/DeleteVolumeCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/ListCapabilitiesCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/ListTsmCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/QueryAsyncJobResultCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/driver/ElastistorPrimaryDataStoreDriver.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/lifecycle/ElastistorPrimaryDataStoreLifeCycle.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/Async.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/Capabilities.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/FileSystem.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/FileSystemWrapper.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/FilesystemQoSWrapper.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/JobId.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/QoSGroup.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/QoSGroupWrapper.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/StorageVolume.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/StorageVolumeWrapper.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/StorageVolumes.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/Tsm.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/TsmWrapper.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/Tsms.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/VolumeProperties.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/provider/ElastistorPrimaryDataStoreProvider.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/AddQoSGroupResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/AddQosGroupCmdResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/CreateTsmCmdResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/CreateVolumeCmdResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/DeleteTsmResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/DeleteVolumeResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/ListCapabilitiesResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/ListTsmsResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/QueryAsyncJobResultResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/util/ElastistorUtil.java PRE-CREATION 
> 
> Diff: https://reviews.apache.org/r/19021/diff/
> 
> 
> Testing
> -------
> 
> Build test using, 
> 
> mvn -P developer,systemvm clean install, which is successful.
> 
> Manual testing has been performed using cloudmonkey.
> 
> * Creating a primary storage based on cloudbyte storage plugin.
> 
> cloudmonkey# create storagepool scope=cluster zoneid=dac7223c-6d09-4dcb-82fb-bdecf7c657f5 podid=20a613c4-eccf-4fdc-b8ca-c51df483326f clusterid=9a89bc12-bf00-496b-b1d8-8e92cdf1795f name=cloudbytevolume provider=elastistor url=nfs://10.10.171.137/cloudbytetest capacityiops=500 capacitybytes=214748364800 tags=cloudbytetest
> storagepool:
> name = cloudbytevolume
> id = 57f70aa4-659b-3b53-b8ab-2f712474f107
> capacityiops = 500
> clusterid = 9a89bc12-bf00-496b-b1d8-8e92cdf1795f
> clustername = test000
> created = 2014-03-11T12:42:38+0530
> disksizeallocated = 0
> disksizetotal = 214748364800
> hypervisor = Any
> ipaddress = 10.10.171.137
> path = /cloudbytetest
> podid = 20a613c4-eccf-4fdc-b8ca-c51df483326f
> podname = test00
> scope = CLUSTER
> state = Up
> tags = cloudbytetest
> type = NetworkFilesystem
> zoneid = dac7223c-6d09-4dcb-82fb-bdecf7c657f5
> zonename = DevCloud0
> 
> * Deleting the primary storage based on cloudbyte storage plugin.
> 
> cloudmonkey# delete storagepool id=57f70aa4-659b-3b53-b8ab-2f712474f107
> success = true
> 
> * creation of primary storage with negative capacityiops throws an exception.
> 
> * creation of primary storage with already available name and ip throws an exception.
> 
> * if the elastistor params which are required for plugin configuration are not injected through spring-storage-volume-cloudbyte-context.xml, it can be set from details map.
> 
> cloudmonkey# create storagepool scope=cluster zoneid=afacc706-3f4d-4f50-82e6-bf0f82959ba8 podid=821ad540-6c98-43f3-935d-72a47a319b20 clusterid=e0ced156-532e-4941-99c0-f34ff1727544 name=nfsvol provider=elastistor url=nfs://10.10.171.143/volnfs details[0].esaccountid=9e9f67d5-e06f-4d63-a0b8-e7255cba84b8 details[1].espoolid=d2d15d11-0f06-3426-a097-3e6e8b36f85c details[2].esdefaultgateway=10.10.1.1 details[3].essubnet=8  details[4].estntinterface=em0 details[5].esmanagementip=10.10.171.180
> details[6].esapikey=PubSInZaCji8hrRfOsCxgbug2I2k_sRJ0i2a9qmAzZIiCTcFPmZelzx6uNK9TYgqkdohCmq1L2J9eYmUe9YO6A capacityiops=100 capacitybytes=214748364800
> 
> storagepool:
> name = nfsvol
> id = 7ea08bf6-777a-3553-8f1e-c3a9f9b626cb
> capacityiops = 100
> clusterid = e0ced156-532e-4941-99c0-f34ff1727544
> clustername = test000
> created = 2014-03-12T17:45:10+0530
> disksizeallocated = 0
> disksizetotal = 214748364800
> hypervisor = Any
> ipaddress = 10.10.171.143
> path = /volnfs
> podid = 821ad540-6c98-43f3-935d-72a47a319b20
> podname = test00
> scope = CLUSTER
> state = Up
> type = NetworkFilesystem
> zoneid = afacc706-3f4d-4f50-82e6-bf0f82959ba8
> zonename = DevCloud0
> 
> 
> Thanks,
> 
> punith s
> 
>


Re: Review Request 19021: Cloudbyte Elastistor storage plug-in

Posted by Mike Tutkowski <mi...@solidfire.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/19021/#review36891
-----------------------------------------------------------



plugins/storage/volume/cloudbyte/pom.xml
<https://reviews.apache.org/r/19021/#comment68083>

    Looks like the license section is having some trouble with end-line chars



plugins/storage/volume/cloudbyte/pom.xml
<https://reviews.apache.org/r/19021/#comment68080>

    Spaces should be used instead of other white space



plugins/storage/volume/cloudbyte/pom.xml
<https://reviews.apache.org/r/19021/#comment68081>

    Spaces should be used instead of other white space



plugins/storage/volume/cloudbyte/resources/META-INF/cloudstack/storage-volume-cloudbyte/spring-storage-volume-cloudbyte-context.xml
<https://reviews.apache.org/r/19021/#comment68084>

    White-space issue



plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/client/BaseCommand.java
<https://reviews.apache.org/r/19021/#comment68086>

    Generally vendor-specific classes are not placed in generic CloudStack packages.
    
    Could you give me a little background regarding what an ElastiCenter command is?
    
    Are these commands sent from your storage plug-in to your SAN?
    
    Please place all CloudByte classes/interfaces in CloudByte packages.
    
    Feel free to reference the SolidFire plug-in as an example.



plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/driver/ElastistorPrimaryDataStoreDriver.java
<https://reviews.apache.org/r/19021/#comment68090>

    It looks like many of these member variables are not in use.
    
    As of CloudStack 4.4, this will fail a stringent compile.
    
    Please comment out or remove (same goes for unused imports).



plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/driver/ElastistorPrimaryDataStoreDriver.java
<https://reviews.apache.org/r/19021/#comment68087>

    It's OK to override this method, but if you're just going to call the base implementation, it would be faster to not override this method.



plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/driver/ElastistorPrimaryDataStoreDriver.java
<https://reviews.apache.org/r/19021/#comment68088>

    It's OK to override this method, but if you're just going to call the base implementation, it would be faster to not override this method.



plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/driver/ElastistorPrimaryDataStoreDriver.java
<https://reviews.apache.org/r/19021/#comment68089>

    It's OK to override this method, but if you're just going to call the base implementation, it would be faster to not override this method.


- Mike Tutkowski


On March 11, 2014, 7:28 a.m., punith s wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/19021/
> -----------------------------------------------------------
> 
> (Updated March 11, 2014, 7:28 a.m.)
> 
> 
> Review request for cloudstack, edison su and Mike Tutkowski.
> 
> 
> Repository: cloudstack-git
> 
> 
> Description
> -------
> 
> This patch implements a basic storage plug-in for cloudbyte elastistor v1.3.0, The plug-in is a new feature for cloudstack 4.4 and above.
> 
> this does not implement managed storage yet, it is been integrated only with CreateStoragePool and DeleteStoragePool api's.
> 
> the desired behavior of the plugin are:
> 
> * Allow an Admin to create a primary storage at cluster level, hence creates a volume in elastistor and gets attached to the host with the given capacityiops and capacitybytes through CreateStoragePool api with provider being elastistor.
> 
> *Allow an admin to delete a primary storage at cluster level, hence it deletes the volume from host in cloudstack and deletes the respective volume in elastistor.
> 
> * volume and datadisks fuctions performs the default storage fuctions, ie. the driver extends the CloudStackPrimaryDataStoreDriverImpl.
> 
> * support for both nfs and icsci primary storage.
> 
> 
> Diffs
> -----
> 
>   client/pom.xml af724b1 
>   plugins/pom.xml 097f224 
>   plugins/storage/volume/cloudbyte/pom.xml PRE-CREATION 
>   plugins/storage/volume/cloudbyte/resources/META-INF/cloudstack/storage-volume-cloudbyte/module.properties PRE-CREATION 
>   plugins/storage/volume/cloudbyte/resources/META-INF/cloudstack/storage-volume-cloudbyte/spring-storage-volume-cloudbyte-context.xml PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/client/BaseCommand.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/client/ElastiCenterClient.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/client/ElastiCenterCommand.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/AddQosGroupCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/CreateTsmCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/CreateVolumeCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/DeleteTsmCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/DeleteVolumeCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/ListCapabilitiesCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/ListTsmCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/command/QueryAsyncJobResultCmd.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/driver/ElastistorPrimaryDataStoreDriver.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/lifecycle/ElastistorPrimaryDataStoreLifeCycle.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/Async.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/Capabilities.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/FileSystem.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/FileSystemWrapper.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/FilesystemQoSWrapper.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/JobId.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/QoSGroup.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/QoSGroupWrapper.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/StorageVolume.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/StorageVolumeWrapper.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/StorageVolumes.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/Tsm.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/TsmWrapper.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/Tsms.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/model/VolumeProperties.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/provider/ElastistorHostListener.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/provider/ElastistorPrimaryDataStoreProvider.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/AddQoSGroupResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/AddQosGroupCmdResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/CreateTsmCmdResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/CreateVolumeCmdResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/DeleteTsmResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/DeleteVolumeResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/ListCapabilitiesResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/ListTsmsResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/response/QueryAsyncJobResultResponse.java PRE-CREATION 
>   plugins/storage/volume/cloudbyte/src/org/apache/cloudstack/storage/datastore/util/ElastistorUtil.java PRE-CREATION 
> 
> Diff: https://reviews.apache.org/r/19021/diff/
> 
> 
> Testing
> -------
> 
> Build test using, 
> 
> mvn -P developer,systemvm clean install, which is successful.
> 
> Manual testing has been performed using cloudmonkey.
> 
> * Creating a primary storage based on cloudbyte storage plugin.
> 
> cloudmonkey# create storagepool scope=cluster zoneid=dac7223c-6d09-4dcb-82fb-bdecf7c657f5 podid=20a613c4-eccf-4fdc-b8ca-c51df483326f clusterid=9a89bc12-bf00-496b-b1d8-8e92cdf1795f name=cloudbytevolume provider=elastistor url=nfs://10.10.171.137/cloudbytetest capacityiops=500 capacitybytes=214748364800 tags=cloudbytetest
> storagepool:
> name = cloudbytevolume
> id = 57f70aa4-659b-3b53-b8ab-2f712474f107
> capacityiops = 500
> clusterid = 9a89bc12-bf00-496b-b1d8-8e92cdf1795f
> clustername = test000
> created = 2014-03-11T12:42:38+0530
> disksizeallocated = 0
> disksizetotal = 214748364800
> hypervisor = Any
> ipaddress = 10.10.171.137
> path = /cloudbytetest
> podid = 20a613c4-eccf-4fdc-b8ca-c51df483326f
> podname = test00
> scope = CLUSTER
> state = Up
> tags = cloudbytetest
> type = NetworkFilesystem
> zoneid = dac7223c-6d09-4dcb-82fb-bdecf7c657f5
> zonename = DevCloud0
> 
> * Deleting the primary storage based on cloudbyte storage plugin.
> 
> cloudmonkey# delete storagepool id=57f70aa4-659b-3b53-b8ab-2f712474f107
> success = true
> 
> * creation of primary storage with negative capacityiops throws an exception.
> 
> * creation of primary storage with already available name and ip throws an exception.
> 
> 
> Thanks,
> 
> punith s
> 
>